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
27 m4_include(../lib/tevent/libtevent.m4)
30 for obj in ${TEVENT_OBJ}; do
31 LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
33 AC_SUBST(LIBTEVENT_OBJ0)
34 LIBS="${LIBS} ${TEVENT_LIBS}"
36 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
37 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
43 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
45 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
46 if test "x${srcdir-.}" != "x."; then
47 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
50 dnl Unique-to-Samba variables we'll be playing with.
51 AC_SUBST(SAMBA_CPPFLAGS)
56 AC_SUBST(MODULE_EXPORTS)
62 AC_SUBST(RELRO_LDFLAGS)
64 AC_SUBST(INSTALLLIBCMD_SH)
65 AC_SUBST(INSTALLLIBCMD_A)
66 AC_SUBST(UNINSTALLLIBCMD_SH)
67 AC_SUBST(UNINSTALLLIBCMD_A)
69 AC_SUBST(INSTALL_LIBWBCLIENT)
70 AC_SUBST(UNINSTALL_LIBWBCLIENT)
71 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
72 AC_SUBST(LIBWBCLIENT_SHARED)
73 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
74 AC_SUBST(LIBWBCLIENT_STATIC)
75 AC_SUBST(LIBWBCLIENT_SOVER)
77 AC_SUBST(LIBWBCLIENT_LIBS)
79 AC_SUBST(LIBSAMBAUTIL_SHARED)
91 AC_SUBST(INSTALL_PAM_MODULES)
92 AC_SUBST(UNINSTALL_PAM_MODULES)
94 AC_SUBST(EXTRA_BIN_PROGS)
95 AC_SUBST(CIFSMOUNT_PROGS)
96 AC_SUBST(INSTALL_CIFSMOUNT)
97 AC_SUBST(UNINSTALL_CIFSMOUNT)
98 AC_SUBST(CIFSUMOUNT_PROGS)
99 AC_SUBST(INSTALL_CIFSUMOUNT)
100 AC_SUBST(UNINSTALL_CIFSUMOUNT)
101 AC_SUBST(CIFSUPCALL_PROGS)
102 AC_SUBST(INSTALL_CIFSUPCALL)
103 AC_SUBST(UNINSTALL_CIFSUPCALL)
104 AC_SUBST(EXTRA_SBIN_PROGS)
105 AC_SUBST(EXTRA_ALL_TARGETS)
106 AC_SUBST(CONFIG_LIBS)
109 # compile with optimization and without debugging by default, but
110 # allow people to set their own preference.
111 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
112 # if it has no value. This prevent *very* large debug binaries from occurring
114 if test "x$debug" = "xyes" ; then
115 CFLAGS="${CFLAGS} -g"
117 if test "x$CFLAGS" = x; then
121 m4_include(../lib/socket_wrapper/config.m4)
122 m4_include(../lib/nss_wrapper/config.m4)
123 m4_include(../lib/util/time.m4)
125 m4_include(m4/swat.m4)
127 # Probe the gcc version for extra CFLAGS. We always stash these in
128 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
129 # Makefile edit, avoiding the need to re-run configure.
130 if test x"$ac_cv_prog_gcc" = x"yes" ; then
131 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
132 # Add -Wdeclaration-after-statement if compiler supports it
134 [that the C compiler understands -Wdeclaration-after-statement],
135 samba_cv_HAVE_Wdeclaration_after_statement, [
140 }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
141 samba_cv_HAVE_Wdeclaration_after_statement=yes,
142 samba_cv_HAVE_Wdeclaration_after_statement=no,
143 samba_cv_HAVE_Wdeclaration_after_statement=cross)
146 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
147 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
150 #-Werror-implicit-function-declaration
152 [that the C compiler understands -Werror-implicit-function-declaration],
153 samba_cv_HAVE_Werror_implicit_function_declaration, [
158 }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
159 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
160 samba_cv_HAVE_Werror_implicit_function_declaration=no,
161 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
163 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
164 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
167 # krb5developer is like developer, except we don't get
168 # -Wstrict-prototypes.
169 if test x"$krb5_developer" != x"$yes" ; then
170 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
173 if test x"$picky_developer" = x"yes"; then
174 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
178 #################################################
179 # check for a shared memory profiling support
180 AC_MSG_CHECKING(whether to use profiling)
181 AC_ARG_WITH(profiling-data,
182 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
186 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
187 samba_cv_WITH_PROFILE=yes
191 samba_cv_WITH_PROFILE=no
197 dnl Checks for programs.
198 merged_build_possible=yes
203 m4_include(../m4/check_make.m4)
204 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
207 m4_include(../m4/check_perl.m4)
208 AC_SAMBA_PERL([true], [merged_build_possible=no])
210 AC_CHECK_TOOL(AR, ar)
212 dnl Check if we use GNU ld
216 dnl Certain versions of GNU ld the default is not to have the
217 dnl --allow-shlib-undefined flag defined. This causes a stackload of
218 dnl warnings when building modules.
219 if test "$ac_cv_prog_gnu_ld" = "yes"; then
220 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
221 AC_MSG_CHECKING(GNU ld release date)
223 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'`
225 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
226 if test -n "$ac_cv_gnu_ld_date"; then
227 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
228 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
230 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
231 ac_cv_gnu_ld_version_script=yes
234 AC_MSG_CHECKING(GNU ld release version)
236 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^[^0-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
237 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
238 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
240 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
241 AC_MSG_CHECKING(GNU ld release version major)
242 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
243 AC_MSG_CHECKING(GNU ld release version minor)
244 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
245 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
246 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
248 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
249 ac_cv_gnu_ld_version_script=yes
254 dnl look for executable suffix
257 dnl Check if C compiler understands -c and -o at the same time
259 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
266 dnl Check if the C compiler understands -Werror
267 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
272 }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
273 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
274 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
275 Werror_FLAGS="-Werror"
277 dnl Check if the C compiler understands -w2
278 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
283 }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
284 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
285 if test x"$samba_cv_HAVE_w2" = x"yes"; then
288 dnl Check if the C compiler understands -errwarn
289 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
294 }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
295 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
296 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
297 Werror_FLAGS="-errwarn=%all"
302 ############################################
303 # check if the compiler can handle negative enum values
304 # and don't truncate the values to INT_MAX
305 # a runtime test is needed here
307 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
311 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
313 enum negative_values v1 = NEGATIVE_VALUE;
314 unsigned v2 = NEGATIVE_VALUE;
316 if (v1 != 0xFFFFFFFF) {
317 printf("%u != 0xFFFFFFFF\n", v1);
320 if (v2 != 0xFFFFFFFF) {
321 printf("%u != 0xFFFFFFFF\n", v2);
328 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
329 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
330 AC_MSG_WARN([using --uint-enums for pidl])
331 PIDL_ARGS="$PIDL_ARGS --uint-enums"
334 dnl Figure out the flags to support named structure initializers
336 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
338 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
339 AC_MSG_CHECKING(uname -s)
340 AC_MSG_RESULT(${UNAME_S})
342 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
343 AC_MSG_CHECKING(uname -r)
344 AC_MSG_RESULT(${UNAME_R})
346 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
347 AC_MSG_CHECKING(uname -m)
348 AC_MSG_RESULT(${UNAME_M})
350 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
351 AC_MSG_CHECKING(uname -p)
352 AC_MSG_RESULT(${UNAME_P})
354 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
355 AC_MSG_CHECKING(uname -i)
356 AC_MSG_RESULT(${UNAME_I})
358 dnl Add #include for broken IRIX header files
361 #TODO add to libreplace
362 if test x"$ac_cv_prog_gcc" != x"yes" ; then
363 dnl Fix sensible defaults for MIPSPro compilers. The
364 dnl error numbers are valid for the 7.3 compilers,
365 dnl hopefully also valid for the 7.4 series.
367 dnl Bugzilla 3801. Force an error on warning 1035
368 dnl so we don't incorrectly detect stdint.h. This
369 dnl warning is emitted for #error directives.
370 CFLAGS="$CFLAGS -diag_error 1035"
371 dnl 1209: Controlling expression is constant
372 dnl 1174: Function foo declared but never referenced
373 dnl 3201: Parameter foo was never referenced
374 CFLAGS="$CFLAGS -woff 1209,1174,3201"
382 AC_SUBST(LDSHFLAGS_Z_DEFS)
384 AC_SUBST(LDSHFLAGS_Z_NODEFS)
386 dnl Add modules that have to be built by default here
387 dnl These have to be built static:
388 default_static_modules=""
389 default_static_modules="$default_static_modules pdb_smbpasswd"
390 default_static_modules="$default_static_modules pdb_tdbsam"
391 default_static_modules="$default_static_modules pdb_wbc_sam"
392 default_static_modules="$default_static_modules rpc_lsarpc"
393 default_static_modules="$default_static_modules rpc_samr"
394 default_static_modules="$default_static_modules rpc_winreg"
395 default_static_modules="$default_static_modules rpc_initshutdown"
396 default_static_modules="$default_static_modules rpc_dssetup"
397 default_static_modules="$default_static_modules rpc_wkssvc"
398 default_static_modules="$default_static_modules rpc_svcctl"
399 default_static_modules="$default_static_modules rpc_ntsvcs"
400 default_static_modules="$default_static_modules rpc_netlogon"
401 default_static_modules="$default_static_modules rpc_netdfs"
402 default_static_modules="$default_static_modules rpc_srvsvc"
403 default_static_modules="$default_static_modules rpc_spoolss"
404 default_static_modules="$default_static_modules rpc_eventlog"
405 default_static_modules="$default_static_modules auth_sam"
406 default_static_modules="$default_static_modules auth_unix"
407 default_static_modules="$default_static_modules auth_winbind"
408 default_static_modules="$default_static_modules auth_wbc"
409 default_static_modules="$default_static_modules auth_server"
410 default_static_modules="$default_static_modules auth_domain"
411 default_static_modules="$default_static_modules auth_builtin"
412 default_static_modules="$default_static_modules auth_netlogond"
413 default_static_modules="$default_static_modules vfs_default"
414 default_static_modules="$default_static_modules nss_info_template"
416 dnl These are preferably build shared, and static if dlopen() is not available
417 default_shared_modules=""
418 default_shared_modules="$default_shared_modules vfs_recycle"
419 default_shared_modules="$default_shared_modules vfs_audit"
420 default_shared_modules="$default_shared_modules vfs_extd_audit"
421 default_shared_modules="$default_shared_modules vfs_full_audit"
422 default_shared_modules="$default_shared_modules vfs_netatalk"
423 default_shared_modules="$default_shared_modules vfs_fake_perms"
424 default_shared_modules="$default_shared_modules vfs_default_quota"
425 default_shared_modules="$default_shared_modules vfs_readonly"
426 default_shared_modules="$default_shared_modules vfs_cap"
427 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
428 default_shared_modules="$default_shared_modules vfs_shadow_copy"
429 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
430 default_shared_modules="$default_shared_modules charset_CP850"
431 default_shared_modules="$default_shared_modules charset_CP437"
432 default_shared_modules="$default_shared_modules auth_script"
433 default_shared_modules="$default_shared_modules vfs_readahead"
434 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
435 default_shared_modules="$default_shared_modules vfs_streams_xattr"
436 default_shared_modules="$default_shared_modules vfs_streams_depot"
437 default_shared_modules="$default_shared_modules vfs_acl_xattr"
438 default_shared_modules="$default_shared_modules vfs_acl_tdb"
439 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
440 default_shared_modules="$default_shared_modules vfs_preopen"
441 default_shared_modules="$default_shared_modules vfs_catia"
442 default_shared_modules="$default_shared_modules vfs_scannedonly"
444 if test "x$developer" = xyes; then
445 default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
446 default_shared_modules="$default_shared_modules charset_weird perfcount_test"
450 # Config CPPFLAG settings for strange OS's that must be set
451 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
452 # case statement; its first reference must be unconditional.
457 # Defines needed for HPUX support.
458 # HPUX has bigcrypt but (sometimes?) doesn't use it for
459 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
463 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
469 # CRAY Unicos has broken const handling
471 AC_MSG_RESULT([disabling const])
472 CPPFLAGS="$CPPFLAGS -Dconst="
476 # AIX4.x doesn't even admit to having large
477 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
480 AC_MSG_RESULT([enabling large file support])
481 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
482 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
485 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
486 # to the existance of large files..
487 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
488 # recommendations on large file support, however it makes the
489 # compile work using gcc 2.7 and 2.8, whereas using the Sun
490 # recommendation makes the compile fail on gcc2.7. JRA.
492 # Solaris uses SYSV printing. Make sure to set that here. --jerry
495 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
497 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
498 AC_MSG_RESULT([no large file support])
501 AC_MSG_RESULT([enabling large file support])
502 if test "$ac_cv_prog_gcc" = yes; then
503 ${CC-cc} -v >conftest.c 2>&1
504 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
506 case "$ac_cv_gcc_compiler_version_number" in
507 *"gcc version 2.6"*|*"gcc version 2.7"*)
508 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
509 LDFLAGS="$LDFLAGS -lthread"
510 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
513 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
514 LDFLAGS="$LDFLAGS -lthread"
515 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
516 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
520 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
521 LDFLAGS="$LDFLAGS -lthread"
522 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
523 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
529 # IRIX uses SYSV printing. Make sure to set that here
532 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
534 *freebsd*|*dragonfly*)
535 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
538 # VOS may need to have POSIX support and System V compatibility enabled.
545 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
546 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
550 *-D_SYSV*|*-D_SVID_SOURCE*)
553 CPPFLAGS="$CPPFLAGS -D_SYSV"
554 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
558 # Tests needed for SINIX large file support.
561 if test $host = mips-sni-sysv4 ; then
562 AC_MSG_CHECKING([for LFS support])
563 old_CPPFLAGS="$CPPFLAGS"
564 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
568 #if _LFS64_LARGEFILE == 1
573 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
574 CPPFLAGS="$old_CPPFLAGS"
575 if test x$SINIX_LFS_SUPPORT = xyes ; then
576 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
577 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
578 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
579 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
580 LIBS="`getconf LFS64_LIBS` $LIBS"
582 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
586 # Systems with LFS support.
588 gnu* | k*bsd*-gnu | kopensolaris*-gnu)
589 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
590 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
591 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
592 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
595 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
598 AC_MSG_CHECKING([for LFS support])
599 old_CPPFLAGS="$CPPFLAGS"
600 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
603 #include <sys/utsname.h>
607 #if _LFS64_LARGEFILE == 1
612 /* Ensure this is glibc 2.2 or higher */
613 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
614 int libc_major = __GLIBC__;
615 int libc_minor = __GLIBC_MINOR__;
623 /* Ensure this is kernel 2.4 or higher */
626 release = strdup(uts.release);
627 major = atoi(strsep(&release, "."));
628 minor = atoi(strsep(&release, "."));
630 if (major > 2 || (major == 2 && minor > 3))
637 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
638 CPPFLAGS="$old_CPPFLAGS"
639 if test x$LINUX_LFS_SUPPORT = xyes ; then
640 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
641 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
642 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
643 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
645 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
649 # MacOS X is the *only* system that uses compose character in utf8. This
650 # is so horribly broken....
653 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
655 # Add a system specific charset module.
656 default_shared_modules="$default_shared_modules charset_macosxfs"
660 AC_MSG_CHECKING([for LFS support])
661 old_CPPFLAGS="$CPPFLAGS"
662 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
666 #if _LFS64_LARGEFILE == 1
671 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
672 CPPFLAGS="$old_CPPFLAGS"
673 if test x$GLIBC_LFS_SUPPORT = xyes ; then
674 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
675 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
676 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
678 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
681 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
682 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
687 SAVE_CPPFLAGS="${CPPFLAGS}"
688 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
690 AC_LIBREPLACE_BROKEN_CHECKS
691 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
692 AC_LIBREPLACE_NETWORK_CHECKS
694 CPPFLAGS="${SAVE_CPPFLAGS}"
696 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
698 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
699 AC_SUBST(LIBREPLACE_OBJS)
701 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
702 AC_SUBST(LIBREPLACE_LIBS)
705 # add -ldl to the global LIBS
706 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
707 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
710 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
711 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
712 AC_CHECK_HEADERS(limits.h float.h libintl.h)
713 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
714 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)
715 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
716 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
717 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
718 AC_CHECK_HEADERS(sys/sysmacros.h)
719 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
720 AC_CHECK_HEADERS(langinfo.h locale.h)
721 AC_CHECK_HEADERS(xfs/libxfs.h)
722 AC_CHECK_HEADERS(netgroup.h)
724 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
730 ## These fail to compile on IRIX so just check for their presence
731 AC_CHECK_HEADERS(sys/mode.h,,,)
733 # Look for Darwin headers
734 old_CPPFLAGS="$CPPFLAGS"
735 CPPFLAGS="-Iinclude $CPPFLAGS"
736 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
737 CPPFLAGS="$old_CPPFLAGS"
739 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
740 # subdirectory of headers.
741 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
744 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
745 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
749 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
750 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
751 if test x"$ac_cv_header_shadow_h" = x"yes"; then
752 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
756 AC_CHECK_HEADERS(shadow.h)
757 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
758 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
760 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
761 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
763 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
765 # For experimental utmp support (lastlog on some BSD-like systems)
766 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
768 AC_CHECK_SIZEOF(int,cross)
769 AC_CHECK_SIZEOF(long,cross)
770 AC_CHECK_SIZEOF(long long,cross)
771 AC_CHECK_SIZEOF(short,cross)
786 AC_CHECK_TYPE(ssize_t, int)
787 AC_CHECK_TYPE(wchar_t, unsigned short)
789 ############################################
790 # for cups support we need libcups, and a handful of header files
793 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
795 if test x$enable_cups != xno; then
796 AC_PATH_PROG(CUPS_CONFIG, cups-config)
798 if test "x$CUPS_CONFIG" != x; then
800 ac_save_CFLAGS=$CFLAGS
801 ac_save_LDFLAGS=$LDFLAGS
802 ac_save_PRINT_LIBS=$PRINT_LIBS
803 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
804 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
805 PRINT_LIBS="$PRINT_LIBS -lcups"
806 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
807 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
808 x"$ac_cv_header_cups_language_h" = xyes; then
809 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
810 samba_cv_HAVE_CUPS=yes
811 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
813 AC_MSG_WARN([cups-config around but cups-devel not installed])
814 CFLAGS=$ac_save_CFLAGS
815 LDFLAGS=$ac_save_LDFLAGS
816 PRINT_LIBS=$ac_save_PRINT_LIBS
819 elif test x"$enable_cups" = x"yes"; then
820 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
824 AC_ARG_ENABLE(iprint,
825 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
827 if test x$enable_iprint != xno; then
828 if test x"$samba_cv_HAVE_CUPS" = xyes; then
829 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
830 elif test x"$enable_iprint" = x"yes"; then
831 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
835 ############################################
836 # check if the compiler will optimize out function calls
837 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
842 this_function_does_not_exist();
848 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
849 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
850 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
853 #############################################
854 # check for fd passing struct via msg_control
855 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
857 #include <sys/types.h>
860 #include <sys/socket.h>
861 #include <sys/un.h>],
866 char control[CMSG_SPACE(sizeof(int))];
868 msg.msg_control = control_un.control;
869 msg.msg_controllen = sizeof(control_un.control);
871 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
872 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
873 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
874 [If we can use msg_control for passing file descriptors])
877 #############################################
878 # check for fd passing struct via msg_acctrights
879 AC_CACHE_CHECK([for fd passing via msg_acctrights],
880 samba_cv_msghdr_msg_acctrights, [
882 #include <sys/types.h>
885 #include <sys/socket.h>
886 #include <sys/un.h>],
890 msg.msg_acctrights = (caddr_t) &fd;
891 msg.msg_acctrightslen = sizeof(fd);
893 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
894 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
895 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
896 [If we can use msg_acctrights for passing file descriptors])
899 AC_CHECK_FUNCS(dirfd)
900 if test x"$ac_cv_func_dirfd" = x"yes"; then
901 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
904 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
906 #include <sys/types.h>
911 #include <signal.h>],[struct sigevent s;],
912 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
913 if test x"$samba_cv_struct_sigevent" = x"yes"; then
914 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
915 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
916 [#include <signal.h>])
919 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
921 #include <sys/types.h>
926 #if TIME_WITH_SYS_TIME
927 # include <sys/time.h>
931 # include <sys/time.h>
936 ],[struct timespec ts;],
937 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
938 if test x"$samba_cv_struct_timespec" = x"yes"; then
939 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
942 # and glibc has setresuid under linux but the function does
943 # nothing until kernel 2.1.44! very dumb.
944 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
945 AC_TRY_RUN([#include <errno.h>
946 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
947 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
948 if test x"$samba_cv_have_setresuid" = x"yes"; then
949 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
952 # Do the same check for setresguid...
954 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
955 AC_TRY_RUN([#include <unistd.h>
957 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
958 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
959 if test x"$samba_cv_have_setresgid" = x"yes"; then
960 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
965 ###############################################
966 # Readline included by default unless explicitly asked not to
967 test "${with_readline+set}" != "set" && with_readline=yes
969 # test for where we get readline() from
970 AC_MSG_CHECKING(whether to use readline)
971 AC_ARG_WITH(readline,
972 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
973 [ case "$with_readline" in
977 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
978 AC_CHECK_HEADERS(readline/history.h)
980 AC_CHECK_HEADERS(readline.h readline/readline.h,[
981 for termlib in ncurses curses termcap terminfo termlib tinfo; do
982 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
984 AC_CHECK_LIB(readline, rl_callback_handler_install,
985 [TERMLIBS="-lreadline $TERMLIBS"
986 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
987 break], [TERMLIBS=], $TERMLIBS)])
995 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
996 # alternate readline path
998 _cppflags=${CPPFLAGS}
1000 # Add additional search path
1001 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1002 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1004 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1005 AC_CHECK_HEADERS(readline/history.h)
1007 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1008 for termlib in ncurses curses termcap terminfo termlib; do
1009 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1011 AC_CHECK_LIB(readline, rl_callback_handler_install,
1012 [TERMLDFLAGS="-L$with_readline/lib"
1013 TERMCPPFLAGS="-I$with_readline/include"
1014 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1015 TERMLIBS="-lreadline $TERMLIBS"
1016 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1017 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1025 AC_SUBST(TERMLDFLAGS)
1027 # The readline API changed slightly from readline3 to readline4, so
1028 # code will generate warnings on one of them unless we have a few
1030 AC_CHECK_LIB(readline, rl_completion_matches,
1031 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1032 [Do we have rl_completion_matches?])],
1036 # not all readline libs have rl_event_hook or history_list
1037 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1038 AC_CHECK_LIB(readline, history_list,
1039 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1043 ###############################################
1044 # test for where we get yp_get_default_domain() from
1045 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1046 AC_CHECK_FUNCS(yp_get_default_domain)
1048 # Check if we have execl, if not we need to compile smbrun.
1049 AC_CHECK_FUNCS(execl)
1050 if test x"$ac_cv_func_execl" = x"no"; then
1051 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1054 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1055 AC_CHECK_FUNCS(strtol)
1056 AC_CHECK_FUNCS(strchr chflags)
1057 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1058 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1059 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1060 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1061 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1062 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1063 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1064 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1065 AC_CHECK_FUNCS(getpwent_r)
1066 AC_CHECK_FUNCS(getdents64)
1067 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1068 AC_CHECK_FUNCS(syslog vsyslog timegm)
1069 AC_CHECK_FUNCS(setlocale nl_langinfo)
1070 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1071 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1072 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1073 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1074 AC_CHECK_HEADERS(sys/mman.h)
1075 # setbuffer, shmget, shm_open are needed for smbtorture
1076 AC_CHECK_FUNCS(shmget shm_open)
1077 AC_CHECK_FUNCS(gettext dgettext)
1078 AC_CHECK_FUNCS(bindtextdomain textdomain)
1079 AC_CHECK_FUNCS(strupr)
1081 # Find a method of generating a stack trace
1082 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1083 # libexecinfo provides backtrace_symbols on FreeBSD
1084 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1085 AC_CHECK_FUNCS(backtrace_symbols)
1086 AC_CHECK_LIB(exc, trace_back_stack)
1088 # check for sysctlbyname for BSD systems
1089 AC_CHECK_FUNCS(sysctlbyname)
1091 #############################
1092 # check if building with gpfs
1093 AC_CHECK_HEADERS(gpfs_gpl.h)
1094 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1095 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1096 default_shared_modules="$default_shared_modules vfs_gpfs"
1099 #############################################
1100 # check if building on Isilon OneFS
1101 printf "%s" "checking for Isilon OneFS... "
1103 LIBS="$LIBS -lisi_version"
1104 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1105 [get_isilon_copyright()],
1106 samba_cv_HAVE_ONEFS=yes,
1107 samba_cv_HAVE_ONEFS=no)
1108 echo $samba_cv_HAVE_ONEFS
1109 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1110 AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1111 default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1112 default_static_modules="$default_static_modules"
1113 ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1114 # Need to also add general libs for oplocks support
1115 save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1117 AC_SUBST(ONEFS_LIBS)
1120 # Note that all the libunwind symbols in the API are defined to internal
1121 # platform-specific version, so we must include libunwind.h before checking
1123 AC_MSG_CHECKING([for libunwind])
1126 UNWIND_ARCH="unknown"
1127 if test x"$UNAME_I" != x"unknown"; then
1128 UNWIND_ARCH="$UNAME_I"
1129 elif test x"$UNAME_M" != x"unknown"; then
1130 UNWIND_ARCH="$UNAME_M"
1131 elif test x"$UNAME_P" != x"unknown"; then
1132 UNWIND_ARCH="$UNAME_P"
1135 case "$UNWIND_ARCH" in
1137 # This probably won't link without
1138 # the platform-specific libunwind.
1139 LIBS="$LIBS -lunwind"
1142 # Add the platform-specific libunwind module.
1143 LIBS="$LIBS -lunwind -lunwind-x86"
1146 # Add the platform-specific libunwind module.
1147 # based on uname -i, uname -m or uname -p
1148 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1154 #ifdef HAVE_LIBUNWIND_H
1155 #include <libunwind.h>
1159 unw_context_t ctx; unw_cursor_t cur;
1160 char buf[256]; unw_word_t off;
1161 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1162 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1166 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1168 # If we have libunwind, test whether we also have libunwind-ptrace
1169 # which would let us unwind arbitrary processes.
1171 AC_CHECK_HEADERS(libunwind-ptrace.h)
1172 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1174 LIBUNWIND_PTRACE="-lunwind-ptrace";
1175 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1176 [Whether libunwind-ptrace.a is available.])
1178 [ LIBUNWIND_PTRACE="" ])
1187 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1188 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1189 AC_CHECK_HEADERS(sys/ptrace.h)
1190 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1193 #if HAVE_SYS_TYPES_H
1194 #include <sys/types.h>
1196 #if HAVE_SYS_PTRACE_H
1197 #include <sys/ptrace.h>
1201 pid_t me = (pid_t)-1;
1202 ptrace(PTRACE_ATTACH, me, 0, 0);
1203 ptrace(PTRACE_DETACH, me, 0, 0);
1208 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1209 [Whether the Linux ptrace(2) interface is available.])
1217 AC_SUBST(LIBUNWIND_PTRACE)
1219 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1220 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1221 AC_CHECK_FUNCS(__getcwd _getcwd)
1222 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1223 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1224 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1225 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1226 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1227 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1228 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1229 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1230 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1231 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1232 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1233 AC_CHECK_FUNCS(prctl)
1236 #ifdef HAVE_SYS_PRCTL_H
1237 #include <sys/prctl.h>
1240 [int i; i = prtcl(0); ],
1241 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1247 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1248 # glibc <= 2.3.2 has a broken getgrouplist
1249 AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1251 #include <sys/utsname.h>
1253 /* glibc up to 2.3 has a broken getgrouplist */
1254 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1255 int libc_major = __GLIBC__;
1256 int libc_minor = __GLIBC_MINOR__;
1260 if ((libc_major == 2) && (libc_minor <= 3))
1265 ], [samba_cv_linux_getgrouplist_ok=yes],
1266 [samba_cv_linux_getgrouplist_ok=no],
1267 [samba_cv_linux_getgrouplist_ok=cross])])
1268 if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1269 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1273 AC_CHECK_FUNCS(getgrouplist)
1278 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1281 if test x$ac_cv_func_stat64 = xno ; then
1282 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1284 #if defined(HAVE_UNISTD_H)
1287 #include <sys/stat.h>
1288 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1289 AC_MSG_RESULT([$ac_cv_func_stat64])
1290 if test x$ac_cv_func_stat64 = xyes ; then
1291 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1295 if test x$ac_cv_func_lstat64 = xno ; then
1296 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1298 #if defined(HAVE_UNISTD_H)
1301 #include <sys/stat.h>
1302 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1303 AC_MSG_RESULT([$ac_cv_func_lstat64])
1304 if test x$ac_cv_func_lstat64 = xyes ; then
1305 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1309 if test x$ac_cv_func_fstat64 = xno ; then
1310 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1312 #if defined(HAVE_UNISTD_H)
1315 #include <sys/stat.h>
1316 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1317 AC_MSG_RESULT([$ac_cv_func_fstat64])
1318 if test x$ac_cv_func_fstat64 = xyes ; then
1319 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1323 #################################################
1324 # Check whether struct stat has timestamps with sub-second resolution.
1327 samba_cv_stat_hires=no
1328 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1329 [samba_cv_stat_hires=yes])
1330 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1331 [samba_cv_stat_hires=yes])
1332 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1333 [samba_cv_stat_hires=yes])
1334 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1335 [samba_cv_stat_hires=yes])
1336 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1337 [samba_cv_stat_hires=yes])
1339 if test x"$samba_cv_stat_hires" = x"yes" ; then
1340 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1341 [whether struct stat has sub-second timestamps])
1344 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1345 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1346 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1349 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1352 [#include <sys/stat.h>],
1354 int a = UF_DOS_ARCHIVE;
1355 int h = UF_DOS_HIDDEN;
1357 int s = UF_DOS_SYSTEM;
1358 int i = UF_DOS_NOINDEX;
1359 int f = UF_DOS_FLAGS;
1361 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1364 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1365 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1368 #####################################
1369 # needed for SRV lookups
1370 AC_CHECK_LIB(resolv, dn_expand)
1371 AC_CHECK_LIB(resolv, _dn_expand)
1372 AC_CHECK_LIB(resolv, __dn_expand)
1375 # Check for the functions putprpwnam, set_auth_parameters,
1376 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1377 # Needed for OSF1 and HPUX.
1380 AC_LIBTESTFUNC(security, putprpwnam)
1381 AC_LIBTESTFUNC(sec, putprpwnam)
1383 AC_LIBTESTFUNC(security, set_auth_parameters)
1384 AC_LIBTESTFUNC(sec, set_auth_parameters)
1386 # UnixWare 7.x has its getspnam in -lgen
1387 AC_LIBTESTFUNC(gen, getspnam)
1389 AC_LIBTESTFUNC(security, getspnam)
1390 AC_LIBTESTFUNC(sec, getspnam)
1392 AC_LIBTESTFUNC(security, bigcrypt)
1393 AC_LIBTESTFUNC(sec, bigcrypt)
1395 AC_LIBTESTFUNC(security, getprpwnam)
1396 AC_LIBTESTFUNC(sec, getprpwnam)
1398 AC_CHECK_FUNCS(strsignal)
1400 ############################################
1401 # Check for EA implementations
1404 AC_SEARCH_LIBS(getproplist, [proplist])
1405 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1406 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1407 AC_CHECK_FUNCS(sizeof_proplist_entry)
1409 *freebsd4* | *dragonfly* )
1410 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1413 AC_CHECK_FUNCS(attropen)
1416 AC_SEARCH_LIBS(getxattr, [attr])
1417 AC_CHECK_FUNCS(getxattr,[
1418 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1420 AC_CHECK_FUNCS(getea,[
1421 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1423 AC_CHECK_FUNCS(attr_get,[
1424 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1426 AC_CHECK_FUNCS(extattr_delete_file,[
1427 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)
1432 ########################################################
1433 # Do xattr functions take additional options like on Darwin?
1434 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1435 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1437 LIBS="$LIBS $ACL_LIBS"
1439 #include <sys/types.h>
1440 #if HAVE_ATTR_XATTR_H
1441 #include <attr/xattr.h>
1442 #elif HAVE_SYS_XATTR_H
1443 #include <sys/xattr.h>
1446 getxattr(0, 0, 0, 0, 0, 0);
1448 [smb_attr_cv_xattr_add_opt=yes],
1449 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1451 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1452 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1462 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1464 if test "x$enable_pie" != xno
1466 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1468 cat > conftest.c <<EOF
1470 main () { return 0;}
1472 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1480 if test x"${samba_cv_fpie}" = x"yes"
1489 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1491 if test "x$enable_relro" != xno
1493 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1495 cat > conftest.c <<EOF
1497 main () { return 0;}
1499 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1507 if test x"${samba_cv_relro}" = x"yes"
1509 RELRO_LDFLAGS="-Wl,-z,relro"
1517 # Assume non-shared by default and override below
1520 # these are the defaults, good for lots of systems
1525 SHLD="\${CC} \${CFLAGS}"
1526 PICFLAG="${PIE_CFLAGS}"
1530 # this bit needs to be modified for each OS that supports share libs
1531 # You need to specify how to create a shared library and
1532 # how to compile C code to produce PIC object files
1534 AC_MSG_CHECKING([ability to build shared libraries])
1536 # and these are for particular systems
1538 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1540 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1541 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1544 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1545 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1546 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1548 DYNEXP="-Wl,--export-dynamic"
1550 SONAMEFLAG="-Wl,-soname="
1551 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1553 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1557 if test "${GCC}" = "yes"; then
1559 SONAMEFLAG="-Wl,-soname="
1560 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1565 ## ${CFLAGS} added for building 64-bit shared
1566 ## libs using Sun's Compiler
1567 LDSHFLAGS="-G \${CFLAGS}"
1569 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1570 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1572 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1575 SONAMEFLAG="-Wl,-h,"
1576 PICFLAG="-KPIC" # Is this correct for SunOS
1577 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1578 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1580 *netbsd* | *freebsd* | *dragonfly* )
1583 DYNEXP="-Wl,--export-dynamic"
1584 SONAMEFLAG="-Wl,-soname,"
1585 PICFLAG="-fPIC -DPIC"
1586 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1587 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1589 *openbsd*) BLDSHARED="true"
1591 DYNEXP="-Wl,-Bdynamic"
1592 SONAMEFLAG="-Wl,-soname,"
1594 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1595 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1597 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1599 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1603 LDSHFLAGS="-set_version sgi1.0 -shared"
1604 SONAMEFLAG="-soname "
1606 if test "${GCC}" = "yes"; then
1611 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1613 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1615 # use expfull to export underscored symbols
1616 # add rtl to remove /lib/crt0.o warning
1617 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1618 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1620 # as AIX code is always position independent...
1621 # .po will just create compile warnings, use po.o:
1622 if test "${GCC}" != "yes"; then
1623 ## for funky AIX compiler using strncpy()
1624 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1627 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1628 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1629 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1631 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1632 # Use special PIC flags for the native HP-UX compiler.
1635 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1636 SONAMEFLAG="-Wl,+h "
1638 if test "${GCC}" = "yes"; then
1641 PICFLAG="+z +ESnolit"
1643 if test "$host_cpu" = "ia64"; then
1646 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1649 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1651 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1652 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1654 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1657 SONAMEFLAG="-Wl,-soname,"
1659 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1660 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1661 for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1662 saved_ldflags="$LDFLAGS"
1663 AC_MSG_CHECKING([if $flags works])
1664 LDFLAGS="$flags $saved_ldflags"
1666 [AC_MSG_RESULT([yes])
1667 LDSHFLAGS_Z_NODEFS=$flags],
1668 AC_MSG_RESULT([no]))
1669 LDFLAGS="$saved_ldflags"
1670 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1673 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1674 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1676 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1679 SONAMEFLAG="-Wl,-soname,"
1681 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1683 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1684 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1686 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1687 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1689 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1691 *-univel-*) if [ test "$GCC" != yes ]; then
1692 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1697 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1699 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1702 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1703 if [ test "$GCC" != yes ]; then
1704 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1707 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1709 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1714 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1716 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1717 CFLAGS="$CFLAGS -fno-common"
1720 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1722 # Since gcc doesn't fail on unrecognised options, the
1723 # PIE test incorrectly succeeds. Darwin gcc does not
1724 # actually support the PIE stuff.
1727 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1731 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1735 if test "$enable_shared" != "yes"; then
1739 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1740 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1743 if test x"$BLDSHARED" = x"true" ; then
1744 LDFLAGS="$LDFLAGS -L./bin"
1747 AC_MSG_RESULT($BLDSHARED)
1749 AC_ARG_ENABLE(as-needed,
1750 [AS_HELP_STRING([--enable-as-needed],
1751 [Turn on as-needed support if available (default=yes)])])
1753 if test "x$enable_as_needed" != xno; then
1754 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1755 saved_ldflags="$LDFLAGS"
1756 AC_MSG_CHECKING([if $flags works])
1757 LDFLAGS="$flags $saved_ldflags"
1759 [AC_MSG_RESULT([yes])
1760 LD_AS_NEEDED_FLAG=$flags
1761 ld_as_needed_flag_found=yes],
1762 AC_MSG_RESULT([no]))
1763 LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1764 test x"$ld_as_needed_flag_found" = xyes && break
1768 # for historical reasons almost all linkers don't complain about unresolved
1769 # symbols in shared libs. Except for the internal samba modules we want to get
1770 # errors when we produce a shared lib with unresolved symbols. On some
1771 # platforms unresolved symbols might be intended, so we might have to add
1772 # platform specific exceptions here.
1774 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1775 saved_ldflags="$LDFLAGS"
1776 AC_MSG_CHECKING([if $flags works])
1777 LDFLAGS="$flags $saved_ldflags"
1779 [AC_MSG_RESULT([yes])
1780 LDSHFLAGS_Z_DEFS=$flags
1781 ldshflags_z_defs_found=yes],
1782 AC_MSG_RESULT([no]))
1783 LDFLAGS=$saved_ldflags
1784 test x"$ldshflags_z_defs_found" = xyes && break
1787 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1788 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1789 AC_MSG_CHECKING([LDFLAGS])
1790 AC_MSG_RESULT([$LDFLAGS])
1791 AC_MSG_CHECKING([DYNEXP])
1792 AC_MSG_RESULT([$DYNEXP])
1794 #######################################################
1795 # test whether building a shared library actually works
1796 if test $BLDSHARED = true; then
1798 AC_MSG_CHECKING([SHLD])
1799 AC_MSG_RESULT([$SHLD])
1800 AC_MSG_CHECKING([LDSHFLAGS])
1801 AC_MSG_RESULT([$LDSHFLAGS])
1803 AC_MSG_CHECKING([SHLIBEXT])
1804 AC_MSG_RESULT([$SHLIBEXT])
1805 AC_MSG_CHECKING([SONAMEFLAG])
1806 AC_MSG_RESULT([$SONAMEFLAG])
1808 AC_MSG_CHECKING([PICFLAG])
1809 AC_MSG_RESULT([$PICFLAG])
1811 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1812 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1814 AC_CACHE_CHECK([whether building shared libraries actually works],
1815 [ac_cv_shlib_works],[
1816 # try building a trivial shared library
1817 ac_cv_shlib_works=no
1818 # The $SHLD and $LDSHFLAGS variables may contain references to other
1819 # variables so they need to be eval'ed.
1820 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1821 shlib.o ${srcdir-.}/../tests/shlib.c && \
1822 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1823 shlib.o && ac_cv_shlib_works=yes
1824 rm -f "shlib.$SHLIBEXT" shlib.o
1827 if test $ac_cv_shlib_works = no; then
1832 if test x"$BLDSHARED" != x"true"; then
1833 LDSHFLAGS="shared-libraries-disabled"
1834 SONAMEFLAG="shared-libraries-disabled"
1835 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1836 SHLD="shared-libraries-disabled"
1837 PICFLAG="${PIE_CFLAGS}"
1838 SHLIBEXT="shared_libraries_disabled"
1839 merged_build_possible=no
1842 AC_MSG_CHECKING([used PICFLAG])
1843 AC_MSG_RESULT([$PICFLAG])
1845 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1847 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1850 ###########################################################
1852 # Configuration of subsystems / libraries
1854 ###########################################################
1858 UNINSTALLLIBCMD_SH=:
1861 if test $BLDSHARED = true; then
1862 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1863 UNINSTALLLIBCMD_SH="rm -f"
1865 if test $enable_static = yes; then
1866 INSTALLLIBCMD_A="\$(INSTALLCMD)"
1867 UNINSTALLLIBCMD_A="rm -f"
1870 #################################################
1871 # --disable-shared-libs
1872 # can be used to disable the internal use of shared libs altogether
1873 # (this only has an effect when building shared libs is enabled)
1878 AC_MSG_CHECKING(whether to use shared libraries internally)
1879 AC_ARG_ENABLE([shared-libs],
1880 AS_HELP_STRING([--enable-shared-libs],
1881 [Use shared libraries internally (default=yes)]),
1882 [enable_shared_libs=$enableval],
1883 [enable_shared_libs=yes])
1885 if test x"$enable_shared_libs" != x"no" ; then
1886 USESHARED=$BLDSHARED
1889 AC_MSG_RESULT([$USESHARED])
1891 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1892 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1895 #################################################
1896 # --with-static-libs=LIBS:
1897 # link (internal) libs dynamically or statically?
1899 # If a subsystem is built as a library then this controls whether they are
1900 # linked into Samba targets statically or dynamically:
1902 # * If we build the shared library at all, we link dynamically by default.
1904 # * We only link statically if we don't build shared or if the library
1905 # appears in the --with-static-libs configure option.
1908 # --with-static-libs=libtalloc makes use of libtalloc.a instead
1909 # of linking the dynamic variant with -ltalloc.
1911 # NOTE: This option only affects libraries that we do not only build
1912 # but that samba also links against as libraries (as opposed to linking
1913 # the plain object files. - This has to be configured in Makefile.in.
1914 # So in particular it does not harm to give invalid or unknown names here.
1917 AC_ARG_WITH([static-libs],
1918 [AS_HELP_STRING([--with-static-libs=LIBS],
1919 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1920 [AS_IF([test $withval],
1921 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1922 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1923 eval LINK_$lib=STATIC
1929 # until we have organized other internal subsystems (as util, registry
1930 # and smbconf) into shared libraries, we CAN NOT link libnetapi
1931 # dynamically to samba programs.
1933 LINK_LIBNETAPI=STATIC
1935 LINK_LIBSMBCLIENT=STATIC
1938 # The library versions are hardcoded here
1939 # and filled into the LIBFOO_SOVER variable.
1941 # TODO: for talloc and tdb (at least), these should
1942 # be extracted from their respective source directories
1944 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1945 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1947 if test "x$enable_external_libtalloc" != xno
1949 PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1950 [ enable_external_libtalloc=yes ],
1951 [ if test x$enable_external_libtalloc = xyes; then
1952 AC_MSG_ERROR([Unable to find libtalloc])
1954 enable_external_libtalloc=no
1959 if test "x$enable_external_libtalloc" = xno
1961 m4_include(../lib/talloc/libtalloc.m4)
1962 LINK_LIBTALLOC=STATIC
1963 SMB_LIBRARY(talloc, 2)
1965 for obj in ${TALLOC_OBJ}; do
1966 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1968 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1969 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1970 AC_SUBST(LIBTALLOC_OBJ0)
1972 TALLOCTORT="bin/talloctort\$(EXEEXT)"
1973 AC_SUBST(TALLOCTORT)
1977 AC_ARG_ENABLE(external_libtdb,
1978 [AS_HELP_STRING([--enable-external-libtdb],
1979 [Enable external tdb [default=auto]])],
1980 [ enable_external_libtalloc=$enableval ],
1981 [ enable_external_libtalloc=auto ])
1983 if test "x$enable_external_libtdb" != xno
1985 PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.1,
1986 [ enable_external_libtdb=yes ],
1988 if test x$enable_external_libtdb = xyes; then
1989 AC_MSG_ERROR([Unable to find libtdb])
1991 enable_external_libtdb=no
1996 AC_SUBST(LIBTDB_OBJ0)
1997 if test "x$enable_external_libtdb" = xno
1999 m4_include(../lib/tdb/libtdb.m4)
2003 for obj in ${TDB_OBJ}; do
2004 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2006 AC_SUBST(LIBTDB_OBJ0)
2007 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2008 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2010 TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2012 TDBDUMP="bin/tdbdump\$(EXEEXT)"
2014 TDBTOOL="bin/tdbtool\$(EXEEXT)"
2016 TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2017 AC_SUBST(TDBTORTURE)
2018 ac_cv_have_tdb_err_nesting=yes
2020 AC_TRY_COMPILE([#include "tdb.h"],
2021 [enum TDB_ERROR err = TDB_ERR_NESTING],
2022 ac_cv_have_tdb_err_nesting=yes,
2023 ac_cv_have_tdb_err_nesting=no)
2026 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2027 AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2030 SMB_LIBRARY(netapi, 0)
2031 SMB_LIBRARY(smbclient, 0)
2032 SMB_LIBRARY(smbsharemodes, 0)
2033 SMB_LIBRARY(addns, 0, no, [undefined API])
2039 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2040 AC_TRY_RUN([#include <stdio.h>
2041 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2042 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2043 if test x"$samba_cv_have_longlong" = x"yes"; then
2044 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2045 AC_CHECK_TYPE(intptr_t, unsigned long long)
2047 AC_CHECK_TYPE(intptr_t, unsigned long)
2051 # Check if the compiler supports the LL prefix on long long integers.
2054 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2055 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2056 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2057 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2058 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2062 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2063 AC_TRY_RUN([#include <time.h>
2064 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2065 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2066 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2067 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2070 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2071 AC_TRY_RUN([#include <stdio.h>
2072 #include <sys/stat.h>
2073 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2074 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2075 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2076 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2079 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2081 #if defined(HAVE_UNISTD_H)
2085 #include <sys/stat.h>
2086 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2087 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2088 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2089 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2092 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2094 #if defined(HAVE_UNISTD_H)
2098 #include <sys/stat.h>
2099 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2100 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2101 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2102 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2105 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2107 #if defined(HAVE_UNISTD_H)
2111 #include <sys/stat.h>
2112 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2113 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2114 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2115 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2118 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2120 #if defined(HAVE_UNISTD_H)
2124 #include <sys/stat.h>
2125 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2126 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2127 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2128 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2131 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2133 #if defined(HAVE_UNISTD_H)
2137 #include <sys/stat.h>
2138 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2139 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2140 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2141 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2144 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2146 #if defined(HAVE_UNISTD_H)
2149 #include <sys/types.h>
2150 #include <dirent.h>],
2152 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2153 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2154 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2157 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2159 #if defined(HAVE_UNISTD_H)
2162 #include <sys/types.h>
2163 #include <dirent.h>],
2164 [struct dirent64 de;],
2165 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2166 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2167 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2170 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2172 #if defined(HAVE_UNISTD_H)
2175 #include <sys/types.h>
2176 main() { dev_t dev; int i = major(dev); return 0; }],
2177 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2178 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2179 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2182 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2184 #if defined(HAVE_UNISTD_H)
2187 #include <sys/types.h>
2188 main() { dev_t dev; int i = minor(dev); return 0; }],
2189 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2190 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2191 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2194 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2196 #if defined(HAVE_UNISTD_H)
2199 #include <sys/types.h>
2200 main() { dev_t dev = makedev(1,2); return 0; }],
2201 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2202 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2203 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2206 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2207 AC_TRY_RUN([#include <stdio.h>
2208 main() { char c; c=250; exit((c > 0)?0:1); }],
2209 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2210 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2211 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2214 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2215 AC_TRY_COMPILE([#include <sys/types.h>
2217 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2218 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2219 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2220 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2223 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2224 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2225 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2226 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2227 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2231 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2233 # On some systems (eg. Linux) librt can pull in libpthread. We
2234 # don't want this to happen because libpthreads changes signal delivery
2235 # semantics in ways we are not prepared for. This breaks Linux oplocks
2236 # which rely on signals.
2238 AC_LIBTESTFUNC(rt, clock_gettime,
2240 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2241 [Whether clock_gettime is available])
2242 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2243 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2244 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2249 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2250 AC_TRY_RUN([#include <sys/types.h>
2252 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2253 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2254 di->d_name[0] == 0) exit(0); exit(1);} ],
2255 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2256 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2257 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2260 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2261 AC_TRY_COMPILE([#include <sys/types.h>
2262 #include <utime.h>],
2263 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2264 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2265 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2266 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2270 # Check utmp details, but only if our OS offers utmp.h
2271 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2272 dnl utmp and utmpx come in many flavours
2273 dnl We need to check for many of them
2274 dnl But we don't need to do each and every one, because our code uses
2275 dnl mostly just the utmp (not utmpx) fields.
2277 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2279 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2280 AC_TRY_COMPILE([#include <sys/types.h>
2282 [struct utmp ut; ut.ut_name[0] = 'a';],
2283 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2284 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2285 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2288 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2289 AC_TRY_COMPILE([#include <sys/types.h>
2291 [struct utmp ut; ut.ut_user[0] = 'a';],
2292 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2293 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2294 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2297 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2298 AC_TRY_COMPILE([#include <sys/types.h>
2300 [struct utmp ut; ut.ut_id[0] = 'a';],
2301 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2302 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2303 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2306 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2307 AC_TRY_COMPILE([#include <sys/types.h>
2309 [struct utmp ut; ut.ut_host[0] = 'a';],
2310 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2311 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2312 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2315 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2316 AC_TRY_COMPILE([#include <sys/types.h>
2318 [struct utmp ut; time_t t; ut.ut_time = t;],
2319 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2320 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2321 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2324 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2325 AC_TRY_COMPILE([#include <sys/types.h>
2327 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2328 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2329 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2330 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2333 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2334 AC_TRY_COMPILE([#include <sys/types.h>
2336 [struct utmp ut; ut.ut_type = 0;],
2337 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2338 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2339 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2342 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2343 AC_TRY_COMPILE([#include <sys/types.h>
2345 [struct utmp ut; ut.ut_pid = 0;],
2346 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2347 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2348 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2351 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2352 AC_TRY_COMPILE([#include <sys/types.h>
2354 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2355 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2356 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2357 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2360 dnl Look for the IPv6 varient by preference. Many systems have both.
2361 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2362 AC_TRY_COMPILE([#include <sys/types.h>
2364 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2365 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2366 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2367 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2370 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2371 AC_TRY_COMPILE([#include <sys/types.h>
2373 [struct utmp ut; ut.ut_addr = 0;],
2374 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2375 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2376 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2379 if test x$ac_cv_func_pututline = xyes ; then
2380 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2381 AC_TRY_COMPILE([#include <sys/types.h>
2383 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2384 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2385 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2386 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2390 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2391 AC_TRY_COMPILE([#include <sys/types.h>
2392 #include <utmpx.h>],
2393 [struct utmpx ux; ux.ut_syslen = 0;],
2394 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2395 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2396 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2403 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2404 AC_ARG_WITH(libiconv,
2405 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2407 if test "$withval" = "no" ; then
2408 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2410 if test "$withval" != "yes" ; then
2412 ICONV_LOOK_DIRS="$withval"
2417 for i in $ICONV_LOOK_DIRS ; do
2420 save_LDFLAGS="$LDFLAGS"
2421 save_CPPFLAGS="$CPPFLAGS"
2423 iconv_current_LIBS=""
2424 iconv_current_LDFLAGS=""
2425 iconv_current_CPPFLAGS=""
2430 # This is here to handle -withval stuff for --with-libiconv
2431 # Perhaps we should always add a -L
2432 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2434 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2435 # installation paths. This gets a little tricky since we might have iconv
2436 # in both libiconv and in libc. In this case the jm_ICONV test will always
2437 # succeed when the header is found. To counter this, make sure the
2438 # library directory is there and check the ABI directory first (which
2439 # should be harmless on other systems, but causes tons of linker warnings on
2440 # 64bit Ubuntu systems).
2441 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2442 # installed, I've decided to fix the linker warnings.
2444 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2445 for l in "lib" "lib32" "lib/hpux32"; do
2446 if test -d "$i/$l" ; then
2447 LDFLAGS="$save_LDFLAGS -L$i/$l"
2449 export LDFLAGS LIBS CPPFLAGS
2450 # Try to find iconv(3)
2452 if test x"$ICONV_FOUND" = "xyes" ; then
2459 if test x"$ICONV_FOUND" = "xyes" ; then
2460 iconv_current_LDFLAGS="-L$i/$libext"
2461 iconv_current_CPPFLAGS="-I$i/include"
2463 if test x"$jm_cv_lib_iconv" != x; then
2464 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2466 # We found iconv in libc.
2467 iconv_current_LIBS=""
2472 if test x"$ICONV_FOUND" = "xyes" ; then
2474 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2475 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2476 LIBS="$save_LIBS $iconv_current_LIBS"
2477 export LDFLAGS LIBS CPPFLAGS
2479 default_dos_charset=no
2480 default_display_charset=no
2481 default_unix_charset=no
2483 # check for default dos charset name
2484 for j in CP850 IBM850 ; do
2486 default_dos_charset="$ICONV_CHARSET"
2487 if test x"$default_dos_charset" = x"$j"; then
2492 # check for default display charset name
2493 for j in ASCII 646 ; do
2495 default_display_charset="$ICONV_CHARSET"
2496 if test x"$default_display_charset" = x"$j"; then
2501 # check for default unix charset name
2502 for j in UTF-8 UTF8 ; do
2504 default_unix_charset="$ICONV_CHARSET"
2505 if test x"$default_unix_charset" = x"$j"; then
2510 if test "$default_dos_charset" != "no" -a \
2511 "$default_dos_charset" != "cross" -a \
2512 "$default_display_charset" != "no" -a \
2513 "$default_display_charset" != "cross" -a \
2514 "$default_unix_charset" != "no" -a \
2515 "$default_unix_charset" != "cross"
2517 samba_cv_HAVE_NATIVE_ICONV=yes
2519 if test "$default_dos_charset" = "cross" -o \
2520 "$default_display_charset" = "cross" -o \
2521 "$default_unix_charset" = "cross"
2523 samba_cv_HAVE_NATIVE_ICONV=cross
2525 samba_cv_HAVE_NATIVE_ICONV=no
2529 # At this point, we have a libiconv candidate. We know that
2530 # we have the right headers and libraries, but we don't know
2531 # whether it does the conversions we want. We can't test this
2532 # because we are cross-compiling. This is not necessarily a big
2533 # deal, since we can't guarantee that the results we get now will
2534 # match the results we get at runtime anyway.
2535 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2536 default_dos_charset="CP850"
2537 default_display_charset="ASCII"
2538 default_unix_charset="UTF-8"
2539 samba_cv_HAVE_NATIVE_ICONV=yes
2540 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2541 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2544 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2546 CPPFLAGS=$save_CPPFLAGS
2547 LDFLAGS=$save_LDFLAGS
2550 if test x"$iconv_current_LIBS" != x; then
2551 LIBS="$LIBS $iconv_current_LIBS"
2554 # Add the flags we need to CPPFLAGS and LDFLAGS
2555 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2556 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2558 # Turn the #defines into string literals
2559 default_dos_charset="\"$default_dos_charset\""
2560 default_display_charset="\"$default_display_charset\""
2561 default_unix_charset="\"$default_unix_charset\""
2563 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2564 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2565 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2566 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2571 # We didn't find a working iconv, so keep going
2574 # We only need to clean these up here for the next pass through the loop
2575 CPPFLAGS=$save_CPPFLAGS
2576 LDFLAGS=$save_LDFLAGS
2578 export LDFLAGS LIBS CPPFLAGS
2583 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2584 AC_MSG_WARN([Sufficient support for iconv function was not found.
2585 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2586 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2587 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2588 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2592 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2594 #include <sys/types.h>
2597 #define F_GETLEASE 1025
2600 int fd = open("/dev/null", O_RDONLY);
2601 return fcntl(fd, F_GETLEASE, 0) == -1;
2604 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2605 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2606 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2609 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2611 #include <sys/types.h>
2615 #define F_NOTIFY 1026
2618 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2621 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2622 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2623 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2626 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2627 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2628 AC_CHECK_FUNCS(inotify_init)
2629 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2631 samba_cv_HAVE_INOTIFY=yes,
2632 samba_cv_HAVE_INOTIFY=no,
2633 samba_cv_HAVE_INOTIFY=cross)
2635 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2636 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2639 #################################################
2640 # Check if FAM notifications are available. For FAM info, see
2641 # http://oss.sgi.com/projects/fam/
2642 # http://savannah.nongnu.org/projects/fam/
2644 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2646 if test x$enable_fam != xno; then
2647 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2648 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2649 # On IRIX, libfam requires libC, but other FAM implementations
2650 # might not need it.
2651 AC_CHECK_LIB(fam, FAMOpen2,
2652 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2653 [samba_cv_HAVE_LIBFAM=no])
2655 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2657 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2658 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2659 [samba_cv_HAVE_LIBFAM=no])
2660 unset samba_fam_xtra
2664 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2665 default_shared_modules="$default_shared_modules vfs_notify_fam"
2666 AC_TRY_COMPILE([#include <fam.h>],
2667 [enum FAMCodes code = FAMChanged;],
2668 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2669 [Whether fam.h contains a typedef for enum FAMCodes]),
2673 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2674 AC_MSG_ERROR(FAM support requested but FAM library not available )
2678 AC_SUBST(SMB_FAM_LIBS)
2680 #################################################
2681 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2684 with_dmapi_support=auto
2685 AC_MSG_CHECKING(whether to use DMAPI support)
2687 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2688 [ case "$withval" in
2690 with_dmapi_support=$withval
2694 AC_MSG_RESULT([$with_dmapi_support])
2696 if test x"$with_dmapi_support" != xno ; then
2697 SMB_CHECK_DMAPI([], [
2698 AC_MSG_NOTICE(DMAPI support not present)
2699 if test x"$with_dmapi_support" = xyes ; then
2700 AC_MSG_ERROR(no DMAPI support found but requested!)
2706 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2707 # Theoretically it should work with AIX JFS2 too but this needs testing
2708 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2709 default_shared_modules="$default_shared_modules vfs_tsmsm"
2712 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2714 #include <sys/types.h>
2717 #include <sys/file.h>
2719 #define LOCK_MAND 32
2720 #define LOCK_READ 64
2723 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2726 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2727 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2728 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2732 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2733 AC_TRY_COMPILE([#include <sys/types.h>
2734 #include <fcntl.h>],
2735 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2736 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2737 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2738 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2741 #################################################
2742 # Check for POSIX capability support
2744 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2745 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2748 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2751 AC_LIBTESTFUNC(cap, cap_get_proc)
2753 AC_CACHE_CHECK([for POSIX capabilities],
2754 samba_cv_HAVE_POSIX_CAPABILITIES,
2757 #include <sys/types.h>
2758 #include <sys/capability.h>
2761 cap_value_t vals[1];
2762 if (!(cap = cap_get_proc()))
2764 vals[0] = CAP_CHOWN;
2765 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2769 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2770 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2771 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2774 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2775 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2776 [Whether POSIX capabilities are available])
2784 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2785 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2788 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2789 AC_TRY_COMPILE([#include <sys/types.h>
2790 #if defined(HAVE_RPC_RPC_H)
2791 #include <rpc/rpc.h>
2794 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2795 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2796 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2799 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2800 AC_TRY_COMPILE([#include <sys/types.h>
2801 #if defined(HAVE_RPC_RPC_H)
2802 #include <rpc/rpc.h>
2805 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2806 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2807 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2810 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2811 AC_TRY_COMPILE([#include <sys/types.h>
2812 #if defined(HAVE_RPC_RPC_H)
2813 #include <rpc/rpc.h>
2816 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2817 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2818 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2821 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2822 AC_TRY_COMPILE([#include <sys/types.h>
2823 #if defined(HAVE_RPC_RPC_H)
2824 #include <rpc/rpc.h>
2827 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2828 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2829 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2833 dnl Some systems (SCO) have a problem including
2834 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2835 dnl as a #define in <prot.h> and as part of an enum
2839 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2840 AC_TRY_COMPILE([#include <sys/types.h>
2841 #ifdef HAVE_SYS_SECURITY_H
2842 #include <sys/security.h>
2844 #endif /* HAVE_SYS_SECURITY_H */
2845 #if defined(HAVE_RPC_RPC_H)
2846 #include <rpc/rpc.h>
2849 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2850 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2851 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2854 AC_MSG_CHECKING([for test routines])
2855 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2857 AC_MSG_ERROR([cant find test code. Aborting config]),
2858 AC_MSG_WARN([cannot run when cross-compiling]))
2860 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2861 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2862 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2863 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2864 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2867 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2868 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2869 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2870 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2871 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2874 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2875 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2876 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2877 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2878 AC_CHECK_FUNCS(getpagesize)
2880 ################################################
2881 # look for a method of setting the effective uid
2884 if test $seteuid = no; then
2885 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2887 #define AUTOCONF_TEST 1
2888 #define USE_SETREUID 1
2889 #include "confdefs.h"
2890 #include "${srcdir-.}/lib/util_sec.c"],
2891 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2892 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2893 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2897 # we check for setresuid second as it conflicts with AIO on Linux.
2898 # see http://samba.org/~tridge/junkcode/aio_uid.c
2899 if test $seteuid = no; then
2900 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2902 #define AUTOCONF_TEST 1
2903 #define USE_SETRESUID 1
2904 #include "confdefs.h"
2905 #include "${srcdir-.}/lib/util_sec.c"],
2906 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2907 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2908 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2912 if test $seteuid = no; then
2913 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2915 #define AUTOCONF_TEST 1
2916 #define USE_SETEUID 1
2917 #include "confdefs.h"
2918 #include "${srcdir-.}/lib/util_sec.c"],
2919 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2920 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2921 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2925 if test $seteuid = no; then
2926 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2928 #define AUTOCONF_TEST 1
2929 #define USE_SETUIDX 1
2930 #include "confdefs.h"
2931 #include "${srcdir-.}/lib/util_sec.c"],
2932 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2933 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2934 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2938 AC_CACHE_CHECK([for the Darwin initgroups system call],
2939 samba_cv_DARWIN_INITGROUPS,
2941 #include <sys/syscall.h>
2944 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2945 samba_cv_DARWIN_INITGROUPS=yes,
2946 samba_cv_DARWIN_INITGROUPS=no)
2949 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2950 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2951 [Whether to use the Darwin-specific initgroups system call])
2954 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2955 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2956 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2957 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2958 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2961 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2962 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2963 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2964 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2965 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2970 dnl Don't check for 64 bit fcntl locking if we know that the
2971 dnl glibc2.1 broken check has succeeded.
2974 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2976 #if defined(HAVE_UNISTD_H)
2986 #ifdef HAVE_SYS_FCNTL_H
2987 #include <sys/fcntl.h>
2989 main() { struct flock64 fl64;
2990 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2996 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2998 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2999 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3003 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3004 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3006 #define _XOPEN_SOURCE 600
3008 #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3009 probably broken posix_fallocate
3013 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3014 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3015 AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3019 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3020 AC_TRY_COMPILE([#include <sys/types.h>
3021 #include <sys/stat.h>
3022 #include <unistd.h>],
3023 [struct stat st; st.st_blocks = 0;],
3024 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3025 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3026 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3029 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3031 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3032 AC_TRY_COMPILE([#include <sys/types.h>
3033 #include <sys/stat.h>
3034 #include <unistd.h>],
3035 [struct stat st; st.st_blksize = 0;],
3036 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3037 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3038 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3041 AC_CACHE_CHECK([for st_flags in struct stat],
3042 samba_cv_HAVE_STAT_ST_FLAGS,
3044 AC_TRY_COMPILE([#include <sys/types.h>
3045 #include <sys/stat.h>
3046 #include <unistd.h>],
3047 [struct stat st; st.st_flags = 0;],
3048 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3049 samba_cv_HAVE_STAT_ST_FLAGS=no,
3050 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3053 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3054 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3055 [Whether the stat struct has a st_flags member])
3058 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3060 #include <sys/types.h>
3061 #include <sys/acl.h>
3062 #if defined(HAVE_RPCSVC_NIS_H)
3063 #include <rpcsvc/nis.h>
3066 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3067 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3068 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3071 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3077 void exit_on_core(int ignored) {
3083 signal(SIGSEGV, exit_on_core);
3084 newpath = realpath("/tmp", NULL);
3085 exit((newpath != NULL) ? 0 : 1);
3088 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3089 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3090 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3093 #################################################
3094 # check for AFS clear-text auth support
3095 samba_cv_WITH_AFS=no
3096 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3098 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3099 [ case "$withval" in
3101 AC_MSG_RESULT($withval)
3102 samba_cv_WITH_AFS=$withval
3111 ####################################################
3112 # check for Linux-specific AFS fake-kaserver support
3113 samba_cv_WITH_FAKE_KASERVER=no
3114 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3115 AC_ARG_WITH(fake-kaserver,
3116 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3117 [ case "$withval" in
3119 AC_MSG_RESULT($withval)
3120 samba_cv_WITH_FAKE_KASERVER=$withval
3129 #################################################
3130 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3131 if test x"$samba_cv_WITH_AFS" != x"no" ||
3132 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3134 # see if this box has the OpenSSL DES libraries
3135 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3137 # see if this box has the afs-headers in /usr/include/afs
3138 AC_MSG_CHECKING(for /usr/include/afs)
3139 if test -d /usr/include/afs; then
3147 AC_CHECK_HEADERS(afs.h afs/afs.h)
3148 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3149 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3150 test x"$samba_cv_WITH_AFS" = x"auto"; then
3151 AC_MSG_WARN([AFS cannot be supported without afs.h])
3153 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3156 have_afs_headers=yes
3160 FAKE_KASERVER_OBJ=""
3161 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3162 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3163 FAKE_KASERVER_OBJ="utils/net_afs.o"
3165 AC_SUBST(FAKE_KASERVER_OBJ)
3167 #################################################
3168 # check whether to compile AFS/NT ACL mapping module
3169 samba_cv_WITH_VFS_AFSACL=no
3170 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3171 AC_ARG_WITH(vfs-afsacl,
3172 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3173 [ case "$withval" in
3175 AC_MSG_RESULT($withval)
3176 samba_cv_WITH_VFS_AFSACL=yes
3185 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3186 default_shared_modules="$default_shared_modules vfs_afsacl"
3189 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3190 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3193 #################################################
3194 # check for the DFS clear-text auth system
3195 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3197 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3198 [ case "$withval" in
3201 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3210 ########################################################
3211 # Compile with LDAP support?
3213 with_ldap_support=auto
3214 AC_MSG_CHECKING([for LDAP support])
3217 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3218 [ case "$withval" in
3220 with_ldap_support=$withval
3224 AC_MSG_RESULT($with_ldap_support)
3229 AC_SUBST(SMBLDAPUTIL)
3233 if test x"$with_ldap_support" != x"no"; then
3235 ##################################################################
3236 # first test for ldap.h and lber.h
3237 # (ldap.h is required for this test)
3238 AC_CHECK_HEADERS(ldap.h lber.h)
3240 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3241 if test x"$with_ldap_support" = x"yes"; then
3242 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3244 AC_MSG_WARN(ldap.h is needed for LDAP support)
3247 with_ldap_support=no
3250 ##################################################################
3251 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3252 # unsigned int in include/includes.h
3255 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3256 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3257 with_ldap_support=yes
3260 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3261 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3262 if test x"$with_ldap_support" = x"yes"; then
3263 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3265 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3267 with_ldap_support=no
3273 if test x"$with_ldap_support" != x"no"; then
3276 ##################################################################
3277 # we might need the lber lib on some systems. To avoid link errors
3278 # this test must be before the libldap test
3279 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3281 ########################################################
3282 # If ber_sockbuf_add_io() is available we can add
3283 # SASL wrapping hooks
3284 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3286 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3287 AC_TRY_COMPILE([#include <ldap.h>],
3288 [int val = LDAP_OPT_SOCKBUF;],
3289 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3290 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3292 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3293 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3294 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3297 #######################################################
3298 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3299 # ldap logging and print it out in the samba logs
3300 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3301 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3302 [AC_TRY_COMPILE([#include <lber.h>],
3303 [int val = LBER_OPT_LOG_PRINT_FN;],
3304 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3305 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3307 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3308 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3309 [Support for LDAP/LBER logging interception])
3312 ########################################################
3313 # now see if we can find the ldap libs in standard paths
3314 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3316 ########################################################
3317 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3318 # Check found in pam_ldap 145.
3319 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3321 LIBS="$LIBS $LDAP_LIBS"
3322 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3326 [ldap_set_rebind_proc(0, 0, 0);],
3327 [smb_ldap_cv_ldap_set_rebind_proc=3],
3328 [smb_ldap_cv_ldap_set_rebind_proc=2]
3332 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3334 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3336 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3337 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3338 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3339 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3340 default_shared_modules="$default_shared_modules";
3341 SMBLDAP="lib/smbldap.o"
3342 SMBLDAPUTIL="lib/smbldap_util.o"
3343 with_ldap_support=yes
3344 AC_MSG_CHECKING(whether LDAP support is used)
3347 if test x"$with_ldap_support" = x"yes"; then
3348 AC_MSG_ERROR(libldap is needed for LDAP support)
3350 AC_MSG_WARN(libldap is needed for LDAP support)
3354 with_ldap_support=no
3360 #################################################
3361 # active directory support
3363 with_ads_support=auto
3364 AC_MSG_CHECKING([for Active Directory and krb5 support])
3367 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3368 [ case "$withval" in
3370 with_ads_support="$withval"
3374 AC_MSG_RESULT($with_ads_support)
3379 if test x"$with_ldap_support" != x"yes"; then
3381 if test x"$with_ads_support" = x"yes"; then
3382 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3383 elif test x"$with_ads_support" = x"auto"; then
3384 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3390 # Check to see whether there is enough LDAP functionality to be able
3391 # to build AD support.
3393 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3396 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3398 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3399 if test x"$with_ads_support" = x"yes"; then
3400 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3401 elif test x"$with_ads_support" = x"auto"; then
3402 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3408 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3410 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3411 if test x"$with_ads_support" = x"yes"; then
3412 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3413 elif test x"$with_ads_support" = x"auto"; then
3414 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3422 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3424 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3425 if test x"$with_ads_support" = x"yes"; then
3426 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3427 elif test x"$with_ads_support" = x"auto"; then
3428 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3435 if test x"$with_ads_support" != x"no"; then
3437 # Do no harm to the values of CFLAGS and LIBS while testing for
3440 if test x$FOUND_KRB5 = x"no"; then
3441 #################################################
3442 # check for location of Kerberos 5 install
3443 AC_MSG_CHECKING(for kerberos 5 install path)
3445 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3446 [ case "$withval" in
3448 AC_MSG_RESULT(no krb5-path given)
3455 AC_MSG_RESULT($withval)
3456 KRB5_CFLAGS="-I$withval/include"
3457 KRB5_CPPFLAGS="-I$withval/include"
3458 KRB5_LDFLAGS="-L$withval/lib"
3460 if test -x "$withval/bin/krb5-config"; then
3461 KRB5CONFIG=$withval/bin/krb5-config
3465 AC_MSG_RESULT(no krb5-path given)
3469 #################################################
3470 # check for krb5-config from recent MIT and Heimdal kerberos 5
3471 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3472 AC_MSG_CHECKING(for working krb5-config)
3473 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3474 ac_save_CFLAGS=$CFLAGS
3475 CFLAGS="";export CFLAGS
3476 ac_save_LDFLAGS=$LDFLAGS
3477 LDFLAGS="";export LDFLAGS
3478 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3479 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3480 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3481 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3482 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3483 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3487 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3490 if test x$FOUND_KRB5 = x"no"; then
3491 #################################################
3492 # see if this box has the SuSE location for the heimdal krb implementation
3493 AC_MSG_CHECKING(for /usr/include/heimdal)
3494 if test -d /usr/include/heimdal; then
3495 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3496 KRB5_CFLAGS="-I/usr/include/heimdal"
3497 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3498 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3502 KRB5_CFLAGS="-I/usr/include/heimdal"
3503 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3512 if test x$FOUND_KRB5 = x"no"; then
3513 #################################################
3514 # see if this box has the RedHat location for kerberos
3515 AC_MSG_CHECKING(for /usr/kerberos)
3516 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3517 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3518 KRB5_CFLAGS="-I/usr/kerberos/include"
3519 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3527 if test x$FOUND_KRB5 = x"no"; then
3528 #################################################
3529 # see if this box has the OpenBSD location for heimdal krb5
3530 AC_MSG_CHECKING(for /usr/include/kerberosV)
3531 if test -d /usr/include/kerberosV; then
3532 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3533 KRB5_LIBS="-lcrypto"
3541 ac_save_CFLAGS=$CFLAGS
3542 ac_save_CPPFLAGS=$CPPFLAGS
3543 ac_save_LDFLAGS=$LDFLAGS
3545 # remove needless evil rpath stuff as early as possible:
3546 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3547 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3548 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3549 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3550 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3552 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3554 # now check for krb5.h. Some systems have the libraries without the headers!
3555 # note that this check is done here to allow for different kerberos
3557 AC_CHECK_HEADERS(krb5.h)
3559 if test x"$ac_cv_header_krb5_h" = x"no"; then
3561 # Give a warning if AD support was not explicitly requested,
3562 # i.e with_ads_support = auto, otherwise die with an error.
3564 if test x"$with_ads_support" = x"yes"; then
3565 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3567 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3570 # Turn off AD support and restore CFLAGS and LIBS variables
3572 with_ads_support="no"
3574 CFLAGS=$ac_save_CFLAGS
3575 CPPFLAGS=$ac_save_CPPFLAGS
3576 LDFLAGS=$ac_save_LDFLAGS
3578 AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3579 [[#ifdef HAVE_KRB5_H
3584 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3585 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3586 if test x"$BLDSHARED" = x"true" ; then
3587 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3591 # check for new heimdal KRB5_DEPRECATED handling
3593 AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3594 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3596 [#define KRB5_DEPRECATED 1
3599 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3600 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3602 if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3603 AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3604 [Whether to use deprecated krb5 interfaces])
3608 # Now we have determined whether we really want ADS support
3610 if test x"$with_ads_support" != x"no"; then
3615 # now check for gssapi headers. This is also done here to allow for
3616 # different kerberos include paths
3617 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3619 ##################################################################
3620 # we might need the k5crypto and com_err libraries on some systems
3621 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3622 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3625 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3626 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3627 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3629 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3630 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3632 ########################################################
3633 # now see if we can find the krb5 libs in standard paths
3634 # or as specified above
3635 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3636 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3638 ########################################################
3639 # now see if we can find the gssapi libs in standard paths
3640 if test x"$have_gssapi" != x"yes"; then
3641 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3644 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3645 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3646 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3647 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3648 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3649 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3650 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3651 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3652 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3653 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3654 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3655 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3656 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3657 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3658 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3659 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3660 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3661 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3662 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3663 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3664 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3665 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3666 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3667 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3668 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3669 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3670 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3671 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3672 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3673 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3674 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3675 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3676 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3677 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3678 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3679 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3680 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3681 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3682 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3683 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3684 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3685 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3686 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3687 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3688 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3689 AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3690 AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3691 AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3692 AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3694 # MIT krb5 1.8 does not expose this call (yet)
3695 AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3697 # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3698 # but does have the symbol
3699 AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3701 LIBS="$KRB5_LIBS $LIBS"
3703 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3704 smb_krb5_cv_ticket_has_keyinfo,
3713 krb5_enctype enctype;
3715 enctype = ticket.enc_part.enctype;
3716 kvno = ticket.enc_part.kvno;
3718 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3719 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3722 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3723 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3724 [Whether the krb5_ticket structure contains the kvno and enctype])
3727 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3728 smb_krb5_cv_creds_opt_free_context,
3734 krb5_get_init_creds_opt *opt = NULL;
3735 krb5_get_init_creds_opt_free(ctx, opt);
3737 [smb_krb5_cv_creds_opt_free_context=yes],
3738 [smb_krb5_cv_creds_opt_free_context=no]
3742 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3743 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3744 [Whether krb5_get_init_creds_opt_free takes a context argument])
3747 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3750 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3751 [smb_krb5_cv_verify_checksum=7],
3752 [smb_krb5_cv_verify_checksum=6],
3755 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3757 AC_CACHE_CHECK([for checksum in krb5_checksum],
3758 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3759 AC_TRY_COMPILE([#include <krb5.h>],
3760 [krb5_checksum cksum; cksum.checksum.length = 0;],
3761 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3762 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3764 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3765 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3766 [Whether the krb5_checksum struct has a checksum property])
3769 AC_CACHE_CHECK([for etype in EncryptedData],
3770 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3771 AC_TRY_COMPILE([#include <krb5.h>],
3772 [EncryptedData edata; edata.etype = 0;],
3773 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3774 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3776 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3777 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3778 [Whether the EncryptedData struct has a etype property])
3781 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3782 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3783 AC_TRY_COMPILE([#include <krb5.h>],
3784 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3785 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3786 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3788 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3789 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3790 [Whether the krb5_ap_req struct has a ticket pointer])
3793 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3794 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3795 AC_TRY_COMPILE([#include <krb5.h>],
3796 [krb5_error err; err.e_data = NULL;],
3797 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3798 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3800 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3801 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3802 [Whether the krb5_error struct has a e_data pointer])
3805 AC_CACHE_CHECK([for krb5_crypto type],
3806 samba_cv_HAVE_KRB5_CRYPTO,[
3807 AC_TRY_COMPILE([#include <krb5.h>],
3808 [krb5_crypto crypto;],
3809 samba_cv_HAVE_KRB5_CRYPTO=yes,
3810 samba_cv_HAVE_KRB5_CRYPTO=no)])
3812 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3813 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3814 [Whether the type krb5_crypto exists])
3817 AC_CACHE_CHECK([for krb5_encrypt_block type],
3818 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3819 AC_TRY_COMPILE([#include <krb5.h>],
3820 [krb5_encrypt_block block;],
3821 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3822 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3824 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3825 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3826 [Whether the type krb5_encrypt_block exists])
3829 AC_CACHE_CHECK([for addrtype in krb5_address],
3830 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3831 AC_TRY_COMPILE([#include <krb5.h>],
3832 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3833 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3834 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3836 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3837 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3838 [Whether the krb5_address struct has a addrtype property])
3841 AC_CACHE_CHECK([for addr_type in krb5_address],
3842 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3843 AC_TRY_COMPILE([#include <krb5.h>],
3844 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3845 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3846 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3848 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3849 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3850 [Whether the krb5_address struct has a addr_type property])
3853 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3854 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3855 [AC_TRY_COMPILE([#include <krb5.h>],
3856 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3857 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3859 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3860 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3861 [Whether the krb5_ticket struct has a enc_part2 property])
3864 AC_CACHE_CHECK([for keyblock in krb5_creds],
3865 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3866 AC_TRY_COMPILE([#include <krb5.h>],
3867 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3868 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3869 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3871 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3872 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3873 [Whether the krb5_creds struct has a keyblock property])
3876 AC_CACHE_CHECK([for session in krb5_creds],
3877 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3878 AC_TRY_COMPILE([#include <krb5.h>],
3879 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3880 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3881 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3883 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3884 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3885 [Whether the krb5_creds struct has a session property])
3888 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3889 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3890 AC_TRY_COMPILE([#include <krb5.h>],
3891 [krb5_keyblock key; key.keyvalue.data = NULL;],
3892 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3893 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3895 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3896 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3897 [Whether the krb5_keyblock struct has a keyvalue property])
3900 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3901 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3902 AC_TRY_COMPILE([#include <krb5.h>],
3903 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3904 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3905 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3906 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3907 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3908 AC_TRY_COMPILE([#include <krb5.h>],
3909 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3910 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3911 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3912 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3913 # w.r.t. arcfour and windows, so we must not enable it here
3914 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3915 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3916 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3917 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3920 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3921 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3922 AC_TRY_COMPILE([#include <krb5.h>],
3923 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3924 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3925 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3927 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3928 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3929 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3932 AC_CACHE_CHECK([for KV5M_KEYTAB],
3933 samba_cv_HAVE_KV5M_KEYTAB,[
3934 AC_TRY_COMPILE([#include <krb5.h>],
3935 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3936 samba_cv_HAVE_KV5M_KEYTAB=yes,
3937 samba_cv_HAVE_KV5M_KEYTAB=no)])
3939 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3940 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3941 [Whether the KV5M_KEYTAB option is available])
3944 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3945 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3946 AC_TRY_COMPILE([#include <krb5.h>],
3947 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3948 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3949 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3951 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3952 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3953 [Whether KRB5_KU_OTHER_CKSUM is available])
3956 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3957 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3958 AC_TRY_COMPILE([#include <krb5.h>],
3959 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3960 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3961 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3963 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3964 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3965 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3968 AC_CACHE_CHECK([for the krb5_princ_component macro],
3969 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3970 AC_TRY_LINK([#include <krb5.h>],
3971 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3972 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3973 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3975 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3976 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3977 [Whether krb5_princ_component is available])
3980 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3981 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3982 AC_TRY_COMPILE([#include <krb5.h>],
3983 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3984 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3985 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3987 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3988 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3989 [Whether krb5_keytab_entry has key member])
3992 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3993 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3994 AC_TRY_COMPILE([#include <krb5.h>],
3995 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3996 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3997 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3999 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4000 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4001 [Whether krb5_keytab_entry has keyblock member])
4004 AC_CACHE_CHECK([for magic in krb5_address],
4005 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4006 AC_TRY_COMPILE([#include <krb5.h>],
4007 [krb5_address addr; addr.magic = 0;],
4008 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4009 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4011 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4012 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4013 [Whether the krb5_address struct has a magic property])
4016 AC_CACHE_CHECK([for WRFILE: keytab support],
4017 samba_cv_HAVE_WRFILE_KEYTAB,[
4022 krb5_context context;
4025 krb5_init_context(&context);
4026 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4028 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4029 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4031 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4032 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4033 [Whether the WRFILE:-keytab is supported])
4036 AC_CACHE_CHECK([for krb5_realm type],
4037 samba_cv_HAVE_KRB5_REALM_TYPE,[
4038 AC_TRY_COMPILE([#include <krb5.h>],
4039 [krb5_realm realm;],
4040 samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4041 samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4043 if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4044 AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4045 [Whether the type krb5_realm exists])
4048 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4049 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4050 AC_TRY_COMPILE([#include <krb5.h>],
4052 krb5_context context;
4053 krb5_principal principal;
4054 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4055 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4056 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4058 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4059 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4060 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4063 AC_CACHE_CHECK([for krb5_addresses type],
4064 samba_cv_HAVE_KRB5_ADDRESSES,[
4065 AC_TRY_COMPILE([#include <krb5.h>],
4066 [krb5_addresses addr;],
4067 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4068 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4070 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4071 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4072 [Whether the type krb5_addresses type exists])
4075 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4076 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4077 AC_TRY_COMPILE([#include <krb5.h>],
4079 krb5_mk_error(0,0,0);],
4080 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4081 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4083 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4084 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4085 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4088 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4089 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4090 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4095 krb5_context context = NULL;
4097 krb5_enctype_to_string(context, 1, &str);
4098 if (str) free (str);
4101 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4102 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4103 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4105 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4106 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4107 [whether krb5_enctype_to_string takes krb5_context argument])
4110 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4111 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4116 krb5_enctype_to_string(1, buf, 256);
4119 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4120 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4121 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4123 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4124 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4125 [whether krb5_enctype_to_string takes size_t argument])
4129 AC_CACHE_CHECK([for krb5_principal_get_realm],
4130 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4131 AC_TRY_LINK([#include <krb5.h>],
4132 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4133 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4134 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4136 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4137 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4138 [Whether the function krb5_principal_get_realm is defined])
4141 AC_CACHE_CHECK([for krb5_princ_realm],
4142 samba_cv_HAVE_KRB5_PRINC_REALM,[
4143 AC_TRY_LINK([#include <krb5.h>],
4144 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4145 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4146 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4148 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4149 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4150 [Whether the macro krb5_princ_realm is defined])
4155 # Now the decisions whether we can support krb5
4157 # NOTE: all tests should be done before this block!
4160 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4161 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4165 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4166 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4168 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4172 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4173 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4175 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4179 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4180 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4182 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4186 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4187 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4189 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4193 if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4195 # We only need the following functions if we can't get the enctype
4196 # and kvno out of the ticket directly (ie. on Heimdal).
4198 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4200 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4204 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4206 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4212 if test x"$use_ads" = x"yes"; then
4213 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4214 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4215 if test x"$have_gssapi" = x"yes"; then
4216 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4219 if test x"$with_ads_support" = x"yes"; then
4220 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4222 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4224 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4225 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4226 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4227 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4231 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4232 AC_MSG_RESULT([$use_ads])
4234 LIBS="$ac_save_LIBS"
4237 if test x"$use_ads" != xyes; then
4238 merged_build_possible=no
4241 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4242 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4245 ########################################################
4246 # Compile with DNS Updates support?
4248 with_dnsupdate_support=auto
4249 AC_MSG_CHECKING([whether to enable DNS Updates support])
4251 AC_ARG_WITH(dnsupdate,
4252 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4253 [ case "$withval" in
4255 with_dnsupdate_support=$withval
4259 AC_MSG_RESULT($with_dnsupdate_support)
4261 if test x"$with_dnsupdate_support" != x"no"; then
4263 ################################################################
4264 # first test for AD / GSSAPI support being enabled
4265 if test x"$have_gssapi" != xyes ; then
4266 if test x"$with_dnsupdate_support" = x"yes" ; then
4267 AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4269 AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4270 with_dnsupdate_support=no
4273 ##################################################################
4274 # then test for uuid.h (necessary to generate unique DNS keynames
4275 # (uuid.h is required for this test)
4276 AC_CHECK_HEADERS(uuid/uuid.h)
4279 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4280 if test x"$with_dnsupdate_support" = x"yes"; then
4281 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4283 AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4285 with_dnsupdate_support=no
4289 if test x"$with_dnsupdate_support" != x"no"; then
4291 ########################################################
4292 # Now see if we can find the uuid libs in standard paths
4293 # On some systems, the uuid API is in libc, so we have to
4294 # be careful not to insert a spurious -luuid.
4297 AC_LIBTESTFUNC(uuid, uuid_generate,
4302 SMB_REMOVE_LIB(uuid)
4306 with_dnsupdate_support=yes
4307 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4310 if test x"$with_dnsupdate_support" = x"yes"; then
4311 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4313 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4315 with_dnsupdate_support=no
4318 # finally print out the result:
4319 AC_MSG_CHECKING(whether DNS Updates support is used)
4320 AC_MSG_RESULT([$with_dnsupdate_support])
4323 #################################################
4324 # check for automount support
4325 AC_MSG_CHECKING(whether to use automount)
4326 AC_ARG_WITH(automount,
4327 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4328 [ case "$withval" in
4331 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4340 #################################################
4341 # check for mount- and umount.cifs support
4343 INSTALL_CIFSMOUNT=""
4344 UNINSTALL_CIFSMOUNT=""
4345 AC_MSG_CHECKING(whether to build mount.cifs)
4346 AC_ARG_WITH(cifsmount,
4347 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs (Linux only) support (default=yes)])],
4348 [ case "$withval" in
4356 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4357 CIFSMOUNT_PROGS="bin/mount.cifs"
4358 INSTALL_CIFSMOUNT="installcifsmount"
4359 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4362 AC_MSG_ERROR(not on a linux system!)
4367 [ case "$host_os" in
4370 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4371 CIFSMOUNT_PROGS="bin/mount.cifs"
4372 INSTALL_CIFSMOUNT="installcifsmount"
4373 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4382 INSTALL_CIFSUMOUNT=""
4383 UNINSTALL_CIFSUMOUNT=""
4384 AC_MSG_CHECKING(whether to build umount.cifs)
4385 AC_ARG_WITH(cifsumount,
4386 [AS_HELP_STRING([--with-cifsumount], [Include umount.cifs (Linux only) support (default=no)])],
4387 [ case "$withval" in
4392 AC_DEFINE(WITH_CIFSUMOUNT,1,[Whether to build umount.cifs])
4393 CIFSUMOUNT_PROGS="bin/umount.cifs"
4394 INSTALL_CIFSUMOUNT="installcifsumount"
4395 UNINSTALL_CIFSUMOUNT="uninstallcifsumount"
4398 AC_MSG_ERROR(not on a linux system!)
4409 #################################################
4410 # check for cifs.upcall support
4411 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4413 INSTALL_CIFSUPCALL=""
4414 UNINSTALL_CIFSUPCALL=""
4415 AC_MSG_CHECKING(whether to build cifs.upcall)
4416 AC_ARG_WITH(cifsupcall,
4417 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4418 [ case "$withval" in
4425 if test x"$use_ads" != x"yes"; then
4426 AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4427 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4428 AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4431 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4432 CIFSUPCALL_PROGS="bin/cifs.upcall"
4433 INSTALL_CIFSUPCALL="installcifsupcall"
4434 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4438 AC_MSG_ERROR(not on a linux system!)
4443 [ case "$host_os" in
4445 if test x"$use_ads" != x"yes"; then
4446 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4447 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4448 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4451 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4452 CIFSUPCALL_PROGS="bin/cifs.upcall"
4453 INSTALL_CIFSUPCALL="installcifsupcall"
4454 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4464 #################################################
4465 # Check for a PAM clear-text auth, accounts, password
4466 # and session support. Most PAM implementations keep their
4467 # headers in /usr/include/security. Darwin keeps its in
4470 with_pam_for_crypt=no
4472 AC_MSG_CHECKING(whether to try PAM support)
4474 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4475 [ case "$withval" in
4481 AC_MSG_RESULT([$try_pam])
4484 create_pam_modules=no
4485 if test x"${try_pam}" != x"no";then
4487 create_pam_modules=yes
4489 # Most systems have PAM headers in /usr/include/security, but Darwin
4490 # has them in /usr/include/pam.
4491 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4492 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4493 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4494 if test x"${try_pam}" = x"yes";then
4495 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4498 create_pam_modules=no
4501 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4502 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4503 if test x"${try_pam}" = x"yes";then
4504 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4507 create_pam_modules=no
4510 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4511 #if HAVE_SECURITY_PAM_APPL_H
4512 #include <security/pam_appl.h>
4514 #if HAVE_PAM_PAM_APPL_H
4515 #include <pam/pam_appl.h>
4518 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4519 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4520 if test x"${try_pam}" = x"yes";then
4521 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4523 create_pam_modules=no
4526 if test x"$use_pam" = x"yes"; then
4527 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4528 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4529 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4530 with_pam_for_crypt=yes
4532 if test x"$create_pam_modules" = x"yes"; then
4533 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4534 # this checks are optional,
4535 # we don't care about the results here
4536 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4537 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4538 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4540 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4543 AC_MSG_CHECKING(whether to use PAM support)
4544 AC_MSG_RESULT([$use_pam])
4546 AC_MSG_CHECKING(whether to have PAM MODULES support)
4547 AC_MSG_RESULT([$create_pam_modules])
4550 #################################################
4551 # check for PAM_RADIO_TYPE
4553 #if (!defined(LINUX))
4555 #define PAM_EXTERN extern
4556 #if defined(HAVE_SECURITY_PAM_APPL_H)
4557 #include <security/pam_appl.h>
4558 #elif defined(HAVE_PAM_PAM_APPL_H)
4559 #include <pam/pam_appl.h>
4564 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4565 #include <security/pam_modules.h>
4566 #elif defined(HAVE_PAM_PAM_MODULES_H)
4567 #include <pam/pam_modules.h>
4570 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4571 #include <security/_pam_macros.h>
4572 #elif defined(HAVE_PAM__PAM_MACROS_H)
4573 #include <pam/_pam_macros.h>
4576 #ifdef HAVE_SECURITY_PAM_EXT_H
4577 #include <security/pam_ext.h>
4580 [int i; i = PAM_RADIO_TYPE; ],
4581 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4583 #################################################
4584 # check for pam_smbpass support
4586 INSTALL_PAM_MODULES=""
4587 UNINSTALL_PAM_MODULES=""
4589 try_pam_smbpass=auto
4590 AC_MSG_CHECKING(whether to use pam_smbpass)
4591 AC_ARG_WITH(pam_smbpass,
4592 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4593 [ case "$withval" in
4595 try_pam_smbpass=$withval
4598 AC_MSG_ERROR([valid options are yes,no,auto])
4603 if test x"${try_pam_smbpass}" = xno ; then
4607 # Conditions under which pam_smbpass can't be built.
4608 if test x"$BLDSHARED" != xtrue ; then
4609 if test x"${try_pam_smbpass}" = xyes ; then
4610 AC_MSG_ERROR([No support for shared modules])
4613 elif test x"$create_pam_modules" != xyes ; then
4614 if test x"${try_pam_smbpass}" = xyes ; then
4615 AC_MSG_ERROR([No support for PAM MODULES])
4620 if test x"${use_pam_smbpass}" = xyes ; then
4621 PAM_MODULES="pam_smbpass"
4622 INSTALL_PAM_MODULES="installpammodules"
4623 UNINSTALL_PAM_MODULES="uninstallpammodules"
4626 AC_MSG_RESULT([$use_pam_smbpass])
4630 ## moved after the check for -lcrypt in order to
4631 ## ensure that the necessary libraries are included
4632 ## check checking for truncated salt. Wrapped by the
4633 ## $with_pam_for_crypt variable as above --jerry
4635 if test $with_pam_for_crypt = no; then
4636 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4638 LIBS="$AUTH_LIBS $LIBS"
4639 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4640 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4641 LIBS="$crypt_LIBS"])
4642 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4643 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4647 #################################################
4648 # check for a NISPLUS_HOME support
4649 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4650 AC_ARG_WITH(nisplus-home,
4651 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4652 [ case "$withval" in
4655 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4664 #################################################
4665 # check for syslog logging
4666 AC_MSG_CHECKING(whether to use syslog logging)
4668 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4669 [ case "$withval" in
4672 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4681 #################################################
4682 # check for custom syslog facility
4683 AC_MSG_CHECKING(whether to use a custom syslog facility)
4684 AC_ARG_WITH(syslog-facility,
4685 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4687 if test "$withval" = "no" ; then
4688 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4690 if test "$withval" != "yes" ; then
4691 syslog_facility="$withval"
4692 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4697 #################################################
4698 # check for experimental disk-quotas support
4700 samba_cv_WITH_QUOTAS=auto
4701 samba_cv_TRY_QUOTAS=no
4702 samba_cv_RUN_QUOTA_TESTS=auto
4703 samba_cv_WITH_SYS_QUOTAS=auto
4704 samba_cv_TRY_SYS_QUOTAS=auto
4705 samba_cv_SYSQUOTA_FOUND=no
4707 AC_MSG_CHECKING(whether to try disk-quotas support)
4709 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4710 [ case "$withval" in
4713 samba_cv_WITH_QUOTAS=yes
4714 samba_cv_TRY_QUOTAS=yes
4715 samba_cv_RUN_QUOTA_TESTS=yes
4716 #set sys quotas to auto in this case
4717 samba_cv_TRY_SYS_QUOTAS=auto
4721 samba_cv_WITH_QUOTAS=auto
4722 samba_cv_TRY_QUOTAS=auto
4723 samba_cv_RUN_QUOTA_TESTS=auto
4724 #set sys quotas to auto in this case
4725 samba_cv_TRY_SYS_QUOTAS=auto
4729 samba_cv_WITH_QUOTAS=no
4730 samba_cv_TRY_QUOTAS=no
4731 samba_cv_RUN_QUOTA_TESTS=no
4734 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4737 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4740 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4741 AC_ARG_WITH(sys-quotas,
4742 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4743 [ case "$withval" in
4746 samba_cv_WITH_SYS_QUOTAS=yes
4747 samba_cv_TRY_SYS_QUOTAS=yes
4748 samba_cv_RUN_QUOTA_TESTS=yes
4752 samba_cv_WITH_SYS_QUOTAS=auto
4753 samba_cv_TRY_SYS_QUOTAS=auto
4754 samba_cv_RUN_QUOTA_TESTS=auto
4758 samba_cv_WITH_SYS_QUOTAS=no
4759 samba_cv_TRY_SYS_QUOTAS=no
4762 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4765 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4768 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4769 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4773 samba_cv_TRY_SYS_QUOTAS=yes
4774 samba_cv_RUN_QUOTA_TESTS=yes
4778 samba_cv_TRY_SYS_QUOTAS=no
4783 #############################################
4784 # only check for quota stuff if --with-quotas
4785 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4788 # on linux we didn't need to test we have builtin support
4790 samba_cv_SYSQUOTA_FOUND=yes
4791 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4792 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4793 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4796 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4797 samba_cv_found_xfs_header=yes
4798 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4802 # need to set this define when using static linking (BUG 1473)
4803 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4809 # some broken header files need this
4810 AC_CHECK_HEADER(asm/types.h,[
4811 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4812 AC_ADD_INCLUDE(<asm/types.h>)
4815 # For quotas on Veritas VxFS filesystems
4816 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4818 # For quotas on Linux XFS filesystems
4819 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4821 # For sys/quota.h and linux/quota.h
4822 AC_CHECK_HEADERS(sys/quota.h)
4824 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4825 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4826 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4828 #include "confdefs.h"
4829 #ifdef HAVE_SYS_TYPES_H
4830 #include <sys/types.h>
4832 #ifdef HAVE_ASM_TYPES_H
4833 #include <asm/types.h>
4835 #include <sys/quota.h>
4836 ],[int i = Q_XGETQUOTA;],
4837 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4838 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4839 samba_cv_found_xfs_header=yes
4843 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4844 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4846 #include "confdefs.h"
4847 #ifdef HAVE_SYS_QUOTA_H
4848 #include <sys/quota.h>
4852 D.dqb_fsoftlimit = 0;],
4853 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4854 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4855 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4859 # look for a working quota system
4861 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4862 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4864 #define HAVE_QUOTACTL_4A 1
4865 #define AUTOCONF_TEST 1
4866 #include "confdefs.h"
4867 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4868 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4869 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4870 samba_cv_SYSQUOTA_FOUND=yes;
4871 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4872 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4876 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4877 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4879 #define HAVE_QUOTACTL_4B 1
4880 #define AUTOCONF_TEST 1
4881 #include "confdefs.h"
4882 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4883 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4884 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4885 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4886 samba_cv_SYSQUOTA_FOUND=yes;
4887 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4888 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4892 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4893 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4895 #define HAVE_QUOTACTL_3 1
4896 #define AUTOCONF_TEST 1
4897 #include "confdefs.h"
4898 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4899 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4900 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4901 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4902 samba_cv_SYSQUOTA_FOUND=yes;
4903 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4904 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4908 #################################################
4909 # check for mntent.h and struct mntent
4910 AC_CHECK_HEADERS(mntent.h)
4911 #################################################
4912 # check for setmntent,getmntent,endmntent
4913 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4915 #################################################
4916 # check for devnm.h and struct mntent
4917 AC_CHECK_HEADERS(devnm.h)
4918 #################################################
4920 AC_CHECK_FUNCS(devnm)
4922 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4923 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4924 # if --with-sys-quotas=yes then build it
4925 # you have can use the get/set quota command smb.conf
4927 samba_cv_SYSQUOTA_FOUND=auto
4929 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4930 # if --with-sys-quotas=yes then build it
4931 # you have can use the get/set quota command smb.conf
4933 samba_cv_TRY_SYS_QUOTAS=auto
4937 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4938 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4939 SAVE_CPPFLAGS="$CPPFLAGS"
4940 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4942 #include "confdefs.h"
4943 #define NO_PROTO_H 1
4944 #define NO_CONFIG_H 1
4945 #define HAVE_SYS_QUOTAS 1
4946 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4947 #include "${srcdir-.}/lib/sysquotas.c"
4948 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4949 CPPFLAGS="$SAVE_CPPFLAGS"
4951 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4952 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4953 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4954 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4955 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4956 samba_cv_WE_USE_SYS_QUOTAS=yes
4964 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4965 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4966 SAVE_CPPFLAGS="$CPPFLAGS"
4967 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4969 #include "confdefs.h"
4970 #define NO_PROTO_H 1
4971 #define NO_CONFIG_H 1
4972 #define HAVE_SYS_QUOTAS 1
4973 #define HAVE_XFS_QUOTAS 1
4974 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4975 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4976 CPPFLAGS="$SAVE_CPPFLAGS"
4978 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4979 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4980 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4985 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4986 SAVE_CPPFLAGS="$CPPFLAGS"
4987 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4989 #include "confdefs.h"
4990 #define NO_PROTO_H 1
4991 #define NO_CONFIG_H 1
4992 #include "${srcdir-.}/smbd/quotas.c"
4993 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4994 CPPFLAGS="$SAVE_CPPFLAGS"
4996 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4997 AC_MSG_CHECKING(whether to use the old quota support)
4998 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4999 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5000 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5010 ####################
5011 # End of quota check samba_cv_RUN_QUOTA_TESTS
5014 #################################################
5015 # check for experimental utmp accounting
5017 AC_MSG_CHECKING(whether to support utmp accounting)
5020 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
5021 [ case "$withval" in
5031 # utmp requires utmp.h
5032 # Note similar check earlier, when checking utmp details.
5034 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5035 utmp_no_reason=", no utmp.h on $host_os"
5039 # Display test results
5041 if test x"$WITH_UTMP" = x"yes"; then
5043 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5045 AC_MSG_RESULT(no$utmp_no_reason)
5049 #################################################
5050 # these tests are taken from the GNU fileutils package
5051 AC_CHECKING(how to get filesystem space usage)
5054 # Test for statvfs64.
5055 if test $space = no; then
5057 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5059 #if defined(HAVE_UNISTD_H)
5062 #include <sys/types.h>
5063 #include <sys/statvfs.h>
5066 struct statvfs64 fsd;
5067 exit (statvfs64 (".", &fsd));
5069 fu_cv_sys_stat_statvfs64=yes,
5070 fu_cv_sys_stat_statvfs64=no,
5071 fu_cv_sys_stat_statvfs64=cross)])
5072 if test $fu_cv_sys_stat_statvfs64 = yes; then
5074 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5078 # Perform only the link test since it seems there are no variants of the
5079 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5080 # because that got a false positive on SCO OSR5. Adding the declaration
5081 # of a `struct statvfs' causes this test to fail (as it should) on such
5082 # systems. That system is reported to work fine with STAT_STATFS4 which
5083 # is what it gets when this test fails.
5084 if test $space = no; then
5086 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5087 [AC_TRY_LINK([#include <sys/types.h>
5088 #include <sys/statvfs.h>],
5089 [struct statvfs fsd; statvfs (0, &fsd);],
5090 fu_cv_sys_stat_statvfs=yes,
5091 fu_cv_sys_stat_statvfs=no)])
5092 if test $fu_cv_sys_stat_statvfs = yes; then
5094 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5098 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5099 # This is not the case on ancient Linux systems.
5101 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5102 AC_TRY_COMPILE([#include <sys/types.h>
5103 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5104 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5105 if test x"$samba_cv_fsid_int" = x"yes"; then
5106 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5109 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5110 # systems use f_bsize.
5111 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5112 AC_TRY_COMPILE([#include <sys/types.h>
5113 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5114 samba_cv_frsize=yes,samba_cv_frsize=no)])
5115 if test x"$samba_cv_frsize" = x"yes"; then
5116 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5119 # Some systems use f_flag in struct statvfs while others use f_flags
5120 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5121 AC_TRY_COMPILE([#include <sys/types.h>
5122 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5123 samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5124 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5125 AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5128 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5129 AC_TRY_COMPILE([#include <sys/types.h>
5130 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5131 samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5132 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5133 AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5136 if test $space = no; then
5137 # DEC Alpha running OSF/1
5138 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5139 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5141 #include <sys/param.h>
5142 #include <sys/types.h>
5143 #include <sys/mount.h>
5148 exit (statfs (".", &fsd, sizeof (struct statfs)));
5150 fu_cv_sys_stat_statfs3_osf1=yes,
5151 fu_cv_sys_stat_statfs3_osf1=no,
5152 fu_cv_sys_stat_statfs3_osf1=no)])
5153 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5154 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5156 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5160 if test $space = no; then
5162 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5163 member (AIX, 4.3BSD)])
5164 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5166 #ifdef HAVE_SYS_PARAM_H
5167 #include <sys/param.h>
5169 #ifdef HAVE_SYS_MOUNT_H
5170 #include <sys/mount.h>
5172 #ifdef HAVE_SYS_VFS_H
5173 #include <sys/vfs.h>
5179 exit (statfs (".", &fsd));
5181 fu_cv_sys_stat_statfs2_bsize=yes,
5182 fu_cv_sys_stat_statfs2_bsize=no,
5183 fu_cv_sys_stat_statfs2_bsize=no)])
5184 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5185 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5187 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5191 if test $space = no; then
5193 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5194 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5195 [AC_TRY_RUN([#include <sys/types.h>
5196 #include <sys/statfs.h>
5200 exit (statfs (".", &fsd, sizeof fsd, 0));
5202 fu_cv_sys_stat_statfs4=yes,
5203 fu_cv_sys_stat_statfs4=no,
5204 fu_cv_sys_stat_statfs4=no)])
5205 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5206 if test $fu_cv_sys_stat_statfs4 = yes; then
5208 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5212 if test $space = no; then
5214 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5215 member (4.4BSD and NetBSD)])
5216 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5217 [AC_TRY_RUN([#include <sys/types.h>
5218 #ifdef HAVE_SYS_PARAM_H
5219 #include <sys/param.h>
5221 #ifdef HAVE_SYS_MOUNT_H
5222 #include <sys/mount.h>
5228 exit (statfs (".", &fsd));
5230 fu_cv_sys_stat_statfs2_fsize=yes,
5231 fu_cv_sys_stat_statfs2_fsize=no,
5232 fu_cv_sys_stat_statfs2_fsize=no)])
5233 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5234 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5236 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5240 if test $space = no; then
5242 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5243 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5244 [AC_TRY_RUN([#include <sys/types.h>
5245 #ifdef HAVE_SYS_PARAM_H
5246 #include <sys/param.h>
5248 #ifdef HAVE_SYS_MOUNT_H
5249 #include <sys/mount.h>
5251 #ifdef HAVE_SYS_FS_TYPES_H
5252 #include <sys/fs_types.h>
5257 /* Ultrix's statfs returns 1 for success,
5258 0 for not mounted, -1 for failure. */
5259 exit (statfs (".", &fsd) != 1);
5261 fu_cv_sys_stat_fs_data=yes,
5262 fu_cv_sys_stat_fs_data=no,
5263 fu_cv_sys_stat_fs_data=no)])
5264 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5265 if test $fu_cv_sys_stat_fs_data = yes; then
5267 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5272 # As a gating factor for large file support, in order to
5273 # use <4GB files we must have the following minimal support
5275 # long long, and a 64 bit off_t or off64_t.
5276 # If we don't have all of these then disable large
5279 AC_MSG_CHECKING([if large file support can be enabled])
5281 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5282 #include <sys/types.h>
5288 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5289 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5290 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5292 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5294 #################################################
5295 # check for cluster extensions
5298 AC_SUBST(CTDB_CFLAGS)
5300 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5301 [ case "$withval" in
5303 AC_MSG_WARN([--with-ctdb called without argument])
5306 CTDB_CPPFLAGS="-I$withval/include"
5310 SAVED_CPPFLAGS="$CPPFLAGS"
5311 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5312 ctdb_broken="missing or broken headers"
5314 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5315 #include "confdefs.h"
5317 #include "replace.h"
5318 #include "system/wait.h"
5319 #include "system/network.h"
5320 #define private #error __USED_RESERVED_WORD_private__
5326 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5327 #include "confdefs.h"
5329 #include "replace.h"
5330 #include "system/wait.h"
5331 #include "system/network.h"
5335 #include <ctdb_private.h>
5337 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5340 ctdb_broken="ctdb transaction support missing or too old"
5343 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5344 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5345 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5347 #include "confdefs.h"
5349 #include "replace.h"
5350 #include "system/wait.h"
5351 #include "system/network.h"
5355 #include <ctdb_private.h>
5358 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5359 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5361 ctdb_broken="missing struct ctdb_control_tcp"
5363 #include "confdefs.h"
5365 #include "replace.h"
5366 #include "system/wait.h"
5367 #include "system/network.h"
5371 #include <ctdb_private.h>
5374 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5375 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5377 #include "confdefs.h"
5379 #include "replace.h"
5380 #include "system/wait.h"
5381 #include "system/network.h"
5385 #include <ctdb_private.h>
5387 CPPFLAGS="$SAVED_CPPFLAGS"
5389 AC_MSG_CHECKING(cluster support)
5390 AC_ARG_WITH(cluster-support,
5391 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5393 if test x"$with_cluster_support" = x ; then
5394 with_cluster_support="auto"
5397 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5398 if test "x$with_cluster_support" = "xyes"; then
5399 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5401 with_cluster_support=no
5404 if test x"$ctdb_broken" != x"no"; then
5405 if test "x$with_cluster_support" = "xyes"; then
5406 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5408 with_cluster_support=no
5411 if test "x$with_cluster_support" != "xno"; then
5412 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5413 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5419 #################################################
5420 # check for ACL support
5422 AC_MSG_CHECKING(whether to support ACLs)
5423 AC_ARG_WITH(acl-support,
5424 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5425 [ case "$withval" in
5427 with_acl_support="$withval"
5431 if test x"$with_acl_support" = x ; then
5432 with_acl_support="auto"
5435 AC_MSG_RESULT($with_acl_support)
5437 if test x"$with_acl_support" = x"no"; then
5438 AC_MSG_RESULT(Disabling ACL support)
5439 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5441 AC_MSG_NOTICE(checking whether ACL support is available:)
5444 AC_MSG_NOTICE(Using UnixWare ACLs)
5445 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5446 default_static_modules="$default_static_modules vfs_solarisacl"
5449 AC_MSG_NOTICE(Using solaris ACLs)
5450 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5451 ACL_LIBS="$ACL_LIBS -lsec"
5452 default_static_modules="$default_static_modules vfs_solarisacl"
5455 AC_MSG_NOTICE(Using HPUX ACLs)
5456 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5457 default_static_modules="$default_static_modules vfs_hpuxacl"
5460 AC_MSG_NOTICE(Using IRIX ACLs)
5461 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5462 default_static_modules="$default_static_modules vfs_irixacl"
5465 AC_MSG_NOTICE(Using AIX ACLs)
5466 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5467 default_static_modules="$default_static_modules vfs_aixacl"
5470 AC_MSG_NOTICE(Using Tru64 ACLs)
5471 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5472 ACL_LIBS="$ACL_LIBS -lpacl"
5473 default_static_modules="$default_static_modules vfs_tru64acl"
5476 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5477 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5480 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5483 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5486 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5488 LIBS="$LIBS $ACL_LIBS"
5490 #include <sys/types.h>
5491 #include <sys/acl.h>
5495 acl_entry_t *entry_p;
5496 return acl_get_entry(acl, entry_id, entry_p);
5498 [samba_cv_HAVE_POSIX_ACLS=yes],
5499 [samba_cv_HAVE_POSIX_ACLS=no])
5502 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5503 AC_MSG_NOTICE(Using posix ACLs)
5504 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5505 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5507 LIBS="$LIBS $ACL_LIBS"
5509 #include <sys/types.h>
5510 #include <sys/acl.h>
5512 acl_permset_t permset_d;
5514 return acl_get_perm_np(permset_d, perm);
5516 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5517 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5520 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5521 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5523 default_static_modules="$default_static_modules vfs_posixacl"
5525 AC_MSG_NOTICE(ACL support is not avaliable)
5526 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5530 fi # with_acl_support
5534 #################################################
5535 # check for AIO support
5537 AC_MSG_CHECKING(whether to support asynchronous io)
5538 AC_ARG_WITH(aio-support,
5539 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5540 [ case "$withval" in
5547 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5548 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5549 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5552 AC_TRY_LINK([#include <sys/types.h>
5554 [ struct aiocb a; return aio_read(&a);],
5555 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5557 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5560 AC_TRY_LINK([#include <sys/types.h>
5562 [ struct aiocb64 a; return aio_read64(&a);],
5563 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5565 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5566 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5567 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5569 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5570 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5574 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5575 AC_MSG_CHECKING(for aio_read)
5576 AC_LINK_IFELSE([#include <aio.h>
5577 int main() { struct aiocb a; return aio_read(&a); }],
5578 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5579 [AC_MSG_RESULT(no)])
5581 AC_MSG_CHECKING(for aio_write)
5582 AC_LINK_IFELSE([#include <aio.h>
5583 int main() { struct aiocb a; return aio_write(&a); }],
5584 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5585 [AC_MSG_RESULT(no)])
5587 AC_MSG_CHECKING(for aio_fsync)
5588 AC_LINK_IFELSE([#include <aio.h>
5589 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5590 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5591 [AC_MSG_RESULT(no)])
5593 AC_MSG_CHECKING(for aio_return)
5594 AC_LINK_IFELSE([#include <aio.h>
5595 int main() { struct aiocb a; return aio_return(&a); }],
5596 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5597 [AC_MSG_RESULT(no)])
5599 AC_MSG_CHECKING(for aio_error)
5600 AC_LINK_IFELSE([#include <aio.h>
5601 int main() { struct aiocb a; return aio_error(&a); }],
5602 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5603 [AC_MSG_RESULT(no)])
5605 AC_MSG_CHECKING(for aio_cancel)
5606 AC_LINK_IFELSE([#include <aio.h>
5607 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5608 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5609 [AC_MSG_RESULT(no)])
5611 AC_MSG_CHECKING(for aio_suspend)
5612 AC_LINK_IFELSE([#include <aio.h>
5613 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5614 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5615 [AC_MSG_RESULT(no)])
5618 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5619 AC_MSG_CHECKING(for aio_read64)
5620 AC_LINK_IFELSE([#include <aio.h>
5621 int main() { struct aiocb a; return aio_read64(&a); }],
5622 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5623 [AC_MSG_RESULT(no)])
5625 AC_MSG_CHECKING(for aio_write64)
5626 AC_LINK_IFELSE([#include <aio.h>
5627 int main() { struct aiocb a; return aio_write64(&a); }],
5628 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5629 [AC_MSG_RESULT(no)])
5631 AC_MSG_CHECKING(for aio_fsync64)
5632 AC_LINK_IFELSE([#include <aio.h>
5633 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5634 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5635 [AC_MSG_RESULT(no)])
5637 AC_MSG_CHECKING(for aio_return64)
5638 AC_LINK_IFELSE([#include <aio.h>
5639 int main() { struct aiocb a; return aio_return64(&a); }],
5640 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5641 [AC_MSG_RESULT(no)])
5643 AC_MSG_CHECKING(for aio_error64)
5644 AC_LINK_IFELSE([#include <aio.h>
5645 int main() { struct aiocb a; return aio_error64(&a); }],
5646 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5647 [AC_MSG_RESULT(no)])
5649 AC_MSG_CHECKING(for aio_cancel64)
5650 AC_LINK_IFELSE([#include <aio.h>
5651 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5652 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5653 [AC_MSG_RESULT(no)])
5655 AC_MSG_CHECKING(for aio_suspend64)
5656 AC_LINK_IFELSE([#include <aio.h>
5657 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5658 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5659 [AC_MSG_RESULT(no)])
5666 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5669 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5673 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5674 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5675 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5676 default_shared_modules="$default_shared_modules vfs_aio_fork"
5680 #################################################
5681 # check for sendfile support
5683 with_sendfile_support=yes
5684 AC_MSG_CHECKING(whether to check to support sendfile)
5685 AC_ARG_WITH(sendfile-support,
5686 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5687 [ case "$withval" in
5693 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5694 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5695 AC_TRY_LINK([#include <sys/sendfile.h>],
5700 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5702 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5704 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5705 AC_TRY_LINK([#include <sys/sendfile.h>],
5710 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5712 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5714 # Try and cope with broken Linux sendfile....
5715 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5717 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5718 #undef _FILE_OFFSET_BITS
5720 #include <sys/sendfile.h>],
5725 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5727 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5729 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5730 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5731 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5732 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5733 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5734 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5735 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5736 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5737 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5738 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5739 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5745 *freebsd* | *dragonfly* )
5746 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5748 #include <sys/types.h>
5750 #include <sys/socket.h>
5751 #include <sys/uio.h>],
5753 int fromfd, tofd, ret, total=0;
5754 off_t offset, nwritten;
5757 hdr.headers = &hdtrl;
5759 hdr.trailers = NULL;
5761 hdtrl.iov_base = NULL;
5763 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5765 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5767 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5768 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5769 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5770 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5777 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5779 #include <sys/socket.h>
5780 #include <sys/uio.h>],
5784 struct iovec hdtrl[2];
5788 hdtrl[0].iov_base = 0;
5789 hdtrl[0].iov_len = 0;
5791 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5793 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5794 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5795 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5796 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5797 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5802 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5804 #include <sys/socket.h>
5805 #include <sys/uio.h>],
5809 struct iovec hdtrl[2];
5813 hdtrl[0].iov_base = 0;
5814 hdtrl[0].iov_len = 0;
5816 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5818 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5819 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5820 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5821 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5822 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5829 AC_CHECK_LIB(sendfile,sendfilev)
5830 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5832 #include <sys/sendfile.h>],
5836 struct sendfilevec vec[2];
5842 vec[0].sfv_fd = SFV_FD_SELF;
5843 vec[0].sfv_flag = 0;
5848 vec[1].sfv_flag = 0;
5851 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5853 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5855 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5856 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5857 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5858 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5863 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5865 #include <sys/sendfile.h>],
5869 struct sendfilevec vec[2];
5875 vec[0].sfv_fd = SFV_FD_SELF;
5876 vec[0].sfv_flag = 0;
5881 vec[1].sfv_flag = 0;
5884 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5886 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5888 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5889 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5890 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5891 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5897 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5899 #include <sys/socket.h>],
5903 struct sf_parms hdtrl;
5907 hdtrl.header_data = 0;
5908 hdtrl.header_length = 0;
5909 hdtrl.file_descriptor = fromfd;
5910 hdtrl.file_offset = 0;
5911 hdtrl.file_bytes = 0;
5912 hdtrl.trailer_data = 0;
5913 hdtrl.trailer_length = 0;
5915 nwritten = send_file(&tofd, &hdtrl, 0);
5917 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5918 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5919 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5920 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5921 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5937 ############################################
5938 # See if we have the Linux readahead syscall.
5940 AC_CACHE_CHECK([for Linux readahead],
5941 samba_cv_HAVE_LINUX_READAHEAD,[
5943 #if defined(HAVE_UNISTD_H)
5946 #include <fcntl.h>],
5947 [ssize_t err = readahead(0,0,0x80000);],
5948 samba_cv_HAVE_LINUX_READAHEAD=yes,
5949 samba_cv_HAVE_LINUX_READAHEAD=no)])
5951 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5952 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5953 [Whether Linux readahead is available])
5956 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5958 ############################################
5959 # See if we have the posix_fadvise syscall.
5961 AC_CACHE_CHECK([for posix_fadvise],
5962 samba_cv_HAVE_POSIX_FADVISE,[
5964 #if defined(HAVE_UNISTD_H)
5967 #include <fcntl.h>],
5968 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5969 samba_cv_HAVE_POSIX_FADVISE=yes,
5970 samba_cv_HAVE_POSIX_FADVISE=no)])
5972 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5973 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5974 [Whether posix_fadvise is available])
5977 ############################################
5978 # See if we have the Linux splice syscall.
5982 AC_CACHE_CHECK([for Linux splice],
5983 samba_cv_HAVE_LINUX_SPLICE,[
5985 #if defined(HAVE_UNISTD_H)
5988 #include <fcntl.h>],
5989 [long ret = splice(0,0,1,0,400,0);],
5990 samba_cv_HAVE_LINUX_SPLICE=yes,
5991 samba_cv_HAVE_LINUX_SPLICE=no)])
5994 samba_cv_HAVE_LINUX_SPLICE=no
5998 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5999 AC_DEFINE(HAVE_LINUX_SPLICE,1,
6000 [Whether Linux splice is available])
6003 AC_HAVE_DECL(splice, [#include <fcntl.h>])
6005 ############################################
6006 # See if we have the a broken readlink syscall.
6008 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
6009 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
6010 samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
6012 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
6013 AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
6016 #################################################
6017 # Check whether winbind is supported on this platform. If so we need to
6018 # build and install client programs, sbin programs and shared libraries
6020 AC_MSG_CHECKING(whether to build winbind)
6022 # Initially, the value of $host_os decides whether winbind is supported
6027 # Define external wbclient library to link against. This disables winbind.
6028 # We define this here so --with-winbind can override it.
6029 AC_ARG_WITH(wbclient,
6030 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
6043 WBCLIENT_INCLUDES="-I$withval/include"
6044 WBCLIENT_LDFLAGS="-L$withval/lib"
6049 AC_SUBST(WBCLIENT_INCLUDES)
6050 AC_SUBST(WBCLIENT_LDFLAGS)
6051 AC_SUBST(WBCLIENT_LIBS)
6054 # Define the winbind shared library name and any specific linker flags
6055 # it needs to be built with.
6057 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
6058 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
6059 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6060 NSSSONAMEVERSIONSUFFIX=""
6063 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
6064 NSSSONAMEVERSIONSUFFIX=".2"
6065 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
6068 # FreeBSD winbind client is implemented as a wrapper around
6069 # the Linux version.
6070 NSSSONAMEVERSIONSUFFIX=".1"
6071 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
6072 ../nsswitch/winbind_nss_linux.o"
6073 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6074 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6078 # NetBSD winbind client is implemented as a wrapper
6079 # around the Linux version. It needs getpwent_r() to
6080 # indicate libc's use of the correct nsdispatch API.
6082 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6083 WINBIND_NSS_EXTRA_OBJS="\
6084 ../nsswitch/winbind_nss_netbsd.o \
6085 ../nsswitch/winbind_nss_linux.o"
6086 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6087 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6090 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6094 # IRIX has differently named shared libraries
6095 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6096 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6097 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6100 # Solaris winbind client is implemented as a wrapper around
6101 # the Linux version.
6102 NSSSONAMEVERSIONSUFFIX=".1"
6103 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6104 ../nsswitch/winbind_nss_linux.o"
6107 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6110 # AIX has even differently named shared libraries. No
6111 # WINS support has been implemented yet.
6112 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6113 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6114 WINBIND_NSS="../nsswitch/WINBIND"
6119 winbind_no_reason=", unsupported on $host_os"
6123 # Check the setting of --with-winbind
6125 AC_ARG_WITH(winbind,
6126 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6140 # We need unix domain sockets for winbind
6142 if test x"$HAVE_WINBIND" = x"yes"; then
6143 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6144 winbind_no_reason=", no unix domain socket support on $host_os"
6149 # Display test results
6151 if test x"$HAVE_WINBIND" = x"no"; then
6155 if test x"$HAVE_WBCLIENT" = x"yes"; then
6156 AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6157 [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6158 LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6160 AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6161 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6163 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6164 BUILD_LIBWBCLIENT_SHARED=no
6166 BUILD_LIBWBCLIENT_SHARED=yes
6169 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6170 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6172 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6173 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6174 ## Only worry about libwbclient if we have shared
6176 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6177 LIBWBCLIENT=libwbclient
6178 INSTALL_LIBWBCLIENT=installlibwbclient
6179 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6180 LIBWBCLIENT_LIBS="-lwbclient"
6182 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6183 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6187 if test x"$HAVE_WINBIND" = x"yes"; then
6189 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6191 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6192 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6193 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6194 PAM_MODULES="$PAM_MODULES pam_winbind"
6195 INSTALL_PAM_MODULES="installpammodules"
6196 UNINSTALL_PAM_MODULES="uninstallpammodules"
6199 AC_MSG_RESULT(no$winbind_no_reason)
6202 AC_SUBST(WINBIND_NSS)
6203 AC_SUBST(WINBIND_WINS_NSS)
6204 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6205 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6206 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6208 AC_SUBST(WINBIND_KRB5_LOCATOR)
6210 # Solaris 10 does have new member in nss_XbyY_key
6211 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6212 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6213 [#include <nss_dbdefs.h>])
6215 # Solaris has some extra fields in struct passwd that need to be
6216 # initialised otherwise nscd crashes.
6218 AC_CHECK_MEMBER(struct passwd.pw_comment,
6219 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6222 AC_CHECK_MEMBER(struct passwd.pw_age,
6223 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6226 # AIX 4.3.x and 5.1 do not have as many members in
6227 # struct secmethod_table as AIX 5.2
6228 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6229 [#include <usersec.h>])
6230 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6231 [#include <usersec.h>])
6233 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6234 AC_TRY_COMPILE([#include <sys/types.h>
6235 #include <sys/socket.h>],
6238 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6240 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6241 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6242 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6246 #################################################
6247 # Check to see if we should use the included popt
6249 AC_ARG_WITH(included-popt,
6250 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6261 if test x"$INCLUDED_POPT" != x"yes"; then
6262 AC_CHECK_LIB(popt, poptGetContext,
6263 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6266 AC_MSG_CHECKING(whether to use included popt)
6267 if test x"$INCLUDED_POPT" = x"yes"; then
6269 BUILD_POPT='$(POPT_OBJ)'
6270 POPTLIBS='$(POPT_OBJ)'
6271 FLAGS1="-I\$(srcdir)/../lib/popt"
6277 AC_SUBST(BUILD_POPT)
6281 #################################################
6282 # Check if user wants DNS service discovery support
6284 AC_ARG_ENABLE(dnssd,
6285 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6287 AC_SUBST(DNSSD_LIBS)
6288 if test x"$enable_dnssd" = x"yes"; then
6289 have_dnssd_support=yes
6291 AC_CHECK_HEADERS(dns_sd.h)
6292 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6293 have_dnssd_support=no
6296 # On Darwin the DNSSD API is in libc, but on other platforms it's
6297 # probably in -ldns_sd
6298 AC_CHECK_FUNCS(DNSServiceRegister)
6299 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6300 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6301 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6302 have_dnssd_support=no
6305 if test x"$have_dnssd_support" = x"yes"; then
6306 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6307 [Whether to enable DNS service discovery support])
6309 if test x"$enable_dnssd" = x"yes"; then
6310 AC_MSG_ERROR(DNS service discovery support not available)
6316 #################################################
6317 # Check if user wants avahi support
6319 AC_ARG_ENABLE(avahi,
6320 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6322 if test x"$enable_avahi" != x"no"; then
6323 have_avahi_support=yes
6325 AC_CHECK_HEADERS(avahi-common/watch.h)
6326 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6327 have_avahi_support=no
6330 AC_CHECK_HEADERS(avahi-client/client.h)
6331 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6332 have_avahi_support=no
6336 AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6337 AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6340 if test x"$have_avahi_client_new" != x"yes" -o \
6341 x"$have_avahi_strerror" != x"yes" ; then
6342 have_avahi_support=no
6345 if test x"$have_avahi_support" = x"yes"; then
6346 AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6347 AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6348 [Whether to enable avahi support])
6349 AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6351 if test x"$enable_avahi" = x"yes"; then
6352 AC_MSG_ERROR(avahi support not available)
6358 #################################################
6361 PTHREAD_CFLAGS=error
6362 PTHREAD_LDFLAGS=error
6364 # If it's error, then the user didn't
6366 if test "x$PTHREAD_LDFLAGS" = xerror; then
6367 AC_CHECK_LIB(pthread, pthread_attr_init, [
6368 PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6369 PTHREAD_LDFLAGS="-lpthread" ])
6372 if test "x$PTHREAD_LDFLAGS" = xerror; then
6373 AC_CHECK_LIB(pthreads, pthread_attr_init, [
6374 PTHREAD_CFLAGS="-D_THREAD_SAFE"
6375 PTHREAD_LDFLAGS="-lpthreads" ])
6378 if test "x$PTHREAD_LDFLAGS" = xerror; then
6379 AC_CHECK_LIB(c_r, pthread_attr_init, [
6380 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6381 PTHREAD_LDFLAGS="-pthread" ])
6384 if test "x$PTHREAD_LDFLAGS" = xerror; then
6385 AC_CHECK_FUNC(pthread_attr_init, [
6386 PTHREAD_CFLAGS="-D_REENTRANT"
6387 PTHREAD_LDFLAGS="-lpthread" ])
6390 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6391 # pthread_attr_init. On pthread_mutex_lock it works there...
6392 if test "x$PTHREAD_LDFLAGS" = xerror; then
6393 AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6394 PTHREAD_CFLAGS="-D_REENTRANT"
6395 PTHREAD_LDFLAGS="-lpthread" ])
6398 AC_SUBST(PTHREAD_CFLAGS)
6399 AC_SUBST(PTHREAD_LDFLAGS)
6401 samba_cv_HAVE_PTHREAD=no
6402 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6403 samba_cv_HAVE_PTHREAD=yes
6404 # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6405 ac_save_CFLAGS=$CFLAGS
6406 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6407 ac_save_LDFLAGS=$LDFLAGS
6408 LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6409 AC_CHECK_HEADERS(pthread.h)
6410 CFLAGS=$ac_save_CFLAGS
6411 LDFLAGS=$ac_save_LDFLAGS
6414 #################################################
6415 # Check if user wants pthreadpool support
6417 AC_ARG_ENABLE(pthreadpool,
6418 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6420 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6421 AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was found])
6424 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6425 LIBS="$LIBS $PTHREAD_LDFLAGS"
6426 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6427 AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6428 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6431 #################################################
6432 # Check to see if we should use the included iniparser
6434 AC_ARG_WITH(included-iniparser,
6435 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6439 INCLUDED_INIPARSER=yes
6442 INCLUDED_INIPARSER=no
6446 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6447 AC_CHECK_LIB(iniparser, iniparser_load,
6448 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6451 AC_MSG_CHECKING(whether to use included iniparser)
6452 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6454 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6456 FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6460 INIPARSERLIBS="-liniparser"
6462 AC_SUBST(BUILD_INIPARSER)
6463 AC_SUBST(INIPARSERLIBS)
6468 # Checks for the vfs_fileid module
6470 AC_CHECK_FUNC(getmntent)
6472 AC_CHECK_HEADERS(sys/statfs.h)
6474 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6475 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6477 #include <sys/types.h>
6478 #include <sys/statfs.h>
6482 fsid_t fsid = fsd.f_fsid;
6483 return statfs (".", &fsd);
6485 vfsfileid_cv_statfs=yes,
6486 vfsfileid_cv_statfs=no,
6487 vfsfileid_cv_statfs=cross)
6489 AC_MSG_RESULT($vfsfileid_cv_statfs)
6491 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6492 x"$vfsfileid_cv_statfs" = x"yes"; then
6493 default_shared_modules="$default_shared_modules vfs_fileid"
6496 # Checks for the vfs_fileid module
6499 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6501 eval MODULE_DEFAULT_$i=STATIC
6504 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6506 dnl Fall back to static if we cannot build shared libraries
6507 eval MODULE_DEFAULT_$i=STATIC
6509 if test $BLDSHARED = true; then
6510 eval MODULE_DEFAULT_$i=SHARED
6514 dnl Always build these modules static
6515 MODULE_rpc_spoolss=STATIC
6516 MODULE_rpc_srvsvc=STATIC
6517 MODULE_idmap_tdb=STATIC
6518 MODULE_idmap_passdb=STATIC
6519 MODULE_idmap_nss=STATIC
6521 MODULE_nss_info_template=STATIC
6523 AC_ARG_WITH(static-modules,
6524 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6525 [ if test $withval; then
6526 for i in `echo $withval | sed -e 's/,/ /g'`
6528 eval MODULE_$i=STATIC
6532 AC_ARG_WITH(shared-modules,
6533 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6534 [ if test $withval; then
6535 for i in `echo $withval | sed -e 's/,/ /g'`
6537 eval MODULE_$i=SHARED
6541 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6542 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6543 SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6544 AC_SUBST(SMBD_FAM_LIBS)
6547 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6548 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6549 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6550 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6551 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6552 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6553 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6556 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6557 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6558 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6559 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6560 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6561 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6562 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6563 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6564 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6565 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6566 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6567 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6568 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6569 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6570 SMB_SUBSYSTEM(RPC,smbd/process.o)
6572 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6573 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6574 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6575 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6576 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6577 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6578 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6579 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6580 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6581 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6583 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6584 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6586 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6587 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6588 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6589 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6590 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6592 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6593 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6594 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6595 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6596 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6597 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6598 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6599 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6600 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6601 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6603 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6604 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6605 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6606 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6607 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6608 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6609 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6610 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6611 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6612 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6613 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6614 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6615 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6616 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6617 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6618 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6619 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6620 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6621 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6622 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6623 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6624 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6625 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6626 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6627 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6628 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6629 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6630 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6631 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6632 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6633 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6634 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6635 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6636 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6637 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6638 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6639 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6640 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6641 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6642 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6643 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6644 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6645 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6646 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6648 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6650 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6651 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6652 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6654 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6655 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6656 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6657 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6659 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6661 #################################################
6662 # do extra things if we are running insure
6664 if test "${ac_cv_prog_CC}" = "insure"; then
6665 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6668 #################################################
6669 # If run from the build farm, enable NASTY hacks
6670 #################################################
6671 AC_MSG_CHECKING(whether to enable build farm hacks)
6672 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6674 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6679 #################################################
6680 # check for bad librt/libpthread interactions
6682 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6683 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6684 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6685 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6687 SMB_IF_RTSIGNAL_BUG(
6689 # Have RT_SIGNAL bug, need to check whether the problem will
6690 # affect anything we have configured.
6693 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6694 if test x"$rt_signal_lease_ok" = x"no" ; then
6699 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6700 if test x"$rt_signal_notify_ok" = x"no" ; then
6705 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6706 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6707 if test x"$rt_signal_aio_ok" = x"no" ; then
6712 if test x"$rt_do_error" = x"yes" ; then
6713 SMB_IS_LIBPTHREAD_LINKED(
6717 *** On this platforms, linking Samba against pthreads causes problems
6718 *** with the oplock and change notification mechanisms. You may be
6719 *** using pthreads as a side-effect of using the --with-aio-support
6720 *** or --with-profiling-data options. Please remove these and try again.
6727 *** On this platform, the oplock and change notification mechanisms do not
6728 *** appear to work. Please report this problem to samba-technical@samba.org
6729 *** and attach the config.log file from this directory.
6733 AC_MSG_ERROR(unable to use realtime signals on this platform)
6737 # no RT_SIGNAL bug, we are golden
6738 SMB_IS_LIBPTHREAD_LINKED(
6740 AC_MSG_WARN(using libpthreads - this may degrade performance)
6745 # cross compiling, I hope you know what you are doing
6751 AC_ARG_ENABLE(merged-build,
6752 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])],
6753 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6755 if test x"$enable_merged_build" = x"yes" -a \
6756 x"$merged_build_possible" = x"no" ; then
6757 AC_MSG_ERROR(Merged build required but not possible)
6760 m4_include(../lib/zlib/zlib.m4)
6762 if test x$enable_merged_build = xauto; then
6764 m4_include(../m4/check_python.m4)
6765 AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6767 AC_MSG_CHECKING([whether it would be possible to do a merged build])
6768 AC_MSG_RESULT([$merged_build_possible])
6770 # Enable merged build automatically if possible, when in developer mode
6771 if test "x$developer" = xyes; then
6772 enable_merged_build=$merged_build_possible
6776 if test x$enable_merged_build = xyes; then
6778 saved_USESHARED="$USESHARED"
6780 m4_include(samba4.m4)
6781 USESHARED="$saved_USESHARED"
6786 AC_ZLIB([ZLIB_OBJS=""], [
6788 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6789 deflate.o trees.o zutil.o inflate.o infback.o \
6790 inftrees.o inffast.o
6792 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6794 CFLAGS="-I../lib/zlib $CFLAGS"
6797 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6799 if test "x$enable_dmalloc" = xyes
6801 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6802 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6803 [Define to check invariants around some common functions])
6804 LIBS="$LIBS -ldmalloc"
6807 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6808 LIB_REMOVE_USR_LIB(LDFLAGS)
6809 LIB_REMOVE_USR_LIB(LIBS)
6811 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6812 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6813 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6815 #################################################
6816 # Display summary of libraries detected
6818 AC_MSG_RESULT([Using libraries:])
6819 AC_MSG_RESULT([ LIBS = $LIBS])
6820 if test x"$with_ads_support" != x"no"; then
6821 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6823 if test x"$with_ldap_support" != x"no"; then
6824 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6826 if test x"$with_dnsupdate_support" != x"no"; then
6827 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6829 if test x"$have_dnssd_support" != x"no"; then
6830 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6832 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6834 #################################################
6835 # final configure stuff
6837 AC_MSG_CHECKING([configure summary])
6838 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6840 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6841 AC_MSG_WARN([cannot run when cross-compiling]))
6843 dnl Merge in developer cflags from now on
6844 AC_SUBST(DEVELOPER_CFLAGS)
6845 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6846 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6849 # Stuff the smbd-only libraries at the end of the smbd link
6850 # path (if we have them).
6851 SMBD_LIBS="$samba_dmapi_libs"
6854 CFLAGS="${CFLAGS} \$(FLAGS)"
6856 if test x$MERGED_BUILD != x1; then
6857 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6859 if test x"$BLDSHARED" = x"true" ; then
6860 LDFLAGS="$LDFLAGS -L./bin"
6865 if test x$samba_cv_gnu_make = xyes; then
6868 # When we don't have GNU Make, generate a copy of Makefile.in
6869 # that doesn't have the "include " statements but just includes
6870 # the files verbatim.
6871 MAKEFILE=Makefile-noincludes
6872 $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6875 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6876 lib/netapi/examples/Makefile
6877 lib/netapi/tests/Makefile
6878 pkgconfig/smbclient.pc
6879 pkgconfig/wbclient.pc
6881 pkgconfig/smbsharemodes.pc
6882 ../examples/libsmbclient/Makefile.internal
6884 dnl If we had to expand the includes, make tsure the output file is moved back
6885 AC_OUTPUT_COMMANDS([
6886 if test x$MAKEFILE != Makefile; then
6887 mv $MAKEFILE Makefile
6891 #################################################
6892 # Print very concise instructions on building/use
6893 if test "x$enable_dmalloc" = xyes
6895 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6896 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])