1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
25 AC_LIBREPLACE_CC_CHECKS
26 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
28 m4_include(../lib/tevent/libtevent.m4)
31 for obj in ${TEVENT_OBJ}; do
32 LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
34 AC_SUBST(LIBTEVENT_OBJ0)
35 LIBS="${LIBS} ${TEVENT_LIBS}"
37 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
42 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
44 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
46 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
47 if test "x${srcdir-.}" != "x."; then
48 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
51 dnl Unique-to-Samba variables we'll be playing with.
52 AC_SUBST(SAMBA_CPPFLAGS)
57 AC_SUBST(MODULE_EXPORTS)
63 AC_SUBST(RELRO_LDFLAGS)
65 AC_SUBST(INSTALLLIBCMD_SH)
66 AC_SUBST(INSTALLLIBCMD_A)
67 AC_SUBST(UNINSTALLLIBCMD_SH)
68 AC_SUBST(UNINSTALLLIBCMD_A)
70 AC_SUBST(INSTALL_LIBWBCLIENT)
71 AC_SUBST(UNINSTALL_LIBWBCLIENT)
72 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
73 AC_SUBST(LIBWBCLIENT_SHARED)
74 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
75 AC_SUBST(LIBWBCLIENT_STATIC)
76 AC_SUBST(LIBWBCLIENT_SOVER)
78 AC_SUBST(LIBWBCLIENT_LIBS)
80 AC_SUBST(LIBSAMBAUTIL_SHARED)
92 AC_SUBST(INSTALL_PAM_MODULES)
93 AC_SUBST(UNINSTALL_PAM_MODULES)
95 AC_SUBST(EXTRA_BIN_PROGS)
96 AC_SUBST(CIFSMOUNT_PROGS)
97 AC_SUBST(INSTALL_CIFSMOUNT)
98 AC_SUBST(UNINSTALL_CIFSMOUNT)
99 AC_SUBST(CIFSUMOUNT_PROGS)
100 AC_SUBST(INSTALL_CIFSUMOUNT)
101 AC_SUBST(UNINSTALL_CIFSUMOUNT)
102 AC_SUBST(CIFSUPCALL_PROGS)
103 AC_SUBST(INSTALL_CIFSUPCALL)
104 AC_SUBST(UNINSTALL_CIFSUPCALL)
105 AC_SUBST(EXTRA_SBIN_PROGS)
106 AC_SUBST(EXTRA_ALL_TARGETS)
107 AC_SUBST(CONFIG_LIBS)
110 # compile with optimization and without debugging by default, but
111 # allow people to set their own preference.
112 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
113 # if it has no value. This prevent *very* large debug binaries from occurring
115 if test "x$debug" = "xyes" ; then
116 CFLAGS="${CFLAGS} -g"
118 if test "x$CFLAGS" = x; then
122 m4_include(../lib/socket_wrapper/config.m4)
123 m4_include(../lib/nss_wrapper/config.m4)
124 m4_include(../lib/util/time.m4)
126 m4_include(m4/swat.m4)
128 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
130 # Probe the gcc version for extra CFLAGS. We always stash these in
131 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
132 # Makefile edit, avoiding the need to re-run configure.
133 if test x"$ac_cv_prog_gcc" = x"yes" ; then
134 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
135 # Add -Wdeclaration-after-statement if compiler supports it
137 [that the C compiler understands -Wdeclaration-after-statement],
138 samba_cv_HAVE_Wdeclaration_after_statement, [
143 }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
144 samba_cv_HAVE_Wdeclaration_after_statement=yes,
145 samba_cv_HAVE_Wdeclaration_after_statement=no,
146 samba_cv_HAVE_Wdeclaration_after_statement=cross)
149 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
150 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
153 #-Werror-implicit-function-declaration
155 [that the C compiler understands -Werror-implicit-function-declaration],
156 samba_cv_HAVE_Werror_implicit_function_declaration, [
161 }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
162 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
163 samba_cv_HAVE_Werror_implicit_function_declaration=no,
164 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
166 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
167 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
170 # krb5developer is like developer, except we don't get
171 # -Wstrict-prototypes.
172 if test x"$krb5_developer" != x"$yes" ; then
173 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
176 if test x"$picky_developer" = x"yes"; then
177 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
181 #################################################
182 # check for a shared memory profiling support
183 AC_MSG_CHECKING(whether to use profiling)
184 AC_ARG_WITH(profiling-data,
185 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
189 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
190 samba_cv_WITH_PROFILE=yes
194 samba_cv_WITH_PROFILE=no
200 dnl Checks for programs.
201 merged_build_possible=yes
206 m4_include(../m4/check_make.m4)
207 AC_SAMBA_GNU_MAKE([true], [true])
210 m4_include(../m4/check_perl.m4)
211 AC_SAMBA_PERL([true], [merged_build_possible=no])
213 AC_CHECK_TOOL(AR, ar)
215 dnl Check if we (actually our C compiler!) use GNU ld
218 dnl Certain versions of GNU ld the default is not to have the
219 dnl --allow-shlib-undefined flag defined. This causes a stackload of
220 dnl warnings when building modules.
221 if test "$ac_cv_prog_gnu_ld" = "yes"; then
222 ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>/dev/null | head -1`
223 AC_MSG_CHECKING(GNU ld release date)
225 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'`
227 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
228 if test -n "$ac_cv_gnu_ld_date"; then
229 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
230 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
232 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
233 ac_cv_gnu_ld_version_script=yes
236 AC_MSG_CHECKING(GNU ld release version)
238 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | awk '{print $NF}' | sed -n 's,\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
239 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
240 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
242 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
243 AC_MSG_CHECKING(GNU ld release version major)
244 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
245 AC_MSG_CHECKING(GNU ld release version minor)
246 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
247 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
248 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
250 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
251 ac_cv_gnu_ld_version_script=yes
256 dnl look for executable suffix
259 dnl Check if C compiler understands -c and -o at the same time
261 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
268 dnl Check if the C compiler understands -Werror (GNU)
269 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
274 }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
275 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
276 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
277 Werror_FLAGS="-Werror"
279 dnl Check if the C compiler understands -w2
280 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
285 }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
286 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
287 if test x"$samba_cv_HAVE_w2" = x"yes"; then
290 dnl Check if the C compiler understands -errwarn (Sun)
291 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
296 }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
297 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
298 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
299 Werror_FLAGS="-errwarn=%all"
301 dnl Check if the C compiler understands -qhalt (IBM)
302 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
307 }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
308 samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
309 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
310 Werror_FLAGS="-qhalt=w"
316 ############################################
317 # check if the compiler can handle negative enum values
318 # and don't truncate the values to INT_MAX
319 # a runtime test is needed here
321 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
325 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
327 enum negative_values v1 = NEGATIVE_VALUE;
328 unsigned v2 = NEGATIVE_VALUE;
330 if (v1 != 0xFFFFFFFF) {
331 printf("%u != 0xFFFFFFFF\n", v1);
334 if (v2 != 0xFFFFFFFF) {
335 printf("%u != 0xFFFFFFFF\n", v2);
342 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
343 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
344 AC_MSG_WARN([using --uint-enums for pidl])
345 PIDL_ARGS="$PIDL_ARGS --uint-enums"
348 dnl Figure out the flags to support named structure initializers
350 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
352 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
353 AC_MSG_CHECKING(uname -s)
354 AC_MSG_RESULT(${UNAME_S})
356 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
357 AC_MSG_CHECKING(uname -r)
358 AC_MSG_RESULT(${UNAME_R})
360 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
361 AC_MSG_CHECKING(uname -m)
362 AC_MSG_RESULT(${UNAME_M})
364 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
365 AC_MSG_CHECKING(uname -p)
366 AC_MSG_RESULT(${UNAME_P})
368 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
369 AC_MSG_CHECKING(uname -i)
370 AC_MSG_RESULT(${UNAME_I})
372 dnl Add #include for broken IRIX header files
375 #TODO add to libreplace
376 if test x"$ac_cv_prog_gcc" != x"yes" ; then
377 dnl Fix sensible defaults for MIPSPro compilers. The
378 dnl error numbers are valid for the 7.3 compilers,
379 dnl hopefully also valid for the 7.4 series.
381 dnl Bugzilla 3801. Force an error on warning 1035
382 dnl so we don't incorrectly detect stdint.h. This
383 dnl warning is emitted for #error directives.
384 CFLAGS="$CFLAGS -diag_error 1035"
385 dnl 1209: Controlling expression is constant
386 dnl 1174: Function foo declared but never referenced
387 dnl 3201: Parameter foo was never referenced
388 CFLAGS="$CFLAGS -woff 1209,1174,3201"
396 AC_SUBST(LDSHFLAGS_Z_DEFS)
398 AC_SUBST(LDSHFLAGS_Z_NODEFS)
400 dnl Add modules that have to be built by default here
401 dnl These have to be built static:
402 default_static_modules=""
403 default_static_modules="$default_static_modules pdb_smbpasswd"
404 default_static_modules="$default_static_modules pdb_tdbsam"
405 default_static_modules="$default_static_modules pdb_wbc_sam"
406 default_static_modules="$default_static_modules rpc_lsarpc"
407 default_static_modules="$default_static_modules rpc_samr"
408 default_static_modules="$default_static_modules rpc_winreg"
409 default_static_modules="$default_static_modules rpc_initshutdown"
410 default_static_modules="$default_static_modules rpc_dssetup"
411 default_static_modules="$default_static_modules rpc_wkssvc"
412 default_static_modules="$default_static_modules rpc_svcctl"
413 default_static_modules="$default_static_modules rpc_ntsvcs"
414 default_static_modules="$default_static_modules rpc_netlogon"
415 default_static_modules="$default_static_modules rpc_netdfs"
416 default_static_modules="$default_static_modules rpc_srvsvc"
417 default_static_modules="$default_static_modules rpc_spoolss"
418 default_static_modules="$default_static_modules rpc_eventlog"
419 default_static_modules="$default_static_modules auth_sam"
420 default_static_modules="$default_static_modules auth_unix"
421 default_static_modules="$default_static_modules auth_winbind"
422 default_static_modules="$default_static_modules auth_wbc"
423 default_static_modules="$default_static_modules auth_server"
424 default_static_modules="$default_static_modules auth_domain"
425 default_static_modules="$default_static_modules auth_builtin"
426 default_static_modules="$default_static_modules auth_netlogond"
427 default_static_modules="$default_static_modules vfs_default"
428 default_static_modules="$default_static_modules nss_info_template"
430 dnl These are preferably build shared, and static if dlopen() is not available
431 default_shared_modules=""
432 default_shared_modules="$default_shared_modules vfs_recycle"
433 default_shared_modules="$default_shared_modules vfs_audit"
434 default_shared_modules="$default_shared_modules vfs_extd_audit"
435 default_shared_modules="$default_shared_modules vfs_full_audit"
436 default_shared_modules="$default_shared_modules vfs_netatalk"
437 default_shared_modules="$default_shared_modules vfs_fake_perms"
438 default_shared_modules="$default_shared_modules vfs_default_quota"
439 default_shared_modules="$default_shared_modules vfs_readonly"
440 default_shared_modules="$default_shared_modules vfs_cap"
441 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
442 default_shared_modules="$default_shared_modules vfs_shadow_copy"
443 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
444 default_shared_modules="$default_shared_modules charset_CP850"
445 default_shared_modules="$default_shared_modules charset_CP437"
446 default_shared_modules="$default_shared_modules auth_script"
447 default_shared_modules="$default_shared_modules vfs_readahead"
448 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
449 default_shared_modules="$default_shared_modules vfs_streams_xattr"
450 default_shared_modules="$default_shared_modules vfs_streams_depot"
451 default_shared_modules="$default_shared_modules vfs_acl_xattr"
452 default_shared_modules="$default_shared_modules vfs_acl_tdb"
453 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
454 default_shared_modules="$default_shared_modules vfs_preopen"
455 default_shared_modules="$default_shared_modules vfs_catia"
456 default_shared_modules="$default_shared_modules vfs_scannedonly"
457 default_shared_modules="$default_shared_modules vfs_crossrename"
458 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
460 if test "x$developer" = xyes; then
461 default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
462 default_shared_modules="$default_shared_modules charset_weird perfcount_test"
466 # Config CPPFLAG settings for strange OS's that must be set
467 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
468 # case statement; its first reference must be unconditional.
473 # Defines needed for HPUX support.
474 # HPUX has bigcrypt but (sometimes?) doesn't use it for
475 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
479 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
485 # CRAY Unicos has broken const handling
487 AC_MSG_RESULT([disabling const])
488 CPPFLAGS="$CPPFLAGS -Dconst="
492 # AIX4.x doesn't even admit to having large
493 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
496 AC_MSG_RESULT([enabling large file support])
497 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
498 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
501 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
502 # to the existance of large files..
503 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
504 # recommendations on large file support, however it makes the
505 # compile work using gcc 2.7 and 2.8, whereas using the Sun
506 # recommendation makes the compile fail on gcc2.7. JRA.
508 # Solaris uses SYSV printing. Make sure to set that here. --jerry
511 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
513 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
514 AC_MSG_RESULT([no large file support])
517 AC_MSG_RESULT([enabling large file support])
518 if test "$ac_cv_prog_gcc" = yes; then
519 ${CC-cc} -v >conftest.c 2>&1
520 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
522 case "$ac_cv_gcc_compiler_version_number" in
523 *"gcc version 2.6"*|*"gcc version 2.7"*)
524 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
525 LDFLAGS="$LDFLAGS -lthread"
526 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
529 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
530 LDFLAGS="$LDFLAGS -lthread"
531 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
532 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
536 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
537 LDFLAGS="$LDFLAGS -lthread"
538 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
539 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
545 # IRIX uses SYSV printing. Make sure to set that here
548 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
550 *freebsd*|*dragonfly*)
551 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
554 # VOS may need to have POSIX support and System V compatibility enabled.
561 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
562 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
566 *-D_SYSV*|*-D_SVID_SOURCE*)
569 CPPFLAGS="$CPPFLAGS -D_SYSV"
570 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
574 # Tests needed for SINIX large file support.
577 if test $host = mips-sni-sysv4 ; then
578 AC_MSG_CHECKING([for LFS support])
579 old_CPPFLAGS="$CPPFLAGS"
580 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
584 #if _LFS64_LARGEFILE == 1
589 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
590 CPPFLAGS="$old_CPPFLAGS"
591 if test x$SINIX_LFS_SUPPORT = xyes ; then
592 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
593 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
594 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
595 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
596 LIBS="`getconf LFS64_LIBS` $LIBS"
598 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
602 # Systems with LFS support.
604 gnu* | k*bsd*-gnu | kopensolaris*-gnu)
605 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
606 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
607 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
608 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
611 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
614 AC_MSG_CHECKING([for LFS support])
615 old_CPPFLAGS="$CPPFLAGS"
616 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
619 #include <sys/utsname.h>
623 #if _LFS64_LARGEFILE == 1
628 /* Ensure this is glibc 2.2 or higher */
629 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
630 int libc_major = __GLIBC__;
631 int libc_minor = __GLIBC_MINOR__;
639 /* Ensure this is kernel 2.4 or higher */
642 release = strdup(uts.release);
643 major = atoi(strsep(&release, "."));
644 minor = atoi(strsep(&release, "."));
646 if (major > 2 || (major == 2 && minor > 3))
653 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
654 CPPFLAGS="$old_CPPFLAGS"
655 if test x$LINUX_LFS_SUPPORT = xyes ; then
656 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
657 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
658 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
659 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
661 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
665 # MacOS X is the *only* system that uses compose character in utf8. This
666 # is so horribly broken....
669 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
671 # Add a system specific charset module.
672 default_shared_modules="$default_shared_modules charset_macosxfs"
676 AC_MSG_CHECKING([for LFS support])
677 old_CPPFLAGS="$CPPFLAGS"
678 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
682 #if _LFS64_LARGEFILE == 1
687 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
688 CPPFLAGS="$old_CPPFLAGS"
689 if test x$GLIBC_LFS_SUPPORT = xyes ; then
690 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
691 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
692 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
694 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
697 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
698 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
703 SAVE_CPPFLAGS="${CPPFLAGS}"
704 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
706 AC_LIBREPLACE_BROKEN_CHECKS
707 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
708 AC_LIBREPLACE_NETWORK_CHECKS
710 CPPFLAGS="${SAVE_CPPFLAGS}"
712 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
714 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
715 AC_SUBST(LIBREPLACE_OBJS)
717 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
718 AC_SUBST(LIBREPLACE_LIBS)
721 # add -ldl to the global LIBS
722 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
723 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
726 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
727 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
728 AC_CHECK_HEADERS(limits.h float.h libintl.h)
729 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
730 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)
731 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
732 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
733 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
734 AC_CHECK_HEADERS(sys/sysmacros.h)
735 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
736 AC_CHECK_HEADERS(langinfo.h locale.h)
737 AC_CHECK_HEADERS(xfs/libxfs.h)
738 AC_CHECK_HEADERS(netgroup.h)
740 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
746 ## These fail to compile on IRIX so just check for their presence
747 AC_CHECK_HEADERS(sys/mode.h,,,)
749 # Look for Darwin headers
750 old_CPPFLAGS="$CPPFLAGS"
751 CPPFLAGS="-Iinclude $CPPFLAGS"
752 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
753 CPPFLAGS="$old_CPPFLAGS"
755 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
756 # subdirectory of headers.
757 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
760 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
761 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
765 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
766 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
767 if test x"$ac_cv_header_shadow_h" = x"yes"; then
768 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
772 AC_CHECK_HEADERS(shadow.h)
773 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
774 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
776 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
777 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
779 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
781 # For experimental utmp support (lastlog on some BSD-like systems)
782 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
784 AC_CHECK_SIZEOF(int,cross)
785 AC_CHECK_SIZEOF(long,cross)
786 AC_CHECK_SIZEOF(long long,cross)
787 AC_CHECK_SIZEOF(short,cross)
802 AC_CHECK_TYPE(ssize_t, int)
803 AC_CHECK_TYPE(wchar_t, unsigned short)
805 ############################################
806 # for cups support we need libcups, and a handful of header files
809 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
811 if test x$enable_cups != xno; then
812 AC_PATH_PROG(CUPS_CONFIG, cups-config)
814 if test "x$CUPS_CONFIG" != x; then
816 ac_save_LDFLAGS=$LDFLAGS
817 ac_save_PRINT_LIBS=$PRINT_LIBS
818 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
820 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
821 x"$ac_cv_header_cups_language_h" = xyes; then
822 # try linking with -lcups alone first. That should work unless libcups is
823 # underlinked. With cups-config --libs we pull in unwanted and unneeded
824 # dendencies including thread libraries - use cups-config only if really
826 AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
827 [PRINT_LIBS"$ac_save_PRINT_LIBS -lcups"],
828 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
829 PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
831 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
832 samba_cv_HAVE_CUPS=yes
833 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
835 AC_MSG_WARN([cups-config around but cups-devel not installed])
836 CFLAGS=$ac_save_CFLAGS
837 LDFLAGS=$ac_save_LDFLAGS
838 PRINT_LIBS=$ac_save_PRINT_LIBS
841 elif test x"$enable_cups" = x"yes"; then
842 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
846 AC_ARG_ENABLE(iprint,
847 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
849 if test x$enable_iprint != xno; then
850 if test x"$samba_cv_HAVE_CUPS" = xyes; then
851 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
852 elif test x"$enable_iprint" = x"yes"; then
853 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
857 ############################################
858 # check if the compiler will optimize out function calls
859 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
864 this_function_does_not_exist();
870 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
871 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
872 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
875 #############################################
876 # check for fd passing struct via msg_control
877 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
879 #include <sys/types.h>
882 #include <sys/socket.h>
883 #include <sys/un.h>],
888 char control[CMSG_SPACE(sizeof(int))];
890 msg.msg_control = control_un.control;
891 msg.msg_controllen = sizeof(control_un.control);
893 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
894 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
895 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
896 [If we can use msg_control for passing file descriptors])
899 #############################################
900 # check for fd passing struct via msg_acctrights
901 AC_CACHE_CHECK([for fd passing via msg_acctrights],
902 samba_cv_msghdr_msg_acctrights, [
904 #include <sys/types.h>
907 #include <sys/socket.h>
908 #include <sys/un.h>],
912 msg.msg_acctrights = (caddr_t) &fd;
913 msg.msg_acctrightslen = sizeof(fd);
915 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
916 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
917 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
918 [If we can use msg_acctrights for passing file descriptors])
921 AC_CHECK_FUNCS(dirfd)
922 if test x"$ac_cv_func_dirfd" = x"yes"; then
923 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
926 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
928 #include <sys/types.h>
933 #include <signal.h>],[struct sigevent s;],
934 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
935 if test x"$samba_cv_struct_sigevent" = x"yes"; then
936 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
937 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
938 [#include <signal.h>])
941 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
943 #include <sys/types.h>
948 #if TIME_WITH_SYS_TIME
949 # include <sys/time.h>
953 # include <sys/time.h>
958 ],[struct timespec ts;],
959 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
960 if test x"$samba_cv_struct_timespec" = x"yes"; then
961 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
964 # and glibc has setresuid under linux but the function does
965 # nothing until kernel 2.1.44! very dumb.
966 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
967 AC_TRY_RUN([#include <errno.h>
968 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
969 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
970 if test x"$samba_cv_have_setresuid" = x"yes"; then
971 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
974 # Do the same check for setresguid...
976 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
977 AC_TRY_RUN([#include <unistd.h>
979 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
980 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
981 if test x"$samba_cv_have_setresgid" = x"yes"; then
982 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
987 ###############################################
988 # Readline included by default unless explicitly asked not to
989 test "${with_readline+set}" != "set" && with_readline=yes
991 # test for where we get readline() from
992 AC_MSG_CHECKING(whether to use readline)
993 AC_ARG_WITH(readline,
994 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
995 [ case "$with_readline" in
999 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1000 AC_CHECK_HEADERS(readline/history.h)
1002 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1003 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1004 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1006 AC_CHECK_LIB(readline, rl_callback_handler_install,
1007 [TERMLIBS="-lreadline $TERMLIBS"
1008 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1009 break], [TERMLIBS=], $TERMLIBS)])
1017 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1018 # alternate readline path
1020 _cppflags=${CPPFLAGS}
1022 # Add additional search path
1023 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1024 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1026 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1027 AC_CHECK_HEADERS(readline/history.h)
1029 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1030 for termlib in ncurses curses termcap terminfo termlib; do
1031 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1033 AC_CHECK_LIB(readline, rl_callback_handler_install,
1034 [TERMLDFLAGS="-L$with_readline/lib"
1035 TERMCPPFLAGS="-I$with_readline/include"
1036 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1037 TERMLIBS="-lreadline $TERMLIBS"
1038 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1039 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1047 AC_SUBST(TERMLDFLAGS)
1049 # The readline API changed slightly from readline3 to readline4, so
1050 # code will generate warnings on one of them unless we have a few
1052 AC_CHECK_LIB(readline, rl_completion_matches,
1053 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1054 [Do we have rl_completion_matches?])],
1058 # not all readline libs have rl_event_hook or history_list
1059 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1060 AC_CHECK_LIB(readline, history_list,
1061 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1065 ###############################################
1066 # test for where we get yp_get_default_domain() from
1067 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1068 AC_CHECK_FUNCS(yp_get_default_domain)
1070 # Check if we have execl, if not we need to compile smbrun.
1071 AC_CHECK_FUNCS(execl)
1072 if test x"$ac_cv_func_execl" = x"no"; then
1073 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1076 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1077 AC_CHECK_FUNCS(strtol)
1078 AC_CHECK_FUNCS(strchr chflags)
1079 AC_CHECK_FUNCS(getrlimit fsync setpgid)
1080 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
1081 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1082 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1083 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1084 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1085 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1086 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1087 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1088 AC_CHECK_FUNCS(getpwent_r)
1089 AC_CHECK_FUNCS(getdents64)
1090 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1091 AC_CHECK_FUNCS(syslog vsyslog timegm)
1092 AC_CHECK_FUNCS(setlocale nl_langinfo)
1093 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1094 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1095 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1096 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1097 AC_CHECK_HEADERS(sys/mman.h)
1098 # setbuffer, shmget, shm_open are needed for smbtorture
1099 AC_CHECK_FUNCS(shmget shm_open)
1100 AC_CHECK_FUNCS(gettext dgettext)
1101 AC_CHECK_FUNCS(bindtextdomain textdomain)
1102 AC_CHECK_FUNCS(strupr)
1104 # Find a method of generating a stack trace
1105 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1106 # libexecinfo provides backtrace_symbols on FreeBSD
1107 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1108 AC_CHECK_FUNCS(backtrace_symbols)
1109 AC_CHECK_LIB(exc, trace_back_stack)
1111 # check for sysctlbyname for BSD systems
1112 AC_CHECK_FUNCS(sysctlbyname)
1114 #################################################
1115 # Check to see if core dump directory is defined in linux
1116 # with /proc/sys/kernel/core_pattern
1118 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
1119 AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
1120 [Whether Linux kernel uses core_pattern for core files]),
1123 #############################
1124 # check if building with gpfs
1125 AC_CHECK_HEADERS(gpfs_gpl.h)
1126 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1127 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1128 default_shared_modules="$default_shared_modules vfs_gpfs"
1131 #############################################
1132 # check if building on Isilon OneFS
1133 printf "%s" "checking for Isilon OneFS... "
1135 LIBS="$LIBS -lisi_version"
1136 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1137 [get_isilon_copyright()],
1138 samba_cv_HAVE_ONEFS=yes,
1139 samba_cv_HAVE_ONEFS=no)
1140 echo $samba_cv_HAVE_ONEFS
1141 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1142 AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1143 default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1144 default_static_modules="$default_static_modules"
1145 ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1146 # Need to also add general libs for oplocks support
1147 save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1149 AC_SUBST(ONEFS_LIBS)
1152 # Note that all the libunwind symbols in the API are defined to internal
1153 # platform-specific version, so we must include libunwind.h before checking
1155 AC_MSG_CHECKING([for libunwind])
1158 UNWIND_ARCH="unknown"
1159 if test x"$UNAME_I" != x"unknown"; then
1160 UNWIND_ARCH="$UNAME_I"
1161 elif test x"$UNAME_M" != x"unknown"; then
1162 UNWIND_ARCH="$UNAME_M"
1163 elif test x"$UNAME_P" != x"unknown"; then
1164 UNWIND_ARCH="$UNAME_P"
1167 case "$UNWIND_ARCH" in
1169 # This probably won't link without
1170 # the platform-specific libunwind.
1171 LIBS="$LIBS -lunwind"
1174 # Add the platform-specific libunwind module.
1175 LIBS="$LIBS -lunwind -lunwind-x86"
1178 # Add the platform-specific libunwind module.
1179 # based on uname -i, uname -m or uname -p
1180 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1186 #ifdef HAVE_LIBUNWIND_H
1187 #include <libunwind.h>
1191 unw_context_t ctx; unw_cursor_t cur;
1192 char buf[256]; unw_word_t off;
1193 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1194 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1198 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1200 # If we have libunwind, test whether we also have libunwind-ptrace
1201 # which would let us unwind arbitrary processes.
1203 AC_CHECK_HEADERS(libunwind-ptrace.h)
1204 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1206 LIBUNWIND_PTRACE="-lunwind-ptrace";
1207 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1208 [Whether libunwind-ptrace.a is available.])
1210 [ LIBUNWIND_PTRACE="" ])
1219 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1220 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1221 AC_CHECK_HEADERS(sys/ptrace.h)
1222 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1225 #if HAVE_SYS_TYPES_H
1226 #include <sys/types.h>
1228 #if HAVE_SYS_PTRACE_H
1229 #include <sys/ptrace.h>
1233 pid_t me = (pid_t)-1;
1234 ptrace(PTRACE_ATTACH, me, 0, 0);
1235 ptrace(PTRACE_DETACH, me, 0, 0);
1240 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1241 [Whether the Linux ptrace(2) interface is available.])
1249 AC_SUBST(LIBUNWIND_PTRACE)
1251 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1252 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1253 AC_CHECK_FUNCS(__getcwd _getcwd)
1254 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1255 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1256 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1257 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1258 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1259 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1260 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1261 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1262 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1263 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1264 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1265 AC_CHECK_FUNCS(prctl)
1268 #ifdef HAVE_SYS_PRCTL_H
1269 #include <sys/prctl.h>
1272 [int i; i = prtcl(0); ],
1273 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1279 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1280 # glibc <= 2.3.2 has a broken getgrouplist
1281 AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1283 #include <sys/utsname.h>
1285 /* glibc up to 2.3 has a broken getgrouplist */
1286 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1287 int libc_major = __GLIBC__;
1288 int libc_minor = __GLIBC_MINOR__;
1292 if ((libc_major == 2) && (libc_minor <= 3))
1297 ], [samba_cv_linux_getgrouplist_ok=yes],
1298 [samba_cv_linux_getgrouplist_ok=no],
1299 [samba_cv_linux_getgrouplist_ok=cross])])
1300 if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1301 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1305 AC_CHECK_FUNCS(getgrouplist)
1310 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1313 if test x$ac_cv_func_stat64 = xno ; then
1314 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1316 #if defined(HAVE_UNISTD_H)
1319 #include <sys/stat.h>
1320 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1321 AC_MSG_RESULT([$ac_cv_func_stat64])
1322 if test x$ac_cv_func_stat64 = xyes ; then
1323 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1327 if test x$ac_cv_func_lstat64 = xno ; then
1328 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1330 #if defined(HAVE_UNISTD_H)
1333 #include <sys/stat.h>
1334 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1335 AC_MSG_RESULT([$ac_cv_func_lstat64])
1336 if test x$ac_cv_func_lstat64 = xyes ; then
1337 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1341 if test x$ac_cv_func_fstat64 = xno ; then
1342 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1344 #if defined(HAVE_UNISTD_H)
1347 #include <sys/stat.h>
1348 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1349 AC_MSG_RESULT([$ac_cv_func_fstat64])
1350 if test x$ac_cv_func_fstat64 = xyes ; then
1351 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1355 #################################################
1356 # Check whether struct stat has timestamps with sub-second resolution.
1359 samba_cv_stat_hires=no
1360 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1361 [samba_cv_stat_hires=yes])
1362 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1363 [samba_cv_stat_hires=yes])
1364 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1365 [samba_cv_stat_hires=yes])
1366 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1367 [samba_cv_stat_hires=yes])
1368 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1369 [samba_cv_stat_hires=yes])
1371 if test x"$samba_cv_stat_hires" = x"yes" ; then
1372 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1373 [whether struct stat has sub-second timestamps])
1376 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1377 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1378 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1381 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1384 [#include <sys/stat.h>],
1386 int a = UF_DOS_ARCHIVE;
1387 int h = UF_DOS_HIDDEN;
1389 int s = UF_DOS_SYSTEM;
1390 int i = UF_DOS_NOINDEX;
1391 int f = UF_DOS_FLAGS;
1393 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1396 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1397 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1400 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1401 samba_cv_function_attribute_destructor,
1405 __attribute__((destructor))
1406 static void cleanup(void) { }
1408 samba_cv_function_attribute_destructor=yes)
1411 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1412 AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1413 [whether we can compile with __attribute__((destructor))])
1416 #####################################
1417 # needed for SRV lookups
1418 AC_CHECK_LIB(resolv, dn_expand)
1419 AC_CHECK_LIB(resolv, _dn_expand)
1420 AC_CHECK_LIB(resolv, __dn_expand)
1423 # Check for the functions putprpwnam, set_auth_parameters,
1424 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1425 # Needed for OSF1 and HPUX.
1428 AC_LIBTESTFUNC(security, putprpwnam)
1429 AC_LIBTESTFUNC(sec, putprpwnam)
1431 AC_LIBTESTFUNC(security, set_auth_parameters)
1432 AC_LIBTESTFUNC(sec, set_auth_parameters)
1434 # UnixWare 7.x has its getspnam in -lgen
1435 AC_LIBTESTFUNC(gen, getspnam)
1437 AC_LIBTESTFUNC(security, getspnam)
1438 AC_LIBTESTFUNC(sec, getspnam)
1440 AC_LIBTESTFUNC(security, bigcrypt)
1441 AC_LIBTESTFUNC(sec, bigcrypt)
1443 AC_LIBTESTFUNC(security, getprpwnam)
1444 AC_LIBTESTFUNC(sec, getprpwnam)
1446 AC_CHECK_FUNCS(strsignal)
1448 ############################################
1449 # Check for EA implementations
1452 AC_SEARCH_LIBS(getproplist, [proplist])
1453 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1454 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1455 AC_CHECK_FUNCS(sizeof_proplist_entry)
1457 *freebsd4* | *dragonfly* )
1458 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1461 AC_CHECK_FUNCS(attropen)
1464 AC_SEARCH_LIBS(getxattr, [attr])
1465 AC_CHECK_FUNCS(getxattr,[
1466 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1468 AC_CHECK_FUNCS(getea,[
1469 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1471 AC_CHECK_FUNCS(attr_get,[
1472 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1474 AC_CHECK_FUNCS(extattr_delete_file,[
1475 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)
1480 ########################################################
1481 # Do xattr functions take additional options like on Darwin?
1482 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1483 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1485 LIBS="$LIBS $ACL_LIBS"
1487 #include <sys/types.h>
1488 #if HAVE_ATTR_XATTR_H
1489 #include <attr/xattr.h>
1490 #elif HAVE_SYS_XATTR_H
1491 #include <sys/xattr.h>
1494 getxattr(0, 0, 0, 0, 0, 0);
1496 [smb_attr_cv_xattr_add_opt=yes],
1497 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1499 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1500 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1510 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1512 if test "x$enable_pie" != xno
1514 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1516 cat > conftest.c <<EOF
1518 int main () { return 0;}
1520 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1528 if test x"${samba_cv_fpie}" = x"yes"
1537 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1539 if test "x$enable_relro" != xno
1541 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1543 cat > conftest.c <<EOF
1545 main () { return 0;}
1547 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1555 if test x"${samba_cv_relro}" = x"yes"
1557 RELRO_LDFLAGS="-Wl,-z,relro"
1565 # Assume non-shared by default and override below
1568 # these are the defaults, good for lots of systems
1573 SHLD="\${CC} \${CFLAGS}"
1574 PICFLAG="${PIE_CFLAGS}"
1578 # this bit needs to be modified for each OS that supports share libs
1579 # You need to specify how to create a shared library and
1580 # how to compile C code to produce PIC object files
1582 AC_MSG_CHECKING([ability to build shared libraries])
1584 # and these are for particular systems
1586 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1588 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1589 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1592 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1593 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1594 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1596 DYNEXP="-Wl,--export-dynamic"
1598 SONAMEFLAG="-Wl,-soname="
1599 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1601 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1603 if test "${GCC}" = "yes"; then
1605 SONAMEFLAG="-Wl,-soname="
1606 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1614 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1615 SONAMEFLAG="-Wl,-soname="
1617 SONAMEFLAG="-Wl,-h,"
1619 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1620 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1622 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1625 SONAMEFLAG="-Wl,-h,"
1626 PICFLAG="-KPIC" # Is this correct for SunOS
1627 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1628 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1630 *netbsd* | *freebsd* | *dragonfly* )
1633 DYNEXP="-Wl,--export-dynamic"
1634 SONAMEFLAG="-Wl,-soname,"
1635 PICFLAG="-fPIC -DPIC"
1636 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1637 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1639 *openbsd*) BLDSHARED="true"
1641 DYNEXP="-Wl,-Bdynamic"
1642 SONAMEFLAG="-Wl,-soname,"
1644 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1645 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1647 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1649 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1653 LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1654 SONAMEFLAG="-Wl,-soname,"
1655 if test "${GCC}" = "yes"; then
1660 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1662 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1664 # use expfull to export underscored symbols
1665 # add rtl to remove /lib/crt0.o warning
1666 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1667 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1669 # as AIX code is always position independent...
1670 # .po will just create compile warnings, use po.o:
1671 if test "${GCC}" != "yes"; then
1672 ## for funky AIX compiler using strncpy()
1673 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1676 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1677 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1678 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1680 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1681 # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1682 # 64bit build using HP's cc with CFLAGS="+DD64"
1683 # hppa: 64bit build unsupported by gcc
1684 # 64bit build using HP's cc with CFLAGS="+DA2.0w"
1685 # HP-UX 11.00 ld needs PHSS_33034
1687 if test "${GCC}" = "yes"; then
1693 # "Uses depth-first symbol resolution"
1694 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1695 if test "$host_cpu" != "ia64"; then
1696 # "don't store literals in read-only memory" (?):
1697 PICFLAG="$PICFLAG +ESnolit"
1700 if test "$host_cpu" = "ia64"; then
1702 # TODO: does the linker find the right 32/64 bit version of the libs? :
1703 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1706 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1708 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1709 SONAMEFLAG="-Wl,-soname="
1711 SONAMEFLAG="-Wl,+h,"
1713 # PIE/PIC flags at link time are required on HP-UX because
1714 # linking requires a temporary source file, which is being
1715 # compiled with the indicated flags - which need to contain
1716 # PIC flags when we don't support PIE flags:
1717 if test "$PIE_LDFLAGS" = "" ; then
1718 PIE_LDFLAGS=\${PICFLAG}
1720 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1721 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1723 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1726 SONAMEFLAG="-Wl,-soname,"
1728 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1729 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1730 for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1731 saved_ldflags="$LDFLAGS"
1732 AC_MSG_CHECKING([if $flags works])
1733 LDFLAGS="$flags $saved_ldflags"
1735 [AC_MSG_RESULT([yes])
1736 LDSHFLAGS_Z_NODEFS=$flags],
1737 AC_MSG_RESULT([no]))
1738 LDFLAGS="$saved_ldflags"
1739 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1742 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1743 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1745 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1748 SONAMEFLAG="-Wl,-soname,"
1750 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1752 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1753 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1755 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1756 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1758 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1760 *-univel-*) if [ test "$GCC" != yes ]; then
1761 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1766 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1768 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1771 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1772 if [ test "$GCC" != yes ]; then
1773 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1776 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1778 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1783 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1785 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1786 CFLAGS="$CFLAGS -fno-common"
1789 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1791 # Since gcc doesn't fail on unrecognised options, the
1792 # PIE test incorrectly succeeds. Darwin gcc does not
1793 # actually support the PIE stuff.
1796 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1800 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804 if test "$enable_shared" != "yes"; then
1808 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1809 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1812 if test x"$BLDSHARED" = x"true" ; then
1813 LDFLAGS="$LDFLAGS -L./bin"
1816 AC_MSG_RESULT($BLDSHARED)
1818 if test x"$enable_developer" = x"yes" ; then
1819 default_as_needed=auto
1821 default_as_needed=no
1823 AC_ARG_ENABLE(as-needed,
1824 AS_HELP_STRING([--enable-as-needed],
1825 [Turn on as-needed support if available (default=no)]),
1826 [enable_as_needed=$enableval],
1827 [enable_as_needed=$default_as_needed])
1828 if test "x$enable_as_needed" != xno; then
1829 saved_before_as_needed_ldflags="$LDFLAGS"
1830 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1831 saved_ldflags="$LDFLAGS"
1832 AC_MSG_CHECKING([if $flags works])
1833 LDFLAGS="$flags $saved_ldflags"
1835 [AC_MSG_RESULT([yes])
1836 LD_AS_NEEDED_FLAG=$flags
1837 ld_as_needed_flag_found=yes],
1838 AC_MSG_RESULT([no]))
1839 LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1840 test x"$ld_as_needed_flag_found" = xyes && break
1844 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1845 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1846 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1847 cat > conftest_shb.c <<END
1850 cat > conftest_sha.c <<END
1856 cat > conftest.c <<END
1865 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1866 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1867 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1868 AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1869 AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1870 AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1871 if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1875 ld_as_needed_flag_found=no
1876 LDFLAGS="$saved_before_as_needed_ldflags"
1877 AC_MSG_RESULT([yes])
1879 rm conftest* libconftest*
1882 # check if we have to disable LD_AS_NEEDED_FLAG:
1883 # On some systems for a veriety of reasons linking with
1884 # -Wl,--as-needed -lreadline -lncurses fails
1885 # we have to retest, if these combination is detected before.
1888 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1889 if test x$ld_as_needed_flag_found = xyes ; then
1890 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1891 # try if check no fails
1893 LIBS="$LIBS $TERMLIBS"
1894 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1901 # for historical reasons almost all linkers don't complain about unresolved
1902 # symbols in shared libs. Except for the internal samba modules we want to get
1903 # errors when we produce a shared lib with unresolved symbols. On some
1904 # platforms unresolved symbols might be intended, so we might have to add
1905 # platform specific exceptions here.
1907 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1908 saved_ldflags="$LDFLAGS"
1909 AC_MSG_CHECKING([if $flags works])
1910 LDFLAGS="$flags $saved_ldflags"
1912 [AC_MSG_RESULT([yes])
1913 LDSHFLAGS_Z_DEFS=$flags
1914 ldshflags_z_defs_found=yes],
1915 AC_MSG_RESULT([no]))
1916 LDFLAGS=$saved_ldflags
1917 test x"$ldshflags_z_defs_found" = xyes && break
1920 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1921 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1922 AC_MSG_CHECKING([LDFLAGS])
1923 AC_MSG_RESULT([$LDFLAGS])
1924 AC_MSG_CHECKING([DYNEXP])
1925 AC_MSG_RESULT([$DYNEXP])
1927 #######################################################
1928 # test whether building a shared library actually works
1929 if test $BLDSHARED = true; then
1931 AC_MSG_CHECKING([SHLD])
1932 AC_MSG_RESULT([$SHLD])
1933 AC_MSG_CHECKING([LDSHFLAGS])
1934 AC_MSG_RESULT([$LDSHFLAGS])
1936 AC_MSG_CHECKING([SHLIBEXT])
1937 AC_MSG_RESULT([$SHLIBEXT])
1938 AC_MSG_CHECKING([SONAMEFLAG])
1939 AC_MSG_RESULT([$SONAMEFLAG])
1941 AC_MSG_CHECKING([PICFLAG])
1942 AC_MSG_RESULT([$PICFLAG])
1944 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1945 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1947 AC_CACHE_CHECK([whether building shared libraries actually works],
1948 [ac_cv_shlib_works],[
1949 # try building a trivial shared library
1950 ac_cv_shlib_works=no
1951 # The $SHLD and $LDSHFLAGS variables may contain references to other
1952 # variables so they need to be eval'ed.
1953 if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1955 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1956 TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1957 if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1959 ac_cv_shlib_works=yes
1962 rm -f "shlib.$SHLIBEXT" shlib.o
1965 if test $ac_cv_shlib_works = no; then
1970 if test x"$BLDSHARED" != x"true"; then
1971 LDSHFLAGS="shared-libraries-disabled"
1972 SONAMEFLAG="shared-libraries-disabled"
1973 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1974 SHLD="shared-libraries-disabled"
1975 PICFLAG="${PIE_CFLAGS}"
1976 SHLIBEXT="shared_libraries_disabled"
1977 merged_build_possible=no
1980 AC_MSG_CHECKING([used PICFLAG])
1981 AC_MSG_RESULT([$PICFLAG])
1983 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1987 ###########################################################
1989 # Configuration of subsystems / libraries
1991 ###########################################################
1995 UNINSTALLLIBCMD_SH=:
1998 if test $BLDSHARED = true; then
1999 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
2000 UNINSTALLLIBCMD_SH="rm -f"
2002 if test $enable_static = yes; then
2003 INSTALLLIBCMD_A="\$(INSTALLCMD)"
2004 UNINSTALLLIBCMD_A="rm -f"
2007 #################################################
2008 # --disable-shared-libs
2009 # can be used to disable the internal use of shared libs altogether
2010 # (this only has an effect when building shared libs is enabled)
2015 AC_MSG_CHECKING(whether to use shared libraries internally)
2016 AC_ARG_ENABLE([shared-libs],
2017 AS_HELP_STRING([--enable-shared-libs],
2018 [Use shared libraries internally (default=yes)]),
2019 [enable_shared_libs=$enableval],
2020 [enable_shared_libs=yes])
2022 if test x"$enable_shared_libs" != x"no" ; then
2023 USESHARED=$BLDSHARED
2026 AC_MSG_RESULT([$USESHARED])
2028 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
2029 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
2032 #################################################
2033 # --with-static-libs=LIBS:
2034 # link (internal) libs dynamically or statically?
2036 # If a subsystem is built as a library then this controls whether they are
2037 # linked into Samba targets statically or dynamically:
2039 # * If we build the shared library at all, we link dynamically by default.
2041 # * We only link statically if we don't build shared or if the library
2042 # appears in the --with-static-libs configure option.
2045 # --with-static-libs=libtalloc makes use of libtalloc.a instead
2046 # of linking the dynamic variant with -ltalloc.
2048 # NOTE: This option only affects libraries that we do not only build
2049 # but that samba also links against as libraries (as opposed to linking
2050 # the plain object files. - This has to be configured in Makefile.in.
2051 # So in particular it does not harm to give invalid or unknown names here.
2054 AC_ARG_WITH([static-libs],
2055 [AS_HELP_STRING([--with-static-libs=LIBS],
2056 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
2057 [AS_IF([test $withval],
2058 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
2059 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
2060 eval LINK_$lib=STATIC
2066 # until we have organized other internal subsystems (as util, registry
2067 # and smbconf) into shared libraries, we CAN NOT link libnetapi
2068 # dynamically to samba programs.
2070 LINK_LIBNETAPI=STATIC
2072 LINK_LIBSMBCLIENT=STATIC
2075 # The library versions are hardcoded here
2076 # and filled into the LIBFOO_SOVER variable.
2078 # TODO: for talloc and tdb (at least), these should
2079 # be extracted from their respective source directories
2081 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
2082 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
2084 if test "x$enable_external_libtalloc" != xno
2086 PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
2087 [ enable_external_libtalloc=yes ],
2088 [ if test x$enable_external_libtalloc = xyes; then
2089 AC_MSG_ERROR([Unable to find libtalloc])
2091 enable_external_libtalloc=no
2096 if test "x$enable_external_libtalloc" = xno
2098 m4_include(../lib/talloc/libtalloc.m4)
2099 LINK_LIBTALLOC=STATIC
2100 SMB_LIBRARY(talloc, 2)
2102 for obj in ${TALLOC_OBJ}; do
2103 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
2105 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
2106 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
2107 AC_SUBST(LIBTALLOC_OBJ0)
2109 TALLOCTORT="bin/talloctort\$(EXEEXT)"
2110 AC_SUBST(TALLOCTORT)
2114 AC_ARG_ENABLE(external_libtdb,
2115 [AS_HELP_STRING([--enable-external-libtdb],
2116 [Enable external tdb [default=auto]])],
2117 [ enable_external_libtalloc=$enableval ],
2118 [ enable_external_libtalloc=auto ])
2120 if test "x$enable_external_libtdb" != xno
2122 PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.2,
2123 [ enable_external_libtdb=yes ],
2125 if test x$enable_external_libtdb = xyes; then
2126 AC_MSG_ERROR([Unable to find libtdb])
2128 enable_external_libtdb=no
2133 AC_SUBST(LIBTDB_OBJ0)
2134 if test "x$enable_external_libtdb" = xno
2136 m4_include(../lib/tdb/libtdb.m4)
2140 LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
2141 for obj in ${TDB_OBJ}; do
2142 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2144 AC_SUBST(LIBTDB_OBJ0)
2145 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2146 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2148 TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2150 TDBDUMP="bin/tdbdump\$(EXEEXT)"
2152 TDBTOOL="bin/tdbtool\$(EXEEXT)"
2154 TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2155 AC_SUBST(TDBTORTURE)
2156 ac_cv_have_tdb_err_nesting=yes
2158 AC_TRY_COMPILE([#include "tdb.h"],
2159 [enum TDB_ERROR err = TDB_ERR_NESTING],
2160 ac_cv_have_tdb_err_nesting=yes,
2161 ac_cv_have_tdb_err_nesting=no)
2164 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2165 AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2168 SMB_LIBRARY(netapi, 0)
2169 SMB_LIBRARY(smbclient, 0)
2170 SMB_LIBRARY(smbsharemodes, 0)
2171 SMB_LIBRARY(addns, 0, no, [undefined API])
2177 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2178 AC_TRY_RUN([#include <stdio.h>
2179 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2180 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2181 if test x"$samba_cv_have_longlong" = x"yes"; then
2182 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2183 AC_CHECK_TYPE(intptr_t, unsigned long long)
2185 AC_CHECK_TYPE(intptr_t, unsigned long)
2189 # Check if the compiler supports the LL prefix on long long integers.
2192 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2193 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2194 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2195 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2196 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2200 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2201 AC_TRY_RUN([#include <time.h>
2202 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2203 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2204 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2205 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2208 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2209 AC_TRY_RUN([#include <stdio.h>
2210 #include <sys/stat.h>
2211 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2212 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2213 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2214 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2217 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2219 #if defined(HAVE_UNISTD_H)
2223 #include <sys/stat.h>
2224 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2225 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2226 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2227 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2230 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2232 #if defined(HAVE_UNISTD_H)
2236 #include <sys/stat.h>
2237 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2238 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2239 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2240 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2243 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2245 #if defined(HAVE_UNISTD_H)
2249 #include <sys/stat.h>
2250 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2251 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2252 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2253 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2256 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2258 #if defined(HAVE_UNISTD_H)
2262 #include <sys/stat.h>
2263 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2264 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2265 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2266 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2269 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2271 #if defined(HAVE_UNISTD_H)
2275 #include <sys/stat.h>
2276 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2277 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2278 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2279 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2282 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2284 #if defined(HAVE_UNISTD_H)
2287 #include <sys/types.h>
2288 #include <dirent.h>],
2290 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2291 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2292 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2295 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2297 #if defined(HAVE_UNISTD_H)
2300 #include <sys/types.h>
2301 #include <dirent.h>],
2302 [struct dirent64 de;],
2303 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2304 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2305 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2308 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2310 #if defined(HAVE_UNISTD_H)
2313 #include <sys/types.h>
2314 main() { dev_t dev; int i = major(dev); return 0; }],
2315 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2316 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2317 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2320 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2322 #if defined(HAVE_UNISTD_H)
2325 #include <sys/types.h>
2326 main() { dev_t dev; int i = minor(dev); return 0; }],
2327 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2328 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2329 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2332 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2334 #if defined(HAVE_UNISTD_H)
2337 #include <sys/types.h>
2338 main() { dev_t dev = makedev(1,2); return 0; }],
2339 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2340 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2341 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2344 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2345 AC_TRY_RUN([#include <stdio.h>
2346 main() { char c; c=250; exit((c > 0)?0:1); }],
2347 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2348 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2349 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2352 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2353 AC_TRY_COMPILE([#include <sys/types.h>
2355 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2356 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2357 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2358 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2361 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2362 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2363 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2364 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2365 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2369 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2371 # On some systems (eg. Linux) librt can pull in libpthread. We
2372 # don't want this to happen because libpthreads changes signal delivery
2373 # semantics in ways we are not prepared for. This breaks Linux oplocks
2374 # which rely on signals.
2376 AC_LIBTESTFUNC(rt, clock_gettime,
2378 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2379 [Whether clock_gettime is available])
2380 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2381 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2382 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2387 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2388 AC_TRY_RUN([#include <sys/types.h>
2390 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2391 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2392 di->d_name[0] == 0) exit(0); exit(1);} ],
2393 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2394 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2395 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2398 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2399 AC_TRY_COMPILE([#include <sys/types.h>
2400 #include <utime.h>],
2401 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2402 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2403 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2404 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2408 # Check utmp details, but only if our OS offers utmp.h
2409 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2410 dnl utmp and utmpx come in many flavours
2411 dnl We need to check for many of them
2412 dnl But we don't need to do each and every one, because our code uses
2413 dnl mostly just the utmp (not utmpx) fields.
2415 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2417 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2418 AC_TRY_COMPILE([#include <sys/types.h>
2420 [struct utmp ut; ut.ut_name[0] = 'a';],
2421 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2422 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2423 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2426 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2427 AC_TRY_COMPILE([#include <sys/types.h>
2429 [struct utmp ut; ut.ut_user[0] = 'a';],
2430 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2431 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2432 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2435 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2436 AC_TRY_COMPILE([#include <sys/types.h>
2438 [struct utmp ut; ut.ut_id[0] = 'a';],
2439 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2440 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2441 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2444 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2445 AC_TRY_COMPILE([#include <sys/types.h>
2447 [struct utmp ut; ut.ut_host[0] = 'a';],
2448 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2449 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2450 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2453 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2454 AC_TRY_COMPILE([#include <sys/types.h>
2456 [struct utmp ut; time_t t; ut.ut_time = t;],
2457 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2458 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2459 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2462 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2463 AC_TRY_COMPILE([#include <sys/types.h>
2465 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2466 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2467 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2468 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2471 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2472 AC_TRY_COMPILE([#include <sys/types.h>
2474 [struct utmp ut; ut.ut_type = 0;],
2475 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2476 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2477 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2480 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2481 AC_TRY_COMPILE([#include <sys/types.h>
2483 [struct utmp ut; ut.ut_pid = 0;],
2484 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2485 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2486 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2489 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2490 AC_TRY_COMPILE([#include <sys/types.h>
2492 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2493 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2494 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2495 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2498 dnl Look for the IPv6 varient by preference. Many systems have both.
2499 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2500 AC_TRY_COMPILE([#include <sys/types.h>
2502 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2503 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2504 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2505 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2508 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2509 AC_TRY_COMPILE([#include <sys/types.h>
2511 [struct utmp ut; ut.ut_addr = 0;],
2512 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2513 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2514 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2517 if test x$ac_cv_func_pututline = xyes ; then
2518 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2519 AC_TRY_COMPILE([#include <sys/types.h>
2521 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2522 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2523 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2524 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2528 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2529 AC_TRY_COMPILE([#include <sys/types.h>
2530 #include <utmpx.h>],
2531 [struct utmpx ux; ux.ut_syslen = 0;],
2532 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2533 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2534 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2541 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2542 AC_ARG_WITH(libiconv,
2543 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2545 if test "$withval" = "no" ; then
2546 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2548 if test "$withval" != "yes" ; then
2550 ICONV_LOOK_DIRS="$withval"
2555 for i in $ICONV_LOOK_DIRS ; do
2558 save_LDFLAGS="$LDFLAGS"
2559 save_CPPFLAGS="$CPPFLAGS"
2561 iconv_current_LIBS=""
2562 iconv_current_LDFLAGS=""
2563 iconv_current_CPPFLAGS=""
2568 # This is here to handle -withval stuff for --with-libiconv
2569 # Perhaps we should always add a -L
2570 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2572 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2573 # installation paths. This gets a little tricky since we might have iconv
2574 # in both libiconv and in libc. In this case the jm_ICONV test will always
2575 # succeed when the header is found. To counter this, make sure the
2576 # library directory is there and check the ABI directory first (which
2577 # should be harmless on other systems, but causes tons of linker warnings on
2578 # 64bit Ubuntu systems).
2579 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2580 # installed, I've decided to fix the linker warnings.
2582 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2583 for l in "lib" "lib32" "lib/hpux32"; do
2584 if test -d "$i/$l" ; then
2585 LDFLAGS="$save_LDFLAGS -L$i/$l"
2587 export LDFLAGS LIBS CPPFLAGS
2588 # Try to find iconv(3)
2590 if test x"$ICONV_FOUND" = "xyes" ; then
2597 if test x"$ICONV_FOUND" = "xyes" ; then
2598 iconv_current_LDFLAGS="-L$i/$libext"
2599 iconv_current_CPPFLAGS="-I$i/include"
2601 if test x"$jm_cv_lib_iconv" != x; then
2602 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2604 # We found iconv in libc.
2605 iconv_current_LIBS=""
2610 if test x"$ICONV_FOUND" = "xyes" ; then
2612 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2613 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2614 LIBS="$save_LIBS $iconv_current_LIBS"
2615 export LDFLAGS LIBS CPPFLAGS
2617 default_dos_charset=no
2618 default_display_charset=no
2619 default_unix_charset=no
2621 # check for default dos charset name
2622 for j in CP850 IBM850 ; do
2624 default_dos_charset="$ICONV_CHARSET"
2625 if test x"$default_dos_charset" = x"$j"; then
2630 # check for default display charset name
2631 for j in ASCII 646 ; do
2633 default_display_charset="$ICONV_CHARSET"
2634 if test x"$default_display_charset" = x"$j"; then
2639 # check for default unix charset name
2640 for j in UTF-8 UTF8 ; do
2642 default_unix_charset="$ICONV_CHARSET"
2643 if test x"$default_unix_charset" = x"$j"; then
2648 if test "$default_dos_charset" != "no" -a \
2649 "$default_dos_charset" != "cross" -a \
2650 "$default_display_charset" != "no" -a \
2651 "$default_display_charset" != "cross" -a \
2652 "$default_unix_charset" != "no" -a \
2653 "$default_unix_charset" != "cross"
2655 samba_cv_HAVE_NATIVE_ICONV=yes
2657 if test "$default_dos_charset" = "cross" -o \
2658 "$default_display_charset" = "cross" -o \
2659 "$default_unix_charset" = "cross"
2661 samba_cv_HAVE_NATIVE_ICONV=cross
2663 samba_cv_HAVE_NATIVE_ICONV=no
2667 # At this point, we have a libiconv candidate. We know that
2668 # we have the right headers and libraries, but we don't know
2669 # whether it does the conversions we want. We can't test this
2670 # because we are cross-compiling. This is not necessarily a big
2671 # deal, since we can't guarantee that the results we get now will
2672 # match the results we get at runtime anyway.
2673 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2674 default_dos_charset="CP850"
2675 default_display_charset="ASCII"
2676 default_unix_charset="UTF-8"
2677 samba_cv_HAVE_NATIVE_ICONV=yes
2678 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2679 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2682 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2684 CPPFLAGS=$save_CPPFLAGS
2685 LDFLAGS=$save_LDFLAGS
2688 if test x"$iconv_current_LIBS" != x; then
2689 LIBS="$LIBS $iconv_current_LIBS"
2692 # Add the flags we need to CPPFLAGS and LDFLAGS
2693 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2694 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2696 # Turn the #defines into string literals
2697 default_dos_charset="\"$default_dos_charset\""
2698 default_display_charset="\"$default_display_charset\""
2699 default_unix_charset="\"$default_unix_charset\""
2701 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2702 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2703 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2704 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2709 # We didn't find a working iconv, so keep going
2712 # We only need to clean these up here for the next pass through the loop
2713 CPPFLAGS=$save_CPPFLAGS
2714 LDFLAGS=$save_LDFLAGS
2716 export LDFLAGS LIBS CPPFLAGS
2721 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2722 AC_MSG_WARN([Sufficient support for iconv function was not found.
2723 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2724 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2725 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2726 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2730 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2732 #include <sys/types.h>
2735 #define F_GETLEASE 1025
2738 int fd = open("/dev/null", O_RDONLY);
2739 return fcntl(fd, F_GETLEASE, 0) == -1;
2742 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2743 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2744 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2747 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2749 #include <sys/types.h>
2753 #define F_NOTIFY 1026
2756 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2759 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2760 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2761 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2764 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2765 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2766 AC_CHECK_FUNCS(inotify_init)
2767 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2769 samba_cv_HAVE_INOTIFY=yes,
2770 samba_cv_HAVE_INOTIFY=no,
2771 samba_cv_HAVE_INOTIFY=cross)
2773 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2774 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2777 #################################################
2778 # Check if FAM notifications are available. For FAM info, see
2779 # http://oss.sgi.com/projects/fam/
2780 # http://savannah.nongnu.org/projects/fam/
2782 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2784 if test x$enable_fam != xno; then
2785 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2786 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2787 # On IRIX, libfam requires libC, but other FAM implementations
2788 # might not need it.
2789 AC_CHECK_LIB(fam, FAMOpen2,
2790 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2791 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2792 [samba_cv_HAVE_LIBFAM=no])
2794 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2796 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2797 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2798 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2799 [samba_cv_HAVE_LIBFAM=no])
2800 unset samba_fam_xtra
2803 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2804 default_shared_modules="$default_shared_modules vfs_notify_fam"
2805 AC_TRY_COMPILE([#include <fam.h>],
2806 [enum FAMCodes code = FAMChanged;],
2807 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2808 [Whether fam.h contains a typedef for enum FAMCodes]),
2812 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2813 AC_CHECK_LIB(fam, FAMNoExists,
2814 [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2817 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2818 AC_MSG_ERROR(FAM support requested but FAM library not available )
2822 AC_SUBST(SMB_FAM_LIBS)
2824 #################################################
2825 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2828 with_dmapi_support=auto
2829 AC_MSG_CHECKING(whether to use DMAPI support)
2831 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2832 [ case "$withval" in
2834 with_dmapi_support=$withval
2838 AC_MSG_RESULT([$with_dmapi_support])
2840 if test x"$with_dmapi_support" != xno ; then
2841 SMB_CHECK_DMAPI([], [
2842 AC_MSG_NOTICE(DMAPI support not present)
2843 if test x"$with_dmapi_support" = xyes ; then
2844 AC_MSG_ERROR(no DMAPI support found but requested!)
2850 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2851 # Theoretically it should work with AIX JFS2 too but this needs testing
2852 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2853 default_shared_modules="$default_shared_modules vfs_tsmsm"
2856 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2858 #include <sys/types.h>
2861 #include <sys/file.h>
2863 #define LOCK_MAND 32
2864 #define LOCK_READ 64
2867 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2870 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2871 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2872 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2876 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2877 AC_TRY_COMPILE([#include <sys/types.h>
2878 #include <fcntl.h>],
2879 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2880 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2881 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2882 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2885 #################################################
2886 # Check for POSIX capability support
2888 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2889 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2892 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2895 AC_LIBTESTFUNC(cap, cap_get_proc)
2897 AC_CACHE_CHECK([for POSIX capabilities],
2898 samba_cv_HAVE_POSIX_CAPABILITIES,
2901 #include <sys/types.h>
2902 #include <sys/capability.h>
2905 cap_value_t vals[1];
2906 if (!(cap = cap_get_proc()))
2908 vals[0] = CAP_CHOWN;
2909 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2913 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2914 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2915 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2918 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2919 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2920 [Whether POSIX capabilities are available])
2928 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2929 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2932 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2933 AC_TRY_COMPILE([#include <sys/types.h>
2934 #if defined(HAVE_RPC_RPC_H)
2935 #include <rpc/rpc.h>
2938 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2939 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2940 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2943 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2944 AC_TRY_COMPILE([#include <sys/types.h>
2945 #if defined(HAVE_RPC_RPC_H)
2946 #include <rpc/rpc.h>
2949 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2950 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2951 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2954 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2955 AC_TRY_COMPILE([#include <sys/types.h>
2956 #if defined(HAVE_RPC_RPC_H)
2957 #include <rpc/rpc.h>
2960 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2961 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2962 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2965 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2966 AC_TRY_COMPILE([#include <sys/types.h>
2967 #if defined(HAVE_RPC_RPC_H)
2968 #include <rpc/rpc.h>
2971 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2972 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2973 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2977 dnl Some systems (SCO) have a problem including
2978 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2979 dnl as a #define in <prot.h> and as part of an enum
2983 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2984 AC_TRY_COMPILE([#include <sys/types.h>
2985 #ifdef HAVE_SYS_SECURITY_H
2986 #include <sys/security.h>
2988 #endif /* HAVE_SYS_SECURITY_H */
2989 #if defined(HAVE_RPC_RPC_H)
2990 #include <rpc/rpc.h>
2993 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2994 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2995 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2998 AC_MSG_CHECKING([for test routines])
2999 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
3001 AC_MSG_ERROR([cant find test code. Aborting config]),
3002 AC_MSG_WARN([cannot run when cross-compiling]))
3004 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
3005 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
3006 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
3007 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
3008 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
3011 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
3012 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
3013 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
3014 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
3015 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
3018 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
3019 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
3020 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
3021 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
3022 AC_CHECK_FUNCS(getpagesize)
3024 ################################################
3025 # look for a method of setting the effective uid
3028 if test $seteuid = no; then
3029 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3031 #define AUTOCONF_TEST 1
3032 #define USE_SETREUID 1
3033 #include "confdefs.h"
3034 #include "${srcdir-.}/lib/util_sec.c"],
3035 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3036 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3037 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3041 # we check for setresuid second as it conflicts with AIO on Linux.
3042 # see http://samba.org/~tridge/junkcode/aio_uid.c
3043 if test $seteuid = no; then
3044 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3046 #define AUTOCONF_TEST 1
3047 #define USE_SETRESUID 1
3048 #include "confdefs.h"
3049 #include "${srcdir-.}/lib/util_sec.c"],
3050 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3051 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3052 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3056 if test $seteuid = no; then
3057 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3059 #define AUTOCONF_TEST 1
3060 #define USE_SETEUID 1
3061 #include "confdefs.h"
3062 #include "${srcdir-.}/lib/util_sec.c"],
3063 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3064 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3065 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3069 if test $seteuid = no; then
3070 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3072 #define AUTOCONF_TEST 1
3073 #define USE_SETUIDX 1
3074 #include "confdefs.h"
3075 #include "${srcdir-.}/lib/util_sec.c"],
3076 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3077 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3078 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3082 AC_CACHE_CHECK([for the Darwin initgroups system call],
3083 samba_cv_DARWIN_INITGROUPS,
3085 #include <sys/syscall.h>
3088 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3089 samba_cv_DARWIN_INITGROUPS=yes,
3090 samba_cv_DARWIN_INITGROUPS=no)
3093 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3094 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3095 [Whether to use the Darwin-specific initgroups system call])
3098 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3099 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
3100 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3101 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3102 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3105 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3106 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
3107 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3108 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3109 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3114 dnl Don't check for 64 bit fcntl locking if we know that the
3115 dnl glibc2.1 broken check has succeeded.
3118 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3120 #if defined(HAVE_UNISTD_H)
3130 #ifdef HAVE_SYS_FCNTL_H
3131 #include <sys/fcntl.h>
3133 main() { struct flock64 fl64;
3134 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3140 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3142 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3143 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3147 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3148 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3150 #define _XOPEN_SOURCE 600
3152 #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3153 probably broken posix_fallocate
3157 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3158 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3159 AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3163 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3164 AC_TRY_COMPILE([#include <sys/types.h>
3165 #include <sys/stat.h>
3166 #include <unistd.h>],
3167 [struct stat st; st.st_blocks = 0;],
3168 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3169 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3170 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3173 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3175 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3176 AC_TRY_COMPILE([#include <sys/types.h>
3177 #include <sys/stat.h>
3178 #include <unistd.h>],
3179 [struct stat st; st.st_blksize = 0;],
3180 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3181 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3182 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3185 AC_CACHE_CHECK([for st_flags in struct stat],
3186 samba_cv_HAVE_STAT_ST_FLAGS,
3188 AC_TRY_COMPILE([#include <sys/types.h>
3189 #include <sys/stat.h>
3190 #include <unistd.h>],
3191 [struct stat st; st.st_flags = 0;],
3192 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3193 samba_cv_HAVE_STAT_ST_FLAGS=no,
3194 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3197 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3198 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3199 [Whether the stat struct has a st_flags member])
3202 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3204 #include <sys/types.h>
3205 #include <sys/acl.h>
3206 #if defined(HAVE_RPCSVC_NIS_H)
3207 #include <rpcsvc/nis.h>
3210 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3211 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3212 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3215 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3221 void exit_on_core(int ignored) {
3227 signal(SIGSEGV, exit_on_core);
3228 newpath = realpath("/tmp", NULL);
3229 exit((newpath != NULL) ? 0 : 1);
3232 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3233 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3234 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3237 #################################################
3238 # check for AFS clear-text auth support
3239 samba_cv_WITH_AFS=no
3240 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3242 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3243 [ case "$withval" in
3245 AC_MSG_RESULT($withval)
3246 samba_cv_WITH_AFS=$withval
3255 ####################################################
3256 # check for Linux-specific AFS fake-kaserver support
3257 samba_cv_WITH_FAKE_KASERVER=no
3258 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3259 AC_ARG_WITH(fake-kaserver,
3260 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3261 [ case "$withval" in
3263 AC_MSG_RESULT($withval)
3264 samba_cv_WITH_FAKE_KASERVER=$withval
3273 #################################################
3274 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3275 if test x"$samba_cv_WITH_AFS" != x"no" ||
3276 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3278 # see if this box has the OpenSSL DES libraries
3279 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3281 # see if this box has the afs-headers in /usr/include/afs
3282 AC_MSG_CHECKING(for /usr/include/afs)
3283 if test -d /usr/include/afs; then
3291 AC_CHECK_HEADERS(afs.h afs/afs.h)
3292 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3293 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3294 test x"$samba_cv_WITH_AFS" = x"auto"; then
3295 AC_MSG_WARN([AFS cannot be supported without afs.h])
3297 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3300 have_afs_headers=yes
3304 FAKE_KASERVER_OBJ=""
3305 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3306 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3307 FAKE_KASERVER_OBJ="utils/net_afs.o"
3309 AC_SUBST(FAKE_KASERVER_OBJ)
3311 #################################################
3312 # check whether to compile AFS/NT ACL mapping module
3313 samba_cv_WITH_VFS_AFSACL=no
3314 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3315 AC_ARG_WITH(vfs-afsacl,
3316 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3317 [ case "$withval" in
3319 AC_MSG_RESULT($withval)
3320 samba_cv_WITH_VFS_AFSACL=yes
3329 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3330 default_shared_modules="$default_shared_modules vfs_afsacl"
3333 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3334 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3337 #################################################
3338 # check for the DFS clear-text auth system
3339 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3341 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3342 [ case "$withval" in
3345 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3354 ########################################################
3355 # Compile with LDAP support?
3357 with_ldap_support=auto
3358 AC_MSG_CHECKING([for LDAP support])
3361 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3362 [ case "$withval" in
3364 with_ldap_support=$withval
3368 AC_MSG_RESULT($with_ldap_support)
3373 AC_SUBST(SMBLDAPUTIL)
3375 if test x"$with_ldap_support" != x"no"; then
3377 ##################################################################
3378 # first test for ldap.h and lber.h
3379 # (ldap.h is required for this test)
3380 AC_CHECK_HEADERS(ldap.h lber.h)
3382 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3383 if test x"$with_ldap_support" = x"yes"; then
3384 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3386 AC_MSG_WARN(ldap.h is needed for LDAP support)
3389 with_ldap_support=no
3392 ##################################################################
3393 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3394 # unsigned int in include/includes.h
3397 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3398 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3399 with_ldap_support=yes
3402 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3403 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3404 if test x"$with_ldap_support" = x"yes"; then
3405 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3407 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3409 with_ldap_support=no
3415 if test x"$with_ldap_support" != x"no"; then
3418 ##################################################################
3419 # we might need the lber lib on some systems. To avoid link errors
3420 # this test must be before the libldap test
3421 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3423 ########################################################
3424 # If ber_sockbuf_add_io() is available we can add
3425 # SASL wrapping hooks
3426 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3428 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3429 AC_TRY_COMPILE([#include <ldap.h>],
3430 [int val = LDAP_OPT_SOCKBUF;],
3431 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3432 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3434 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3435 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3436 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3439 #######################################################
3440 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3441 # ldap logging and print it out in the samba logs
3442 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3443 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3444 [AC_TRY_COMPILE([#include <lber.h>],
3445 [int val = LBER_OPT_LOG_PRINT_FN;],
3446 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3447 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3449 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3450 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3451 [Support for LDAP/LBER logging interception])
3454 ########################################################
3455 # now see if we can find the ldap libs in standard paths
3456 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3458 ########################################################
3459 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3460 # Check found in pam_ldap 145.
3461 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3463 LIBS="$LIBS $LDAP_LIBS"
3464 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3468 [ldap_set_rebind_proc(0, 0, 0);],
3469 [smb_ldap_cv_ldap_set_rebind_proc=3],
3470 [smb_ldap_cv_ldap_set_rebind_proc=2]
3474 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3476 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3478 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3479 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3480 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3481 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3482 default_shared_modules="$default_shared_modules";
3483 SMBLDAP="lib/smbldap.o"
3484 SMBLDAPUTIL="lib/smbldap_util.o"
3485 with_ldap_support=yes
3486 AC_MSG_CHECKING(whether LDAP support is used)
3489 if test x"$with_ldap_support" = x"yes"; then
3490 AC_MSG_ERROR(libldap is needed for LDAP support)
3492 AC_MSG_WARN(libldap is needed for LDAP support)
3496 with_ldap_support=no
3502 #################################################
3503 # active directory support
3505 with_ads_support=auto
3506 AC_MSG_CHECKING([for Active Directory and krb5 support])
3509 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3510 [ case "$withval" in
3512 with_ads_support="$withval"
3516 AC_MSG_RESULT($with_ads_support)
3521 if test x"$with_ldap_support" != x"yes"; then
3523 if test x"$with_ads_support" = x"yes"; then
3524 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3525 elif test x"$with_ads_support" = x"auto"; then
3526 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3532 # Check to see whether there is enough LDAP functionality to be able
3533 # to build AD support.
3535 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3538 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3540 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3541 if test x"$with_ads_support" = x"yes"; then
3542 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3543 elif test x"$with_ads_support" = x"auto"; then
3544 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3550 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3552 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3553 if test x"$with_ads_support" = x"yes"; then
3554 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3555 elif test x"$with_ads_support" = x"auto"; then
3556 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3564 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3566 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3567 if test x"$with_ads_support" = x"yes"; then
3568 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3569 elif test x"$with_ads_support" = x"auto"; then
3570 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3577 if test x"$with_ads_support" != x"no"; then
3579 # Do no harm to the values of CFLAGS and LIBS while testing for
3582 if test x$FOUND_KRB5 = x"no"; then
3583 #################################################
3584 # check for location of Kerberos 5 install
3585 AC_MSG_CHECKING(for kerberos 5 install path)
3587 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3588 [ case "$withval" in
3590 AC_MSG_RESULT(no krb5-path given)
3597 AC_MSG_RESULT($withval)
3598 KRB5_CFLAGS="-I$withval/include"
3599 KRB5_CPPFLAGS="-I$withval/include"
3600 KRB5_LDFLAGS="-L$withval/lib"
3602 if test -x "$withval/bin/krb5-config"; then
3603 KRB5CONFIG=$withval/bin/krb5-config
3607 AC_MSG_RESULT(no krb5-path given)
3611 #################################################
3612 # check for krb5-config from recent MIT and Heimdal kerberos 5
3613 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3614 AC_MSG_CHECKING(for working krb5-config)
3615 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3616 ac_save_CFLAGS=$CFLAGS
3617 CFLAGS="";export CFLAGS
3618 ac_save_LDFLAGS=$LDFLAGS
3619 LDFLAGS="";export LDFLAGS
3620 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3621 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3622 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3623 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3624 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3625 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3629 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3632 if test x$FOUND_KRB5 = x"no"; then
3633 #################################################
3634 # see if this box has the SuSE location for the heimdal krb implementation
3635 AC_MSG_CHECKING(for /usr/include/heimdal)
3636 if test -d /usr/include/heimdal; then
3637 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3638 KRB5_CFLAGS="-I/usr/include/heimdal"
3639 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3640 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3644 KRB5_CFLAGS="-I/usr/include/heimdal"
3645 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3654 if test x$FOUND_KRB5 = x"no"; then
3655 #################################################
3656 # see if this box has the RedHat location for kerberos
3657 AC_MSG_CHECKING(for /usr/kerberos)
3658 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3659 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3660 KRB5_CFLAGS="-I/usr/kerberos/include"
3661 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3669 if test x$FOUND_KRB5 = x"no"; then
3670 #################################################
3671 # see if this box has the OpenBSD location for heimdal krb5
3672 AC_MSG_CHECKING(for /usr/include/kerberosV)
3673 if test -d /usr/include/kerberosV; then
3674 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3675 KRB5_LIBS="-lcrypto"
3683 ac_save_CFLAGS=$CFLAGS
3684 ac_save_CPPFLAGS=$CPPFLAGS
3685 ac_save_LDFLAGS=$LDFLAGS
3687 # remove needless evil rpath stuff as early as possible:
3688 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3689 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3690 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3691 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3692 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3694 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3696 # now check for krb5.h. Some systems have the libraries without the headers!
3697 # note that this check is done here to allow for different kerberos
3699 AC_CHECK_HEADERS(krb5.h)
3701 if test x"$ac_cv_header_krb5_h" = x"no"; then
3703 # Give a warning if AD support was not explicitly requested,
3704 # i.e with_ads_support = auto, otherwise die with an error.
3706 if test x"$with_ads_support" = x"yes"; then
3707 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3709 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3712 # Turn off AD support and restore CFLAGS and LIBS variables
3714 with_ads_support="no"
3716 CFLAGS=$ac_save_CFLAGS
3717 CPPFLAGS=$ac_save_CPPFLAGS
3718 LDFLAGS=$ac_save_LDFLAGS
3720 AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3721 [[#ifdef HAVE_KRB5_H
3726 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3727 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3728 if test x"$BLDSHARED" = x"true" ; then
3729 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3733 # check for new heimdal KRB5_DEPRECATED handling
3735 AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3736 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3738 [#define KRB5_DEPRECATED 1
3741 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3742 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3744 if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3745 AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3746 [Whether to use deprecated krb5 interfaces])
3750 # Now we have determined whether we really want ADS support
3752 if test x"$with_ads_support" != x"no"; then
3757 # now check for gssapi headers. This is also done here to allow for
3758 # different kerberos include paths
3759 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h com_err.h)
3761 ##################################################################
3762 # we might need the k5crypto and com_err libraries on some systems
3763 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3764 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3767 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3768 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3769 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3771 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3772 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3774 ########################################################
3775 # now see if we can find the krb5 libs in standard paths
3776 # or as specified above
3777 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3778 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3780 ########################################################
3781 # now see if we can find the gssapi libs in standard paths
3782 if test x"$have_gssapi" != x"yes"; then
3783 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3784 AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3787 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3788 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3789 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3790 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3791 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3792 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3793 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3794 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3795 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3796 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3797 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3798 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3799 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3800 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3801 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3802 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3803 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3804 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3805 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3806 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3807 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3808 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3809 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3810 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3811 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3812 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3813 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3814 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3815 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3816 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3817 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3818 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3819 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3820 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3821 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3822 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3823 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3824 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3825 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3826 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3827 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3828 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3837 # MIT krb5 1.8 does not expose this call (yet)
3838 AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3840 # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3841 # but does have the symbol
3842 AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3844 LIBS="$KRB5_LIBS $LIBS"
3846 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3847 smb_krb5_cv_ticket_has_keyinfo,
3856 krb5_enctype enctype;
3858 enctype = ticket.enc_part.enctype;
3859 kvno = ticket.enc_part.kvno;
3861 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3862 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3865 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3866 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3867 [Whether the krb5_ticket structure contains the kvno and enctype])
3870 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3871 smb_krb5_cv_creds_opt_free_context,
3877 krb5_get_init_creds_opt *opt = NULL;
3878 krb5_get_init_creds_opt_free(ctx, opt);
3880 [smb_krb5_cv_creds_opt_free_context=yes],
3881 [smb_krb5_cv_creds_opt_free_context=no]
3885 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3886 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3887 [Whether krb5_get_init_creds_opt_free takes a context argument])
3890 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3893 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3894 [smb_krb5_cv_verify_checksum=7],
3895 [smb_krb5_cv_verify_checksum=6],
3898 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3900 AC_CACHE_CHECK([for checksum in krb5_checksum],
3901 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3902 AC_TRY_COMPILE([#include <krb5.h>],
3903 [krb5_checksum cksum; cksum.checksum.length = 0;],
3904 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3905 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3907 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3908 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3909 [Whether the krb5_checksum struct has a checksum property])
3912 AC_CACHE_CHECK([for etype in EncryptedData],
3913 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3914 AC_TRY_COMPILE([#include <krb5.h>],
3915 [EncryptedData edata; edata.etype = 0;],
3916 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3917 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3919 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3920 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3921 [Whether the EncryptedData struct has a etype property])
3924 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3925 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3926 AC_TRY_COMPILE([#include <krb5.h>],
3927 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3928 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3929 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3931 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3932 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3933 [Whether the krb5_ap_req struct has a ticket pointer])
3936 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3937 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3938 AC_TRY_COMPILE([#include <krb5.h>],
3939 [krb5_error err; err.e_data = NULL;],
3940 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3941 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3943 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3944 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3945 [Whether the krb5_error struct has a e_data pointer])
3948 AC_CACHE_CHECK([for krb5_crypto type],
3949 samba_cv_HAVE_KRB5_CRYPTO,[
3950 AC_TRY_COMPILE([#include <krb5.h>],
3951 [krb5_crypto crypto;],
3952 samba_cv_HAVE_KRB5_CRYPTO=yes,
3953 samba_cv_HAVE_KRB5_CRYPTO=no)])
3955 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3956 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3957 [Whether the type krb5_crypto exists])
3960 AC_CACHE_CHECK([for krb5_encrypt_block type],
3961 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3962 AC_TRY_COMPILE([#include <krb5.h>],
3963 [krb5_encrypt_block block;],
3964 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3965 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3967 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3968 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3969 [Whether the type krb5_encrypt_block exists])
3972 AC_CACHE_CHECK([for addrtype in krb5_address],
3973 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3974 AC_TRY_COMPILE([#include <krb5.h>],
3975 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3976 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3977 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3979 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3980 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3981 [Whether the krb5_address struct has a addrtype property])
3984 AC_CACHE_CHECK([for addr_type in krb5_address],
3985 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3986 AC_TRY_COMPILE([#include <krb5.h>],
3987 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3988 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3989 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3991 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3992 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3993 [Whether the krb5_address struct has a addr_type property])
3996 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3997 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3998 [AC_TRY_COMPILE([#include <krb5.h>],
3999 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4000 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4002 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4003 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4004 [Whether the krb5_ticket struct has a enc_part2 property])
4007 AC_CACHE_CHECK([for keyblock in krb5_creds],
4008 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4009 AC_TRY_COMPILE([#include <krb5.h>],
4010 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4011 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4012 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4014 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4015 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4016 [Whether the krb5_creds struct has a keyblock property])
4019 AC_CACHE_CHECK([for session in krb5_creds],
4020 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4021 AC_TRY_COMPILE([#include <krb5.h>],
4022 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4023 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4024 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4026 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4027 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4028 [Whether the krb5_creds struct has a session property])
4031 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4032 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4033 AC_TRY_COMPILE([#include <krb5.h>],
4034 [krb5_keyblock key; key.keyvalue.data = NULL;],
4035 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4036 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4038 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4039 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4040 [Whether the krb5_keyblock struct has a keyvalue property])
4043 found_arcfour_hmac=no
4044 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4045 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4046 AC_TRY_COMPILE([#include <krb5.h>],
4047 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4048 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4049 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4050 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4051 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4052 AC_TRY_COMPILE([#include <krb5.h>],
4053 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4054 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4055 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4056 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4057 # w.r.t. arcfour and windows, so we must not enable it here
4058 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4059 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4060 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4061 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
4062 found_arcfour_hmac=yes
4064 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
4065 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
4066 AC_TRY_COMPILE([#include <krb5.h>],
4067 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
4068 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
4069 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
4070 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
4071 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
4072 [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
4073 found_arcfour_hmac=yes
4076 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4077 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4078 AC_TRY_COMPILE([#include <krb5.h>],
4079 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4080 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4081 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4083 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4084 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4085 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4088 AC_CACHE_CHECK([for KV5M_KEYTAB],
4089 samba_cv_HAVE_KV5M_KEYTAB,[
4090 AC_TRY_COMPILE([#include <krb5.h>],
4091 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4092 samba_cv_HAVE_KV5M_KEYTAB=yes,
4093 samba_cv_HAVE_KV5M_KEYTAB=no)])
4095 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4096 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4097 [Whether the KV5M_KEYTAB option is available])
4100 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4101 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4102 AC_TRY_COMPILE([#include <krb5.h>],
4103 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4104 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4105 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4107 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4108 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4109 [Whether KRB5_KU_OTHER_CKSUM is available])
4112 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4113 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4114 AC_TRY_COMPILE([#include <krb5.h>],
4115 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4116 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4117 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4119 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4120 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4121 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4124 AC_CACHE_CHECK([for the krb5_princ_component macro],
4125 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4126 AC_TRY_LINK([#include <krb5.h>],
4127 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4128 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4129 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4131 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4132 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4133 [Whether krb5_princ_component is available])
4136 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4137 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4138 AC_TRY_COMPILE([#include <krb5.h>],
4139 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4140 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4141 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4143 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4144 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4145 [Whether krb5_keytab_entry has key member])
4148 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4149 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4150 AC_TRY_COMPILE([#include <krb5.h>],
4151 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4152 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4153 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4155 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4156 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4157 [Whether krb5_keytab_entry has keyblock member])
4160 AC_CACHE_CHECK([for magic in krb5_address],
4161 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4162 AC_TRY_COMPILE([#include <krb5.h>],
4163 [krb5_address addr; addr.magic = 0;],
4164 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4165 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4167 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4168 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4169 [Whether the krb5_address struct has a magic property])
4172 AC_CACHE_CHECK([for WRFILE: keytab support],
4173 samba_cv_HAVE_WRFILE_KEYTAB,[
4178 krb5_context context;
4181 krb5_init_context(&context);
4182 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4184 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4185 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4187 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4188 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4189 [Whether the WRFILE:-keytab is supported])
4192 AC_CACHE_CHECK([for krb5_realm type],
4193 samba_cv_HAVE_KRB5_REALM_TYPE,[
4194 AC_TRY_COMPILE([#include <krb5.h>],
4195 [krb5_realm realm;],
4196 samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4197 samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4199 if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4200 AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4201 [Whether the type krb5_realm exists])
4204 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4205 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4206 AC_TRY_COMPILE([#include <krb5.h>],
4208 krb5_context context;
4209 krb5_principal principal;
4210 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4211 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4212 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4214 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4215 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4216 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4219 AC_CACHE_CHECK([for krb5_addresses type],
4220 samba_cv_HAVE_KRB5_ADDRESSES,[
4221 AC_TRY_COMPILE([#include <krb5.h>],
4222 [krb5_addresses addr;],
4223 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4224 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4226 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4227 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4228 [Whether the type krb5_addresses type exists])
4231 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4232 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4233 AC_TRY_COMPILE([#include <krb5.h>],
4235 krb5_mk_error(0,0,0);],
4236 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4237 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4239 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4240 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4241 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4244 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4245 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4246 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4251 krb5_context context = NULL;
4253 krb5_enctype_to_string(context, 1, &str);
4254 if (str) free (str);
4257 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4258 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4259 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4261 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4262 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4263 [whether krb5_enctype_to_string takes krb5_context argument])
4266 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4267 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4272 krb5_enctype_to_string(1, buf, 256);
4275 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4276 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4277 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4279 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4280 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4281 [whether krb5_enctype_to_string takes size_t argument])
4285 AC_CACHE_CHECK([for krb5_principal_get_realm],
4286 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4287 AC_TRY_LINK([#include <krb5.h>],
4288 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4289 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4290 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4292 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4293 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4294 [Whether the function krb5_principal_get_realm is defined])
4297 AC_CACHE_CHECK([for krb5_princ_realm],
4298 samba_cv_HAVE_KRB5_PRINC_REALM,[
4299 AC_TRY_LINK([#include <krb5.h>],
4300 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4301 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4302 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4304 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4305 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4306 [Whether the macro krb5_princ_realm is defined])
4311 # Now the decisions whether we can support krb5
4313 # NOTE: all tests should be done before this block!
4316 if test x"$found_arcfour_hmac" != x"yes"; then
4317 AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4321 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4322 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4326 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4327 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4329 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4333 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4334 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4336 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4340 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4341 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4343 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4347 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4348 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4350 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4354 if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4356 # We only need the following functions if we can't get the enctype
4357 # and kvno out of the ticket directly (ie. on Heimdal).
4359 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4361 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4365 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4367 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4373 if test x"$use_ads" = x"yes"; then
4374 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4375 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4376 if test x"$have_gssapi" = x"yes"; then
4377 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4380 if test x"$with_ads_support" = x"yes"; then
4381 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4383 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4385 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4386 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4387 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4388 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4392 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4393 AC_MSG_RESULT([$use_ads])
4395 LIBS="$ac_save_LIBS"
4398 if test x"$use_ads" != xyes; then
4399 merged_build_possible=no
4402 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4403 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4406 ########################################################
4407 # Compile with DNS Updates support?
4409 with_dnsupdate_support=auto
4410 AC_MSG_CHECKING([whether to enable DNS Updates support])
4412 AC_ARG_WITH(dnsupdate,
4413 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4414 [ case "$withval" in
4416 with_dnsupdate_support=$withval
4420 AC_MSG_RESULT($with_dnsupdate_support)
4422 if test x"$with_dnsupdate_support" != x"no"; then
4424 ################################################################
4425 # first test for AD / GSSAPI support being enabled
4426 if test x"$have_gssapi" != xyes ; then
4427 if test x"$with_dnsupdate_support" = x"yes" ; then
4428 AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4430 AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4431 with_dnsupdate_support=no
4434 ##################################################################
4435 # then test for uuid.h (necessary to generate unique DNS keynames
4436 # (uuid.h is required for this test)
4437 AC_CHECK_HEADERS(uuid/uuid.h)
4440 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4441 if test x"$with_dnsupdate_support" = x"yes"; then
4442 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4444 AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4446 with_dnsupdate_support=no
4450 if test x"$with_dnsupdate_support" != x"no"; then
4452 ########################################################
4453 # Now see if we can find the uuid libs in standard paths
4454 # On some systems, the uuid API is in libc, so we have to
4455 # be careful not to insert a spurious -luuid.
4458 AC_LIBTESTFUNC(uuid, uuid_generate,
4463 SMB_REMOVE_LIB(uuid)
4467 with_dnsupdate_support=yes
4468 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4471 if test x"$with_dnsupdate_support" = x"yes"; then
4472 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4474 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4476 with_dnsupdate_support=no
4479 # finally print out the result:
4480 AC_MSG_CHECKING(whether DNS Updates support is used)
4481 AC_MSG_RESULT([$with_dnsupdate_support])
4484 #################################################
4485 # check for automount support
4486 AC_MSG_CHECKING(whether to use automount)
4487 AC_ARG_WITH(automount,
4488 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4489 [ case "$withval" in
4492 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4501 #################################################
4502 # Check for a PAM clear-text auth, accounts, password
4503 # and session support. Most PAM implementations keep their
4504 # headers in /usr/include/security. Darwin keeps its in
4507 with_pam_for_crypt=no
4509 AC_MSG_CHECKING(whether to try PAM support)
4511 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4512 [ case "$withval" in
4518 AC_MSG_RESULT([$try_pam])
4521 create_pam_modules=no
4522 if test x"${try_pam}" != x"no";then
4524 create_pam_modules=yes
4526 # Most systems have PAM headers in /usr/include/security, but Darwin
4527 # has them in /usr/include/pam.
4528 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4529 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4530 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4531 if test x"${try_pam}" = x"yes";then
4532 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4535 create_pam_modules=no
4538 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4539 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4540 if test x"${try_pam}" = x"yes";then
4541 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4544 create_pam_modules=no
4547 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4548 #if HAVE_SECURITY_PAM_APPL_H
4549 #include <security/pam_appl.h>
4551 #if HAVE_PAM_PAM_APPL_H
4552 #include <pam/pam_appl.h>
4555 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4556 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4557 if test x"${try_pam}" = x"yes";then
4558 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4560 create_pam_modules=no
4563 if test x"$use_pam" = x"yes"; then
4564 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4565 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4566 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4567 with_pam_for_crypt=yes
4569 if test x"$create_pam_modules" = x"yes"; then
4570 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4571 # this checks are optional,
4572 # we don't care about the results here
4573 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4574 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4575 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4577 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4580 AC_MSG_CHECKING(whether to use PAM support)
4581 AC_MSG_RESULT([$use_pam])
4583 AC_MSG_CHECKING(whether to have PAM MODULES support)
4584 AC_MSG_RESULT([$create_pam_modules])
4587 #################################################
4588 # check for PAM_RADIO_TYPE
4590 #if (!defined(LINUX))
4592 #define PAM_EXTERN extern
4593 #if defined(HAVE_SECURITY_PAM_APPL_H)
4594 #include <security/pam_appl.h>
4595 #elif defined(HAVE_PAM_PAM_APPL_H)
4596 #include <pam/pam_appl.h>
4601 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4602 #include <security/pam_modules.h>
4603 #elif defined(HAVE_PAM_PAM_MODULES_H)
4604 #include <pam/pam_modules.h>
4607 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4608 #include <security/_pam_macros.h>
4609 #elif defined(HAVE_PAM__PAM_MACROS_H)
4610 #include <pam/_pam_macros.h>
4613 #ifdef HAVE_SECURITY_PAM_EXT_H
4614 #include <security/pam_ext.h>
4617 [int i; i = PAM_RADIO_TYPE; ],
4618 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4620 #################################################
4621 # check for pam_smbpass support
4623 INSTALL_PAM_MODULES=""
4624 UNINSTALL_PAM_MODULES=""
4626 try_pam_smbpass=auto
4627 AC_MSG_CHECKING(whether to use pam_smbpass)
4628 AC_ARG_WITH(pam_smbpass,
4629 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4630 [ case "$withval" in
4632 try_pam_smbpass=$withval
4635 AC_MSG_ERROR([valid options are yes,no,auto])
4640 if test x"${try_pam_smbpass}" = xno ; then
4644 # Conditions under which pam_smbpass can't be built.
4645 if test x"$BLDSHARED" != xtrue ; then
4646 if test x"${try_pam_smbpass}" = xyes ; then
4647 AC_MSG_ERROR([No support for shared modules])
4650 elif test x"$create_pam_modules" != xyes ; then
4651 if test x"${try_pam_smbpass}" = xyes ; then
4652 AC_MSG_ERROR([No support for PAM MODULES])
4657 if test x"${use_pam_smbpass}" = xyes ; then
4658 PAM_MODULES="pam_smbpass"
4659 INSTALL_PAM_MODULES="installpammodules"
4660 UNINSTALL_PAM_MODULES="uninstallpammodules"
4663 AC_MSG_RESULT([$use_pam_smbpass])
4667 ## moved after the check for -lcrypt in order to
4668 ## ensure that the necessary libraries are included
4669 ## check checking for truncated salt. Wrapped by the
4670 ## $with_pam_for_crypt variable as above --jerry
4672 if test $with_pam_for_crypt = no; then
4673 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4675 LIBS="$AUTH_LIBS $LIBS"
4676 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4677 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4678 LIBS="$crypt_LIBS"])
4679 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4680 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4684 #################################################
4685 # check for a NISPLUS_HOME support
4686 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4687 AC_ARG_WITH(nisplus-home,
4688 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4689 [ case "$withval" in
4692 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4701 #################################################
4702 # check for syslog logging
4703 AC_MSG_CHECKING(whether to use syslog logging)
4705 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4706 [ case "$withval" in
4709 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4718 #################################################
4719 # check for custom syslog facility
4720 AC_MSG_CHECKING(whether to use a custom syslog facility)
4721 AC_ARG_WITH(syslog-facility,
4722 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4724 if test "$withval" = "no" ; then
4725 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4727 if test "$withval" != "yes" ; then
4728 syslog_facility="$withval"
4729 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4734 #################################################
4735 # check for experimental disk-quotas support
4737 samba_cv_WITH_QUOTAS=auto
4738 samba_cv_TRY_QUOTAS=no
4739 samba_cv_RUN_QUOTA_TESTS=auto
4740 samba_cv_WITH_SYS_QUOTAS=auto
4741 samba_cv_TRY_SYS_QUOTAS=auto
4742 samba_cv_SYSQUOTA_FOUND=no
4744 AC_MSG_CHECKING(whether to try disk-quotas support)
4746 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4747 [ case "$withval" in
4750 samba_cv_WITH_QUOTAS=yes
4751 samba_cv_TRY_QUOTAS=yes
4752 samba_cv_RUN_QUOTA_TESTS=yes
4753 #set sys quotas to auto in this case
4754 samba_cv_TRY_SYS_QUOTAS=auto
4758 samba_cv_WITH_QUOTAS=auto
4759 samba_cv_TRY_QUOTAS=auto
4760 samba_cv_RUN_QUOTA_TESTS=auto
4761 #set sys quotas to auto in this case
4762 samba_cv_TRY_SYS_QUOTAS=auto
4766 samba_cv_WITH_QUOTAS=no
4767 samba_cv_TRY_QUOTAS=no
4768 samba_cv_RUN_QUOTA_TESTS=no
4771 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4774 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4777 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4778 AC_ARG_WITH(sys-quotas,
4779 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4780 [ case "$withval" in
4783 samba_cv_WITH_SYS_QUOTAS=yes
4784 samba_cv_TRY_SYS_QUOTAS=yes
4785 samba_cv_RUN_QUOTA_TESTS=yes
4789 samba_cv_WITH_SYS_QUOTAS=auto
4790 samba_cv_TRY_SYS_QUOTAS=auto
4791 samba_cv_RUN_QUOTA_TESTS=auto
4795 samba_cv_WITH_SYS_QUOTAS=no
4796 samba_cv_TRY_SYS_QUOTAS=no
4799 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4802 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4805 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4806 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4810 samba_cv_TRY_SYS_QUOTAS=yes
4811 samba_cv_RUN_QUOTA_TESTS=yes
4815 samba_cv_TRY_SYS_QUOTAS=no
4820 #############################################
4821 # only check for quota stuff if --with-quotas
4822 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4825 # on linux we didn't need to test we have builtin support
4827 samba_cv_SYSQUOTA_FOUND=yes
4828 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4829 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4830 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4833 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4834 samba_cv_found_xfs_header=yes
4835 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4839 # need to set this define when using static linking (BUG 1473)
4840 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4846 # some broken header files need this
4847 AC_CHECK_HEADER(asm/types.h,[
4848 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4849 AC_ADD_INCLUDE(<asm/types.h>)
4852 # For quotas on Veritas VxFS filesystems
4853 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4855 # For quotas on Linux XFS filesystems
4856 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4858 # For sys/quota.h and linux/quota.h
4859 AC_CHECK_HEADERS(sys/quota.h)
4861 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4862 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4863 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4865 #include "confdefs.h"
4866 #ifdef HAVE_SYS_TYPES_H
4867 #include <sys/types.h>
4869 #ifdef HAVE_ASM_TYPES_H
4870 #include <asm/types.h>
4872 #include <sys/quota.h>
4873 ],[int i = Q_XGETQUOTA;],
4874 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4875 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4876 samba_cv_found_xfs_header=yes
4880 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4881 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4883 #include "confdefs.h"
4884 #ifdef HAVE_SYS_QUOTA_H
4885 #include <sys/quota.h>
4889 D.dqb_fsoftlimit = 0;],
4890 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4891 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4892 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4896 # look for a working quota system
4898 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4899 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4901 #define HAVE_QUOTACTL_4A 1
4902 #define AUTOCONF_TEST 1
4903 #include "confdefs.h"
4904 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4905 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4906 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4907 samba_cv_SYSQUOTA_FOUND=yes;
4908 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4909 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4913 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4914 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4916 #define HAVE_QUOTACTL_4B 1
4917 #define AUTOCONF_TEST 1
4918 #include "confdefs.h"
4919 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4920 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4921 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4922 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4923 samba_cv_SYSQUOTA_FOUND=yes;
4924 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4925 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4929 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4930 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4932 #define HAVE_QUOTACTL_3 1
4933 #define AUTOCONF_TEST 1
4934 #include "confdefs.h"
4935 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4936 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4937 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4938 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4939 samba_cv_SYSQUOTA_FOUND=yes;
4940 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4941 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4945 #################################################
4946 # check for mntent.h and struct mntent
4947 AC_CHECK_HEADERS(mntent.h)
4948 #################################################
4949 # check for setmntent,getmntent,endmntent
4950 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4952 #################################################
4953 # check for devnm.h and struct mntent
4954 AC_CHECK_HEADERS(devnm.h)
4955 #################################################
4957 AC_CHECK_FUNCS(devnm)
4959 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4960 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4961 # if --with-sys-quotas=yes then build it
4962 # you have can use the get/set quota command smb.conf
4964 samba_cv_SYSQUOTA_FOUND=auto
4966 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4967 # if --with-sys-quotas=yes then build it
4968 # you have can use the get/set quota command smb.conf
4970 samba_cv_TRY_SYS_QUOTAS=auto
4974 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4975 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4976 SAVE_CPPFLAGS="$CPPFLAGS"
4977 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4979 #include "confdefs.h"
4980 #define NO_PROTO_H 1
4981 #define NO_CONFIG_H 1
4982 #define HAVE_SYS_QUOTAS 1
4983 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4984 #include "${srcdir-.}/lib/sysquotas.c"
4985 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4986 CPPFLAGS="$SAVE_CPPFLAGS"
4988 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4989 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4990 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4991 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4992 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4993 samba_cv_WE_USE_SYS_QUOTAS=yes
5001 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5002 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5003 SAVE_CPPFLAGS="$CPPFLAGS"
5004 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5006 #include "confdefs.h"
5007 #define NO_PROTO_H 1
5008 #define NO_CONFIG_H 1
5009 #define HAVE_SYS_QUOTAS 1
5010 #define HAVE_XFS_QUOTAS 1
5011 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5012 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5013 CPPFLAGS="$SAVE_CPPFLAGS"
5015 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5016 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5017 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5022 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5023 SAVE_CPPFLAGS="$CPPFLAGS"
5024 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5026 #include "confdefs.h"
5027 #define NO_PROTO_H 1
5028 #define NO_CONFIG_H 1
5029 #include "${srcdir-.}/smbd/quotas.c"
5030 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5031 CPPFLAGS="$SAVE_CPPFLAGS"
5033 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5034 AC_MSG_CHECKING(whether to use the old quota support)
5035 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5036 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5037 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5047 ####################
5048 # End of quota check samba_cv_RUN_QUOTA_TESTS
5051 #################################################
5052 # check for experimental utmp accounting
5054 AC_MSG_CHECKING(whether to support utmp accounting)
5057 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
5058 [ case "$withval" in
5068 # utmp requires utmp.h
5069 # Note similar check earlier, when checking utmp details.
5071 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5072 utmp_no_reason=", no utmp.h on $host_os"
5076 # Display test results
5078 if test x"$WITH_UTMP" = x"yes"; then
5080 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5082 AC_MSG_RESULT(no$utmp_no_reason)
5086 #################################################
5087 # these tests are taken from the GNU fileutils package
5088 AC_CHECKING(how to get filesystem space usage)
5091 # Test for statvfs64.
5092 if test $space = no; then
5094 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5096 #if defined(HAVE_UNISTD_H)
5099 #include <sys/types.h>
5100 #include <sys/statvfs.h>
5103 struct statvfs64 fsd;
5104 exit (statvfs64 (".", &fsd));
5106 fu_cv_sys_stat_statvfs64=yes,
5107 fu_cv_sys_stat_statvfs64=no,
5108 fu_cv_sys_stat_statvfs64=cross)])
5109 if test $fu_cv_sys_stat_statvfs64 = yes; then
5111 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5115 # Perform only the link test since it seems there are no variants of the
5116 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5117 # because that got a false positive on SCO OSR5. Adding the declaration
5118 # of a `struct statvfs' causes this test to fail (as it should) on such
5119 # systems. That system is reported to work fine with STAT_STATFS4 which
5120 # is what it gets when this test fails.
5121 if test $space = no; then
5123 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5124 [AC_TRY_LINK([#include <sys/types.h>
5125 #include <sys/statvfs.h>],
5126 [struct statvfs fsd; statvfs (0, &fsd);],
5127 fu_cv_sys_stat_statvfs=yes,
5128 fu_cv_sys_stat_statvfs=no)])
5129 if test $fu_cv_sys_stat_statvfs = yes; then
5131 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5135 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5136 # This is not the case on ancient Linux systems.
5138 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5139 AC_TRY_COMPILE([#include <sys/types.h>
5140 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5141 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5142 if test x"$samba_cv_fsid_int" = x"yes"; then
5143 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5146 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5147 # systems use f_bsize.
5148 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5149 AC_TRY_COMPILE([#include <sys/types.h>
5150 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5151 samba_cv_frsize=yes,samba_cv_frsize=no)])
5152 if test x"$samba_cv_frsize" = x"yes"; then
5153 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5156 # Some systems use f_flag in struct statvfs while others use f_flags
5157 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5158 AC_TRY_COMPILE([#include <sys/types.h>
5159 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5160 samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5161 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5162 AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5165 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5166 AC_TRY_COMPILE([#include <sys/types.h>
5167 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5168 samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5169 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5170 AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5173 if test $space = no; then
5174 # DEC Alpha running OSF/1
5175 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5176 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5178 #include <sys/param.h>
5179 #include <sys/types.h>
5180 #include <sys/mount.h>
5185 exit (statfs (".", &fsd, sizeof (struct statfs)));
5187 fu_cv_sys_stat_statfs3_osf1=yes,
5188 fu_cv_sys_stat_statfs3_osf1=no,
5189 fu_cv_sys_stat_statfs3_osf1=no)])
5190 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5191 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5193 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5197 if test $space = no; then
5199 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5200 member (AIX, 4.3BSD)])
5201 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5203 #ifdef HAVE_SYS_PARAM_H
5204 #include <sys/param.h>
5206 #ifdef HAVE_SYS_MOUNT_H
5207 #include <sys/mount.h>
5209 #ifdef HAVE_SYS_VFS_H
5210 #include <sys/vfs.h>
5216 exit (statfs (".", &fsd));
5218 fu_cv_sys_stat_statfs2_bsize=yes,
5219 fu_cv_sys_stat_statfs2_bsize=no,
5220 fu_cv_sys_stat_statfs2_bsize=no)])
5221 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5222 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5224 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5228 if test $space = no; then
5230 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5231 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5232 [AC_TRY_RUN([#include <sys/types.h>
5233 #include <sys/statfs.h>
5237 exit (statfs (".", &fsd, sizeof fsd, 0));
5239 fu_cv_sys_stat_statfs4=yes,
5240 fu_cv_sys_stat_statfs4=no,
5241 fu_cv_sys_stat_statfs4=no)])
5242 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5243 if test $fu_cv_sys_stat_statfs4 = yes; then
5245 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5249 if test $space = no; then
5251 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5252 member (4.4BSD and NetBSD)])
5253 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5254 [AC_TRY_RUN([#include <sys/types.h>
5255 #ifdef HAVE_SYS_PARAM_H
5256 #include <sys/param.h>
5258 #ifdef HAVE_SYS_MOUNT_H
5259 #include <sys/mount.h>
5265 exit (statfs (".", &fsd));
5267 fu_cv_sys_stat_statfs2_fsize=yes,
5268 fu_cv_sys_stat_statfs2_fsize=no,
5269 fu_cv_sys_stat_statfs2_fsize=no)])
5270 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5271 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5273 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5277 if test $space = no; then
5279 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5280 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5281 [AC_TRY_RUN([#include <sys/types.h>
5282 #ifdef HAVE_SYS_PARAM_H
5283 #include <sys/param.h>
5285 #ifdef HAVE_SYS_MOUNT_H
5286 #include <sys/mount.h>
5288 #ifdef HAVE_SYS_FS_TYPES_H
5289 #include <sys/fs_types.h>
5294 /* Ultrix's statfs returns 1 for success,
5295 0 for not mounted, -1 for failure. */
5296 exit (statfs (".", &fsd) != 1);
5298 fu_cv_sys_stat_fs_data=yes,
5299 fu_cv_sys_stat_fs_data=no,
5300 fu_cv_sys_stat_fs_data=no)])
5301 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5302 if test $fu_cv_sys_stat_fs_data = yes; then
5304 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5309 # As a gating factor for large file support, in order to
5310 # use <4GB files we must have the following minimal support
5312 # long long, and a 64 bit off_t or off64_t.
5313 # If we don't have all of these then disable large
5316 AC_MSG_CHECKING([if large file support can be enabled])
5318 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5319 #include <sys/types.h>
5325 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5326 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5327 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5329 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5331 #################################################
5332 # check for cluster extensions
5335 AC_SUBST(CTDB_CFLAGS)
5337 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5338 [ case "$withval" in
5340 AC_MSG_WARN([--with-ctdb called without argument])
5343 CTDB_CPPFLAGS="-I$withval/include"
5347 SAVED_CPPFLAGS="$CPPFLAGS"
5348 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5349 ctdb_broken="missing or broken headers"
5351 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5352 #include "confdefs.h"
5354 #include "replace.h"
5355 #include "system/wait.h"
5356 #include "system/network.h"
5357 #define private #error __USED_RESERVED_WORD_private__
5363 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5364 #include "confdefs.h"
5366 #include "replace.h"
5367 #include "system/wait.h"
5368 #include "system/network.h"
5372 #include <ctdb_private.h>
5374 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5377 ctdb_broken="ctdb transaction support missing or too old"
5380 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5381 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5382 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5384 #include "confdefs.h"
5386 #include "replace.h"
5387 #include "system/wait.h"
5388 #include "system/network.h"
5392 #include <ctdb_private.h>
5395 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5396 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5398 ctdb_broken="missing struct ctdb_control_tcp"
5400 #include "confdefs.h"
5402 #include "replace.h"
5403 #include "system/wait.h"
5404 #include "system/network.h"
5408 #include <ctdb_private.h>
5411 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5412 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5414 #include "confdefs.h"
5416 #include "replace.h"
5417 #include "system/wait.h"
5418 #include "system/network.h"
5422 #include <ctdb_private.h>
5424 CPPFLAGS="$SAVED_CPPFLAGS"
5426 AC_MSG_CHECKING(cluster support)
5427 AC_ARG_WITH(cluster-support,
5428 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5430 if test x"$with_cluster_support" = x ; then
5431 with_cluster_support="auto"
5434 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5435 if test "x$with_cluster_support" = "xyes"; then
5436 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5438 with_cluster_support=no
5441 if test x"$ctdb_broken" != x"no"; then
5442 if test "x$with_cluster_support" = "xyes"; then
5443 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5445 with_cluster_support=no
5448 if test "x$with_cluster_support" != "xno"; then
5449 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5450 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5456 #################################################
5457 # check for ACL support
5459 AC_MSG_CHECKING(whether to support ACLs)
5460 AC_ARG_WITH(acl-support,
5461 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5462 [ case "$withval" in
5464 with_acl_support="$withval"
5468 if test x"$with_acl_support" = x ; then
5469 with_acl_support="auto"
5472 AC_MSG_RESULT($with_acl_support)
5474 if test x"$with_acl_support" = x"no"; then
5475 AC_MSG_RESULT(Disabling ACL support)
5476 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5478 AC_MSG_NOTICE(checking whether ACL support is available:)
5481 AC_MSG_NOTICE(Using UnixWare ACLs)
5482 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5483 default_static_modules="$default_static_modules vfs_solarisacl"
5486 AC_MSG_NOTICE(Using solaris ACLs)
5487 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5488 ACL_LIBS="$ACL_LIBS -lsec"
5489 default_static_modules="$default_static_modules vfs_solarisacl"
5492 AC_MSG_NOTICE(Using HPUX ACLs)
5493 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5494 default_static_modules="$default_static_modules vfs_hpuxacl"
5497 AC_MSG_NOTICE(Using IRIX ACLs)
5498 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5499 default_static_modules="$default_static_modules vfs_irixacl"
5502 AC_MSG_NOTICE(Using AIX ACLs)
5503 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5504 default_static_modules="$default_static_modules vfs_aixacl"
5507 AC_MSG_NOTICE(Using Tru64 ACLs)
5508 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5509 ACL_LIBS="$ACL_LIBS -lpacl"
5510 default_static_modules="$default_static_modules vfs_tru64acl"
5513 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5514 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5517 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5520 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5523 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5525 LIBS="$LIBS $ACL_LIBS"
5527 #include <sys/types.h>
5528 #include <sys/acl.h>
5532 acl_entry_t *entry_p;
5533 return acl_get_entry(acl, entry_id, entry_p);
5535 [samba_cv_HAVE_POSIX_ACLS=yes],
5536 [samba_cv_HAVE_POSIX_ACLS=no])
5539 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5540 AC_MSG_NOTICE(Using posix ACLs)
5541 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5542 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5544 LIBS="$LIBS $ACL_LIBS"
5546 #include <sys/types.h>
5547 #include <sys/acl.h>
5549 acl_permset_t permset_d;
5551 return acl_get_perm_np(permset_d, perm);
5553 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5554 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5557 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5558 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5560 default_static_modules="$default_static_modules vfs_posixacl"
5562 AC_MSG_NOTICE(ACL support is not avaliable)
5563 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5567 fi # with_acl_support
5571 #################################################
5572 # check for AIO support
5574 AC_MSG_CHECKING(whether to support asynchronous io)
5575 AC_ARG_WITH(aio-support,
5576 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5577 [ case "$withval" in
5585 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5587 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5588 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5591 AC_TRY_LINK([#include <sys/types.h>
5593 [ struct aiocb a; return aio_read(&a);],
5594 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5596 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5599 AC_TRY_LINK([#include <sys/types.h>
5601 [ struct aiocb64 a; return aio_read64(&a);],
5602 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5604 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5605 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5606 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5608 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5609 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5613 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5614 AC_MSG_CHECKING(for aio_read)
5615 AC_LINK_IFELSE([#include <aio.h>
5616 int main() { struct aiocb a; return aio_read(&a); }],
5617 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5618 [AC_MSG_RESULT(no)])
5620 AC_MSG_CHECKING(for aio_write)
5621 AC_LINK_IFELSE([#include <aio.h>
5622 int main() { struct aiocb a; return aio_write(&a); }],
5623 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5624 [AC_MSG_RESULT(no)])
5626 AC_MSG_CHECKING(for aio_fsync)
5627 AC_LINK_IFELSE([#include <aio.h>
5628 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5629 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5630 [AC_MSG_RESULT(no)])
5632 AC_MSG_CHECKING(for aio_return)
5633 AC_LINK_IFELSE([#include <aio.h>
5634 int main() { struct aiocb a; return aio_return(&a); }],
5635 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5636 [AC_MSG_RESULT(no)])
5638 AC_MSG_CHECKING(for aio_error)
5639 AC_LINK_IFELSE([#include <aio.h>
5640 int main() { struct aiocb a; return aio_error(&a); }],
5641 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5642 [AC_MSG_RESULT(no)])
5644 AC_MSG_CHECKING(for aio_cancel)
5645 AC_LINK_IFELSE([#include <aio.h>
5646 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5647 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5648 [AC_MSG_RESULT(no)])
5650 AC_MSG_CHECKING(for aio_suspend)
5651 AC_LINK_IFELSE([#include <aio.h>
5652 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5653 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5654 [AC_MSG_RESULT(no)])
5657 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5658 AC_MSG_CHECKING(for aio_read64)
5659 AC_LINK_IFELSE([#include <aio.h>
5660 int main() { struct aiocb a; return aio_read64(&a); }],
5661 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5662 [AC_MSG_RESULT(no)])
5664 AC_MSG_CHECKING(for aio_write64)
5665 AC_LINK_IFELSE([#include <aio.h>
5666 int main() { struct aiocb a; return aio_write64(&a); }],
5667 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5668 [AC_MSG_RESULT(no)])
5670 AC_MSG_CHECKING(for aio_fsync64)
5671 AC_LINK_IFELSE([#include <aio.h>
5672 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5673 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5674 [AC_MSG_RESULT(no)])
5676 AC_MSG_CHECKING(for aio_return64)
5677 AC_LINK_IFELSE([#include <aio.h>
5678 int main() { struct aiocb a; return aio_return64(&a); }],
5679 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5680 [AC_MSG_RESULT(no)])
5682 AC_MSG_CHECKING(for aio_error64)
5683 AC_LINK_IFELSE([#include <aio.h>
5684 int main() { struct aiocb a; return aio_error64(&a); }],
5685 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5686 [AC_MSG_RESULT(no)])
5688 AC_MSG_CHECKING(for aio_cancel64)
5689 AC_LINK_IFELSE([#include <aio.h>
5690 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5691 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5692 [AC_MSG_RESULT(no)])
5694 AC_MSG_CHECKING(for aio_suspend64)
5695 AC_LINK_IFELSE([#include <aio.h>
5696 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5697 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5698 [AC_MSG_RESULT(no)])
5705 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5708 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5712 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5713 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5714 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5715 default_shared_modules="$default_shared_modules vfs_aio_fork"
5719 #################################################
5720 # check for sendfile support
5722 with_sendfile_support=yes
5723 AC_MSG_CHECKING(whether to check to support sendfile)
5724 AC_ARG_WITH(sendfile-support,
5725 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5726 [ case "$withval" in
5732 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5733 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5734 AC_TRY_LINK([#include <sys/sendfile.h>],
5739 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5741 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5743 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5744 AC_TRY_LINK([#include <sys/sendfile.h>],
5749 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5751 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5753 # Try and cope with broken Linux sendfile....
5754 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5756 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5757 #undef _FILE_OFFSET_BITS
5759 #include <sys/sendfile.h>],
5764 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5766 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5768 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5769 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5770 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5771 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5772 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5773 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5774 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5775 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5776 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5777 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5778 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5784 *freebsd* | *dragonfly* )
5785 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5787 #include <sys/types.h>
5789 #include <sys/socket.h>
5790 #include <sys/uio.h>],
5792 int fromfd, tofd, ret, total=0;
5793 off_t offset, nwritten;
5796 hdr.headers = &hdtrl;
5798 hdr.trailers = NULL;
5800 hdtrl.iov_base = NULL;
5802 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5804 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5806 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5807 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5808 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5809 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5816 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5818 #include <sys/socket.h>
5819 #include <sys/uio.h>],
5823 struct iovec hdtrl[2];
5827 hdtrl[0].iov_base = 0;
5828 hdtrl[0].iov_len = 0;
5830 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5832 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5833 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5834 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5835 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5836 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5841 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5843 #include <sys/socket.h>
5844 #include <sys/uio.h>],
5848 struct iovec hdtrl[2];
5852 hdtrl[0].iov_base = 0;
5853 hdtrl[0].iov_len = 0;
5855 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5857 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5858 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5859 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5860 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5861 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5868 AC_CHECK_LIB(sendfile,sendfilev)
5869 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5871 #include <sys/sendfile.h>],
5875 struct sendfilevec vec[2];
5881 vec[0].sfv_fd = SFV_FD_SELF;
5882 vec[0].sfv_flag = 0;
5887 vec[1].sfv_flag = 0;
5890 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5892 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5894 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5895 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5896 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5897 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5902 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5904 #include <sys/sendfile.h>],
5908 struct sendfilevec vec[2];
5914 vec[0].sfv_fd = SFV_FD_SELF;
5915 vec[0].sfv_flag = 0;
5920 vec[1].sfv_flag = 0;
5923 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5925 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5927 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5928 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5929 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5930 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5936 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5938 #include <sys/socket.h>],
5942 struct sf_parms hdtrl;
5946 hdtrl.header_data = 0;
5947 hdtrl.header_length = 0;
5948 hdtrl.file_descriptor = fromfd;
5949 hdtrl.file_offset = 0;
5950 hdtrl.file_bytes = 0;
5951 hdtrl.trailer_data = 0;
5952 hdtrl.trailer_length = 0;
5954 nwritten = send_file(&tofd, &hdtrl, 0);
5956 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5957 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5958 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5959 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5960 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5976 ############################################
5977 # See if we have the Linux readahead syscall.
5979 AC_CACHE_CHECK([for Linux readahead],
5980 samba_cv_HAVE_LINUX_READAHEAD,[
5982 #if defined(HAVE_UNISTD_H)
5985 #include <fcntl.h>],
5986 [ssize_t err = readahead(0,0,0x80000);],
5987 samba_cv_HAVE_LINUX_READAHEAD=yes,
5988 samba_cv_HAVE_LINUX_READAHEAD=no)])
5990 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5991 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5992 [Whether Linux readahead is available])
5995 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5997 ############################################
5998 # See if we have the posix_fadvise syscall.
6000 AC_CACHE_CHECK([for posix_fadvise],
6001 samba_cv_HAVE_POSIX_FADVISE,[
6003 #if defined(HAVE_UNISTD_H)
6006 #include <fcntl.h>],
6007 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6008 samba_cv_HAVE_POSIX_FADVISE=yes,
6009 samba_cv_HAVE_POSIX_FADVISE=no)])
6011 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6012 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6013 [Whether posix_fadvise is available])
6016 ############################################
6017 # See if we have the Linux splice syscall.
6021 AC_CACHE_CHECK([for Linux splice],
6022 samba_cv_HAVE_LINUX_SPLICE,[
6024 #if defined(HAVE_UNISTD_H)
6027 #include <fcntl.h>],
6028 [long ret = splice(0,0,1,0,400,0);],
6029 samba_cv_HAVE_LINUX_SPLICE=yes,
6030 samba_cv_HAVE_LINUX_SPLICE=no)])
6033 samba_cv_HAVE_LINUX_SPLICE=no
6037 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
6038 AC_DEFINE(HAVE_LINUX_SPLICE,1,
6039 [Whether Linux splice is available])
6042 AC_HAVE_DECL(splice, [#include <fcntl.h>])
6044 ############################################
6045 # See if we have the a broken readlink syscall.
6047 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
6048 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
6049 samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
6051 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
6052 AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
6055 #################################################
6056 # Check whether winbind is supported on this platform. If so we need to
6057 # build and install client programs, sbin programs and shared libraries
6059 AC_MSG_CHECKING(whether to build winbind)
6061 # Initially, the value of $host_os decides whether winbind is supported
6066 # Define external wbclient library to link against. This disables winbind.
6067 # We define this here so --with-winbind can override it.
6068 AC_ARG_WITH(wbclient,
6069 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
6082 WBCLIENT_INCLUDES="-I$withval/include"
6083 WBCLIENT_LDFLAGS="-L$withval/lib"
6088 AC_SUBST(WBCLIENT_INCLUDES)
6089 AC_SUBST(WBCLIENT_LDFLAGS)
6090 AC_SUBST(WBCLIENT_LIBS)
6093 # Define the winbind shared library name and any specific linker flags
6094 # it needs to be built with.
6096 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
6097 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
6098 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6099 NSSSONAMEVERSIONSUFFIX=""
6102 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
6103 NSSSONAMEVERSIONSUFFIX=".2"
6104 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
6107 # FreeBSD winbind client is implemented as a wrapper around
6108 # the Linux version.
6109 NSSSONAMEVERSIONSUFFIX=".1"
6110 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
6111 ../nsswitch/winbind_nss_linux.o"
6112 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6113 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6117 # NetBSD winbind client is implemented as a wrapper
6118 # around the Linux version. It needs getpwent_r() to
6119 # indicate libc's use of the correct nsdispatch API.
6121 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6122 WINBIND_NSS_EXTRA_OBJS="\
6123 ../nsswitch/winbind_nss_netbsd.o \
6124 ../nsswitch/winbind_nss_linux.o"
6125 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6126 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6129 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6133 # IRIX has differently named shared libraries
6134 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6135 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6136 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6139 # Solaris winbind client is implemented as a wrapper around
6140 # the Linux version.
6141 NSSSONAMEVERSIONSUFFIX=".1"
6142 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6143 ../nsswitch/winbind_nss_linux.o"
6146 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6149 # AIX has even differently named shared libraries. No
6150 # WINS support has been implemented yet.
6151 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6152 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6153 WINBIND_NSS="../nsswitch/WINBIND"
6158 winbind_no_reason=", unsupported on $host_os"
6162 # Check the setting of --with-winbind
6164 AC_ARG_WITH(winbind,
6165 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6179 # We need unix domain sockets for winbind
6181 if test x"$HAVE_WINBIND" = x"yes"; then
6182 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6183 winbind_no_reason=", no unix domain socket support on $host_os"
6188 # Display test results
6190 if test x"$HAVE_WINBIND" = x"no"; then
6194 if test x"$HAVE_WBCLIENT" = x"yes"; then
6195 AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6196 [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6197 LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6199 AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6200 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6202 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6203 BUILD_LIBWBCLIENT_SHARED=no
6205 BUILD_LIBWBCLIENT_SHARED=yes
6208 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6209 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6211 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6212 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6213 ## Only worry about libwbclient if we have shared
6215 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6216 LIBWBCLIENT=libwbclient
6217 INSTALL_LIBWBCLIENT=installlibwbclient
6218 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6219 LIBWBCLIENT_LIBS="-lwbclient"
6221 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6222 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6226 if test x"$HAVE_WINBIND" = x"yes"; then
6228 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6230 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6231 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6232 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6233 PAM_MODULES="$PAM_MODULES pam_winbind"
6234 INSTALL_PAM_MODULES="installpammodules"
6235 UNINSTALL_PAM_MODULES="uninstallpammodules"
6238 AC_MSG_RESULT(no$winbind_no_reason)
6241 AC_SUBST(WINBIND_NSS)
6242 AC_SUBST(WINBIND_WINS_NSS)
6243 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6244 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6245 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6247 AC_SUBST(WINBIND_KRB5_LOCATOR)
6249 # Solaris 10 does have new member in nss_XbyY_key
6250 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6251 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6252 [#include <nss_dbdefs.h>])
6254 # Solaris has some extra fields in struct passwd that need to be
6255 # initialised otherwise nscd crashes.
6257 AC_CHECK_MEMBER(struct passwd.pw_comment,
6258 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6261 AC_CHECK_MEMBER(struct passwd.pw_age,
6262 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6265 # AIX 4.3.x and 5.1 do not have as many members in
6266 # struct secmethod_table as AIX 5.2
6267 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6268 [#include <usersec.h>])
6269 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6270 [#include <usersec.h>])
6272 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6273 AC_TRY_COMPILE([#include <sys/types.h>
6274 #include <sys/socket.h>],
6277 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6279 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6280 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6281 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6285 #################################################
6286 # Check to see if we should use the included popt
6288 AC_ARG_WITH(included-popt,
6289 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6300 if test x"$INCLUDED_POPT" != x"yes"; then
6301 AC_CHECK_LIB(popt, poptGetContext,
6302 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6305 AC_MSG_CHECKING(whether to use included popt)
6306 if test x"$INCLUDED_POPT" = x"yes"; then
6308 BUILD_POPT='$(POPT_OBJ)'
6309 POPTLIBS='$(POPT_OBJ)'
6310 FLAGS1="-I\$(srcdir)/../lib/popt"
6316 AC_SUBST(BUILD_POPT)
6320 #################################################
6321 # Check if user wants DNS service discovery support
6323 AC_ARG_ENABLE(dnssd,
6324 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6326 AC_SUBST(DNSSD_LIBS)
6327 if test x"$enable_dnssd" = x"yes"; then
6328 have_dnssd_support=yes
6330 AC_CHECK_HEADERS(dns_sd.h)
6331 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6332 have_dnssd_support=no
6335 # On Darwin the DNSSD API is in libc, but on other platforms it's
6336 # probably in -ldns_sd
6337 AC_CHECK_FUNCS(DNSServiceRegister)
6338 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6339 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6340 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6341 have_dnssd_support=no
6344 if test x"$have_dnssd_support" = x"yes"; then
6345 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6346 [Whether to enable DNS service discovery support])
6348 if test x"$enable_dnssd" = x"yes"; then
6349 AC_MSG_ERROR(DNS service discovery support not available)
6355 #################################################
6356 # Check if user wants avahi support
6358 AC_ARG_ENABLE(avahi,
6359 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6361 if test x"$enable_avahi" != x"no"; then
6362 have_avahi_support=yes
6364 AC_CHECK_HEADERS(avahi-common/watch.h)
6365 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6366 have_avahi_support=no
6369 AC_CHECK_HEADERS(avahi-client/client.h)
6370 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6371 have_avahi_support=no
6375 AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6376 AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6379 if test x"$have_avahi_client_new" != x"yes" -o \
6380 x"$have_avahi_strerror" != x"yes" ; then
6381 have_avahi_support=no
6384 if test x"$have_avahi_support" = x"yes"; then
6385 AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6386 AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6387 [Whether to enable avahi support])
6388 AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6390 if test x"$enable_avahi" = x"yes"; then
6391 AC_MSG_ERROR(avahi support not available)
6397 #################################################
6400 PTHREAD_CFLAGS=error
6401 PTHREAD_LDFLAGS=error
6403 # If it's error, then the user didn't
6405 if test "x$PTHREAD_LDFLAGS" = xerror; then
6406 AC_CHECK_LIB(pthread, pthread_attr_init, [
6407 PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6408 PTHREAD_LDFLAGS="-lpthread" ])
6411 if test "x$PTHREAD_LDFLAGS" = xerror; then
6412 AC_CHECK_LIB(pthreads, pthread_attr_init, [
6413 PTHREAD_CFLAGS="-D_THREAD_SAFE"
6414 PTHREAD_LDFLAGS="-lpthreads" ])
6417 if test "x$PTHREAD_LDFLAGS" = xerror; then
6418 AC_CHECK_LIB(c_r, pthread_attr_init, [
6419 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6420 PTHREAD_LDFLAGS="-pthread" ])
6423 if test "x$PTHREAD_LDFLAGS" = xerror; then
6424 AC_CHECK_FUNC(pthread_attr_init, [
6425 PTHREAD_CFLAGS="-D_REENTRANT"
6426 PTHREAD_LDFLAGS="-lpthread" ])
6429 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6430 # pthread_attr_init. On pthread_mutex_lock it works there...
6431 if test "x$PTHREAD_LDFLAGS" = xerror; then
6432 AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6433 PTHREAD_CFLAGS="-D_REENTRANT"
6434 PTHREAD_LDFLAGS="-lpthread" ])
6437 AC_SUBST(PTHREAD_CFLAGS)
6438 AC_SUBST(PTHREAD_LDFLAGS)
6440 samba_cv_HAVE_PTHREAD=no
6441 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6442 samba_cv_HAVE_PTHREAD=yes
6443 # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6444 ac_save_CFLAGS=$CFLAGS
6445 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6446 ac_save_LDFLAGS=$LDFLAGS
6447 LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6448 AC_CHECK_HEADERS(pthread.h)
6449 CFLAGS=$ac_save_CFLAGS
6450 LDFLAGS=$ac_save_LDFLAGS
6451 AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6454 #################################################
6455 # Check if user wants pthreadpool support
6457 AC_ARG_ENABLE(pthreadpool,
6458 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6460 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6461 AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6464 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6465 LIBS="$LIBS $PTHREAD_LDFLAGS"
6466 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6467 AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6468 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6471 #################################################
6472 # Check to see if we should use the included iniparser
6474 AC_ARG_WITH(included-iniparser,
6475 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6479 INCLUDED_INIPARSER=yes
6482 INCLUDED_INIPARSER=no
6486 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6487 AC_CHECK_LIB(iniparser, iniparser_load,
6488 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6491 AC_MSG_CHECKING(whether to use included iniparser)
6492 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6494 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6496 FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6500 INIPARSERLIBS="-liniparser"
6502 AC_SUBST(BUILD_INIPARSER)
6503 AC_SUBST(INIPARSERLIBS)
6506 ###################################################
6507 # Check for different/missing (set|get|end)netgrent prototypes
6509 CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6510 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6511 AC_TRY_COMPILE([#include<netdb.h>
6512 #ifdef HAVE_NETGROUP_H
6513 #include<netgroup.h>
6514 #endif],[setnetgrent("foo")],
6515 samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6516 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6517 AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6519 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6520 AC_TRY_COMPILE([#include<netdb.h>
6521 #ifdef HAVE_NETGROUP_H
6522 #include<netgroup.h>
6523 #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6524 samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6525 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6526 AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6528 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6529 AC_TRY_COMPILE([#include<netdb.h>
6530 #ifdef HAVE_NETGROUP_H
6531 #include<netgroup.h>
6532 #endif],[endnetgrent()],
6533 samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6534 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6535 AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6540 # Checks for the vfs_fileid module
6542 AC_CHECK_FUNC(getmntent)
6544 AC_CHECK_HEADERS(sys/statfs.h)
6546 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6547 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6549 #include <sys/types.h>
6550 #include <sys/statfs.h>
6554 fsid_t fsid = fsd.f_fsid;
6555 return statfs (".", &fsd);
6557 vfsfileid_cv_statfs=yes,
6558 vfsfileid_cv_statfs=no,
6559 vfsfileid_cv_statfs=cross)
6561 AC_MSG_RESULT($vfsfileid_cv_statfs)
6563 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6564 x"$vfsfileid_cv_statfs" = x"yes"; then
6565 default_shared_modules="$default_shared_modules vfs_fileid"
6568 # Checks for the vfs_fileid module
6571 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6573 eval MODULE_DEFAULT_$i=STATIC
6576 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6578 dnl Fall back to static if we cannot build shared libraries
6579 eval MODULE_DEFAULT_$i=STATIC
6581 if test $BLDSHARED = true; then
6582 eval MODULE_DEFAULT_$i=SHARED
6586 dnl Always build these modules static
6587 MODULE_rpc_spoolss=STATIC
6588 MODULE_rpc_srvsvc=STATIC
6589 MODULE_idmap_tdb=STATIC
6590 MODULE_idmap_passdb=STATIC
6591 MODULE_idmap_nss=STATIC
6593 MODULE_nss_info_template=STATIC
6595 AC_ARG_WITH(static-modules,
6596 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6597 [ if test $withval; then
6598 for i in `echo $withval | sed -e 's/,/ /g'`
6600 eval MODULE_$i=STATIC
6604 AC_ARG_WITH(shared-modules,
6605 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6606 [ if test $withval; then
6607 for i in `echo $withval | sed -e 's/,/ /g'`
6609 eval MODULE_$i=SHARED
6613 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6614 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6615 SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6616 AC_SUBST(SMBD_FAM_LIBS)
6619 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6620 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6621 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6622 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6623 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6624 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6625 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6628 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6629 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6630 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6631 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6632 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6633 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6634 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6635 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6636 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6637 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6638 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6639 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6640 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6641 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6642 SMB_SUBSYSTEM(RPC,smbd/process.o)
6644 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6645 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6646 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6647 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6648 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6649 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6650 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6651 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6652 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6653 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6655 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6656 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6658 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6659 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6660 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6661 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6662 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6664 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6665 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6666 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6667 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6668 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6669 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6670 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6671 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6672 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6673 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6675 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6676 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6677 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6678 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6679 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6680 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6681 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6682 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6683 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6684 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6685 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6686 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6687 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6688 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6689 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6690 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6691 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6692 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6693 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6694 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6695 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6696 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6697 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6698 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6699 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6700 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6701 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6702 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6703 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6704 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6705 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6706 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6707 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6708 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6709 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6710 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6711 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6712 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6713 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6714 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6715 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6716 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6717 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6718 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6719 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6720 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6722 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6724 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6725 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6726 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6728 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6729 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6730 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6731 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6733 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6735 #################################################
6736 # do extra things if we are running insure
6738 if test "${ac_cv_prog_CC}" = "insure"; then
6739 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6742 #################################################
6743 # If run from the build farm, enable NASTY hacks
6744 #################################################
6745 AC_MSG_CHECKING(whether to enable build farm hacks)
6746 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6748 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6753 #################################################
6754 # check for bad librt/libpthread interactions
6756 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6757 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6758 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6759 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6761 SMB_IF_RTSIGNAL_BUG(
6763 # Have RT_SIGNAL bug, need to check whether the problem will
6764 # affect anything we have configured.
6767 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6768 if test x"$rt_signal_lease_ok" = x"no" ; then
6773 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6774 if test x"$rt_signal_notify_ok" = x"no" ; then
6779 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6780 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6781 if test x"$rt_signal_aio_ok" = x"no" ; then
6786 if test x"$rt_do_error" = x"yes" ; then
6787 SMB_IS_LIBPTHREAD_LINKED(
6791 *** On this platforms, linking Samba against pthreads causes problems
6792 *** with the oplock and change notification mechanisms. You may be
6793 *** using pthreads as a side-effect of using the --with-aio-support
6794 *** or --with-profiling-data options. Please remove these and try again.
6801 *** On this platform, the oplock and change notification mechanisms do not
6802 *** appear to work. Please report this problem to samba-technical@samba.org
6803 *** and attach the config.log file from this directory.
6807 AC_MSG_ERROR(unable to use realtime signals on this platform)
6811 # no RT_SIGNAL bug, we are golden
6812 SMB_IS_LIBPTHREAD_LINKED(
6814 AC_MSG_WARN(using libpthreads - this may degrade performance)
6819 # cross compiling, I hope you know what you are doing
6825 AC_ARG_ENABLE(merged-build,
6826 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])],
6827 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6829 if test x"$enable_merged_build" = x"yes" -a \
6830 x"$merged_build_possible" = x"no" ; then
6831 AC_MSG_ERROR(Merged build required but not possible)
6834 m4_include(../lib/zlib/zlib.m4)
6836 if test x$enable_merged_build = xauto; then
6838 m4_include(../m4/check_python.m4)
6839 AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6841 AC_MSG_CHECKING([whether it would be possible to do a merged build])
6842 AC_MSG_RESULT([$merged_build_possible])
6844 # Enable merged build automatically if possible, when in developer mode
6845 if test "x$developer" = xyes; then
6846 enable_merged_build=$merged_build_possible
6850 if test x$enable_merged_build = xyes; then
6852 saved_USESHARED="$USESHARED"
6854 smbtorture4_path="bin/smbtorture4"
6855 smbtorture4_option="-t bin/smbtorture4"
6856 AC_SUBST(smbtorture4_path)
6857 AC_SUBST(smbtorture4_option)
6858 USESHARED="$saved_USESHARED"
6859 SMBTORTURE4="bin/smbtorture4"
6860 AC_SUBST(SMBTORTURE4)
6865 AC_ZLIB([ZLIB_OBJS=""], [
6867 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6868 deflate.o trees.o zutil.o inflate.o infback.o \
6869 inftrees.o inffast.o
6871 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6873 CFLAGS="-I../lib/zlib $CFLAGS"
6876 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6878 if test "x$enable_dmalloc" = xyes
6880 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6881 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6882 [Define to check invariants around some common functions])
6883 LIBS="$LIBS -ldmalloc"
6886 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6887 LIB_REMOVE_USR_LIB(LDFLAGS)
6888 LIB_REMOVE_USR_LIB(LIBS)
6890 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6891 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6892 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6894 #################################################
6895 # Display summary of libraries detected
6897 AC_MSG_RESULT([Using libraries:])
6898 AC_MSG_RESULT([ LIBS = $LIBS])
6899 if test x"$with_ads_support" != x"no"; then
6900 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6902 if test x"$with_ldap_support" != x"no"; then
6903 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6905 if test x"$with_dnsupdate_support" != x"no"; then
6906 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6908 if test x"$have_dnssd_support" != x"no"; then
6909 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6911 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6913 #################################################
6914 # final configure stuff
6916 AC_MSG_CHECKING([configure summary])
6917 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6919 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6920 AC_MSG_WARN([cannot run when cross-compiling]))
6922 dnl Merge in developer cflags from now on
6923 AC_SUBST(DEVELOPER_CFLAGS)
6924 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6925 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6928 # Stuff the smbd-only libraries at the end of the smbd link
6929 # path (if we have them).
6930 SMBD_LIBS="$samba_dmapi_libs"
6933 CFLAGS="${CFLAGS} \$(FLAGS)"
6934 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6936 # If we had to expand the includes, make tsure the output file is moved back
6937 AC_OUTPUT_COMMANDS([
6938 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
6939 ln -s Makefile-noincludes Makefile
6944 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6945 lib/netapi/examples/Makefile
6946 lib/netapi/tests/Makefile
6947 pkgconfig/smbclient.pc
6948 pkgconfig/wbclient.pc
6950 pkgconfig/smbsharemodes.pc
6951 ../examples/libsmbclient/Makefile.internal
6954 #################################################
6955 # Print very concise instructions on building/use
6956 if test "x$enable_dmalloc" = xyes
6958 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6959 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])