1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
25 AC_LIBREPLACE_CC_CHECKS
26 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
28 m4_include(../lib/tevent/libtevent.m4)
31 for obj in ${TEVENT_OBJ}; do
32 LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
34 AC_SUBST(LIBTEVENT_OBJ0)
35 LIBS="${LIBS} ${TEVENT_LIBS}"
37 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
42 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
44 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
46 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
47 if test "x${srcdir-.}" != "x."; then
48 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
51 dnl Unique-to-Samba variables we'll be playing with.
52 AC_SUBST(SAMBA_CPPFLAGS)
57 AC_SUBST(MODULE_EXPORTS)
63 AC_SUBST(RELRO_LDFLAGS)
65 AC_SUBST(INSTALLLIBCMD_SH)
66 AC_SUBST(INSTALLLIBCMD_A)
67 AC_SUBST(UNINSTALLLIBCMD_SH)
68 AC_SUBST(UNINSTALLLIBCMD_A)
70 AC_SUBST(INSTALL_LIBWBCLIENT)
71 AC_SUBST(UNINSTALL_LIBWBCLIENT)
72 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
73 AC_SUBST(LIBWBCLIENT_SHARED)
74 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
75 AC_SUBST(LIBWBCLIENT_STATIC)
76 AC_SUBST(LIBWBCLIENT_SOVER)
78 AC_SUBST(LIBWBCLIENT_LIBS)
80 AC_SUBST(LIBSAMBAUTIL_SHARED)
92 AC_SUBST(INSTALL_PAM_MODULES)
93 AC_SUBST(UNINSTALL_PAM_MODULES)
95 AC_SUBST(EXTRA_BIN_PROGS)
96 AC_SUBST(CIFSMOUNT_PROGS)
97 AC_SUBST(INSTALL_CIFSMOUNT)
98 AC_SUBST(UNINSTALL_CIFSMOUNT)
99 AC_SUBST(CIFSUMOUNT_PROGS)
100 AC_SUBST(INSTALL_CIFSUMOUNT)
101 AC_SUBST(UNINSTALL_CIFSUMOUNT)
102 AC_SUBST(CIFSUPCALL_PROGS)
103 AC_SUBST(INSTALL_CIFSUPCALL)
104 AC_SUBST(UNINSTALL_CIFSUPCALL)
105 AC_SUBST(EXTRA_SBIN_PROGS)
106 AC_SUBST(EXTRA_ALL_TARGETS)
107 AC_SUBST(CONFIG_LIBS)
110 # compile with optimization and without debugging by default, but
111 # allow people to set their own preference.
112 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
113 # if it has no value. This prevent *very* large debug binaries from occurring
115 if test "x$debug" = "xyes" ; then
116 CFLAGS="${CFLAGS} -g"
118 if test "x$CFLAGS" = x; then
122 m4_include(../lib/socket_wrapper/config.m4)
123 m4_include(../lib/nss_wrapper/config.m4)
125 m4_include(m4/swat.m4)
127 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
129 # Probe the gcc version for extra CFLAGS. We always stash these in
130 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
131 # Makefile edit, avoiding the need to re-run configure.
132 if test x"$ac_cv_prog_gcc" = x"yes" ; then
133 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
134 # Add -Wdeclaration-after-statement if compiler supports it
136 [that the C compiler understands -Wdeclaration-after-statement],
137 samba_cv_HAVE_Wdeclaration_after_statement, [
142 }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
143 samba_cv_HAVE_Wdeclaration_after_statement=yes,
144 samba_cv_HAVE_Wdeclaration_after_statement=no,
145 samba_cv_HAVE_Wdeclaration_after_statement=cross)
148 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
149 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
152 #-Werror-implicit-function-declaration
154 [that the C compiler understands -Werror-implicit-function-declaration],
155 samba_cv_HAVE_Werror_implicit_function_declaration, [
160 }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
161 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
162 samba_cv_HAVE_Werror_implicit_function_declaration=no,
163 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
165 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
166 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
169 # krb5developer is like developer, except we don't get
170 # -Wstrict-prototypes.
171 if test x"$krb5_developer" != x"$yes" ; then
172 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
175 if test x"$picky_developer" = x"yes"; then
176 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
180 #################################################
181 # check for a shared memory profiling support
182 AC_MSG_CHECKING(whether to use profiling)
183 AC_ARG_WITH(profiling-data,
184 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
188 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
189 samba_cv_WITH_PROFILE=yes
193 samba_cv_WITH_PROFILE=no
199 dnl Checks for programs.
200 smbtorture4_possible=yes
205 m4_include(../m4/check_make.m4)
206 AC_SAMBA_GNU_MAKE([true], [true])
209 m4_include(../m4/check_perl.m4)
210 AC_SAMBA_PERL([true], [smbtorture4_possible=no])
213 m4_include(../m4/check_python.m4)
214 AC_SAMBA_PYTHON_DEVEL([true], [smbtorture4_possible=no])
216 AC_CHECK_TOOL(AR, ar)
218 dnl Check if we (actually our C compiler!) use GNU ld
221 dnl Certain versions of GNU ld the default is not to have the
222 dnl --allow-shlib-undefined flag defined. This causes a stackload of
223 dnl warnings when building modules.
224 if test "$ac_cv_prog_gnu_ld" = "yes"; then
225 ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>&1 < /dev/null | grep "GNU ld"`
226 AC_MSG_CHECKING(GNU ld release date)
228 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'`
230 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
231 if test -n "$ac_cv_gnu_ld_date"; then
232 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
233 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
235 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
236 ac_cv_gnu_ld_version_script=yes
239 AC_MSG_CHECKING(GNU ld release version)
241 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | awk '{print $NF}' | sed -n 's,\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
242 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
243 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
245 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
246 AC_MSG_CHECKING(GNU ld release version major)
247 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
248 AC_MSG_CHECKING(GNU ld release version minor)
249 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
250 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
251 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
253 if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
254 ac_cv_gnu_ld_version_script=yes
259 dnl look for executable suffix
262 dnl Check if C compiler understands -c and -o at the same time
264 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
271 dnl Check if the C compiler understands -Werror (GNU)
272 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
277 }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
278 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
279 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
280 Werror_FLAGS="-Werror"
282 dnl Check if the C compiler understands -w2
283 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
288 }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
289 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
290 if test x"$samba_cv_HAVE_w2" = x"yes"; then
293 dnl Check if the C compiler understands -errwarn (Sun)
294 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
299 }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
300 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
301 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
302 Werror_FLAGS="-errwarn=%all"
304 dnl Check if the C compiler understands -qhalt (IBM)
305 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
310 }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
311 samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
312 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
313 Werror_FLAGS="-qhalt=w"
319 ############################################
320 # check if the compiler can handle negative enum values
321 # and don't truncate the values to INT_MAX
322 # a runtime test is needed here
324 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
328 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
330 enum negative_values v1 = NEGATIVE_VALUE;
331 unsigned v2 = NEGATIVE_VALUE;
333 if (v1 != 0xFFFFFFFF) {
334 printf("%u != 0xFFFFFFFF\n", v1);
337 if (v2 != 0xFFFFFFFF) {
338 printf("%u != 0xFFFFFFFF\n", v2);
345 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv_CC_NEGATIVE_ENUM_VALUES=no)])
346 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
347 AC_MSG_WARN([using --uint-enums for pidl])
348 PIDL_ARGS="$PIDL_ARGS --uint-enums"
351 dnl Figure out the flags to support named structure initializers
353 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
355 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
356 AC_MSG_CHECKING(uname -s)
357 AC_MSG_RESULT(${UNAME_S})
359 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
360 AC_MSG_CHECKING(uname -r)
361 AC_MSG_RESULT(${UNAME_R})
363 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
364 AC_MSG_CHECKING(uname -m)
365 AC_MSG_RESULT(${UNAME_M})
367 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
368 AC_MSG_CHECKING(uname -p)
369 AC_MSG_RESULT(${UNAME_P})
371 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
372 AC_MSG_CHECKING(uname -i)
373 AC_MSG_RESULT(${UNAME_I})
375 dnl Add #include for broken IRIX header files
378 #TODO add to libreplace
379 if test x"$ac_cv_prog_gcc" != x"yes" ; then
380 dnl Fix sensible defaults for MIPSPro compilers. The
381 dnl error numbers are valid for the 7.3 compilers,
382 dnl hopefully also valid for the 7.4 series.
384 dnl Bugzilla 3801. Force an error on warning 1035
385 dnl so we don't incorrectly detect stdint.h. This
386 dnl warning is emitted for #error directives.
387 CFLAGS="$CFLAGS -diag_error 1035"
388 dnl 1209: Controlling expression is constant
389 dnl 1174: Function foo declared but never referenced
390 dnl 3201: Parameter foo was never referenced
391 CFLAGS="$CFLAGS -woff 1209,1174,3201"
399 AC_SUBST(LDSHFLAGS_Z_DEFS)
401 AC_SUBST(LDSHFLAGS_Z_NODEFS)
403 dnl Add modules that have to be built by default here
404 dnl These have to be built static:
405 default_static_modules=""
406 default_static_modules="$default_static_modules pdb_smbpasswd"
407 default_static_modules="$default_static_modules pdb_tdbsam"
408 default_static_modules="$default_static_modules pdb_wbc_sam"
409 default_static_modules="$default_static_modules rpc_lsarpc"
410 default_static_modules="$default_static_modules rpc_samr"
411 default_static_modules="$default_static_modules rpc_winreg"
412 default_static_modules="$default_static_modules rpc_initshutdown"
413 default_static_modules="$default_static_modules rpc_dssetup"
414 default_static_modules="$default_static_modules rpc_wkssvc"
415 default_static_modules="$default_static_modules rpc_svcctl"
416 default_static_modules="$default_static_modules rpc_ntsvcs"
417 default_static_modules="$default_static_modules rpc_netlogon"
418 default_static_modules="$default_static_modules rpc_netdfs"
419 default_static_modules="$default_static_modules rpc_srvsvc"
420 default_static_modules="$default_static_modules rpc_spoolss"
421 default_static_modules="$default_static_modules rpc_eventlog"
422 default_static_modules="$default_static_modules auth_sam"
423 default_static_modules="$default_static_modules auth_unix"
424 default_static_modules="$default_static_modules auth_winbind"
425 default_static_modules="$default_static_modules auth_wbc"
426 default_static_modules="$default_static_modules auth_server"
427 default_static_modules="$default_static_modules auth_domain"
428 default_static_modules="$default_static_modules auth_builtin"
429 default_static_modules="$default_static_modules auth_netlogond"
430 default_static_modules="$default_static_modules vfs_default"
431 default_static_modules="$default_static_modules nss_info_template"
433 dnl These are preferably build shared, and static if dlopen() is not available
434 default_shared_modules=""
435 default_shared_modules="$default_shared_modules vfs_recycle"
436 default_shared_modules="$default_shared_modules vfs_audit"
437 default_shared_modules="$default_shared_modules vfs_extd_audit"
438 default_shared_modules="$default_shared_modules vfs_full_audit"
439 default_shared_modules="$default_shared_modules vfs_netatalk"
440 default_shared_modules="$default_shared_modules vfs_fake_perms"
441 default_shared_modules="$default_shared_modules vfs_default_quota"
442 default_shared_modules="$default_shared_modules vfs_readonly"
443 default_shared_modules="$default_shared_modules vfs_cap"
444 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
445 default_shared_modules="$default_shared_modules vfs_shadow_copy"
446 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
447 default_shared_modules="$default_shared_modules charset_CP850"
448 default_shared_modules="$default_shared_modules charset_CP437"
449 default_shared_modules="$default_shared_modules auth_script"
450 default_shared_modules="$default_shared_modules vfs_readahead"
451 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
452 default_shared_modules="$default_shared_modules vfs_streams_xattr"
453 default_shared_modules="$default_shared_modules vfs_streams_depot"
454 default_shared_modules="$default_shared_modules vfs_acl_xattr"
455 default_shared_modules="$default_shared_modules vfs_acl_tdb"
456 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
457 default_shared_modules="$default_shared_modules vfs_preopen"
458 default_shared_modules="$default_shared_modules vfs_catia"
459 default_shared_modules="$default_shared_modules vfs_scannedonly"
460 default_shared_modules="$default_shared_modules vfs_crossrename"
461 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
462 default_shared_modules="$default_shared_modules vfs_time_audit"
463 default_shared_modules="$default_shared_modules idmap_autorid"
465 if test "x$developer" = xyes; then
466 default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
467 default_shared_modules="$default_shared_modules charset_weird perfcount_test"
471 # Config CPPFLAG settings for strange OS's that must be set
472 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
473 # case statement; its first reference must be unconditional.
478 # Defines needed for HPUX support.
479 # HPUX has bigcrypt but (sometimes?) doesn't use it for
480 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
484 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
490 # CRAY Unicos has broken const handling
492 AC_MSG_RESULT([disabling const])
493 CPPFLAGS="$CPPFLAGS -Dconst="
497 # AIX4.x doesn't even admit to having large
498 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
501 AC_MSG_RESULT([enabling large file support])
502 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
503 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
506 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
507 # to the existance of large files..
508 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
509 # recommendations on large file support, however it makes the
510 # compile work using gcc 2.7 and 2.8, whereas using the Sun
511 # recommendation makes the compile fail on gcc2.7. JRA.
513 # Solaris uses SYSV printing. Make sure to set that here. --jerry
516 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
518 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
519 AC_MSG_RESULT([no large file support])
522 AC_MSG_RESULT([enabling large file support])
523 if test "$ac_cv_prog_gcc" = yes; then
524 ${CC-cc} -v >conftest.c 2>&1
525 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
527 case "$ac_cv_gcc_compiler_version_number" in
528 *"gcc version 2.6"*|*"gcc version 2.7"*)
529 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
530 LDFLAGS="$LDFLAGS -lthread"
531 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
534 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
535 LDFLAGS="$LDFLAGS -lthread"
536 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
537 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
541 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
542 LDFLAGS="$LDFLAGS -lthread"
543 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
544 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
550 # IRIX uses SYSV printing. Make sure to set that here
553 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
555 *freebsd*|*dragonfly*)
556 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
559 # VOS may need to have POSIX support and System V compatibility enabled.
566 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
567 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
571 *-D_SYSV*|*-D_SVID_SOURCE*)
574 CPPFLAGS="$CPPFLAGS -D_SYSV"
575 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
579 # Tests needed for SINIX large file support.
582 if test $host = mips-sni-sysv4 ; then
583 AC_MSG_CHECKING([for LFS support])
584 old_CPPFLAGS="$CPPFLAGS"
585 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
589 #if _LFS64_LARGEFILE == 1
594 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
595 CPPFLAGS="$old_CPPFLAGS"
596 if test x$SINIX_LFS_SUPPORT = xyes ; then
597 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
598 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
599 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
600 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
601 LIBS="`getconf LFS64_LIBS` $LIBS"
603 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
607 # Systems with LFS support.
609 gnu* | k*bsd*-gnu | kopensolaris*-gnu)
610 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
611 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
612 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
613 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
616 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
619 AC_MSG_CHECKING([for LFS support])
620 old_CPPFLAGS="$CPPFLAGS"
621 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
624 #include <sys/utsname.h>
628 #if _LFS64_LARGEFILE == 1
633 /* Ensure this is glibc 2.2 or higher */
634 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
635 int libc_major = __GLIBC__;
636 int libc_minor = __GLIBC_MINOR__;
644 /* Ensure this is kernel 2.4 or higher */
647 release = strdup(uts.release);
648 major = atoi(strsep(&release, "."));
649 minor = atoi(strsep(&release, "."));
651 if (major > 2 || (major == 2 && minor > 3))
658 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
659 CPPFLAGS="$old_CPPFLAGS"
660 if test x$LINUX_LFS_SUPPORT = xyes ; then
661 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
662 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
663 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
664 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
666 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
670 # MacOS X is the *only* system that uses compose character in utf8. This
671 # is so horribly broken....
674 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
676 # Add a system specific charset module.
677 default_shared_modules="$default_shared_modules charset_macosxfs"
681 AC_MSG_CHECKING([for LFS support])
682 old_CPPFLAGS="$CPPFLAGS"
683 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
687 #if _LFS64_LARGEFILE == 1
692 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
693 CPPFLAGS="$old_CPPFLAGS"
694 if test x$GLIBC_LFS_SUPPORT = xyes ; then
695 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
696 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
697 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
699 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
702 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
703 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
708 SAVE_CPPFLAGS="${CPPFLAGS}"
709 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
711 AC_LIBREPLACE_BROKEN_CHECKS
712 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
713 AC_LIBREPLACE_NETWORK_CHECKS
715 CPPFLAGS="${SAVE_CPPFLAGS}"
717 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
719 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
720 AC_SUBST(LIBREPLACE_OBJS)
722 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
723 AC_SUBST(LIBREPLACE_LIBS)
726 # add -ldl to the global LIBS
727 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
728 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
731 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
732 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
733 AC_CHECK_HEADERS(limits.h float.h libintl.h)
734 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
735 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h)
736 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
737 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
738 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
739 AC_CHECK_HEADERS(sys/sysmacros.h)
740 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
741 AC_CHECK_HEADERS(langinfo.h locale.h)
742 AC_CHECK_HEADERS(xfs/libxfs.h)
743 AC_CHECK_HEADERS(netgroup.h)
745 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
751 ## These fail to compile on IRIX so just check for their presence
752 AC_CHECK_HEADERS(sys/mode.h,,,)
754 # Look for Darwin headers
755 old_CPPFLAGS="$CPPFLAGS"
756 CPPFLAGS="-Iinclude $CPPFLAGS"
757 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
758 CPPFLAGS="$old_CPPFLAGS"
760 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
761 # subdirectory of headers.
762 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
764 if test x"$enable_developer" = x"yes" ; then
765 if test x"$ac_cv_header_valgrind_h" = xyes -o \
766 x"$ac_cv_header_valgrind_valgrind_h" = xyes ; then
767 AC_DEFINE(VALGRIND,1,[Whether we have valgrind headers])
772 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
773 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
777 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
778 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
779 if test x"$ac_cv_header_shadow_h" = x"yes"; then
780 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
784 AC_CHECK_HEADERS(shadow.h)
785 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
786 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
788 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
789 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
791 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
793 # For experimental utmp support (lastlog on some BSD-like systems)
794 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
796 AC_CHECK_SIZEOF(int,cross)
797 AC_CHECK_SIZEOF(long,cross)
798 AC_CHECK_SIZEOF(long long,cross)
799 AC_CHECK_SIZEOF(short,cross)
814 AC_CHECK_TYPE(ssize_t, int)
815 AC_CHECK_TYPE(wchar_t, unsigned short)
817 ############################################
818 # for cups support we need libcups, and a handful of header files
821 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
823 if test x$enable_cups != xno; then
824 AC_PATH_PROG(CUPS_CONFIG, cups-config)
826 if test "x$CUPS_CONFIG" != x; then
828 ac_save_LDFLAGS=$LDFLAGS
829 ac_save_PRINT_LIBS=$PRINT_LIBS
830 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
832 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
833 x"$ac_cv_header_cups_language_h" = xyes; then
834 # try linking with -lcups alone first. That should work unless libcups is
835 # underlinked. With cups-config --libs we pull in unwanted and unneeded
836 # dendencies including thread libraries - use cups-config only if really
838 AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
839 [PRINT_LIBS="$ac_save_PRINT_LIBS -lcups"],
840 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
841 PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
843 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
844 samba_cv_HAVE_CUPS=yes
845 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
847 AC_MSG_WARN([cups-config around but cups-devel not installed])
848 CFLAGS=$ac_save_CFLAGS
849 LDFLAGS=$ac_save_LDFLAGS
850 PRINT_LIBS=$ac_save_PRINT_LIBS
853 elif test x"$enable_cups" = x"yes"; then
854 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
858 AC_ARG_ENABLE(iprint,
859 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
861 if test x$enable_iprint != xno; then
862 if test x"$samba_cv_HAVE_CUPS" = xyes; then
863 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
864 elif test x"$enable_iprint" = x"yes"; then
865 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
869 ############################################
870 # check if the compiler will optimize out function calls
871 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
876 this_function_does_not_exist();
882 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
883 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
884 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
887 #############################################
888 # check for fd passing struct via msg_control
889 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
891 #include <sys/types.h>
894 #include <sys/socket.h>
895 #include <sys/un.h>],
900 char control[CMSG_SPACE(sizeof(int))];
902 msg.msg_control = control_un.control;
903 msg.msg_controllen = sizeof(control_un.control);
905 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
906 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
907 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
908 [If we can use msg_control for passing file descriptors])
911 #############################################
912 # check for fd passing struct via msg_acctrights
913 AC_CACHE_CHECK([for fd passing via msg_acctrights],
914 samba_cv_msghdr_msg_acctrights, [
916 #include <sys/types.h>
919 #include <sys/socket.h>
920 #include <sys/un.h>],
924 msg.msg_acctrights = (caddr_t) &fd;
925 msg.msg_acctrightslen = sizeof(fd);
927 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
928 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
929 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
930 [If we can use msg_acctrights for passing file descriptors])
933 AC_CHECK_FUNCS(dirfd)
934 if test x"$ac_cv_func_dirfd" = x"yes"; then
935 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
938 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
940 #include <sys/types.h>
945 #include <signal.h>],[struct sigevent s;],
946 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
947 if test x"$samba_cv_struct_sigevent" = x"yes"; then
948 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
949 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
950 [#include <signal.h>])
953 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
955 #include <sys/types.h>
960 #if TIME_WITH_SYS_TIME
961 # include <sys/time.h>
965 # include <sys/time.h>
970 ],[struct timespec ts;],
971 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
972 if test x"$samba_cv_struct_timespec" = x"yes"; then
973 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
976 # and glibc has setresuid under linux but the function does
977 # nothing until kernel 2.1.44! very dumb.
978 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
979 AC_TRY_RUN([#include <errno.h>
980 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
981 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
982 if test x"$samba_cv_have_setresuid" = x"yes"; then
983 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
986 # Do the same check for setresguid...
988 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
989 AC_TRY_RUN([#include <unistd.h>
991 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
992 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
993 if test x"$samba_cv_have_setresgid" = x"yes"; then
994 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
999 ###############################################
1000 # Readline included by default unless explicitly asked not to
1001 test "${with_readline+set}" != "set" && with_readline=yes
1003 # test for where we get readline() from
1004 AC_MSG_CHECKING(whether to use readline)
1005 AC_ARG_WITH(readline,
1006 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
1007 [ case "$with_readline" in
1011 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1012 AC_CHECK_HEADERS(readline/history.h)
1014 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1015 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1016 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1018 AC_CHECK_LIB(readline, rl_callback_handler_install,
1019 [TERMLIBS="-lreadline $TERMLIBS"
1020 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1021 break], [TERMLIBS=], $TERMLIBS)])
1029 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1030 # alternate readline path
1032 _cppflags=${CPPFLAGS}
1034 # Add additional search path
1035 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1036 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1038 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1039 AC_CHECK_HEADERS(readline/history.h)
1041 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1042 for termlib in ncurses curses termcap terminfo termlib; do
1043 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1045 AC_CHECK_LIB(readline, rl_callback_handler_install,
1046 [TERMLDFLAGS="-L$with_readline/lib"
1047 TERMCPPFLAGS="-I$with_readline/include"
1048 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1049 TERMLIBS="-lreadline $TERMLIBS"
1050 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1051 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1059 AC_SUBST(TERMLDFLAGS)
1061 # The readline API changed slightly from readline3 to readline4, so
1062 # code will generate warnings on one of them unless we have a few
1064 AC_CHECK_LIB(readline, rl_completion_matches,
1065 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1066 [Do we have rl_completion_matches?])],
1070 # not all readline libs have rl_event_hook or history_list
1071 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1072 AC_CHECK_LIB(readline, history_list,
1073 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1077 ###############################################
1078 # test for where we get yp_get_default_domain() from
1079 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1080 AC_CHECK_FUNCS(yp_get_default_domain)
1082 # Check if we have execl, if not we need to compile smbrun.
1083 AC_CHECK_FUNCS(execl)
1084 if test x"$ac_cv_func_execl" = x"no"; then
1085 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1088 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1089 AC_CHECK_FUNCS(strtol)
1090 AC_CHECK_FUNCS(strchr chflags)
1091 AC_CHECK_FUNCS(getrlimit fsync setpgid)
1092 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
1093 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1094 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1095 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1096 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1097 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1098 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1099 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1100 AC_CHECK_FUNCS(getpwent_r)
1101 AC_CHECK_FUNCS(getdents64)
1102 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1103 AC_CHECK_FUNCS(syslog vsyslog timegm)
1104 AC_CHECK_FUNCS(setlocale nl_langinfo)
1105 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1106 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1107 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1108 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1109 AC_CHECK_HEADERS(sys/mman.h)
1110 # setbuffer, shmget, shm_open are needed for smbtorture
1111 AC_CHECK_FUNCS(shmget shm_open)
1112 AC_CHECK_FUNCS(gettext dgettext)
1113 AC_CHECK_FUNCS(bindtextdomain textdomain)
1114 AC_CHECK_FUNCS(strupr)
1116 # Find a method of generating a stack trace
1117 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1118 # libexecinfo provides backtrace_symbols on FreeBSD
1119 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1120 AC_CHECK_FUNCS(backtrace_symbols)
1121 AC_CHECK_LIB(exc, trace_back_stack)
1123 # check for sysctlbyname for BSD systems
1124 AC_CHECK_FUNCS(sysctlbyname)
1126 #################################################
1127 # Check to see if core dump directory is defined in linux
1128 # with /proc/sys/kernel/core_pattern
1130 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
1131 AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
1132 [Whether Linux kernel uses core_pattern for core files]),
1135 #############################
1136 # check if building with gpfs
1137 AC_CHECK_HEADERS(gpfs_gpl.h)
1138 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1139 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1140 default_shared_modules="$default_shared_modules vfs_gpfs"
1143 #############################################
1144 # check if building on Isilon OneFS
1145 printf "%s" "checking for Isilon OneFS... "
1147 LIBS="$LIBS -lisi_version"
1148 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1149 [get_isilon_copyright()],
1150 samba_cv_HAVE_ONEFS=yes,
1151 samba_cv_HAVE_ONEFS=no)
1152 echo $samba_cv_HAVE_ONEFS
1153 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1154 AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1155 default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1156 default_static_modules="$default_static_modules"
1157 ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1158 # Need to also add general libs for oplocks support
1159 save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1161 AC_SUBST(ONEFS_LIBS)
1164 # Note that all the libunwind symbols in the API are defined to internal
1165 # platform-specific version, so we must include libunwind.h before checking
1167 AC_MSG_CHECKING([for libunwind])
1170 UNWIND_ARCH="unknown"
1171 if test x"$UNAME_I" != x"unknown"; then
1172 UNWIND_ARCH="$UNAME_I"
1173 elif test x"$UNAME_M" != x"unknown"; then
1174 UNWIND_ARCH="$UNAME_M"
1175 elif test x"$UNAME_P" != x"unknown"; then
1176 UNWIND_ARCH="$UNAME_P"
1179 case "$UNWIND_ARCH" in
1181 # This probably won't link without
1182 # the platform-specific libunwind.
1183 LIBS="$LIBS -lunwind"
1186 # Add the platform-specific libunwind module.
1187 LIBS="$LIBS -lunwind -lunwind-x86"
1190 # Add the platform-specific libunwind module.
1191 # based on uname -i, uname -m or uname -p
1192 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1198 #ifdef HAVE_LIBUNWIND_H
1199 #include <libunwind.h>
1203 unw_context_t ctx; unw_cursor_t cur;
1204 char buf[256]; unw_word_t off;
1205 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1206 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1210 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1212 # If we have libunwind, test whether we also have libunwind-ptrace
1213 # which would let us unwind arbitrary processes.
1215 AC_CHECK_HEADERS(libunwind-ptrace.h)
1216 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1218 LIBUNWIND_PTRACE="-lunwind-ptrace";
1219 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1220 [Whether libunwind-ptrace.a is available.])
1222 [ LIBUNWIND_PTRACE="" ])
1231 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1232 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1233 AC_CHECK_HEADERS(sys/ptrace.h)
1234 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1237 #if HAVE_SYS_TYPES_H
1238 #include <sys/types.h>
1240 #if HAVE_SYS_PTRACE_H
1241 #include <sys/ptrace.h>
1245 pid_t me = (pid_t)-1;
1246 ptrace(PTRACE_ATTACH, me, 0, 0);
1247 ptrace(PTRACE_DETACH, me, 0, 0);
1252 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1253 [Whether the Linux ptrace(2) interface is available.])
1261 AC_SUBST(LIBUNWIND_PTRACE)
1263 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1264 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1265 AC_CHECK_FUNCS(__getcwd _getcwd)
1266 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1267 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1268 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1269 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1270 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1271 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1272 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1273 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1274 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1275 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1276 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1277 AC_CHECK_FUNCS(prctl)
1280 #ifdef HAVE_SYS_PRCTL_H
1281 #include <sys/prctl.h>
1284 [int i; i = prtcl(0); ],
1285 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1291 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1292 # glibc <= 2.3.2 has a broken getgrouplist
1293 AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1295 #include <sys/utsname.h>
1297 /* glibc up to 2.3 has a broken getgrouplist */
1298 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1299 int libc_major = __GLIBC__;
1300 int libc_minor = __GLIBC_MINOR__;
1304 if ((libc_major == 2) && (libc_minor <= 3))
1309 ], [samba_cv_linux_getgrouplist_ok=yes],
1310 [samba_cv_linux_getgrouplist_ok=no],
1311 [samba_cv_linux_getgrouplist_ok=cross])])
1312 if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1313 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1317 AC_CHECK_FUNCS(getgrouplist)
1322 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1325 if test x$ac_cv_func_stat64 = xno ; then
1326 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1328 #if defined(HAVE_UNISTD_H)
1331 #include <sys/stat.h>
1332 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1333 AC_MSG_RESULT([$ac_cv_func_stat64])
1334 if test x$ac_cv_func_stat64 = xyes ; then
1335 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1339 if test x$ac_cv_func_lstat64 = xno ; then
1340 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1342 #if defined(HAVE_UNISTD_H)
1345 #include <sys/stat.h>
1346 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1347 AC_MSG_RESULT([$ac_cv_func_lstat64])
1348 if test x$ac_cv_func_lstat64 = xyes ; then
1349 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1353 if test x$ac_cv_func_fstat64 = xno ; then
1354 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1356 #if defined(HAVE_UNISTD_H)
1359 #include <sys/stat.h>
1360 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1361 AC_MSG_RESULT([$ac_cv_func_fstat64])
1362 if test x$ac_cv_func_fstat64 = xyes ; then
1363 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1367 #################################################
1368 # Check whether struct stat has timestamps with sub-second resolution.
1371 samba_cv_stat_hires=no
1372 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1373 [samba_cv_stat_hires=yes])
1374 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1375 [samba_cv_stat_hires=yes])
1376 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1377 [samba_cv_stat_hires=yes])
1378 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1379 [samba_cv_stat_hires=yes])
1380 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1381 [samba_cv_stat_hires=yes])
1383 if test x"$samba_cv_stat_hires" = x"yes" ; then
1384 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1385 [whether struct stat has sub-second timestamps])
1388 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1389 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1390 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1393 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1396 [#include <sys/stat.h>],
1398 int a = UF_DOS_ARCHIVE;
1399 int h = UF_DOS_HIDDEN;
1401 int s = UF_DOS_SYSTEM;
1402 int i = UF_DOS_NOINDEX;
1403 int f = UF_DOS_FLAGS;
1405 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1408 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1409 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1412 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1413 samba_cv_function_attribute_destructor,
1417 __attribute__((destructor))
1418 static void cleanup(void) { }
1420 samba_cv_function_attribute_destructor=yes)
1423 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1424 AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1425 [whether we can compile with __attribute__((destructor))])
1428 #####################################
1429 # needed for SRV lookups
1430 AC_CHECK_LIB(resolv, dn_expand)
1431 AC_CHECK_LIB(resolv, _dn_expand)
1432 AC_CHECK_LIB(resolv, __dn_expand)
1435 # Check for the functions putprpwnam, set_auth_parameters,
1436 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1437 # Needed for OSF1 and HPUX.
1440 AC_LIBTESTFUNC(security, putprpwnam)
1441 AC_LIBTESTFUNC(sec, putprpwnam)
1443 AC_LIBTESTFUNC(security, set_auth_parameters)
1444 AC_LIBTESTFUNC(sec, set_auth_parameters)
1446 # UnixWare 7.x has its getspnam in -lgen
1447 AC_LIBTESTFUNC(gen, getspnam)
1449 AC_LIBTESTFUNC(security, getspnam)
1450 AC_LIBTESTFUNC(sec, getspnam)
1452 AC_LIBTESTFUNC(security, bigcrypt)
1453 AC_LIBTESTFUNC(sec, bigcrypt)
1455 AC_LIBTESTFUNC(security, getprpwnam)
1456 AC_LIBTESTFUNC(sec, getprpwnam)
1458 AC_CHECK_FUNCS(strsignal)
1460 ############################################
1461 # Check for EA implementations
1464 AC_SEARCH_LIBS(getproplist, [proplist])
1465 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1466 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1467 AC_CHECK_FUNCS(sizeof_proplist_entry)
1469 *freebsd4* | *dragonfly* )
1470 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1473 AC_CHECK_FUNCS(attropen)
1476 AC_SEARCH_LIBS(getxattr, [attr])
1477 AC_CHECK_FUNCS(getxattr,[
1478 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1480 AC_CHECK_FUNCS(getea,[
1481 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1483 AC_CHECK_FUNCS(attr_get,[
1484 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1486 AC_CHECK_FUNCS(extattr_delete_file,[
1487 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_link extattr_get_fd extattr_get_file extattr_get_link extattr_list_fd extattr_list_file extattr_list_link extattr_set_fd extattr_set_file extattr_set_link)
1492 ########################################################
1493 # Do xattr functions take additional options like on Darwin?
1494 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1495 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1497 LIBS="$LIBS $ACL_LIBS"
1499 #include <sys/types.h>
1500 #if HAVE_ATTR_XATTR_H
1501 #include <attr/xattr.h>
1502 #elif HAVE_SYS_XATTR_H
1503 #include <sys/xattr.h>
1506 getxattr(0, 0, 0, 0, 0, 0);
1508 [smb_attr_cv_xattr_add_opt=yes],
1509 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1511 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1512 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1522 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1524 if test "x$enable_pie" != xno
1526 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1528 cat > conftest.c <<EOF
1530 int main () { return 0;}
1532 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1540 if test x"${samba_cv_fpie}" = x"yes"
1549 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1551 if test "x$enable_relro" != xno
1553 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1555 cat > conftest.c <<EOF
1557 main () { return 0;}
1559 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1567 if test x"${samba_cv_relro}" = x"yes"
1569 RELRO_LDFLAGS="-Wl,-z,relro"
1577 # Assume non-shared by default and override below
1580 # these are the defaults, good for lots of systems
1585 SHLD="\${CC} \${CFLAGS}"
1586 PICFLAG="${PIE_CFLAGS}"
1590 # this bit needs to be modified for each OS that supports share libs
1591 # You need to specify how to create a shared library and
1592 # how to compile C code to produce PIC object files
1594 AC_MSG_CHECKING([ability to build shared libraries])
1596 # and these are for particular systems
1598 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1600 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1601 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1604 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1605 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1606 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1608 DYNEXP="-Wl,--export-dynamic"
1610 SONAMEFLAG="-Wl,-soname="
1611 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1613 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1615 if test "${GCC}" = "yes"; then
1617 SONAMEFLAG="-Wl,-soname="
1618 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1626 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1627 SONAMEFLAG="-Wl,-soname="
1629 SONAMEFLAG="-Wl,-h,"
1631 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1632 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1634 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1637 SONAMEFLAG="-Wl,-h,"
1638 PICFLAG="-KPIC" # Is this correct for SunOS
1639 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1640 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1642 *netbsd* | *freebsd* | *dragonfly* )
1645 DYNEXP="-Wl,--export-dynamic"
1646 SONAMEFLAG="-Wl,-soname,"
1647 PICFLAG="-fPIC -DPIC"
1648 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1649 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1651 *openbsd*) BLDSHARED="true"
1653 DYNEXP="-Wl,-Bdynamic"
1654 SONAMEFLAG="-Wl,-soname,"
1656 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1657 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1659 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1661 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1665 LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1666 SONAMEFLAG="-Wl,-soname,"
1667 if test "${GCC}" = "yes"; then
1672 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1674 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1676 # use expfull to export underscored symbols
1677 # add rtl to remove /lib/crt0.o warning
1678 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1679 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1681 # as AIX code is always position independent...
1682 # .po will just create compile warnings, use po.o:
1683 if test "${GCC}" != "yes"; then
1684 ## for funky AIX compiler using strncpy()
1685 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1688 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1689 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1690 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1692 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1693 # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1694 # 64bit build using HP's cc with CFLAGS="+DD64"
1695 # hppa: 64bit build unsupported by gcc
1696 # 64bit build using HP's cc with CFLAGS="+DA2.0w"
1697 # HP-UX 11.00 ld needs PHSS_33034
1699 if test "${GCC}" = "yes"; then
1705 # "Uses depth-first symbol resolution"
1706 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1707 if test "$host_cpu" != "ia64"; then
1708 # "don't store literals in read-only memory" (?):
1709 PICFLAG="$PICFLAG +ESnolit"
1712 if test "$host_cpu" = "ia64"; then
1714 # TODO: does the linker find the right 32/64 bit version of the libs? :
1715 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1718 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1720 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1721 SONAMEFLAG="-Wl,-soname="
1723 SONAMEFLAG="-Wl,+h,"
1725 # PIE/PIC flags at link time are required on HP-UX because
1726 # linking requires a temporary source file, which is being
1727 # compiled with the indicated flags - which need to contain
1728 # PIC flags when we don't support PIE flags:
1729 if test "$PIE_LDFLAGS" = "" ; then
1730 PIE_LDFLAGS=\${PICFLAG}
1732 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1733 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1735 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1738 SONAMEFLAG="-Wl,-soname,"
1739 if test "${GCC}" = "yes"; then
1742 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1743 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1744 for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1745 saved_ldflags="$LDFLAGS"
1746 AC_MSG_CHECKING([if $flags works])
1747 LDFLAGS="$flags $saved_ldflags"
1749 [AC_MSG_RESULT([yes])
1750 LDSHFLAGS_Z_NODEFS=$flags],
1751 AC_MSG_RESULT([no]))
1752 LDFLAGS="$saved_ldflags"
1753 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1756 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1757 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1759 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1762 SONAMEFLAG="-Wl,-soname,"
1764 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1766 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1767 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1769 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1770 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1772 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1774 *-univel-*) if [ test "$GCC" != yes ]; then
1775 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1780 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1782 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1785 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1786 if [ test "$GCC" != yes ]; then
1787 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1790 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1792 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1797 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1799 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1800 CFLAGS="$CFLAGS -fno-common"
1803 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1805 # Since gcc doesn't fail on unrecognised options, the
1806 # PIE test incorrectly succeeds. Darwin gcc does not
1807 # actually support the PIE stuff.
1810 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1814 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1818 if test "$enable_shared" != "yes"; then
1822 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1823 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1826 if test x"$BLDSHARED" = x"true" ; then
1827 LDFLAGS="$LDFLAGS -L./bin"
1830 AC_MSG_RESULT($BLDSHARED)
1832 if test x"$enable_developer" = x"yes" ; then
1833 default_as_needed=auto
1835 default_as_needed=no
1837 AC_ARG_ENABLE(as-needed,
1838 AS_HELP_STRING([--enable-as-needed],
1839 [Turn on as-needed support if available (default=no)]),
1840 [enable_as_needed=$enableval],
1841 [enable_as_needed=$default_as_needed])
1842 if test "x$enable_as_needed" != xno; then
1843 saved_before_as_needed_ldflags="$LDFLAGS"
1844 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1845 saved_ldflags="$LDFLAGS"
1846 AC_MSG_CHECKING([if $flags works])
1847 LDFLAGS="$flags $saved_ldflags"
1849 [AC_MSG_RESULT([yes])
1850 LD_AS_NEEDED_FLAG=$flags
1851 ld_as_needed_flag_found=yes],
1852 AC_MSG_RESULT([no]))
1853 LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1854 test x"$ld_as_needed_flag_found" = xyes && break
1858 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1859 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1860 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1861 cat > conftest_shb.c <<END
1864 cat > conftest_sha.c <<END
1870 cat > conftest.c <<END
1879 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1880 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1881 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1882 AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1883 AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1884 AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1885 if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1889 ld_as_needed_flag_found=no
1890 LDFLAGS="$saved_before_as_needed_ldflags"
1891 AC_MSG_RESULT([yes])
1893 rm conftest* libconftest*
1896 # check if we have to disable LD_AS_NEEDED_FLAG:
1897 # On some systems for a veriety of reasons linking with
1898 # -Wl,--as-needed -lreadline -lncurses fails
1899 # we have to retest, if these combination is detected before.
1902 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1903 if test x$ld_as_needed_flag_found = xyes ; then
1904 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1905 # try if check no fails
1907 LIBS="$LIBS $TERMLIBS"
1908 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1915 # for historical reasons almost all linkers don't complain about unresolved
1916 # symbols in shared libs. Except for the internal samba modules we want to get
1917 # errors when we produce a shared lib with unresolved symbols. On some
1918 # platforms unresolved symbols might be intended, so we might have to add
1919 # platform specific exceptions here.
1921 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1922 saved_ldflags="$LDFLAGS"
1923 AC_MSG_CHECKING([if $flags works])
1924 LDFLAGS="$flags $saved_ldflags"
1926 [AC_MSG_RESULT([yes])
1927 LDSHFLAGS_Z_DEFS=$flags
1928 ldshflags_z_defs_found=yes],
1929 AC_MSG_RESULT([no]))
1930 LDFLAGS=$saved_ldflags
1931 test x"$ldshflags_z_defs_found" = xyes && break
1934 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1935 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1936 AC_MSG_CHECKING([LDFLAGS])
1937 AC_MSG_RESULT([$LDFLAGS])
1938 AC_MSG_CHECKING([DYNEXP])
1939 AC_MSG_RESULT([$DYNEXP])
1941 #######################################################
1942 # test whether building a shared library actually works
1943 if test $BLDSHARED = true; then
1945 AC_MSG_CHECKING([SHLD])
1946 AC_MSG_RESULT([$SHLD])
1947 AC_MSG_CHECKING([LDSHFLAGS])
1948 AC_MSG_RESULT([$LDSHFLAGS])
1950 AC_MSG_CHECKING([SHLIBEXT])
1951 AC_MSG_RESULT([$SHLIBEXT])
1952 AC_MSG_CHECKING([SONAMEFLAG])
1953 AC_MSG_RESULT([$SONAMEFLAG])
1955 AC_MSG_CHECKING([PICFLAG])
1956 AC_MSG_RESULT([$PICFLAG])
1958 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1959 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1961 AC_CACHE_CHECK([whether building shared libraries actually works],
1962 [ac_cv_shlib_works],[
1963 # try building a trivial shared library
1964 ac_cv_shlib_works=no
1965 # The $SHLD and $LDSHFLAGS variables may contain references to other
1966 # variables so they need to be eval'ed.
1967 if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1969 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1970 TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1971 if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1973 ac_cv_shlib_works=yes
1976 rm -f "shlib.$SHLIBEXT" shlib.o
1979 if test $ac_cv_shlib_works = no; then
1984 if test x"$BLDSHARED" != x"true"; then
1985 LDSHFLAGS="shared-libraries-disabled"
1986 SONAMEFLAG="shared-libraries-disabled"
1987 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1988 SHLD="shared-libraries-disabled"
1989 PICFLAG="${PIE_CFLAGS}"
1990 SHLIBEXT="shared_libraries_disabled"
1991 smbtorture4_possible=no
1994 AC_MSG_CHECKING([used PICFLAG])
1995 AC_MSG_RESULT([$PICFLAG])
1997 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2001 ###########################################################
2003 # Configuration of subsystems / libraries
2005 ###########################################################
2009 UNINSTALLLIBCMD_SH=:
2012 if test $BLDSHARED = true; then
2013 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
2014 UNINSTALLLIBCMD_SH="rm -f"
2016 if test $enable_static = yes; then
2017 INSTALLLIBCMD_A="\$(INSTALLCMD)"
2018 UNINSTALLLIBCMD_A="rm -f"
2021 #################################################
2022 # --disable-shared-libs
2023 # can be used to disable the internal use of shared libs altogether
2024 # (this only has an effect when building shared libs is enabled)
2029 AC_MSG_CHECKING(whether to use shared libraries internally)
2030 AC_ARG_ENABLE([shared-libs],
2031 AS_HELP_STRING([--enable-shared-libs],
2032 [Use shared libraries internally (default=yes)]),
2033 [enable_shared_libs=$enableval],
2034 [enable_shared_libs=yes])
2036 if test x"$enable_shared_libs" != x"no" ; then
2037 USESHARED=$BLDSHARED
2040 AC_MSG_RESULT([$USESHARED])
2042 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
2043 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
2046 #################################################
2047 # --with-static-libs=LIBS:
2048 # link (internal) libs dynamically or statically?
2050 # If a subsystem is built as a library then this controls whether they are
2051 # linked into Samba targets statically or dynamically:
2053 # * If we build the shared library at all, we link dynamically by default.
2055 # * We only link statically if we don't build shared or if the library
2056 # appears in the --with-static-libs configure option.
2059 # --with-static-libs=libtalloc makes use of libtalloc.a instead
2060 # of linking the dynamic variant with -ltalloc.
2062 # NOTE: This option only affects libraries that we do not only build
2063 # but that samba also links against as libraries (as opposed to linking
2064 # the plain object files. - This has to be configured in Makefile.in.
2065 # So in particular it does not harm to give invalid or unknown names here.
2068 AC_ARG_WITH([static-libs],
2069 [AS_HELP_STRING([--with-static-libs=LIBS],
2070 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
2071 [AS_IF([test $withval],
2072 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
2073 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
2074 eval LINK_$lib=STATIC
2080 # until we have organized other internal subsystems (as util, registry
2081 # and smbconf) into shared libraries, we CAN NOT link libnetapi
2082 # dynamically to samba programs.
2084 LINK_LIBNETAPI=STATIC
2086 LINK_LIBSMBCLIENT=STATIC
2089 # The library versions are hardcoded here
2090 # and filled into the LIBFOO_SOVER variable.
2092 # TODO: for talloc and tdb (at least), these should
2093 # be extracted from their respective source directories
2095 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
2096 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
2098 if test "x$enable_external_libtalloc" != xno
2100 PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
2101 [ enable_external_libtalloc=yes ],
2102 [ if test x$enable_external_libtalloc = xyes; then
2103 AC_MSG_ERROR([Unable to find libtalloc])
2105 enable_external_libtalloc=no
2110 if test "x$enable_external_libtalloc" = xno
2112 m4_include(../lib/talloc/libtalloc.m4)
2113 LINK_LIBTALLOC=STATIC
2114 SMB_LIBRARY(talloc, 2)
2116 for obj in ${TALLOC_OBJ}; do
2117 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
2119 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
2120 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
2121 AC_SUBST(LIBTALLOC_OBJ0)
2123 TALLOCTORT="bin/talloctort\$(EXEEXT)"
2124 AC_SUBST(TALLOCTORT)
2128 AC_ARG_ENABLE(external_libtdb,
2129 [AS_HELP_STRING([--enable-external-libtdb],
2130 [Enable external tdb [default=auto]])],
2131 [ enable_external_libtalloc=$enableval ],
2132 [ enable_external_libtalloc=auto ])
2134 if test "x$enable_external_libtdb" != xno
2136 PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.6,
2137 [ enable_external_libtdb=yes ],
2139 if test x$enable_external_libtdb = xyes; then
2140 AC_MSG_ERROR([Unable to find libtdb])
2142 enable_external_libtdb=no
2147 AC_SUBST(LIBTDB_OBJ0)
2148 if test "x$enable_external_libtdb" = xno
2150 m4_include(../lib/tdb/libtdb.m4)
2154 LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
2155 for obj in ${TDB_OBJ}; do
2156 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2158 AC_SUBST(LIBTDB_OBJ0)
2159 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2160 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2162 TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2164 TDBDUMP="bin/tdbdump\$(EXEEXT)"
2166 TDBRESTORE="bin/tdbrestore\$(EXEEXT)"
2167 AC_SUBST(TDBRESTORE)
2168 TDBTOOL="bin/tdbtool\$(EXEEXT)"
2170 TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2171 AC_SUBST(TDBTORTURE)
2172 ac_cv_have_tdb_err_nesting=yes
2174 AC_TRY_COMPILE([#include "tdb.h"],
2175 [enum TDB_ERROR err = TDB_ERR_NESTING],
2176 ac_cv_have_tdb_err_nesting=yes,
2177 ac_cv_have_tdb_err_nesting=no)
2180 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2181 AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2184 SMB_LIBRARY(netapi, 0)
2185 SMB_LIBRARY(smbclient, 0)
2186 SMB_LIBRARY(smbsharemodes, 0)
2187 SMB_LIBRARY(addns, 0, no, [undefined API])
2193 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2194 AC_TRY_RUN([#include <stdio.h>
2195 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2196 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2197 if test x"$samba_cv_have_longlong" = x"yes"; then
2198 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2199 AC_CHECK_TYPE(intptr_t, unsigned long long)
2201 AC_CHECK_TYPE(intptr_t, unsigned long)
2205 # Check if the compiler supports the LL prefix on long long integers.
2208 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2209 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2210 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2211 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2212 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2216 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2217 AC_TRY_RUN([#include <time.h>
2218 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2219 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2220 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2221 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2224 AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
2225 AC_TRY_RUN([#include <time.h>
2228 if (sizeof(time_t) == 8) {
2229 time_t max_time = 0x7fffffffffffffffll;
2230 tm = gmtime(&max_time);
2231 /* This should fail with 32-bit tm_year. */
2233 /* Max time_t that works with 32-bit int tm_year in struct tm. */
2234 max_time = 67768036191676799ll;
2235 tm = gmtime(&max_time);
2243 samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
2244 if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
2245 AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
2249 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2250 AC_TRY_RUN([#include <stdio.h>
2251 #include <sys/stat.h>
2252 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2253 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2254 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2255 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2258 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2260 #if defined(HAVE_UNISTD_H)
2264 #include <sys/stat.h>
2265 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2266 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2267 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2268 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2271 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2273 #if defined(HAVE_UNISTD_H)
2277 #include <sys/stat.h>
2278 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2279 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2280 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2281 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2284 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2286 #if defined(HAVE_UNISTD_H)
2290 #include <sys/stat.h>
2291 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2292 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2293 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2294 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2297 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2299 #if defined(HAVE_UNISTD_H)
2303 #include <sys/stat.h>
2304 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2305 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2306 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2307 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2310 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2312 #if defined(HAVE_UNISTD_H)
2316 #include <sys/stat.h>
2317 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2318 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2319 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2320 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2323 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2325 #if defined(HAVE_UNISTD_H)
2328 #include <sys/types.h>
2329 #include <dirent.h>],
2331 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2332 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2333 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2336 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2338 #if defined(HAVE_UNISTD_H)
2341 #include <sys/types.h>
2342 #include <dirent.h>],
2343 [struct dirent64 de;],
2344 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2345 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2346 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2349 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2351 #if defined(HAVE_UNISTD_H)
2354 #include <sys/types.h>
2355 main() { dev_t dev; int i = major(dev); return 0; }],
2356 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2357 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2358 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2361 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2363 #if defined(HAVE_UNISTD_H)
2366 #include <sys/types.h>
2367 main() { dev_t dev; int i = minor(dev); return 0; }],
2368 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2369 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2370 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2373 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2375 #if defined(HAVE_UNISTD_H)
2378 #include <sys/types.h>
2379 main() { dev_t dev = makedev(1,2); return 0; }],
2380 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2381 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2382 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2385 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2386 AC_TRY_RUN([#include <stdio.h>
2387 main() { char c; c=250; exit((c > 0)?0:1); }],
2388 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2389 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2390 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2393 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2394 AC_TRY_COMPILE([#include <sys/types.h>
2396 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2397 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2398 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2399 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2402 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2403 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2404 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2405 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2406 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2409 if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then
2413 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2414 AC_TRY_RUN([#include <sys/types.h>
2416 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2417 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2418 di->d_name[0] == 0) exit(0); exit(1);} ],
2419 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2420 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2421 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2424 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2425 AC_TRY_COMPILE([#include <sys/types.h>
2426 #include <utime.h>],
2427 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2428 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2429 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2430 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2434 # Check utmp details, but only if our OS offers utmp.h
2435 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2436 dnl utmp and utmpx come in many flavours
2437 dnl We need to check for many of them
2438 dnl But we don't need to do each and every one, because our code uses
2439 dnl mostly just the utmp (not utmpx) fields.
2441 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2443 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2444 AC_TRY_COMPILE([#include <sys/types.h>
2446 [struct utmp ut; ut.ut_name[0] = 'a';],
2447 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2448 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2449 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2452 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2453 AC_TRY_COMPILE([#include <sys/types.h>
2455 [struct utmp ut; ut.ut_user[0] = 'a';],
2456 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2457 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2458 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2461 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2462 AC_TRY_COMPILE([#include <sys/types.h>
2464 [struct utmp ut; ut.ut_id[0] = 'a';],
2465 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2466 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2467 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2470 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2471 AC_TRY_COMPILE([#include <sys/types.h>
2473 [struct utmp ut; ut.ut_host[0] = 'a';],
2474 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2475 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2476 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2479 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2480 AC_TRY_COMPILE([#include <sys/types.h>
2482 [struct utmp ut; time_t t; ut.ut_time = t;],
2483 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2484 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2485 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2488 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2489 AC_TRY_COMPILE([#include <sys/types.h>
2491 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2492 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2493 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2494 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2497 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2498 AC_TRY_COMPILE([#include <sys/types.h>
2500 [struct utmp ut; ut.ut_type = 0;],
2501 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2502 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2503 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2506 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2507 AC_TRY_COMPILE([#include <sys/types.h>
2509 [struct utmp ut; ut.ut_pid = 0;],
2510 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2511 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2512 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2515 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2516 AC_TRY_COMPILE([#include <sys/types.h>
2518 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2519 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2520 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2521 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2524 dnl Look for the IPv6 varient by preference. Many systems have both.
2525 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2526 AC_TRY_COMPILE([#include <sys/types.h>
2528 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2529 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2530 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2531 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2534 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2535 AC_TRY_COMPILE([#include <sys/types.h>
2537 [struct utmp ut; ut.ut_addr = 0;],
2538 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2539 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2540 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2543 if test x$ac_cv_func_pututline = xyes ; then
2544 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2545 AC_TRY_COMPILE([#include <sys/types.h>
2547 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2548 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2549 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2550 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2554 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2555 AC_TRY_COMPILE([#include <sys/types.h>
2556 #include <utmpx.h>],
2557 [struct utmpx ux; ux.ut_syslen = 0;],
2558 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2559 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2560 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2567 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2568 AC_ARG_WITH(libiconv,
2569 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2571 if test "$withval" = "no" ; then
2572 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2574 if test "$withval" != "yes" ; then
2576 ICONV_LOOK_DIRS="$withval"
2581 for i in $ICONV_LOOK_DIRS ; do
2584 save_LDFLAGS="$LDFLAGS"
2585 save_CPPFLAGS="$CPPFLAGS"
2587 iconv_current_LIBS=""
2588 iconv_current_LDFLAGS=""
2589 iconv_current_CPPFLAGS=""
2594 # This is here to handle -withval stuff for --with-libiconv
2595 # Perhaps we should always add a -L
2596 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2598 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2599 # installation paths. This gets a little tricky since we might have iconv
2600 # in both libiconv and in libc. In this case the jm_ICONV test will always
2601 # succeed when the header is found. To counter this, make sure the
2602 # library directory is there and check the ABI directory first (which
2603 # should be harmless on other systems, but causes tons of linker warnings on
2604 # 64bit Ubuntu systems).
2605 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2606 # installed, I've decided to fix the linker warnings.
2608 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2609 for l in "lib" "lib32" "lib/hpux32"; do
2610 if test -d "$i/$l" ; then
2611 LDFLAGS="$save_LDFLAGS -L$i/$l"
2613 export LDFLAGS LIBS CPPFLAGS
2614 # Try to find iconv(3)
2616 if test x"$ICONV_FOUND" = "xyes" ; then
2623 if test x"$ICONV_FOUND" = "xyes" ; then
2624 iconv_current_LDFLAGS="-L$i/$libext"
2625 iconv_current_CPPFLAGS="-I$i/include"
2627 if test x"$jm_cv_lib_iconv" != x; then
2628 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2630 # We found iconv in libc.
2631 iconv_current_LIBS=""
2636 if test x"$ICONV_FOUND" = "xyes" ; then
2638 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2639 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2640 LIBS="$save_LIBS $iconv_current_LIBS"
2641 export LDFLAGS LIBS CPPFLAGS
2643 default_dos_charset=no
2644 default_display_charset=no
2645 default_unix_charset=no
2647 # check for default dos charset name
2648 for j in CP850 IBM850 ; do
2650 default_dos_charset="$ICONV_CHARSET"
2651 if test x"$default_dos_charset" = x"$j"; then
2656 # check for default display charset name
2657 for j in ASCII 646 ; do
2659 default_display_charset="$ICONV_CHARSET"
2660 if test x"$default_display_charset" = x"$j"; then
2665 # check for default unix charset name
2666 for j in UTF-8 UTF8 ; do
2668 default_unix_charset="$ICONV_CHARSET"
2669 if test x"$default_unix_charset" = x"$j"; then
2674 if test "$default_dos_charset" != "no" -a \
2675 "$default_dos_charset" != "cross" -a \
2676 "$default_display_charset" != "no" -a \
2677 "$default_display_charset" != "cross" -a \
2678 "$default_unix_charset" != "no" -a \
2679 "$default_unix_charset" != "cross"
2681 samba_cv_HAVE_NATIVE_ICONV=yes
2683 if test "$default_dos_charset" = "cross" -o \
2684 "$default_display_charset" = "cross" -o \
2685 "$default_unix_charset" = "cross"
2687 samba_cv_HAVE_NATIVE_ICONV=cross
2689 samba_cv_HAVE_NATIVE_ICONV=no
2693 # At this point, we have a libiconv candidate. We know that
2694 # we have the right headers and libraries, but we don't know
2695 # whether it does the conversions we want. We can't test this
2696 # because we are cross-compiling. This is not necessarily a big
2697 # deal, since we can't guarantee that the results we get now will
2698 # match the results we get at runtime anyway.
2699 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2700 default_dos_charset="CP850"
2701 default_display_charset="ASCII"
2702 default_unix_charset="UTF-8"
2703 samba_cv_HAVE_NATIVE_ICONV=yes
2704 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2705 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2708 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2710 CPPFLAGS=$save_CPPFLAGS
2711 LDFLAGS=$save_LDFLAGS
2714 if test x"$iconv_current_LIBS" != x; then
2715 LIBS="$LIBS $iconv_current_LIBS"
2718 # Add the flags we need to CPPFLAGS and LDFLAGS
2719 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2720 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2722 # Turn the #defines into string literals
2723 default_dos_charset="\"$default_dos_charset\""
2724 default_display_charset="\"$default_display_charset\""
2725 default_unix_charset="\"$default_unix_charset\""
2727 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2728 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2729 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2730 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2735 # We didn't find a working iconv, so keep going
2738 # We only need to clean these up here for the next pass through the loop
2739 CPPFLAGS=$save_CPPFLAGS
2740 LDFLAGS=$save_LDFLAGS
2742 export LDFLAGS LIBS CPPFLAGS
2747 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2748 AC_MSG_WARN([Sufficient support for iconv function was not found.
2749 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2750 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2751 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2752 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2756 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2758 #include <sys/types.h>
2761 #define F_GETLEASE 1025
2764 int fd = open("/dev/null", O_RDONLY);
2765 return fcntl(fd, F_GETLEASE, 0) == -1;
2768 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2769 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2770 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2773 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2775 #include <sys/types.h>
2779 #define F_NOTIFY 1026
2782 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2785 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2786 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2787 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2790 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2791 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2792 AC_CHECK_FUNCS(inotify_init)
2793 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2795 samba_cv_HAVE_INOTIFY=yes,
2796 samba_cv_HAVE_INOTIFY=no,
2797 samba_cv_HAVE_INOTIFY=cross)
2799 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2800 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2803 #################################################
2804 # Check if FAM notifications are available. For FAM info, see
2805 # http://oss.sgi.com/projects/fam/
2806 # http://savannah.nongnu.org/projects/fam/
2808 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2810 if test x$enable_fam != xno; then
2811 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2812 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2813 # On IRIX, libfam requires libC, but other FAM implementations
2814 # might not need it.
2815 AC_CHECK_LIB(fam, FAMOpen2,
2816 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2817 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2818 [samba_cv_HAVE_LIBFAM=no])
2820 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2822 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2823 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2824 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2825 [samba_cv_HAVE_LIBFAM=no])
2826 unset samba_fam_xtra
2829 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2830 default_shared_modules="$default_shared_modules vfs_notify_fam"
2831 AC_TRY_COMPILE([#include <fam.h>],
2832 [enum FAMCodes code = FAMChanged;],
2833 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2834 [Whether fam.h contains a typedef for enum FAMCodes]),
2838 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2839 AC_CHECK_LIB(fam, FAMNoExists,
2840 [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2843 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2844 AC_MSG_ERROR(FAM support requested but FAM library not available )
2848 AC_SUBST(SMB_FAM_LIBS)
2850 #################################################
2851 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2854 with_dmapi_support=auto
2855 AC_MSG_CHECKING(whether to use DMAPI support)
2857 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2858 [ case "$withval" in
2860 with_dmapi_support=$withval
2864 AC_MSG_RESULT([$with_dmapi_support])
2866 if test x"$with_dmapi_support" != xno ; then
2867 SMB_CHECK_DMAPI([], [
2868 AC_MSG_NOTICE(DMAPI support not present)
2869 if test x"$with_dmapi_support" = xyes ; then
2870 AC_MSG_ERROR(no DMAPI support found but requested!)
2876 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2877 # Theoretically it should work with AIX JFS2 too but this needs testing
2878 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2879 default_shared_modules="$default_shared_modules vfs_tsmsm"
2882 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2884 #include <sys/types.h>
2887 #include <sys/file.h>
2889 #define LOCK_MAND 32
2890 #define LOCK_READ 64
2893 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2896 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2897 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2898 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2902 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2903 AC_TRY_COMPILE([#include <sys/types.h>
2904 #include <fcntl.h>],
2905 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2906 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2907 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2908 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2911 #################################################
2912 # Check for POSIX capability support
2914 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2915 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2918 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2921 AC_LIBTESTFUNC(cap, cap_get_proc)
2923 AC_CACHE_CHECK([for POSIX capabilities],
2924 samba_cv_HAVE_POSIX_CAPABILITIES,
2927 #include <sys/types.h>
2928 #include <sys/capability.h>
2931 cap_value_t vals[1];
2932 if (!(cap = cap_get_proc()))
2934 vals[0] = CAP_CHOWN;
2935 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2939 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2940 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2941 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2944 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2945 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2946 [Whether POSIX capabilities are available])
2954 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2955 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2958 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2959 AC_TRY_COMPILE([#include <sys/types.h>
2960 #if defined(HAVE_RPC_RPC_H)
2961 #include <rpc/rpc.h>
2964 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2965 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2966 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2969 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2970 AC_TRY_COMPILE([#include <sys/types.h>
2971 #if defined(HAVE_RPC_RPC_H)
2972 #include <rpc/rpc.h>
2975 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2976 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2977 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2980 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2981 AC_TRY_COMPILE([#include <sys/types.h>
2982 #if defined(HAVE_RPC_RPC_H)
2983 #include <rpc/rpc.h>
2986 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2987 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2988 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2991 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2992 AC_TRY_COMPILE([#include <sys/types.h>
2993 #if defined(HAVE_RPC_RPC_H)
2994 #include <rpc/rpc.h>
2997 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2998 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2999 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
3003 dnl Some systems (SCO) have a problem including
3004 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
3005 dnl as a #define in <prot.h> and as part of an enum
3009 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
3010 AC_TRY_COMPILE([#include <sys/types.h>
3011 #ifdef HAVE_SYS_SECURITY_H
3012 #include <sys/security.h>
3014 #endif /* HAVE_SYS_SECURITY_H */
3015 #if defined(HAVE_RPC_RPC_H)
3016 #include <rpc/rpc.h>
3019 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
3020 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
3021 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
3024 AC_MSG_CHECKING([for test routines])
3025 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
3027 AC_MSG_ERROR([cant find test code. Aborting config]),
3028 AC_MSG_WARN([cannot run when cross-compiling]))
3030 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
3031 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
3032 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
3033 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
3034 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
3037 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
3038 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
3039 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
3040 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
3041 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
3044 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
3045 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
3046 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
3047 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
3048 AC_CHECK_FUNCS(getpagesize)
3050 ################################################
3051 # look for a method of setting the effective uid
3054 if test $seteuid = no; then
3055 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3057 #define AUTOCONF_TEST 1
3058 #define USE_SETREUID 1
3059 #include "confdefs.h"
3060 #include "${srcdir-.}/lib/util_sec.c"],
3061 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3062 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3063 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3067 # we check for setresuid second as it conflicts with AIO on Linux.
3068 # see http://samba.org/~tridge/junkcode/aio_uid.c
3069 if test $seteuid = no; then
3070 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3072 #define AUTOCONF_TEST 1
3073 #define USE_SETRESUID 1
3074 #include "confdefs.h"
3075 #include "${srcdir-.}/lib/util_sec.c"],
3076 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3077 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3078 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3082 if test $seteuid = no; then
3083 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3085 #define AUTOCONF_TEST 1
3086 #define USE_SETEUID 1
3087 #include "confdefs.h"
3088 #include "${srcdir-.}/lib/util_sec.c"],
3089 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3090 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3091 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3095 if test $seteuid = no; then
3096 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3098 #define AUTOCONF_TEST 1
3099 #define USE_SETUIDX 1
3100 #include "confdefs.h"
3101 #include "${srcdir-.}/lib/util_sec.c"],
3102 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3103 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3104 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3108 AC_CACHE_CHECK([for the Darwin initgroups system call],
3109 samba_cv_DARWIN_INITGROUPS,
3111 #include <sys/syscall.h>
3114 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3115 samba_cv_DARWIN_INITGROUPS=yes,
3116 samba_cv_DARWIN_INITGROUPS=no)
3119 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3120 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3121 [Whether to use the Darwin-specific initgroups system call])
3124 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3125 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
3126 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3127 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3128 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3131 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3132 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
3133 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3134 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3135 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3140 dnl Don't check for 64 bit fcntl locking if we know that the
3141 dnl glibc2.1 broken check has succeeded.
3144 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3146 #if defined(HAVE_UNISTD_H)
3156 #ifdef HAVE_SYS_FCNTL_H
3157 #include <sys/fcntl.h>
3159 main() { struct flock64 fl64;
3160 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3166 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3168 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3169 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3173 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3174 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3176 #define _XOPEN_SOURCE 600
3178 #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3179 probably broken posix_fallocate
3183 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3184 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3185 AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3189 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3190 AC_TRY_COMPILE([#include <sys/types.h>
3191 #include <sys/stat.h>
3192 #include <unistd.h>],
3193 [struct stat st; st.st_blocks = 0;],
3194 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3195 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3196 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3199 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3201 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3202 AC_TRY_COMPILE([#include <sys/types.h>
3203 #include <sys/stat.h>
3204 #include <unistd.h>],
3205 [struct stat st; st.st_blksize = 0;],
3206 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3207 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3208 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3211 AC_CACHE_CHECK([for st_flags in struct stat],
3212 samba_cv_HAVE_STAT_ST_FLAGS,
3214 AC_TRY_COMPILE([#include <sys/types.h>
3215 #include <sys/stat.h>
3216 #include <unistd.h>],
3217 [struct stat st; st.st_flags = 0;],
3218 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3219 samba_cv_HAVE_STAT_ST_FLAGS=no,
3220 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3223 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3224 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3225 [Whether the stat struct has a st_flags member])
3228 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3230 #include <sys/types.h>
3231 #include <sys/acl.h>
3232 #if defined(HAVE_RPCSVC_NIS_H)
3233 #include <rpcsvc/nis.h>
3236 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3237 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3238 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3241 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3247 void exit_on_core(int ignored) {
3253 signal(SIGSEGV, exit_on_core);
3254 newpath = realpath("/tmp", NULL);
3255 exit((newpath != NULL) ? 0 : 1);
3258 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3259 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3260 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3263 #################################################
3264 # check for AFS clear-text auth support
3265 samba_cv_WITH_AFS=no
3266 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3268 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3269 [ case "$withval" in
3271 AC_MSG_RESULT($withval)
3272 samba_cv_WITH_AFS=$withval
3281 ####################################################
3282 # check for Linux-specific AFS fake-kaserver support
3283 samba_cv_WITH_FAKE_KASERVER=no
3284 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3285 AC_ARG_WITH(fake-kaserver,
3286 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3287 [ case "$withval" in
3289 AC_MSG_RESULT($withval)
3290 samba_cv_WITH_FAKE_KASERVER=$withval
3299 #################################################
3300 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3301 if test x"$samba_cv_WITH_AFS" != x"no" ||
3302 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3304 # see if this box has the OpenSSL DES libraries
3305 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3307 # see if this box has the afs-headers in /usr/include/afs
3308 AC_MSG_CHECKING(for /usr/include/afs)
3309 if test -d /usr/include/afs; then
3317 AC_CHECK_HEADERS(afs.h afs/afs.h)
3318 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3319 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3320 test x"$samba_cv_WITH_AFS" = x"auto"; then
3321 AC_MSG_WARN([AFS cannot be supported without afs.h])
3323 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3326 have_afs_headers=yes
3330 FAKE_KASERVER_OBJ=""
3331 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3332 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3333 FAKE_KASERVER_OBJ="utils/net_afs.o"
3335 AC_SUBST(FAKE_KASERVER_OBJ)
3337 #################################################
3338 # check whether to compile AFS/NT ACL mapping module
3339 samba_cv_WITH_VFS_AFSACL=no
3340 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3341 AC_ARG_WITH(vfs-afsacl,
3342 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3343 [ case "$withval" in
3345 AC_MSG_RESULT($withval)
3346 samba_cv_WITH_VFS_AFSACL=yes
3355 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3356 default_shared_modules="$default_shared_modules vfs_afsacl"
3359 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3360 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3363 #################################################
3364 # check for the DFS clear-text auth system
3365 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3367 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3368 [ case "$withval" in
3371 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3380 ########################################################
3381 # Compile with LDAP support?
3383 with_ldap_support=auto
3384 AC_MSG_CHECKING([for LDAP support])
3387 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3388 [ case "$withval" in
3390 with_ldap_support=$withval
3394 AC_MSG_RESULT($with_ldap_support)
3399 AC_SUBST(SMBLDAPUTIL)
3401 if test x"$with_ldap_support" != x"no"; then
3403 ##################################################################
3404 # first test for ldap.h and lber.h
3405 # (ldap.h is required for this test)
3406 AC_CHECK_HEADERS(ldap.h lber.h)
3408 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3409 if test x"$with_ldap_support" = x"yes"; then
3410 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3412 AC_MSG_WARN(ldap.h is needed for LDAP support)
3415 with_ldap_support=no
3418 ##################################################################
3419 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3420 # unsigned int in include/includes.h
3423 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3424 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3425 with_ldap_support=yes
3428 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3429 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3430 if test x"$with_ldap_support" = x"yes"; then
3431 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3433 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3435 with_ldap_support=no
3441 if test x"$with_ldap_support" != x"no"; then
3444 ##################################################################
3445 # we might need the lber lib on some systems. To avoid link errors
3446 # this test must be before the libldap test
3447 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3449 ########################################################
3450 # If ber_sockbuf_add_io() is available we can add
3451 # SASL wrapping hooks
3452 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3454 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3455 AC_TRY_COMPILE([#include <ldap.h>],
3456 [int val = LDAP_OPT_SOCKBUF;],
3457 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3458 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3460 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3461 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3462 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3465 #######################################################
3466 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3467 # ldap logging and print it out in the samba logs
3468 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3469 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3470 [AC_TRY_COMPILE([#include <lber.h>],
3471 [int val = LBER_OPT_LOG_PRINT_FN;],
3472 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3473 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3475 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3476 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3477 [Support for LDAP/LBER logging interception])
3480 ########################################################
3481 # now see if we can find the ldap libs in standard paths
3482 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3484 ########################################################
3485 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3486 # Check found in pam_ldap 145.
3487 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3489 LIBS="$LIBS $LDAP_LIBS"
3490 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3494 [ldap_set_rebind_proc(0, 0, 0);],
3495 [smb_ldap_cv_ldap_set_rebind_proc=3],
3496 [smb_ldap_cv_ldap_set_rebind_proc=2]
3500 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3502 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3504 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3505 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3506 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3507 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3508 default_shared_modules="$default_shared_modules";
3509 SMBLDAP="lib/smbldap.o"
3510 SMBLDAPUTIL="lib/smbldap_util.o"
3511 with_ldap_support=yes
3512 AC_MSG_CHECKING(whether LDAP support is used)
3515 if test x"$with_ldap_support" = x"yes"; then
3516 AC_MSG_ERROR(libldap is needed for LDAP support)
3518 AC_MSG_WARN(libldap is needed for LDAP support)
3522 with_ldap_support=no
3528 #################################################
3529 # active directory support
3531 with_ads_support=auto
3532 AC_MSG_CHECKING([for Active Directory and krb5 support])
3535 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3536 [ case "$withval" in
3538 with_ads_support="$withval"
3542 AC_MSG_RESULT($with_ads_support)
3547 if test x"$with_ldap_support" != x"yes"; then
3549 if test x"$with_ads_support" = x"yes"; then
3550 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3551 elif test x"$with_ads_support" = x"auto"; then
3552 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3558 # Check to see whether there is enough LDAP functionality to be able
3559 # to build AD support.
3561 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3564 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3566 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3567 if test x"$with_ads_support" = x"yes"; then
3568 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3569 elif test x"$with_ads_support" = x"auto"; then
3570 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3576 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3578 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3579 if test x"$with_ads_support" = x"yes"; then
3580 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3581 elif test x"$with_ads_support" = x"auto"; then
3582 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3590 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3592 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3593 if test x"$with_ads_support" = x"yes"; then
3594 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3595 elif test x"$with_ads_support" = x"auto"; then
3596 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3603 if test x"$with_ads_support" != x"no"; then
3605 # Do no harm to the values of CFLAGS and LIBS while testing for
3608 if test x$FOUND_KRB5 = x"no"; then
3609 #################################################
3610 # check for location of Kerberos 5 install
3611 AC_MSG_CHECKING(for kerberos 5 install path)
3613 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3614 [ case "$withval" in
3616 AC_MSG_RESULT(no krb5-path given)
3623 AC_MSG_RESULT($withval)
3624 KRB5_CFLAGS="-I$withval/include"
3625 KRB5_CPPFLAGS="-I$withval/include"
3626 KRB5_LDFLAGS="-L$withval/lib"
3628 if test -x "$withval/bin/krb5-config"; then
3629 KRB5CONFIG=$withval/bin/krb5-config
3633 AC_MSG_RESULT(no krb5-path given)
3637 #################################################
3638 # check for krb5-config from recent MIT and Heimdal kerberos 5
3639 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3640 AC_MSG_CHECKING(for working krb5-config)
3641 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3642 ac_save_CFLAGS=$CFLAGS
3643 CFLAGS="";export CFLAGS
3644 ac_save_LDFLAGS=$LDFLAGS
3645 LDFLAGS="";export LDFLAGS
3646 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3647 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3648 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3649 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3650 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3651 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3655 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3658 if test x$FOUND_KRB5 = x"no"; then
3659 #################################################
3660 # see if this box has the SuSE location for the heimdal krb implementation
3661 AC_MSG_CHECKING(for /usr/include/heimdal)
3662 if test -d /usr/include/heimdal; then
3663 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3664 KRB5_CFLAGS="-I/usr/include/heimdal"
3665 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3666 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3670 KRB5_CFLAGS="-I/usr/include/heimdal"
3671 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3680 if test x$FOUND_KRB5 = x"no"; then
3681 #################################################
3682 # see if this box has the RedHat location for kerberos
3683 AC_MSG_CHECKING(for /usr/kerberos)
3684 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3685 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3686 KRB5_CFLAGS="-I/usr/kerberos/include"
3687 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3695 if test x$FOUND_KRB5 = x"no"; then
3696 #################################################
3697 # see if this box has the OpenBSD location for heimdal krb5
3698 AC_MSG_CHECKING(for /usr/include/kerberosV)
3699 if test -d /usr/include/kerberosV; then
3700 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3701 KRB5_LIBS="-lcrypto"
3709 ac_save_CFLAGS=$CFLAGS
3710 ac_save_CPPFLAGS=$CPPFLAGS
3711 ac_save_LDFLAGS=$LDFLAGS
3713 # remove needless evil rpath stuff as early as possible:
3714 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3715 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3716 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3717 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3718 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3720 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3722 # now check for krb5.h. Some systems have the libraries without the headers!
3723 # note that this check is done here to allow for different kerberos
3725 AC_CHECK_HEADERS(krb5.h)
3727 if test x"$ac_cv_header_krb5_h" = x"no"; then
3729 # Give a warning if AD support was not explicitly requested,
3730 # i.e with_ads_support = auto, otherwise die with an error.
3732 if test x"$with_ads_support" = x"yes"; then
3733 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3735 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3738 # Turn off AD support and restore CFLAGS and LIBS variables
3740 with_ads_support="no"
3742 CFLAGS=$ac_save_CFLAGS
3743 CPPFLAGS=$ac_save_CPPFLAGS
3744 LDFLAGS=$ac_save_LDFLAGS
3747 # check for new heimdal KRB5_DEPRECATED handling
3749 AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3750 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3752 [#define KRB5_DEPRECATED 1
3755 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3756 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3758 if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3759 AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3760 [Whether to use deprecated krb5 interfaces])
3764 # Now we have determined whether we really want ADS support
3766 if test x"$with_ads_support" != x"no"; then
3771 # now check for gssapi headers. This is also done here to allow for
3772 # different kerberos include paths
3773 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h com_err.h)
3775 ##################################################################
3776 # we might need the k5crypto and com_err libraries on some systems
3777 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3778 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3781 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3782 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3783 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3785 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3786 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3788 ########################################################
3789 # now see if we can find the krb5 libs in standard paths
3790 # or as specified above
3791 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3792 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3794 ########################################################
3795 # now see if we can find the gssapi libs in standard paths
3796 if test x"$have_gssapi" != x"yes"; then
3797 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3798 AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3801 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3802 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3803 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3804 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3805 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3806 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3807 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3808 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3809 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3810 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3811 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3812 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3813 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3814 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3815 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3816 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3817 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3818 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3819 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3820 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3821 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3822 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3823 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3824 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3825 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3826 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3827 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3828 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3836 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3837 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3838 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3839 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3840 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3841 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3842 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3843 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3844 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3845 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3846 AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3847 AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3848 AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3849 AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3851 # MIT krb5 1.8 does not expose this call (yet)
3852 AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3854 # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3855 # but does have the symbol
3856 AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3858 LIBS="$KRB5_LIBS $LIBS"
3860 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3861 smb_krb5_cv_ticket_has_keyinfo,
3870 krb5_enctype enctype;
3872 enctype = ticket.enc_part.enctype;
3873 kvno = ticket.enc_part.kvno;
3875 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3876 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3879 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3880 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3881 [Whether the krb5_ticket structure contains the kvno and enctype])
3884 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3885 smb_krb5_cv_creds_opt_free_context,
3891 krb5_get_init_creds_opt *opt = NULL;
3892 krb5_get_init_creds_opt_free(ctx, opt);
3894 [smb_krb5_cv_creds_opt_free_context=yes],
3895 [smb_krb5_cv_creds_opt_free_context=no]
3899 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3900 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3901 [Whether krb5_get_init_creds_opt_free takes a context argument])
3904 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3907 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3908 [smb_krb5_cv_verify_checksum=7],
3909 [smb_krb5_cv_verify_checksum=6],
3912 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3914 AC_CACHE_CHECK([for checksum in krb5_checksum],
3915 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3916 AC_TRY_COMPILE([#include <krb5.h>],
3917 [krb5_checksum cksum; cksum.checksum.length = 0;],
3918 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3919 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3921 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3922 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3923 [Whether the krb5_checksum struct has a checksum property])
3926 AC_CACHE_CHECK([for etype in EncryptedData],
3927 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3928 AC_TRY_COMPILE([#include <krb5.h>],
3929 [EncryptedData edata; edata.etype = 0;],
3930 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3931 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3933 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3934 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3935 [Whether the EncryptedData struct has a etype property])
3938 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3939 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3940 AC_TRY_COMPILE([#include <krb5.h>],
3941 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3942 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3943 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3945 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3946 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3947 [Whether the krb5_ap_req struct has a ticket pointer])
3950 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3951 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3952 AC_TRY_COMPILE([#include <krb5.h>],
3953 [krb5_error err; err.e_data = NULL;],
3954 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3955 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3957 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3958 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3959 [Whether the krb5_error struct has a e_data pointer])
3962 AC_CACHE_CHECK([for krb5_crypto type],
3963 samba_cv_HAVE_KRB5_CRYPTO,[
3964 AC_TRY_COMPILE([#include <krb5.h>],
3965 [krb5_crypto crypto;],
3966 samba_cv_HAVE_KRB5_CRYPTO=yes,
3967 samba_cv_HAVE_KRB5_CRYPTO=no)])
3969 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3970 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3971 [Whether the type krb5_crypto exists])
3974 AC_CACHE_CHECK([for krb5_encrypt_block type],
3975 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3976 AC_TRY_COMPILE([#include <krb5.h>],
3977 [krb5_encrypt_block block;],
3978 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3979 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3981 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3982 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3983 [Whether the type krb5_encrypt_block exists])
3986 AC_CACHE_CHECK([for addrtype in krb5_address],
3987 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3988 AC_TRY_COMPILE([#include <krb5.h>],
3989 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3990 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3991 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3993 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3994 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3995 [Whether the krb5_address struct has a addrtype property])
3998 AC_CACHE_CHECK([for addr_type in krb5_address],
3999 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
4000 AC_TRY_COMPILE([#include <krb5.h>],
4001 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
4002 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
4003 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
4005 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
4006 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
4007 [Whether the krb5_address struct has a addr_type property])
4010 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
4011 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
4012 [AC_TRY_COMPILE([#include <krb5.h>],
4013 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4014 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4016 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4017 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4018 [Whether the krb5_ticket struct has a enc_part2 property])
4021 AC_CACHE_CHECK([for keyblock in krb5_creds],
4022 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4023 AC_TRY_COMPILE([#include <krb5.h>],
4024 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4025 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4026 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4028 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4029 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4030 [Whether the krb5_creds struct has a keyblock property])
4033 AC_CACHE_CHECK([for session in krb5_creds],
4034 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4035 AC_TRY_COMPILE([#include <krb5.h>],
4036 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4037 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4038 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4040 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4041 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4042 [Whether the krb5_creds struct has a session property])
4045 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4046 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4047 AC_TRY_COMPILE([#include <krb5.h>],
4048 [krb5_keyblock key; key.keyvalue.data = NULL;],
4049 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4050 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4052 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4053 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4054 [Whether the krb5_keyblock struct has a keyvalue property])
4057 found_arcfour_hmac=no
4058 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4059 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4060 AC_TRY_COMPILE([#include <krb5.h>],
4061 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4062 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4063 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4064 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4065 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4066 AC_TRY_COMPILE([#include <krb5.h>],
4067 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4068 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4069 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4070 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4071 # w.r.t. arcfour and windows, so we must not enable it here
4072 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4073 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4074 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4075 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
4076 found_arcfour_hmac=yes
4078 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
4079 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
4080 AC_TRY_COMPILE([#include <krb5.h>],
4081 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
4082 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
4083 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
4084 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
4085 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
4086 [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
4087 found_arcfour_hmac=yes
4090 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4091 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4092 AC_TRY_COMPILE([#include <krb5.h>],
4093 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4094 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4095 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4097 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4098 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4099 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4102 AC_CACHE_CHECK([for KV5M_KEYTAB],
4103 samba_cv_HAVE_KV5M_KEYTAB,[
4104 AC_TRY_COMPILE([#include <krb5.h>],
4105 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4106 samba_cv_HAVE_KV5M_KEYTAB=yes,
4107 samba_cv_HAVE_KV5M_KEYTAB=no)])
4109 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4110 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4111 [Whether the KV5M_KEYTAB option is available])
4114 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4115 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4116 AC_TRY_COMPILE([#include <krb5.h>],
4117 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4118 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4119 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4121 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4122 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4123 [Whether KRB5_KU_OTHER_CKSUM is available])
4126 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4127 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4128 AC_TRY_COMPILE([#include <krb5.h>],
4129 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4130 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4131 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4133 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4134 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4135 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4138 AC_CACHE_CHECK([for the krb5_princ_component macro],
4139 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4140 AC_TRY_LINK([#include <krb5.h>],
4141 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4142 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4143 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4145 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4146 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4147 [Whether krb5_princ_component is available])
4150 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4151 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4152 AC_TRY_COMPILE([#include <krb5.h>],
4153 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4154 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4155 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4157 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4158 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4159 [Whether krb5_keytab_entry has key member])
4162 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4163 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4164 AC_TRY_COMPILE([#include <krb5.h>],
4165 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4166 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4167 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4169 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4170 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4171 [Whether krb5_keytab_entry has keyblock member])
4174 AC_CACHE_CHECK([for magic in krb5_address],
4175 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4176 AC_TRY_COMPILE([#include <krb5.h>],
4177 [krb5_address addr; addr.magic = 0;],
4178 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4179 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4181 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4182 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4183 [Whether the krb5_address struct has a magic property])
4186 AC_CACHE_CHECK([for WRFILE: keytab support],
4187 samba_cv_HAVE_WRFILE_KEYTAB,[
4192 krb5_context context;
4195 krb5_init_context(&context);
4196 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4198 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4199 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4201 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4202 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4203 [Whether the WRFILE:-keytab is supported])
4206 AC_CACHE_CHECK([for krb5_realm type],
4207 samba_cv_HAVE_KRB5_REALM_TYPE,[
4208 AC_TRY_COMPILE([#include <krb5.h>],
4209 [krb5_realm realm;],
4210 samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4211 samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4213 if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4214 AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4215 [Whether the type krb5_realm exists])
4218 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4219 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4220 AC_TRY_COMPILE([#include <krb5.h>],
4222 krb5_context context;
4223 krb5_principal principal;
4224 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4225 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4226 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4228 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4229 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4230 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4233 AC_CACHE_CHECK([for krb5_addresses type],
4234 samba_cv_HAVE_KRB5_ADDRESSES,[
4235 AC_TRY_COMPILE([#include <krb5.h>],
4236 [krb5_addresses addr;],
4237 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4238 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4240 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4241 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4242 [Whether the type krb5_addresses type exists])
4245 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4246 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4247 AC_TRY_COMPILE([#include <krb5.h>],
4249 krb5_mk_error(0,0,0);],
4250 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4251 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4253 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4254 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4255 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4258 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4259 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4260 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4265 krb5_context context = NULL;
4267 krb5_enctype_to_string(context, 1, &str);
4268 if (str) free (str);
4271 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4272 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4273 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4275 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4276 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4277 [whether krb5_enctype_to_string takes krb5_context argument])
4280 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4281 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4286 krb5_enctype_to_string(1, buf, 256);
4289 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4290 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4291 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4293 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4294 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4295 [whether krb5_enctype_to_string takes size_t argument])
4299 AC_CACHE_CHECK([for krb5_principal_get_realm],
4300 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4301 AC_TRY_LINK([#include <krb5.h>],
4302 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4303 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4304 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4306 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4307 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4308 [Whether the function krb5_principal_get_realm is defined])
4311 AC_CACHE_CHECK([for krb5_princ_realm],
4312 samba_cv_HAVE_KRB5_PRINC_REALM,[
4313 AC_TRY_LINK([#include <krb5.h>],
4314 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4315 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4316 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4318 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4319 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4320 [Whether the macro krb5_princ_realm is defined])
4325 # Now the decisions whether we can support krb5
4327 # NOTE: all tests should be done before this block!
4330 if test x"$found_arcfour_hmac" != x"yes"; then
4331 AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4335 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4336 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4340 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4341 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4343 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4347 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4348 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4350 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4354 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4355 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4357 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4361 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4362 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4364 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4368 if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4370 # We only need the following functions if we can't get the enctype
4371 # and kvno out of the ticket directly (ie. on Heimdal).
4373 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4375 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4379 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4381 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4387 if test x"$use_ads" = x"yes"; then
4388 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4389 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4390 if test x"$have_gssapi" = x"yes"; then
4391 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4394 if test x"$with_ads_support" = x"yes"; then
4395 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4397 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4399 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4400 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4401 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4402 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4406 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4407 AC_MSG_RESULT([$use_ads])
4409 LIBS="$ac_save_LIBS"
4412 if test x"$use_ads" != xyes; then
4413 smbtorture4_possible=no
4416 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4417 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4420 ########################################################
4421 # Compile with DNS Updates support?
4423 with_dnsupdate_support=auto
4424 AC_MSG_CHECKING([whether to enable DNS Updates support])
4426 AC_ARG_WITH(dnsupdate,
4427 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4428 [ case "$withval" in
4430 with_dnsupdate_support=$withval
4434 AC_MSG_RESULT($with_dnsupdate_support)
4436 if test x"$with_dnsupdate_support" != x"no"; then
4438 ################################################################
4439 # first test for AD / GSSAPI support being enabled
4440 if test x"$have_gssapi" != xyes ; then
4441 if test x"$with_dnsupdate_support" = x"yes" ; then
4442 AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4444 AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4445 with_dnsupdate_support=no
4448 ##################################################################
4449 # then test for uuid.h (necessary to generate unique DNS keynames
4450 # (uuid.h is required for this test)
4451 AC_CHECK_HEADERS(uuid/uuid.h)
4454 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4455 if test x"$with_dnsupdate_support" = x"yes"; then
4456 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4458 AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4460 with_dnsupdate_support=no
4464 if test x"$with_dnsupdate_support" != x"no"; then
4466 ########################################################
4467 # Now see if we can find the uuid libs in standard paths
4468 # On some systems, the uuid API is in libc, so we have to
4469 # be careful not to insert a spurious -luuid.
4472 AC_LIBTESTFUNC(uuid, uuid_generate,
4477 SMB_REMOVE_LIB(uuid)
4481 with_dnsupdate_support=yes
4482 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4485 if test x"$with_dnsupdate_support" = x"yes"; then
4486 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4488 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4490 with_dnsupdate_support=no
4493 # finally print out the result:
4494 AC_MSG_CHECKING(whether DNS Updates support is used)
4495 AC_MSG_RESULT([$with_dnsupdate_support])
4498 #################################################
4499 # check for automount support
4500 AC_MSG_CHECKING(whether to use automount)
4501 AC_ARG_WITH(automount,
4502 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4503 [ case "$withval" in
4506 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4515 #################################################
4516 # Check for a PAM clear-text auth, accounts, password
4517 # and session support. Most PAM implementations keep their
4518 # headers in /usr/include/security. Darwin keeps its in
4521 with_pam_for_crypt=no
4523 AC_MSG_CHECKING(whether to try PAM support)
4525 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4526 [ case "$withval" in
4532 AC_MSG_RESULT([$try_pam])
4535 create_pam_modules=no
4536 if test x"${try_pam}" != x"no";then
4538 create_pam_modules=yes
4540 # Most systems have PAM headers in /usr/include/security, but Darwin
4541 # has them in /usr/include/pam.
4542 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4543 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4544 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4545 if test x"${try_pam}" = x"yes";then
4546 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4549 create_pam_modules=no
4552 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4553 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4554 if test x"${try_pam}" = x"yes";then
4555 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4558 create_pam_modules=no
4561 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4562 #if HAVE_SECURITY_PAM_APPL_H
4563 #include <security/pam_appl.h>
4565 #if HAVE_PAM_PAM_APPL_H
4566 #include <pam/pam_appl.h>
4569 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4570 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4571 if test x"${try_pam}" = x"yes";then
4572 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4574 create_pam_modules=no
4577 if test x"$use_pam" = x"yes"; then
4578 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4579 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4580 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4581 with_pam_for_crypt=yes
4583 if test x"$create_pam_modules" = x"yes"; then
4584 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4585 # this checks are optional,
4586 # we don't care about the results here
4587 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4588 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4589 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4591 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4594 AC_MSG_CHECKING(whether to use PAM support)
4595 AC_MSG_RESULT([$use_pam])
4597 AC_MSG_CHECKING(whether to have PAM MODULES support)
4598 AC_MSG_RESULT([$create_pam_modules])
4601 #if defined(HAVE_SECURITY_PAM_APPL_H)
4602 #include <security/pam_appl.h>
4603 #elif defined(HAVE_PAM_PAM_APPL_H)
4604 #include <pam/pam_appl.h>
4606 pam_set_item(0, PAM_RHOST, 0);
4608 AC_DEFINE(HAVE_PAM_RHOST, 1,
4609 [Define to 1 if PAM_RHOST is available]),[])
4612 #if defined(HAVE_SECURITY_PAM_APPL_H)
4613 #include <security/pam_appl.h>
4614 #elif defined(HAVE_PAM_PAM_APPL_H)
4615 #include <pam/pam_appl.h>
4617 pam_set_item(0, PAM_TTY, 0);
4619 AC_DEFINE(HAVE_PAM_TTY, 1,
4620 [Define to 1 if PAM_TTY is available]),[])
4624 #################################################
4625 # check for PAM_RADIO_TYPE
4627 #if (!defined(LINUX))
4629 #define PAM_EXTERN extern
4630 #if defined(HAVE_SECURITY_PAM_APPL_H)
4631 #include <security/pam_appl.h>
4632 #elif defined(HAVE_PAM_PAM_APPL_H)
4633 #include <pam/pam_appl.h>
4638 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4639 #include <security/pam_modules.h>
4640 #elif defined(HAVE_PAM_PAM_MODULES_H)
4641 #include <pam/pam_modules.h>
4644 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4645 #include <security/_pam_macros.h>
4646 #elif defined(HAVE_PAM__PAM_MACROS_H)
4647 #include <pam/_pam_macros.h>
4650 #ifdef HAVE_SECURITY_PAM_EXT_H
4651 #include <security/pam_ext.h>
4654 [int i; i = PAM_RADIO_TYPE; ],
4655 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4657 #################################################
4658 # check for pam_smbpass support
4660 INSTALL_PAM_MODULES=""
4661 UNINSTALL_PAM_MODULES=""
4663 try_pam_smbpass=auto
4664 AC_MSG_CHECKING(whether to use pam_smbpass)
4665 AC_ARG_WITH(pam_smbpass,
4666 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4667 [ case "$withval" in
4669 try_pam_smbpass=$withval
4672 AC_MSG_ERROR([valid options are yes,no,auto])
4677 if test x"${try_pam_smbpass}" = xno ; then
4681 # Conditions under which pam_smbpass can't be built.
4682 if test x"$BLDSHARED" != xtrue ; then
4683 if test x"${try_pam_smbpass}" = xyes ; then
4684 AC_MSG_ERROR([No support for shared modules])
4687 elif test x"$create_pam_modules" != xyes ; then
4688 if test x"${try_pam_smbpass}" = xyes ; then
4689 AC_MSG_ERROR([No support for PAM MODULES])
4694 if test x"${use_pam_smbpass}" = xyes ; then
4695 PAM_MODULES="pam_smbpass"
4696 INSTALL_PAM_MODULES="installpammodules"
4697 UNINSTALL_PAM_MODULES="uninstallpammodules"
4700 AC_MSG_RESULT([$use_pam_smbpass])
4704 ## moved after the check for -lcrypt in order to
4705 ## ensure that the necessary libraries are included
4706 ## check checking for truncated salt. Wrapped by the
4707 ## $with_pam_for_crypt variable as above --jerry
4709 if test $with_pam_for_crypt = no; then
4710 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4712 LIBS="$AUTH_LIBS $LIBS"
4713 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4714 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4715 LIBS="$crypt_LIBS"])
4716 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4717 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4721 #################################################
4722 # check for a NISPLUS_HOME support
4723 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4724 AC_ARG_WITH(nisplus-home,
4725 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4726 [ case "$withval" in
4729 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4738 #################################################
4739 # check for syslog logging
4740 AC_MSG_CHECKING(whether to use syslog logging)
4742 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4743 [ case "$withval" in
4746 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4755 #################################################
4756 # check for custom syslog facility
4757 AC_MSG_CHECKING(whether to use a custom syslog facility)
4758 AC_ARG_WITH(syslog-facility,
4759 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4761 if test "$withval" = "no" ; then
4762 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4764 if test "$withval" != "yes" ; then
4765 syslog_facility="$withval"
4766 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4771 #################################################
4772 # check for experimental disk-quotas support
4774 samba_cv_WITH_QUOTAS=auto
4775 samba_cv_TRY_QUOTAS=no
4776 samba_cv_RUN_QUOTA_TESTS=auto
4777 samba_cv_WITH_SYS_QUOTAS=auto
4778 samba_cv_TRY_SYS_QUOTAS=auto
4779 samba_cv_SYSQUOTA_FOUND=no
4781 AC_MSG_CHECKING(whether to try disk-quotas support)
4783 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4784 [ case "$withval" in
4787 samba_cv_WITH_QUOTAS=yes
4788 samba_cv_TRY_QUOTAS=yes
4789 samba_cv_RUN_QUOTA_TESTS=yes
4790 #set sys quotas to auto in this case
4791 samba_cv_TRY_SYS_QUOTAS=auto
4795 samba_cv_WITH_QUOTAS=auto
4796 samba_cv_TRY_QUOTAS=auto
4797 samba_cv_RUN_QUOTA_TESTS=auto
4798 #set sys quotas to auto in this case
4799 samba_cv_TRY_SYS_QUOTAS=auto
4803 samba_cv_WITH_QUOTAS=no
4804 samba_cv_TRY_QUOTAS=no
4805 samba_cv_RUN_QUOTA_TESTS=no
4808 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4811 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4814 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4815 AC_ARG_WITH(sys-quotas,
4816 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4817 [ case "$withval" in
4820 samba_cv_WITH_SYS_QUOTAS=yes
4821 samba_cv_TRY_SYS_QUOTAS=yes
4822 samba_cv_RUN_QUOTA_TESTS=yes
4826 samba_cv_WITH_SYS_QUOTAS=auto
4827 samba_cv_TRY_SYS_QUOTAS=auto
4828 samba_cv_RUN_QUOTA_TESTS=auto
4832 samba_cv_WITH_SYS_QUOTAS=no
4833 samba_cv_TRY_SYS_QUOTAS=no
4836 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4839 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4842 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4843 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4847 samba_cv_TRY_SYS_QUOTAS=yes
4848 samba_cv_RUN_QUOTA_TESTS=yes
4852 samba_cv_TRY_SYS_QUOTAS=no
4857 #############################################
4858 # only check for quota stuff if --with-quotas
4859 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4862 # on linux we didn't need to test we have builtin support
4864 samba_cv_SYSQUOTA_FOUND=yes
4865 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4866 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4867 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4870 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4871 samba_cv_found_xfs_header=yes
4872 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4876 # need to set this define when using static linking (BUG 1473)
4877 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4883 # some broken header files need this
4884 AC_CHECK_HEADER(asm/types.h,[
4885 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4886 AC_ADD_INCLUDE(<asm/types.h>)
4889 # For quotas on Veritas VxFS filesystems
4890 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4892 # For quotas on Linux XFS filesystems
4893 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4895 # For sys/quota.h and linux/quota.h
4896 AC_CHECK_HEADERS(sys/quota.h)
4898 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4899 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4900 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4902 #include "confdefs.h"
4903 #ifdef HAVE_SYS_TYPES_H
4904 #include <sys/types.h>
4906 #ifdef HAVE_ASM_TYPES_H
4907 #include <asm/types.h>
4909 #include <sys/quota.h>
4910 ],[int i = Q_XGETQUOTA;],
4911 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4912 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4913 samba_cv_found_xfs_header=yes
4917 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4918 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4920 #include "confdefs.h"
4921 #ifdef HAVE_SYS_QUOTA_H
4922 #include <sys/quota.h>
4926 D.dqb_fsoftlimit = 0;],
4927 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4928 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4929 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4933 # look for a working quota system
4935 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4936 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4938 #define HAVE_QUOTACTL_4A 1
4939 #define AUTOCONF_TEST 1
4940 #include "confdefs.h"
4941 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4942 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4943 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4944 samba_cv_SYSQUOTA_FOUND=yes;
4945 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4946 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4950 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4951 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4953 #define HAVE_QUOTACTL_4B 1
4954 #define AUTOCONF_TEST 1
4955 #include "confdefs.h"
4956 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4957 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4958 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4959 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4960 samba_cv_SYSQUOTA_FOUND=yes;
4961 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4962 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4966 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4967 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4969 #define HAVE_QUOTACTL_3 1
4970 #define AUTOCONF_TEST 1
4971 #include "confdefs.h"
4972 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4973 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4974 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4975 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4976 samba_cv_SYSQUOTA_FOUND=yes;
4977 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4978 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4982 #################################################
4983 # check for mntent.h and struct mntent
4984 AC_CHECK_HEADERS(mntent.h)
4985 #################################################
4986 # check for setmntent,getmntent,endmntent
4987 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4989 #################################################
4990 # check for devnm.h and struct mntent
4991 AC_CHECK_HEADERS(devnm.h)
4992 #################################################
4994 AC_CHECK_FUNCS(devnm)
4996 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4997 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4998 # if --with-sys-quotas=yes then build it
4999 # you have can use the get/set quota command smb.conf
5001 samba_cv_SYSQUOTA_FOUND=auto
5003 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
5004 # if --with-sys-quotas=yes then build it
5005 # you have can use the get/set quota command smb.conf
5007 samba_cv_TRY_SYS_QUOTAS=auto
5011 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5012 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
5013 SAVE_CPPFLAGS="$CPPFLAGS"
5014 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5016 #include "confdefs.h"
5017 #define NO_PROTO_H 1
5018 #define NO_CONFIG_H 1
5019 #define HAVE_SYS_QUOTAS 1
5020 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
5021 #include "${srcdir-.}/lib/sysquotas.c"
5022 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
5023 CPPFLAGS="$SAVE_CPPFLAGS"
5025 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
5026 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
5027 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
5028 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5029 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
5030 samba_cv_WE_USE_SYS_QUOTAS=yes
5038 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5039 AC_CACHE_CHECK([whether the sys_quota interface works with NFS],samba_cv_SYSQUOTA_WORKS_NFS,[
5040 SAVE_CPPFLAGS="$CPPFLAGS"
5041 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5043 #include "confdefs.h"
5044 #define NO_PROTO_H 1
5045 #define NO_CONFIG_H 1
5046 #define HAVE_SYS_QUOTAS 1
5047 #define HAVE_NFS_QUOTAS 1
5048 #include "${srcdir-.}/lib/sysquotas_nfs.c"
5049 ],[],samba_cv_SYSQUOTA_WORKS_NFS=yes,samba_cv_SYSQUOTA_WORKS_NFS=no)
5050 CPPFLAGS="$SAVE_CPPFLAGS"
5052 if test x"$samba_cv_SYSQUOTA_WORKS_NFS" = x"yes"; then
5053 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5054 AC_DEFINE(HAVE_NFS_QUOTAS,1,[Whether nfs quota support is available])
5059 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5060 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5061 SAVE_CPPFLAGS="$CPPFLAGS"
5062 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5064 #include "confdefs.h"
5065 #define NO_PROTO_H 1
5066 #define NO_CONFIG_H 1
5067 #define HAVE_SYS_QUOTAS 1
5068 #define HAVE_XFS_QUOTAS 1
5069 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5070 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5071 CPPFLAGS="$SAVE_CPPFLAGS"
5073 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5074 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5075 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5080 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5081 SAVE_CPPFLAGS="$CPPFLAGS"
5082 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5084 #include "confdefs.h"
5085 #define NO_PROTO_H 1
5086 #define NO_CONFIG_H 1
5087 #include "${srcdir-.}/smbd/quotas.c"
5088 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5089 CPPFLAGS="$SAVE_CPPFLAGS"
5091 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5092 AC_MSG_CHECKING(whether to use the old quota support)
5093 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5094 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5095 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5105 ####################
5106 # End of quota check samba_cv_RUN_QUOTA_TESTS
5109 #################################################
5110 # check for experimental utmp accounting
5112 AC_MSG_CHECKING(whether to support utmp accounting)
5115 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
5116 [ case "$withval" in
5126 # utmp requires utmp.h
5127 # Note similar check earlier, when checking utmp details.
5129 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5130 utmp_no_reason=", no utmp.h on $host_os"
5134 # Display test results
5136 if test x"$WITH_UTMP" = x"yes"; then
5138 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5140 AC_MSG_RESULT(no$utmp_no_reason)
5144 #################################################
5145 # these tests are taken from the GNU fileutils package
5146 AC_CHECKING(how to get filesystem space usage)
5149 # Test for statvfs64.
5150 if test $space = no; then
5152 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5154 #if defined(HAVE_UNISTD_H)
5157 #include <sys/types.h>
5158 #include <sys/statvfs.h>
5161 struct statvfs64 fsd;
5162 exit (statvfs64 (".", &fsd));
5164 fu_cv_sys_stat_statvfs64=yes,
5165 fu_cv_sys_stat_statvfs64=no,
5166 fu_cv_sys_stat_statvfs64=cross)])
5167 if test $fu_cv_sys_stat_statvfs64 = yes; then
5169 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5173 # Perform only the link test since it seems there are no variants of the
5174 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5175 # because that got a false positive on SCO OSR5. Adding the declaration
5176 # of a `struct statvfs' causes this test to fail (as it should) on such
5177 # systems. That system is reported to work fine with STAT_STATFS4 which
5178 # is what it gets when this test fails.
5179 if test $space = no; then
5181 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5182 [AC_TRY_LINK([#include <sys/types.h>
5183 #include <sys/statvfs.h>],
5184 [struct statvfs fsd; statvfs (0, &fsd);],
5185 fu_cv_sys_stat_statvfs=yes,
5186 fu_cv_sys_stat_statvfs=no)])
5187 if test $fu_cv_sys_stat_statvfs = yes; then
5189 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5193 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5194 # This is not the case on ancient Linux systems.
5196 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5197 AC_TRY_COMPILE([#include <sys/types.h>
5198 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5199 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5200 if test x"$samba_cv_fsid_int" = x"yes"; then
5201 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5204 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5205 # systems use f_bsize.
5206 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5207 AC_TRY_COMPILE([#include <sys/types.h>
5208 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5209 samba_cv_frsize=yes,samba_cv_frsize=no)])
5210 if test x"$samba_cv_frsize" = x"yes"; then
5211 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5214 # Some systems use f_flag in struct statvfs while others use f_flags
5215 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5216 AC_TRY_COMPILE([#include <sys/types.h>
5217 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5218 samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5219 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5220 AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5223 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5224 AC_TRY_COMPILE([#include <sys/types.h>
5225 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5226 samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5227 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5228 AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5231 if test $space = no; then
5232 # DEC Alpha running OSF/1
5233 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5234 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5236 #include <sys/param.h>
5237 #include <sys/types.h>
5238 #include <sys/mount.h>
5243 exit (statfs (".", &fsd, sizeof (struct statfs)));
5245 fu_cv_sys_stat_statfs3_osf1=yes,
5246 fu_cv_sys_stat_statfs3_osf1=no,
5247 fu_cv_sys_stat_statfs3_osf1=no)])
5248 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5249 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5251 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5255 if test $space = no; then
5257 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5258 member (AIX, 4.3BSD)])
5259 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5261 #ifdef HAVE_SYS_PARAM_H
5262 #include <sys/param.h>
5264 #ifdef HAVE_SYS_MOUNT_H
5265 #include <sys/mount.h>
5267 #ifdef HAVE_SYS_VFS_H
5268 #include <sys/vfs.h>
5274 exit (statfs (".", &fsd));
5276 fu_cv_sys_stat_statfs2_bsize=yes,
5277 fu_cv_sys_stat_statfs2_bsize=no,
5278 fu_cv_sys_stat_statfs2_bsize=no)])
5279 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5280 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5282 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5286 if test $space = no; then
5288 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5289 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5290 [AC_TRY_RUN([#include <sys/types.h>
5291 #include <sys/statfs.h>
5295 exit (statfs (".", &fsd, sizeof fsd, 0));
5297 fu_cv_sys_stat_statfs4=yes,
5298 fu_cv_sys_stat_statfs4=no,
5299 fu_cv_sys_stat_statfs4=no)])
5300 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5301 if test $fu_cv_sys_stat_statfs4 = yes; then
5303 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5307 if test $space = no; then
5309 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5310 member (4.4BSD and NetBSD)])
5311 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5312 [AC_TRY_RUN([#include <sys/types.h>
5313 #ifdef HAVE_SYS_PARAM_H
5314 #include <sys/param.h>
5316 #ifdef HAVE_SYS_MOUNT_H
5317 #include <sys/mount.h>
5323 exit (statfs (".", &fsd));
5325 fu_cv_sys_stat_statfs2_fsize=yes,
5326 fu_cv_sys_stat_statfs2_fsize=no,
5327 fu_cv_sys_stat_statfs2_fsize=no)])
5328 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5329 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5331 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5335 if test $space = no; then
5337 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5338 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5339 [AC_TRY_RUN([#include <sys/types.h>
5340 #ifdef HAVE_SYS_PARAM_H
5341 #include <sys/param.h>
5343 #ifdef HAVE_SYS_MOUNT_H
5344 #include <sys/mount.h>
5346 #ifdef HAVE_SYS_FS_TYPES_H
5347 #include <sys/fs_types.h>
5352 /* Ultrix's statfs returns 1 for success,
5353 0 for not mounted, -1 for failure. */
5354 exit (statfs (".", &fsd) != 1);
5356 fu_cv_sys_stat_fs_data=yes,
5357 fu_cv_sys_stat_fs_data=no,
5358 fu_cv_sys_stat_fs_data=no)])
5359 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5360 if test $fu_cv_sys_stat_fs_data = yes; then
5362 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5367 # As a gating factor for large file support, in order to
5368 # use <4GB files we must have the following minimal support
5370 # long long, and a 64 bit off_t or off64_t.
5371 # If we don't have all of these then disable large
5374 AC_MSG_CHECKING([if large file support can be enabled])
5376 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5377 #include <sys/types.h>
5383 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5384 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5385 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5387 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5389 #################################################
5390 # check for cluster extensions
5393 AC_SUBST(CTDB_CFLAGS)
5395 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5396 [ case "$withval" in
5398 AC_MSG_WARN([--with-ctdb called without argument])
5401 CTDB_CPPFLAGS="-I$withval/include"
5405 SAVED_CPPFLAGS="$CPPFLAGS"
5406 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5407 ctdb_broken="missing or broken headers"
5409 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5410 #include "confdefs.h"
5412 #include "replace.h"
5413 #include "system/wait.h"
5414 #include "system/network.h"
5415 #define private #error __USED_RESERVED_WORD_private__
5421 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5422 #include "confdefs.h"
5424 #include "replace.h"
5425 #include "system/wait.h"
5426 #include "system/network.h"
5430 #include <ctdb_private.h>
5432 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5435 ctdb_broken="ctdb transaction support missing or too old"
5438 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5439 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5440 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5442 #include "confdefs.h"
5444 #include "replace.h"
5445 #include "system/wait.h"
5446 #include "system/network.h"
5450 #include <ctdb_private.h>
5453 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5454 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5456 ctdb_broken="missing struct ctdb_control_tcp"
5458 #include "confdefs.h"
5460 #include "replace.h"
5461 #include "system/wait.h"
5462 #include "system/network.h"
5466 #include <ctdb_private.h>
5469 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5470 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5472 #include "confdefs.h"
5474 #include "replace.h"
5475 #include "system/wait.h"
5476 #include "system/network.h"
5480 #include <ctdb_private.h>
5482 CPPFLAGS="$SAVED_CPPFLAGS"
5484 AC_MSG_CHECKING(cluster support)
5485 AC_ARG_WITH(cluster-support,
5486 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5488 if test x"$with_cluster_support" = x ; then
5489 with_cluster_support="auto"
5492 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5493 if test "x$with_cluster_support" = "xyes"; then
5494 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5496 with_cluster_support=no
5499 if test x"$ctdb_broken" != x"no"; then
5500 if test "x$with_cluster_support" = "xyes"; then
5501 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5503 with_cluster_support=no
5506 if test "x$with_cluster_support" != "xno"; then
5507 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5508 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5514 #################################################
5515 # check for ACL support
5517 AC_MSG_CHECKING(whether to support ACLs)
5518 AC_ARG_WITH(acl-support,
5519 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5520 [ case "$withval" in
5522 with_acl_support="$withval"
5526 if test x"$with_acl_support" = x ; then
5527 with_acl_support="auto"
5530 AC_MSG_RESULT($with_acl_support)
5532 if test x"$with_acl_support" = x"no"; then
5533 AC_MSG_RESULT(Disabling ACL support)
5534 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5536 AC_MSG_NOTICE(checking whether ACL support is available:)
5539 AC_MSG_NOTICE(Using UnixWare ACLs)
5540 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5541 default_static_modules="$default_static_modules vfs_solarisacl"
5544 AC_MSG_NOTICE(Using solaris ACLs)
5545 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5546 ACL_LIBS="$ACL_LIBS -lsec"
5547 default_static_modules="$default_static_modules vfs_solarisacl"
5550 AC_MSG_NOTICE(Using HPUX ACLs)
5551 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5552 default_static_modules="$default_static_modules vfs_hpuxacl"
5555 AC_MSG_NOTICE(Using IRIX ACLs)
5556 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5557 default_static_modules="$default_static_modules vfs_irixacl"
5560 AC_MSG_NOTICE(Using AIX ACLs)
5561 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5562 default_static_modules="$default_static_modules vfs_aixacl"
5565 AC_MSG_NOTICE(Using Tru64 ACLs)
5566 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5567 ACL_LIBS="$ACL_LIBS -lpacl"
5568 default_static_modules="$default_static_modules vfs_tru64acl"
5571 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5572 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5575 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5578 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5581 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5583 LIBS="$LIBS $ACL_LIBS"
5585 #include <sys/types.h>
5586 #include <sys/acl.h>
5590 acl_entry_t *entry_p;
5591 return acl_get_entry(acl, entry_id, entry_p);
5593 [samba_cv_HAVE_POSIX_ACLS=yes],
5594 [samba_cv_HAVE_POSIX_ACLS=no])
5597 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5598 AC_MSG_NOTICE(Using posix ACLs)
5599 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5600 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5602 LIBS="$LIBS $ACL_LIBS"
5604 #include <sys/types.h>
5605 #include <sys/acl.h>
5607 acl_permset_t permset_d;
5609 return acl_get_perm_np(permset_d, perm);
5611 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5612 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5615 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5616 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5618 default_static_modules="$default_static_modules vfs_posixacl"
5620 AC_MSG_NOTICE(ACL support is not avaliable)
5621 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5625 fi # with_acl_support
5629 #################################################
5630 # check for AIO support
5632 AC_MSG_CHECKING(whether to support asynchronous io)
5633 AC_ARG_WITH(aio-support,
5634 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5635 [ case "$withval" in
5643 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5645 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5646 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5649 AC_TRY_LINK([#include <sys/types.h>
5651 [ struct aiocb a; return aio_read(&a);],
5652 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5654 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5657 AC_TRY_LINK([#include <sys/types.h>
5659 [ struct aiocb64 a; return aio_read64(&a);],
5660 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5662 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5663 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5664 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5666 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5667 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5671 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5672 AC_MSG_CHECKING(for aio_read)
5673 AC_LINK_IFELSE([#include <aio.h>
5674 int main() { struct aiocb a; return aio_read(&a); }],
5675 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5676 [AC_MSG_RESULT(no)])
5678 AC_MSG_CHECKING(for aio_write)
5679 AC_LINK_IFELSE([#include <aio.h>
5680 int main() { struct aiocb a; return aio_write(&a); }],
5681 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5682 [AC_MSG_RESULT(no)])
5684 AC_MSG_CHECKING(for aio_fsync)
5685 AC_LINK_IFELSE([#include <aio.h>
5686 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5687 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5688 [AC_MSG_RESULT(no)])
5690 AC_MSG_CHECKING(for aio_return)
5691 AC_LINK_IFELSE([#include <aio.h>
5692 int main() { struct aiocb a; return aio_return(&a); }],
5693 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5694 [AC_MSG_RESULT(no)])
5696 AC_MSG_CHECKING(for aio_error)
5697 AC_LINK_IFELSE([#include <aio.h>
5698 int main() { struct aiocb a; return aio_error(&a); }],
5699 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5700 [AC_MSG_RESULT(no)])
5702 AC_MSG_CHECKING(for aio_cancel)
5703 AC_LINK_IFELSE([#include <aio.h>
5704 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5705 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5706 [AC_MSG_RESULT(no)])
5708 AC_MSG_CHECKING(for aio_suspend)
5709 AC_LINK_IFELSE([#include <aio.h>
5710 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5711 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5712 [AC_MSG_RESULT(no)])
5715 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5716 AC_MSG_CHECKING(for aio_read64)
5717 AC_LINK_IFELSE([#include <aio.h>
5718 int main() { struct aiocb a; return aio_read64(&a); }],
5719 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5720 [AC_MSG_RESULT(no)])
5722 AC_MSG_CHECKING(for aio_write64)
5723 AC_LINK_IFELSE([#include <aio.h>
5724 int main() { struct aiocb a; return aio_write64(&a); }],
5725 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5726 [AC_MSG_RESULT(no)])
5728 AC_MSG_CHECKING(for aio_fsync64)
5729 AC_LINK_IFELSE([#include <aio.h>
5730 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5731 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5732 [AC_MSG_RESULT(no)])
5734 AC_MSG_CHECKING(for aio_return64)
5735 AC_LINK_IFELSE([#include <aio.h>
5736 int main() { struct aiocb a; return aio_return64(&a); }],
5737 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5738 [AC_MSG_RESULT(no)])
5740 AC_MSG_CHECKING(for aio_error64)
5741 AC_LINK_IFELSE([#include <aio.h>
5742 int main() { struct aiocb a; return aio_error64(&a); }],
5743 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5744 [AC_MSG_RESULT(no)])
5746 AC_MSG_CHECKING(for aio_cancel64)
5747 AC_LINK_IFELSE([#include <aio.h>
5748 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5749 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5750 [AC_MSG_RESULT(no)])
5752 AC_MSG_CHECKING(for aio_suspend64)
5753 AC_LINK_IFELSE([#include <aio.h>
5754 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5755 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5756 [AC_MSG_RESULT(no)])
5763 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5766 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5770 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5771 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5772 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5773 default_shared_modules="$default_shared_modules vfs_aio_fork"
5777 #################################################
5778 # check for sendfile support
5780 with_sendfile_support=yes
5781 AC_MSG_CHECKING(whether to check to support sendfile)
5782 AC_ARG_WITH(sendfile-support,
5783 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5784 [ case "$withval" in
5790 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5791 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5792 AC_TRY_LINK([#include <sys/sendfile.h>],
5797 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5799 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5801 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5802 AC_TRY_LINK([#include <sys/sendfile.h>],
5807 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5809 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5811 # Try and cope with broken Linux sendfile....
5812 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5814 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5815 #undef _FILE_OFFSET_BITS
5817 #include <sys/sendfile.h>],
5822 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5824 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5826 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5827 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5828 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5829 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5830 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5831 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5832 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5833 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5834 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5835 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5836 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5842 *freebsd* | *dragonfly* )
5843 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5845 #include <sys/types.h>
5847 #include <sys/socket.h>
5848 #include <sys/uio.h>],
5850 int fromfd, tofd, ret, total=0;
5851 off_t offset, nwritten;
5854 hdr.headers = &hdtrl;
5856 hdr.trailers = NULL;
5858 hdtrl.iov_base = NULL;
5860 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5862 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5864 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5865 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5866 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5867 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5874 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5876 #include <sys/socket.h>
5877 #include <sys/uio.h>],
5881 struct iovec hdtrl[2];
5885 hdtrl[0].iov_base = 0;
5886 hdtrl[0].iov_len = 0;
5888 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5890 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5891 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5892 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5893 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5894 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5899 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5901 #include <sys/socket.h>
5902 #include <sys/uio.h>],
5906 struct iovec hdtrl[2];
5910 hdtrl[0].iov_base = 0;
5911 hdtrl[0].iov_len = 0;
5913 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5915 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5916 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5917 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5918 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5919 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5926 AC_CHECK_LIB(sendfile,sendfilev)
5927 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5929 #include <sys/sendfile.h>],
5933 struct sendfilevec vec[2];
5939 vec[0].sfv_fd = SFV_FD_SELF;
5940 vec[0].sfv_flag = 0;
5945 vec[1].sfv_flag = 0;
5948 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5950 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5952 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5953 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5954 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5955 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5960 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5962 #include <sys/sendfile.h>],
5966 struct sendfilevec vec[2];
5972 vec[0].sfv_fd = SFV_FD_SELF;
5973 vec[0].sfv_flag = 0;
5978 vec[1].sfv_flag = 0;
5981 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5983 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5985 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5986 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5987 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5988 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5994 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5996 #include <sys/socket.h>],
6000 struct sf_parms hdtrl;
6004 hdtrl.header_data = 0;
6005 hdtrl.header_length = 0;
6006 hdtrl.file_descriptor = fromfd;
6007 hdtrl.file_offset = 0;
6008 hdtrl.file_bytes = 0;
6009 hdtrl.trailer_data = 0;
6010 hdtrl.trailer_length = 0;
6012 nwritten = send_file(&tofd, &hdtrl, 0);
6014 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6015 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6016 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6017 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
6018 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6034 ############################################
6035 # See if we have the Linux readahead syscall.
6037 AC_CACHE_CHECK([for Linux readahead],
6038 samba_cv_HAVE_LINUX_READAHEAD,[
6040 #if defined(HAVE_UNISTD_H)
6043 #include <fcntl.h>],
6044 [ssize_t err = readahead(0,0,0x80000);],
6045 samba_cv_HAVE_LINUX_READAHEAD=yes,
6046 samba_cv_HAVE_LINUX_READAHEAD=no)])
6048 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6049 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6050 [Whether Linux readahead is available])
6053 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6055 ############################################
6056 # See if we have the posix_fadvise syscall.
6058 AC_CACHE_CHECK([for posix_fadvise],
6059 samba_cv_HAVE_POSIX_FADVISE,[
6061 #if defined(HAVE_UNISTD_H)
6064 #include <fcntl.h>],
6065 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6066 samba_cv_HAVE_POSIX_FADVISE=yes,
6067 samba_cv_HAVE_POSIX_FADVISE=no)])
6069 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6070 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6071 [Whether posix_fadvise is available])
6074 ############################################
6075 # See if we have the Linux splice syscall.
6079 AC_CACHE_CHECK([for Linux splice],
6080 samba_cv_HAVE_LINUX_SPLICE,[
6082 #if defined(HAVE_UNISTD_H)
6085 #include <fcntl.h>],
6086 [long ret = splice(0,0,1,0,400,0);],
6087 samba_cv_HAVE_LINUX_SPLICE=yes,
6088 samba_cv_HAVE_LINUX_SPLICE=no)])
6091 samba_cv_HAVE_LINUX_SPLICE=no
6095 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
6096 AC_DEFINE(HAVE_LINUX_SPLICE,1,
6097 [Whether Linux splice is available])
6100 AC_HAVE_DECL(splice, [#include <fcntl.h>])
6102 ############################################
6103 # See if we have the a broken readlink syscall.
6105 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
6106 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
6107 samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
6109 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
6110 AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
6113 #################################################
6114 # Check whether winbind is supported on this platform. If so we need to
6115 # build and install client programs, sbin programs and shared libraries
6117 AC_MSG_CHECKING(whether to build winbind)
6119 # Initially, the value of $host_os decides whether winbind is supported
6124 # Define external wbclient library to link against. This disables winbind.
6125 # We define this here so --with-winbind can override it.
6126 AC_ARG_WITH(wbclient,
6127 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
6140 WBCLIENT_INCLUDES="-I$withval/include"
6141 WBCLIENT_LDFLAGS="-L$withval/lib"
6146 AC_SUBST(WBCLIENT_INCLUDES)
6147 AC_SUBST(WBCLIENT_LDFLAGS)
6148 AC_SUBST(WBCLIENT_LIBS)
6151 # Define the winbind shared library name and any specific linker flags
6152 # it needs to be built with.
6154 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
6155 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
6156 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6157 NSSSONAMEVERSIONSUFFIX=""
6160 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
6161 NSSSONAMEVERSIONSUFFIX=".2"
6162 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
6165 # FreeBSD winbind client is implemented as a wrapper around
6166 # the Linux version.
6167 NSSSONAMEVERSIONSUFFIX=".1"
6168 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
6169 ../nsswitch/winbind_nss_linux.o"
6170 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6171 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6175 # NetBSD winbind client is implemented as a wrapper
6176 # around the Linux version. It needs getpwent_r() to
6177 # indicate libc's use of the correct nsdispatch API.
6179 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6180 WINBIND_NSS_EXTRA_OBJS="\
6181 ../nsswitch/winbind_nss_netbsd.o \
6182 ../nsswitch/winbind_nss_linux.o"
6183 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6184 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6187 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6191 # IRIX has differently named shared libraries
6192 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6193 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6194 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6197 # Solaris winbind client is implemented as a wrapper around
6198 # the Linux version.
6199 NSSSONAMEVERSIONSUFFIX=".1"
6200 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6201 ../nsswitch/winbind_nss_linux.o"
6204 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6207 # AIX has even differently named shared libraries. No
6208 # WINS support has been implemented yet.
6209 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6210 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6211 WINBIND_NSS="../nsswitch/WINBIND"
6216 winbind_no_reason=", unsupported on $host_os"
6220 # Check the setting of --with-winbind
6222 AC_ARG_WITH(winbind,
6223 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6237 # We need unix domain sockets for winbind
6239 if test x"$HAVE_WINBIND" = x"yes"; then
6240 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6241 winbind_no_reason=", no unix domain socket support on $host_os"
6246 # Display test results
6248 if test x"$HAVE_WINBIND" = x"no"; then
6252 if test x"$HAVE_WBCLIENT" = x"yes"; then
6253 AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6254 [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6255 LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6257 AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6258 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6260 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6261 BUILD_LIBWBCLIENT_SHARED=no
6263 BUILD_LIBWBCLIENT_SHARED=yes
6266 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6267 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6269 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6270 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6271 ## Only worry about libwbclient if we have shared
6273 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6274 LIBWBCLIENT=libwbclient
6275 INSTALL_LIBWBCLIENT=installlibwbclient
6276 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6277 LIBWBCLIENT_LIBS="-lwbclient"
6279 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6280 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6284 if test x"$HAVE_WINBIND" = x"yes"; then
6286 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6288 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6289 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6290 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6291 PAM_MODULES="$PAM_MODULES pam_winbind"
6292 INSTALL_PAM_MODULES="installpammodules"
6293 UNINSTALL_PAM_MODULES="uninstallpammodules"
6296 # we use winbind, check for krb5 locate_plugin support:
6297 AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
6298 [[#ifdef HAVE_KRB5_H
6302 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
6303 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
6304 if test x"$BLDSHARED" = x"true" ; then
6305 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
6308 # end of krb5 locate_plugin check
6310 AC_MSG_RESULT(no$winbind_no_reason)
6313 AC_SUBST(WINBIND_NSS)
6314 AC_SUBST(WINBIND_WINS_NSS)
6315 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6316 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6317 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6319 AC_SUBST(WINBIND_KRB5_LOCATOR)
6321 # Solaris 10 does have new member in nss_XbyY_key
6322 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6323 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6324 [#include <nss_dbdefs.h>])
6326 # Solaris has some extra fields in struct passwd that need to be
6327 # initialised otherwise nscd crashes.
6329 AC_CHECK_MEMBER(struct passwd.pw_comment,
6330 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6333 AC_CHECK_MEMBER(struct passwd.pw_age,
6334 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6337 # AIX 4.3.x and 5.1 do not have as many members in
6338 # struct secmethod_table as AIX 5.2
6339 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6340 [#include <usersec.h>])
6341 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6342 [#include <usersec.h>])
6344 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6345 AC_TRY_COMPILE([#include <sys/types.h>
6346 #include <sys/socket.h>],
6349 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6351 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6352 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6353 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6357 #################################################
6358 # Check to see if we should use the included popt
6360 AC_ARG_WITH(included-popt,
6361 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6372 if test x"$INCLUDED_POPT" != x"yes"; then
6373 AC_CHECK_LIB(popt, poptGetContext,
6374 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6377 AC_MSG_CHECKING(whether to use included popt)
6378 if test x"$INCLUDED_POPT" = x"yes"; then
6380 BUILD_POPT='$(POPT_OBJ)'
6381 POPTLIBS='$(POPT_OBJ)'
6382 FLAGS1="-I\$(srcdir)/../lib/popt"
6388 AC_SUBST(BUILD_POPT)
6392 #################################################
6393 # Check if user wants DNS service discovery support
6395 AC_ARG_ENABLE(dnssd,
6396 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6398 AC_SUBST(DNSSD_LIBS)
6399 if test x"$enable_dnssd" = x"yes"; then
6400 have_dnssd_support=yes
6402 AC_CHECK_HEADERS(dns_sd.h)
6403 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6404 have_dnssd_support=no
6407 # On Darwin the DNSSD API is in libc, but on other platforms it's
6408 # probably in -ldns_sd
6409 AC_CHECK_FUNCS(DNSServiceRegister)
6410 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6411 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6412 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6413 have_dnssd_support=no
6416 if test x"$have_dnssd_support" = x"yes"; then
6417 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6418 [Whether to enable DNS service discovery support])
6420 if test x"$enable_dnssd" = x"yes"; then
6421 AC_MSG_ERROR(DNS service discovery support not available)
6427 #################################################
6428 # Check if user wants avahi support
6430 AC_ARG_ENABLE(avahi,
6431 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6433 if test x"$enable_avahi" != x"no"; then
6434 have_avahi_support=yes
6436 AC_CHECK_HEADERS(avahi-common/watch.h)
6437 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6438 have_avahi_support=no
6441 AC_CHECK_HEADERS(avahi-client/client.h)
6442 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6443 have_avahi_support=no
6447 AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6448 AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6451 if test x"$have_avahi_client_new" != x"yes" -o \
6452 x"$have_avahi_strerror" != x"yes" ; then
6453 have_avahi_support=no
6456 if test x"$have_avahi_support" = x"yes"; then
6457 AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6458 AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6459 [Whether to enable avahi support])
6460 AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6462 if test x"$enable_avahi" = x"yes"; then
6463 AC_MSG_ERROR(avahi support not available)
6469 #################################################
6472 PTHREAD_CFLAGS=error
6473 PTHREAD_LDFLAGS=error
6475 # If it's error, then the user didn't
6477 if test "x$PTHREAD_LDFLAGS" = xerror; then
6478 AC_CHECK_LIB(pthread, pthread_attr_init, [
6479 PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6480 PTHREAD_LDFLAGS="-lpthread" ])
6483 if test "x$PTHREAD_LDFLAGS" = xerror; then
6484 AC_CHECK_LIB(pthreads, pthread_attr_init, [
6485 PTHREAD_CFLAGS="-D_THREAD_SAFE"
6486 PTHREAD_LDFLAGS="-lpthreads" ])
6489 if test "x$PTHREAD_LDFLAGS" = xerror; then
6490 AC_CHECK_LIB(c_r, pthread_attr_init, [
6491 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6492 PTHREAD_LDFLAGS="-pthread" ])
6495 if test "x$PTHREAD_LDFLAGS" = xerror; then
6496 AC_CHECK_FUNC(pthread_attr_init, [
6497 PTHREAD_CFLAGS="-D_REENTRANT"
6498 PTHREAD_LDFLAGS="-lpthread" ])
6501 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6502 # pthread_attr_init. On pthread_mutex_lock it works there...
6503 if test "x$PTHREAD_LDFLAGS" = xerror; then
6504 AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6505 PTHREAD_CFLAGS="-D_REENTRANT"
6506 PTHREAD_LDFLAGS="-lpthread" ])
6509 AC_SUBST(PTHREAD_CFLAGS)
6510 AC_SUBST(PTHREAD_LDFLAGS)
6512 samba_cv_HAVE_PTHREAD=no
6513 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6514 samba_cv_HAVE_PTHREAD=yes
6515 # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6516 ac_save_CFLAGS=$CFLAGS
6517 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6518 ac_save_LDFLAGS=$LDFLAGS
6519 LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6520 AC_CHECK_HEADERS(pthread.h)
6521 CFLAGS=$ac_save_CFLAGS
6522 LDFLAGS=$ac_save_LDFLAGS
6523 AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6526 #################################################
6527 # Check if user wants pthreadpool support
6529 AC_ARG_ENABLE(pthreadpool,
6530 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6532 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6533 AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6536 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6537 LIBS="$LIBS $PTHREAD_LDFLAGS"
6538 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6539 AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6540 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6543 #################################################
6544 # Check to see if we should use the included iniparser
6546 AC_ARG_WITH(included-iniparser,
6547 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6551 INCLUDED_INIPARSER=yes
6554 INCLUDED_INIPARSER=no
6558 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6559 AC_CHECK_LIB(iniparser, iniparser_load,
6560 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6563 AC_MSG_CHECKING(whether to use included iniparser)
6564 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6566 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6568 FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6572 INIPARSERLIBS="-liniparser"
6574 AC_SUBST(BUILD_INIPARSER)
6575 AC_SUBST(INIPARSERLIBS)
6578 ###################################################
6579 # Check for different/missing (set|get|end)netgrent prototypes
6581 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
6582 CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6584 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6585 AC_TRY_COMPILE([#include<netdb.h>
6586 #ifdef HAVE_NETGROUP_H
6587 #include<netgroup.h>
6588 #endif],[setnetgrent("foo")],
6589 samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6590 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6591 AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6593 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6594 AC_TRY_COMPILE([#include<netdb.h>
6595 #ifdef HAVE_NETGROUP_H
6596 #include<netgroup.h>
6597 #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6598 samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6599 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6600 AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6602 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6603 AC_TRY_COMPILE([#include<netdb.h>
6604 #ifdef HAVE_NETGROUP_H
6605 #include<netgroup.h>
6606 #endif],[endnetgrent()],
6607 samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6608 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6609 AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6614 # Checks for the vfs_fileid module
6616 AC_CHECK_FUNC(getmntent)
6618 AC_CHECK_HEADERS(sys/statfs.h)
6620 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6621 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6623 #include <sys/types.h>
6624 #include <sys/statfs.h>
6628 fsid_t fsid = fsd.f_fsid;
6629 return statfs (".", &fsd);
6631 vfsfileid_cv_statfs=yes,
6632 vfsfileid_cv_statfs=no,
6633 vfsfileid_cv_statfs=cross)
6635 AC_MSG_RESULT($vfsfileid_cv_statfs)
6637 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6638 x"$vfsfileid_cv_statfs" = x"yes"; then
6639 default_shared_modules="$default_shared_modules vfs_fileid"
6642 # Checks for the vfs_fileid module
6645 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6647 eval MODULE_DEFAULT_$i=STATIC
6650 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6652 dnl Fall back to static if we cannot build shared libraries
6653 eval MODULE_DEFAULT_$i=STATIC
6655 if test $BLDSHARED = true; then
6656 eval MODULE_DEFAULT_$i=SHARED
6660 dnl Always build these modules static
6661 MODULE_rpc_spoolss=STATIC
6662 MODULE_rpc_srvsvc=STATIC
6663 MODULE_idmap_tdb=STATIC
6664 MODULE_idmap_passdb=STATIC
6665 MODULE_idmap_nss=STATIC
6667 MODULE_nss_info_template=STATIC
6669 AC_ARG_WITH(static-modules,
6670 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6671 [ if test $withval; then
6672 for i in `echo $withval | sed -e 's/,/ /g'`
6674 eval MODULE_$i=STATIC
6678 AC_ARG_WITH(shared-modules,
6679 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6680 [ if test $withval; then
6681 for i in `echo $withval | sed -e 's/,/ /g'`
6683 eval MODULE_$i=SHARED
6687 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6688 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6689 SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6690 AC_SUBST(SMBD_FAM_LIBS)
6693 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6694 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6695 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6696 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6697 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6698 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6699 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6702 SMB_MODULE(rpc_lsarpc, \$(RPC_LSARPC_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6703 SMB_MODULE(rpc_winreg, \$(RPC_WINREG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6704 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6705 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6706 SMB_MODULE(rpc_wkssvc, \$(RPC_WKSSVC_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6707 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6708 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6709 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOGON_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6710 SMB_MODULE(rpc_netdfs, \$(RPC_NETDFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6711 SMB_MODULE(rpc_srvsvc, \$(RPC_SRVSVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6712 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6713 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6714 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6715 SMB_MODULE(rpc_rpcecho, \$(RPC_RPCECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6716 SMB_SUBSYSTEM(RPC,smbd/process.o)
6718 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6719 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6720 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6721 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6722 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6723 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6724 SMB_MODULE(idmap_autorid, winbindd/idmap_autorid.o, "bin/autorid.$SHLIBEXT", IDMAP)
6725 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6726 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6727 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6728 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6730 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6731 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6733 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6734 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6735 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6736 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6737 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6739 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6740 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6741 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6742 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6743 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6744 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6745 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6746 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6747 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6748 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6750 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6751 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6752 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6753 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6754 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6755 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6756 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6757 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6758 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6759 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6760 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6761 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6762 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6763 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6764 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6765 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6766 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6767 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6768 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6769 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6770 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6771 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6772 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6773 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6774 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6775 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6776 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6777 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6778 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6779 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6780 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6781 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6782 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6783 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6784 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6785 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6786 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6787 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6788 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6789 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6790 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6791 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6792 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6793 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6794 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6795 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6796 SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
6798 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6800 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6801 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6802 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6804 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6805 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6806 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6807 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6809 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6811 #################################################
6812 # do extra things if we are running insure
6814 if test "${ac_cv_prog_CC}" = "insure"; then
6815 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6818 #################################################
6819 # If run from the build farm, enable NASTY hacks
6820 #################################################
6821 AC_MSG_CHECKING(whether to enable build farm hacks)
6822 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6824 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6829 #################################################
6830 # check for bad librt/libpthread interactions
6832 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6833 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6834 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6835 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6837 SMB_IF_RTSIGNAL_BUG(
6839 # Have RT_SIGNAL bug, need to check whether the problem will
6840 # affect anything we have configured.
6843 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6844 if test x"$rt_signal_lease_ok" = x"no" ; then
6849 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6850 if test x"$rt_signal_notify_ok" = x"no" ; then
6855 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6856 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6857 if test x"$rt_signal_aio_ok" = x"no" ; then
6862 if test x"$rt_do_error" = x"yes" ; then
6863 SMB_IS_LIBPTHREAD_LINKED(
6867 *** On this platforms, linking Samba against pthreads causes problems
6868 *** with the oplock and change notification mechanisms. You may be
6869 *** using pthreads as a side-effect of using the --with-aio-support
6870 *** or --with-profiling-data options. Please remove these and try again.
6877 *** On this platform, the oplock and change notification mechanisms do not
6878 *** appear to work. Please report this problem to samba-technical@samba.org
6879 *** and attach the config.log file from this directory.
6883 AC_MSG_ERROR(unable to use realtime signals on this platform)
6887 # no RT_SIGNAL bug, we are golden
6888 SMB_IS_LIBPTHREAD_LINKED(
6890 AC_MSG_WARN(using libpthreads - this may degrade performance)
6895 # cross compiling, I hope you know what you are doing
6901 m4_include(../lib/zlib/zlib.m4)
6903 if test x$smbtorture4_possible = xyes; then
6904 saved_USESHARED="$USESHARED"
6906 smbtorture4_path="bin/smbtorture4"
6907 smbtorture4_option="-t bin/smbtorture4"
6908 AC_SUBST(smbtorture4_path)
6909 AC_SUBST(smbtorture4_option)
6910 USESHARED="$saved_USESHARED"
6911 SMBTORTURE4="bin/smbtorture4"
6912 AC_SUBST(SMBTORTURE4)
6917 AC_ZLIB([ZLIB_OBJS=""], [
6919 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6920 deflate.o trees.o zutil.o inflate.o infback.o \
6921 inftrees.o inffast.o
6923 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6925 CFLAGS="-I../lib/zlib $CFLAGS"
6928 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6930 if test "x$enable_dmalloc" = xyes
6932 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6933 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6934 [Define to check invariants around some common functions])
6935 LIBS="$LIBS -ldmalloc"
6938 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6939 LIB_REMOVE_USR_LIB(LDFLAGS)
6940 LIB_REMOVE_USR_LIB(LIBS)
6942 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6943 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6944 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6946 #################################################
6947 # Display summary of libraries detected
6949 AC_MSG_RESULT([Using libraries:])
6950 AC_MSG_RESULT([ LIBS = $LIBS])
6951 if test x"$with_ads_support" != x"no"; then
6952 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6954 if test x"$with_ldap_support" != x"no"; then
6955 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6957 if test x"$with_dnsupdate_support" != x"no"; then
6958 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6960 if test x"$have_dnssd_support" != x"no"; then
6961 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6963 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6965 #################################################
6966 # final configure stuff
6968 AC_MSG_CHECKING([configure summary])
6969 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6971 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6972 AC_MSG_WARN([cannot run when cross-compiling]))
6974 dnl Merge in developer cflags from now on
6975 AC_SUBST(DEVELOPER_CFLAGS)
6976 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6977 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6980 # Stuff the smbd-only libraries at the end of the smbd link
6981 # path (if we have them).
6982 SMBD_LIBS="$samba_dmapi_libs"
6985 CFLAGS="${CFLAGS} \$(FLAGS)"
6986 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6988 # If we had to expand the includes, make tsure the output file is moved back
6989 AC_OUTPUT_COMMANDS([
6990 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
6991 ln -s Makefile-noincludes Makefile
6996 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6997 lib/netapi/examples/Makefile
6998 lib/netapi/tests/Makefile
6999 pkgconfig/smbclient.pc
7000 pkgconfig/wbclient.pc
7002 pkgconfig/smbsharemodes.pc
7003 ../examples/libsmbclient/Makefile.internal
7006 #################################################
7007 # Print very concise instructions on building/use
7008 if test "x$enable_dmalloc" = xyes
7010 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
7011 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])