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)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(lib/talloc/libtalloc.m4)
29 for obj in ${TALLOC_OBJ}; do
30 TALLOC_OBJS="${TALLOC_OBJS} ${tallocdir}/${obj}"
34 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35 # but currently this fails: things have to get merged from s4.
38 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
40 TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
41 TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o"
45 for obj in ${TDB_OBJ}; do
46 TDB_OBJS="${TDB_OBJS} ${tdbdir}/${obj}"
50 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
51 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
52 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
57 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
59 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60 if test "x${srcdir-.}" != "x."; then
61 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
64 dnl Unique-to-Samba variables we'll be playing with.
65 AC_SUBST(SAMBA_CPPFLAGS)
70 AC_SUBST(MODULE_EXPORTS)
76 AC_SUBST(RELRO_LDFLAGS)
78 AC_SUBST(INSTALLLIBCMD_SH)
79 AC_SUBST(INSTALLLIBCMD_A)
80 AC_SUBST(UNINSTALLLIBCMD_SH)
81 AC_SUBST(UNINSTALLLIBCMD_A)
83 AC_SUBST(INSTALL_LIBWBCLIENT)
84 AC_SUBST(UNINSTALL_LIBWBCLIENT)
85 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
86 AC_SUBST(LIBWBCLIENT_SHARED)
87 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
88 AC_SUBST(LIBWBCLIENT_STATIC)
89 AC_SUBST(LIBWBCLIENT_SOVER)
91 AC_SUBST(WINBIND_LIBS)
93 AC_SUBST(LIBSAMBAUTIL_SHARED)
103 AC_SUBST(PAM_MODULES)
104 AC_SUBST(INSTALL_PAM_MODULES)
105 AC_SUBST(UNINSTALL_PAM_MODULES)
106 AC_SUBST(NSS_MODULES)
107 AC_SUBST(EXTRA_BIN_PROGS)
108 AC_SUBST(CIFSMOUNT_PROGS)
109 AC_SUBST(INSTALL_CIFSMOUNT)
110 AC_SUBST(UNINSTALL_CIFSMOUNT)
111 AC_SUBST(CIFSUPCALL_PROGS)
112 AC_SUBST(INSTALL_CIFSUPCALL)
113 AC_SUBST(UNINSTALL_CIFSUPCALL)
114 AC_SUBST(EXTRA_SBIN_PROGS)
115 AC_SUBST(EXTRA_ALL_TARGETS)
116 AC_SUBST(CONFIG_LIBS)
119 # compile with optimization and without debugging by default, but
120 # allow people to set their own preference.
121 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
122 # if it has no value. This prevent *very* large debug binaries from occurring
124 if test "x$CFLAGS" = x; then
127 if test "x$debug" = "xyes" ; then
128 CFLAGS="${CFLAGS} -g"
130 CFLAGS="${CFLAGS} -O"
133 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
135 m4_include(lib/socket_wrapper/config.m4)
136 m4_include(lib/nss_wrapper/config.m4)
138 m4_include(m4/swat.m4)
140 # Probe the gcc version for extra CFLAGS. We always stash these in
141 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
142 # Makefile edit, avoiding the need to re-run configure.
143 if test x"$ac_cv_prog_gcc" = x"yes" ; then
144 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
145 # Add -Wdeclaration-after-statement if compiler supports it
147 [that the C compiler understands -Wdeclaration-after-statement],
148 samba_cv_HAVE_Wdeclaration_after_statement, [
153 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
154 samba_cv_HAVE_Wdeclaration_after_statement=yes,
155 samba_cv_HAVE_Wdeclaration_after_statement=no,
156 samba_cv_HAVE_Wdeclaration_after_statement=cross)
159 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
160 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
163 #-Werror-implicit-function-declaration
165 [that the C compiler understands -Werror-implicit-function-declaration],
166 samba_cv_HAVE_Werror_implicit_function_declaration, [
171 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
172 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
173 samba_cv_HAVE_Werror_implicit_function_declaration=no,
174 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
176 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
177 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
180 # krb5developer is like developer, except we don't get
181 # -Wstrict-prototypes.
182 if test x"$krb5_developer" != x"$yes" ; then
183 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
187 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
189 if test "x$enable_dmalloc" = xyes
191 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
192 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
193 [Define to check invariants around some common functions])
194 LIBS="$LIBS -ldmalloc"
197 #################################################
198 # check for a shared memory profiling support
199 AC_MSG_CHECKING(whether to use profiling)
200 AC_ARG_WITH(profiling-data,
201 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
205 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
206 samba_cv_WITH_PROFILE=yes
210 samba_cv_WITH_PROFILE=no
216 dnl Checks for programs.
220 AC_PATH_PROG(PERL, perl)
222 AC_CHECK_TOOL(AR, ar)
224 dnl Check if we use GNU ld
228 dnl Certain versions of GNU ld the default is not to have the
229 dnl --allow-shlib-undefined flag defined. This causes a stackload of
230 dnl warnings when building modules.
231 if test "$ac_cv_prog_gnu_ld" = "yes"; then
232 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
233 AC_MSG_CHECKING(GNU ld release date)
235 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'`
237 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
238 if test -n "$ac_cv_gnu_ld_date"; then
239 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
240 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
242 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
243 ac_cv_gnu_ld_version_script=yes
246 AC_MSG_CHECKING(GNU ld release version)
248 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
249 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
250 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
252 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
253 AC_MSG_CHECKING(GNU ld release version major)
254 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
255 AC_MSG_CHECKING(GNU ld release version minor)
256 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
257 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
258 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
260 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
261 ac_cv_gnu_ld_version_script=yes
266 dnl look for executable suffix
269 dnl Check if C compiler understands -c and -o at the same time
271 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
278 dnl Check if the C compiler understands -Werror
279 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
284 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
285 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
286 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
287 Werror_FLAGS="-Werror"
289 dnl Check if the C compiler understands -w2
290 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
295 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
296 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
297 if test x"$samba_cv_HAVE_w2" = x"yes"; then
300 dnl Check if the C compiler understands -errwarn
301 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
306 }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
307 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
308 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
309 Werror_FLAGS="-errwarn=%all"
314 dnl Check if the C compiler understands volatile (it should, being ANSI).
315 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
316 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
317 samba_cv_volatile=yes,samba_cv_volatile=no)])
318 if test x"$samba_cv_volatile" = x"yes"; then
319 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
322 ############################################
323 # check if the compiler can handle negative enum values
324 # and don't truncate the values to INT_MAX
325 # a runtime test is needed here
327 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
331 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
333 enum negative_values v1 = NEGATIVE_VALUE;
334 unsigned v2 = NEGATIVE_VALUE;
336 if (v1 != 0xFFFFFFFF) {
337 printf("%u != 0xFFFFFFFF\n", v1);
340 if (v2 != 0xFFFFFFFF) {
341 printf("%u != 0xFFFFFFFF\n", v2);
348 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
349 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
350 AC_MSG_WARN([using --unit-enums for pidl])
351 PIDL_ARGS="$PIDL_ARGS --uint-enums"
354 dnl Figure out the flags to support named structure initializers
356 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
358 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
359 AC_MSG_CHECKING(uname -s)
360 AC_MSG_RESULT(${UNAME_S})
362 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
363 AC_MSG_CHECKING(uname -r)
364 AC_MSG_RESULT(${UNAME_R})
366 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
367 AC_MSG_CHECKING(uname -m)
368 AC_MSG_RESULT(${UNAME_M})
370 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
371 AC_MSG_CHECKING(uname -p)
372 AC_MSG_RESULT(${UNAME_P})
374 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
375 AC_MSG_CHECKING(uname -i)
376 AC_MSG_RESULT(${UNAME_I})
378 dnl Add #include for broken IRIX header files
381 #TODO add to libreplace
382 if test x"$ac_cv_prog_gcc" != x"yes" ; then
383 dnl Fix sensible defaults for MIPSPro compilers. The
384 dnl error numbers are valid for the 7.3 compilers,
385 dnl hopefully also valid for the 7.4 series.
387 dnl Bugzilla 3801. Force an error on warning 1035
388 dnl so we don't incorrectly detect stdint.h. This
389 dnl warning is emitted for #error directives.
390 CFLAGS="$CFLAGS -diag_error 1035"
391 dnl 1209: Controlling expression is constant
392 dnl 1174: Function foo declared but never referenced
393 dnl 3201: Parameter foo was never referenced
394 CFLAGS="$CFLAGS -woff 1209,1174,3201"
402 dnl Add modules that have to be built by default here
403 dnl These have to be built static:
404 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
406 dnl These are preferably build shared, and static if dlopen() is not available
407 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_smb_traffic_analyzer"
409 if test "x$developer" = xyes; then
410 default_static_modules="$default_static_modules rpc_rpcecho"
411 default_shared_modules="$default_shared_modules charset_weird"
415 # Config CPPFLAG settings for strange OS's that must be set
416 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
417 # case statement; its first reference must be unconditional.
422 # Defines needed for HPUX support.
423 # HPUX has bigcrypt but (sometimes?) doesn't use it for
424 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
428 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
434 # CRAY Unicos has broken const handling
436 AC_MSG_RESULT([disabling const])
437 CPPFLAGS="$CPPFLAGS -Dconst="
441 # AIX4.x doesn't even admit to having large
442 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
445 AC_MSG_RESULT([enabling large file support])
446 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
447 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
450 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
451 # to the existance of large files..
452 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
453 # recommendations on large file support, however it makes the
454 # compile work using gcc 2.7 and 2.8, whereas using the Sun
455 # recommendation makes the compile fail on gcc2.7. JRA.
457 # Solaris uses SYSV printing. Make sure to set that here. --jerry
460 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
462 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
463 AC_MSG_RESULT([no large file support])
466 AC_MSG_RESULT([enabling large file support])
467 if test "$ac_cv_prog_gcc" = yes; then
468 ${CC-cc} -v >conftest.c 2>&1
469 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
471 case "$ac_cv_gcc_compiler_version_number" in
472 *"gcc version 2.6"*|*"gcc version 2.7"*)
473 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
474 LDFLAGS="$LDFLAGS -lthread"
475 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
478 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
479 LDFLAGS="$LDFLAGS -lthread"
480 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
481 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
485 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
486 LDFLAGS="$LDFLAGS -lthread"
487 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
488 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
494 # IRIX uses SYSV printing. Make sure to set that here
497 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
499 *freebsd*|*dragonfly*)
500 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
503 # VOS may need to have POSIX support and System V compatibility enabled.
510 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
511 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
515 *-D_SYSV*|*-D_SVID_SOURCE*)
518 CPPFLAGS="$CPPFLAGS -D_SYSV"
519 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
523 # Tests needed for SINIX large file support.
526 if test $host = mips-sni-sysv4 ; then
527 AC_MSG_CHECKING([for LFS support])
528 old_CPPFLAGS="$CPPFLAGS"
529 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
533 #if _LFS64_LARGEFILE == 1
538 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
539 CPPFLAGS="$old_CPPFLAGS"
540 if test x$SINIX_LFS_SUPPORT = xyes ; then
541 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
542 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
543 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
544 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
545 LIBS="`getconf LFS64_LIBS` $LIBS"
547 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
551 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
554 AC_MSG_CHECKING([for LFS support])
555 old_CPPFLAGS="$CPPFLAGS"
556 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
559 #include <sys/utsname.h>
563 #if _LFS64_LARGEFILE == 1
568 /* Ensure this is glibc 2.2 or higher */
569 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
570 int libc_major = __GLIBC__;
571 int libc_minor = __GLIBC_MINOR__;
579 /* Ensure this is kernel 2.4 or higher */
582 release = strdup(uts.release);
583 major = atoi(strsep(&release, "."));
584 minor = atoi(strsep(&release, "."));
586 if (major > 2 || (major == 2 && minor > 3))
593 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
594 CPPFLAGS="$old_CPPFLAGS"
595 if test x$LINUX_LFS_SUPPORT = xyes ; then
596 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
597 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
598 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
599 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
601 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
605 # MacOS X is the *only* system that uses compose character in utf8. This
606 # is so horribly broken....
609 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
611 # Add a system specific charset module.
612 default_shared_modules="$default_shared_modules charset_macosxfs"
616 AC_MSG_CHECKING([for LFS support])
617 old_CPPFLAGS="$CPPFLAGS"
618 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
622 #if _LFS64_LARGEFILE == 1
627 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
628 CPPFLAGS="$old_CPPFLAGS"
629 if test x$GLIBC_LFS_SUPPORT = xyes ; then
630 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
631 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
632 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
634 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
639 SAVE_CPPFLAGS="${CPPFLAGS}"
640 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
642 AC_LIBREPLACE_BROKEN_CHECKS
643 AC_LIBREPLACE_NETWORK_CHECKS
645 CPPFLAGS="${SAVE_CPPFLAGS}"
647 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
650 for obj in ${LIBREPLACEOBJ}; do
651 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
653 AC_SUBST(LIBREPLACE_OBJS)
655 # add -ldl to the global LIBS
656 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
658 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
659 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
660 AC_CHECK_HEADERS(limits.h float.h pthread.h)
661 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
662 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
663 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
664 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
665 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
666 AC_CHECK_HEADERS(sys/sysmacros.h)
667 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
668 AC_CHECK_HEADERS(langinfo.h locale.h)
669 AC_CHECK_HEADERS(xfs/libxfs.h)
670 AC_CHECK_HEADERS(netgroup.h)
672 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
678 ## These fail to compile on IRIX so just check for their presence
679 AC_CHECK_HEADERS(sys/mode.h,,,)
681 # Look for Darwin headers
682 old_CPPFLAGS="$CPPFLAGS"
683 CPPFLAGS="-Iinclude $CPPFLAGS"
684 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
685 CPPFLAGS="$old_CPPFLAGS"
687 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
688 # subdirectory of headers.
689 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
691 # check for linux on amd64 since valgrind is not quite there yet
696 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
704 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
705 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
709 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
710 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
711 if test x"$ac_cv_header_shadow_h" = x"yes"; then
712 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
716 AC_CHECK_HEADERS(shadow.h)
717 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
718 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
720 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
721 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
723 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
725 # For experimental utmp support (lastlog on some BSD-like systems)
726 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
728 AC_CHECK_SIZEOF(int,cross)
729 AC_CHECK_SIZEOF(long,cross)
730 AC_CHECK_SIZEOF(long long,cross)
731 AC_CHECK_SIZEOF(short,cross)
746 AC_CHECK_TYPE(ssize_t, int)
747 AC_CHECK_TYPE(wchar_t, unsigned short)
749 ############################################
750 # for cups support we need libcups, and a handful of header files
753 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
755 if test x$enable_cups != xno; then
756 AC_PATH_PROG(CUPS_CONFIG, cups-config)
758 if test "x$CUPS_CONFIG" != x; then
760 ac_save_CFLAGS=$CFLAGS
761 ac_save_LDFLAGS=$LDFLAGS
762 ac_save_PRINT_LIBS=$PRINT_LIBS
763 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
764 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
765 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
766 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
767 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
768 x"$ac_cv_header_cups_language_h" = xyes; then
769 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
770 samba_cv_HAVE_CUPS=yes
772 AC_MSG_WARN([cups-config around but cups-devel not installed])
773 CFLAGS=$ac_save_CFLAGS
774 LDFLAGS=$ac_save_LDFLAGS
775 PRINT_LIBS=$ac_save_PRINT_LIBS
778 elif test x"$enable_cups" = x"yes"; then
779 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
783 AC_ARG_ENABLE(iprint,
784 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
786 if test x$enable_iprint != xno; then
787 if test x"$samba_cv_HAVE_CUPS" = xyes; then
788 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
789 elif test x"$enable_iprint" = x"yes"; then
790 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
794 ############################################
795 # check if the compiler will optimize out function calls
796 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
801 this_function_does_not_exist();
807 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
808 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
809 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
812 #############################################
813 # check for fd passing struct via msg_control
814 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
816 #include <sys/types.h>
819 #include <sys/socket.h>
820 #include <sys/un.h>],
825 char control[CMSG_SPACE(sizeof(int))];
827 msg.msg_control = control_un.control;
828 msg.msg_controllen = sizeof(control_un.control);
830 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
831 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
832 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
833 [If we can use msg_control for passing file descriptors])
836 #############################################
837 # check for fd passing struct via msg_acctrights
838 AC_CACHE_CHECK([for fd passing via msg_acctrights],
839 samba_cv_msghdr_msg_acctrights, [
841 #include <sys/types.h>
844 #include <sys/socket.h>
845 #include <sys/un.h>],
849 msg.msg_acctrights = (caddr_t) &fd;
850 msg.msg_acctrightslen = sizeof(fd);
852 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
853 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
854 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
855 [If we can use msg_acctrights for passing file descriptors])
858 AC_CHECK_FUNCS(dirfd)
859 if test x"$ac_cv_func_dirfd" = x"yes"; then
860 default_shared_modules="$default_shared_modules vfs_syncops"
863 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
865 #include <sys/types.h>
870 #include <signal.h>],[sig_atomic_t i = 0],
871 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
872 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
873 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
876 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
878 #include <sys/types.h>
883 #include <signal.h>],[struct sigevent s;],
884 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
885 if test x"$samba_cv_struct_sigevent" = x"yes"; then
886 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
887 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
888 [#include <signal.h>])
891 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
893 #include <sys/types.h>
898 #if TIME_WITH_SYS_TIME
899 # include <sys/time.h>
903 # include <sys/time.h>
908 ],[struct timespec ts;],
909 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
910 if test x"$samba_cv_struct_timespec" = x"yes"; then
911 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
914 # stupid headers have the functions but no declaration. grrrr.
915 AC_HAVE_DECL(errno, [#include <errno.h>])
916 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
917 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
919 # and glibc has setresuid under linux but the function does
920 # nothing until kernel 2.1.44! very dumb.
921 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
922 AC_TRY_RUN([#include <errno.h>
923 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
924 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
925 if test x"$samba_cv_have_setresuid" = x"yes"; then
926 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
929 # Do the same check for setresguid...
931 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
932 AC_TRY_RUN([#include <unistd.h>
934 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
935 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
936 if test x"$samba_cv_have_setresgid" = x"yes"; then
937 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
942 ###############################################
943 # Readline included by default unless explicitly asked not to
944 test "${with_readline+set}" != "set" && with_readline=yes
946 # test for where we get readline() from
947 AC_MSG_CHECKING(whether to use readline)
948 AC_ARG_WITH(readline,
949 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
950 [ case "$with_readline" in
954 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
955 AC_CHECK_HEADERS(readline/history.h)
957 AC_CHECK_HEADERS(readline.h readline/readline.h,[
958 for termlib in ncurses curses termcap terminfo termlib tinfo; do
959 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
961 AC_CHECK_LIB(readline, rl_callback_handler_install,
962 [TERMLIBS="-lreadline $TERMLIBS"
963 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
964 break], [TERMLIBS=], $TERMLIBS)])
972 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
973 # alternate readline path
975 _cppflags=${CPPFLAGS}
977 # Add additional search path
978 LDFLAGS="-L$with_readline/lib $LDFLAGS"
979 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
981 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
982 AC_CHECK_HEADERS(readline/history.h)
984 AC_CHECK_HEADERS(readline.h readline/readline.h,[
985 for termlib in ncurses curses termcap terminfo termlib; do
986 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
988 AC_CHECK_LIB(readline, rl_callback_handler_install,
989 [TERMLDFLAGS="-L$with_readline/lib"
990 TERMCPPFLAGS="-I$with_readline/include"
991 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
992 TERMLIBS="-lreadline $TERMLIBS"
993 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
994 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1002 AC_SUBST(TERMLDFLAGS)
1004 # The readline API changed slightly from readline3 to readline4, so
1005 # code will generate warnings on one of them unless we have a few
1007 AC_CHECK_LIB(readline, rl_completion_matches,
1008 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1009 [Do we have rl_completion_matches?])],
1013 # not all readline libs have rl_event_hook or history_list
1014 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1015 AC_CHECK_LIB(readline, history_list,
1016 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1020 ###############################################
1021 # test for where we get yp_get_default_domain() from
1022 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1023 AC_CHECK_FUNCS(yp_get_default_domain)
1025 # Check if we have execl, if not we need to compile smbrun.
1026 AC_CHECK_FUNCS(execl)
1027 if test x"$ac_cv_func_execl" = x"no"; then
1028 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1031 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1032 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1033 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1034 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1035 AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1036 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1037 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1038 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1039 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1040 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1041 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1042 AC_CHECK_FUNCS(getpwent_r)
1043 AC_CHECK_FUNCS(getdents getdents64)
1044 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1045 AC_CHECK_FUNCS(syslog vsyslog timegm)
1046 AC_CHECK_FUNCS(setlocale nl_langinfo)
1047 AC_CHECK_FUNCS(nanosleep)
1048 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1049 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1050 AC_CHECK_HEADERS(sys/mman.h)
1051 # setbuffer, shmget, shm_open are needed for smbtorture
1052 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1054 # Find a method of generating a stack trace
1055 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1056 # libexecinfo provides backtrace_symbols on FreeBSD
1057 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1058 AC_CHECK_FUNCS(backtrace_symbols)
1059 AC_CHECK_LIB(exc, trace_back_stack)
1061 printf "%s" "checking for GPFS GPL libs... "
1063 LIBS="$LIBS -lgpfs_gpl"
1064 AC_TRY_LINK([#include <gpfs_gpl.h>],
1065 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1066 samba_cv_HAVE_GPFS=yes,
1067 samba_cv_HAVE_GPFS=no)
1068 echo $samba_cv_HAVE_GPFS
1069 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1070 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1071 default_shared_modules="$default_shared_modules vfs_gpfs"
1075 # Note that all the libunwind symbols in the API are defined to internal
1076 # platform-specific version, so we must include libunwind.h before checking
1078 AC_MSG_CHECKING([for libunwind])
1081 UNWIND_ARCH="unknown"
1082 if test x"$UNAME_I" != x"unknown"; then
1083 UNWIND_ARCH="$UNAME_I"
1084 elif test x"$UNAME_M" != x"unknown"; then
1085 UNWIND_ARCH="$UNAME_M"
1086 elif test x"$UNAME_P" != x"unknown"; then
1087 UNWIND_ARCH="$UNAME_P"
1090 case "$UNWIND_ARCH" in
1092 # This probably won't link without
1093 # the platform-specific libunwind.
1094 LIBS="$LIBS -lunwind"
1097 # Add the platform-specific libunwind module.
1098 LIBS="$LIBS -lunwind -lunwind-x86"
1101 # Add the platform-specific libunwind module.
1102 # based on uname -i, uname -m or uname -p
1103 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1109 #ifdef HAVE_LIBUNWIND_H
1110 #include <libunwind.h>
1114 unw_context_t ctx; unw_cursor_t cur;
1115 char buf[256]; unw_word_t off;
1116 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1117 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1121 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1123 # If we have libunwind, test whether we also have libunwind-ptrace
1124 # which would let us unwind arbitrary processes.
1126 AC_CHECK_HEADERS(libunwind-ptrace.h)
1127 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1129 LIBUNWIND_PTRACE="-lunwind-ptrace";
1130 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1131 [Whether libunwind-ptrace.a is available.])
1133 [ LIBUNWIND_PTRACE="" ])
1142 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1143 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1144 AC_CHECK_HEADERS(sys/ptrace.h)
1145 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1148 #if HAVE_SYS_TYPES_H
1149 #include <sys/types.h>
1151 #if HAVE_SYS_PTRACE_H
1152 #include <sys/ptrace.h>
1156 int main(int argc, const char ** argv)
1158 pid_t me = (pid_t)-1;
1159 ptrace(PTRACE_ATTACH, me, 0, 0);
1160 ptrace(PTRACE_DETACH, me, 0, 0);
1166 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1167 [Whether the Linux ptrace(2) interface is available.])
1175 AC_SUBST(LIBUNWIND_PTRACE)
1177 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1178 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1179 AC_CHECK_FUNCS(__getcwd _getcwd)
1180 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1181 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1182 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1183 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1184 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1185 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1186 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1187 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1188 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1189 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1190 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1191 AC_CHECK_FUNCS(prctl)
1194 #ifdef HAVE_SYS_PRCTL_H
1195 #include <sys/prctl.h>
1198 [int i; i = prtcl(0); ],
1199 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1206 # glibc <= 2.3.2 has a broken getgrouplist
1209 #include <sys/utsname.h>
1211 /* glibc up to 2.3 has a broken getgrouplist */
1212 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1213 int libc_major = __GLIBC__;
1214 int libc_minor = __GLIBC_MINOR__;
1218 if ((libc_major == 2) && (libc_minor <= 3))
1223 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1224 if test x"$linux_getgrouplist_ok" = x"yes"; then
1225 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1229 AC_CHECK_FUNCS(getgrouplist)
1234 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1237 if test x$ac_cv_func_stat64 = xno ; then
1238 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1240 #if defined(HAVE_UNISTD_H)
1243 #include <sys/stat.h>
1244 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1245 AC_MSG_RESULT([$ac_cv_func_stat64])
1246 if test x$ac_cv_func_stat64 = xyes ; then
1247 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1251 if test x$ac_cv_func_lstat64 = xno ; then
1252 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1254 #if defined(HAVE_UNISTD_H)
1257 #include <sys/stat.h>
1258 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1259 AC_MSG_RESULT([$ac_cv_func_lstat64])
1260 if test x$ac_cv_func_lstat64 = xyes ; then
1261 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1265 if test x$ac_cv_func_fstat64 = xno ; then
1266 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1268 #if defined(HAVE_UNISTD_H)
1271 #include <sys/stat.h>
1272 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1273 AC_MSG_RESULT([$ac_cv_func_fstat64])
1274 if test x$ac_cv_func_fstat64 = xyes ; then
1275 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1279 #################################################
1280 # Check whether struct stat has timestamps with sub-second resolution.
1281 # At least IRIX and Solaris have these. FREEBSD does as well,
1282 # but with different members
1285 # all of st_mtim, st_atim and st_ctim exist
1286 # all of the members are in fact of type struct timespec
1288 # There is some conflicting standards weirdness about whether we should use
1289 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1290 # prefer struct timespec.
1291 AC_CACHE_CHECK([whether struct stat has timespec timestamps],
1292 samba_cv_stat_timespec_hires,
1296 #if TIME_WITH_SYS_TIME
1297 # include <sys/time.h>
1300 # if HAVE_SYS_TIME_H
1301 # include <sys/time.h>
1306 #ifdef HAVE_SYS_STAT_H
1307 #include <sys/stat.h>
1312 struct stat s = {0};
1317 samba_cv_stat_timespec_hires=yes, samba_cv_stat_timespec_hires=no)
1320 if test x"$samba_cv_stat_timespec_hires" = x"yes" ; then
1321 AC_DEFINE(HAVE_STAT_ST_MTIMESPEC, 1, [whether struct stat contains st_mtimepec])
1322 AC_DEFINE(HAVE_STAT_ST_ATIMESPEC, 1, [whether struct stat contains st_atimespec])
1323 AC_DEFINE(HAVE_STAT_ST_CTIMESPEC, 1, [whether struct stat contains st_ctimespec])
1324 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1, [whether struct stat has sub-second timestamps])
1329 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1333 #if TIME_WITH_SYS_TIME
1334 # include <sys/time.h>
1337 # if HAVE_SYS_TIME_H
1338 # include <sys/time.h>
1343 #ifdef HAVE_SYS_STAT_H
1344 #include <sys/stat.h>
1349 struct stat s = {0};
1350 t.tv_sec = s.st_mtim.tv_sec;
1351 t.tv_nsec = s.st_mtim.tv_nsec;
1352 t.tv_sec = s.st_ctim.tv_sec;
1353 t.tv_nsec = s.st_ctim.tv_nsec;
1354 t.tv_sec = s.st_atim.tv_sec;
1355 t.tv_nsec = s.st_atim.tv_nsec;
1357 samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1360 if test x"$samba_cv_stat_hires" = x"yes" ; then
1361 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1362 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1363 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1364 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1365 [whether struct stat has sub-second timestamps])
1368 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed nsec], samba_cv_stat_hires_notimespec,
1372 #if TIME_WITH_SYS_TIME
1373 # include <sys/time.h>
1376 # if HAVE_SYS_TIME_H
1377 # include <sys/time.h>
1382 #ifdef HAVE_SYS_STAT_H
1383 #include <sys/stat.h>
1388 struct stat s = {0};
1389 t.tv_sec = s.st_mtime;
1390 t.tv_nsec = s.st_mtimensec;
1391 t.tv_sec = s.st_ctime;
1392 t.tv_nsec = s.st_ctimensec;
1393 t.tv_sec = s.st_atime;
1394 t.tv_nsec = s.st_atimensec;
1396 samba_cv_stat_hires_notimespec=yes, samba_cv_stat_hires_notimespec=no)
1399 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1400 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1401 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1402 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1403 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1404 [whether struct stat has sub-second timestamps without struct timespec suffixed nsec])
1407 dnl AIX stype sub-second timestamps:
1408 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed _n], samba_cv_stat_hires_notimespec_n,
1412 #if TIME_WITH_SYS_TIME
1413 # include <sys/time.h>
1416 # if HAVE_SYS_TIME_H
1417 # include <sys/time.h>
1422 #ifdef HAVE_SYS_STAT_H
1423 #include <sys/stat.h>
1428 struct stat s = {0};
1429 t.tv_sec = s.st_mtime;
1430 t.tv_nsec = s.st_mtime_n;
1431 t.tv_sec = s.st_ctime;
1432 t.tv_nsec = s.st_ctime_n;
1433 t.tv_sec = s.st_atime;
1434 t.tv_nsec = s.st_atime_n;
1436 samba_cv_stat_hires_notimespec_n=yes, samba_cv_stat_hires_notimespec_n=no)
1439 if test x"$samba_cv_stat_hires_notimespec_n" = x"yes" ; then
1440 AC_DEFINE(HAVE_STAT_ST_MTIME_N, 1, [whether struct stat contains st_mtime_n])
1441 AC_DEFINE(HAVE_STAT_ST_ATIME_N, 1, [whether struct stat contains st_atime_n])
1442 AC_DEFINE(HAVE_STAT_ST_CTIME_N, 1, [whether struct stat contains st_ctime_n])
1443 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1444 [whether struct stat has sub-second timestamps without struct timespec suffixed _n])
1447 dnl Tru64 has _micro_second_ resolution:
1448 AC_CACHE_CHECK([whether struct stat has sub-second timestamps in st_uXtime], samba_cv_stat_hires_uxtime,
1452 #if TIME_WITH_SYS_TIME
1453 # include <sys/time.h>
1456 # if HAVE_SYS_TIME_H
1457 # include <sys/time.h>
1462 #ifdef HAVE_SYS_STAT_H
1463 #include <sys/stat.h>
1468 struct stat s = {0};
1469 t.tv_sec = s.st_mtime;
1470 t.tv_nsec = s.st_umtime * 1000;
1471 t.tv_sec = s.st_ctime;
1472 t.tv_nsec = s.st_uctime * 1000;
1473 t.tv_sec = s.st_atime;
1474 t.tv_nsec = s.st_uatime * 1000;
1476 samba_cv_stat_hires_uxtime=yes, samba_cv_stat_hires_uxtime=no)
1479 if test x"$samba_cv_stat_hires_uxtime" = x"yes" ; then
1480 AC_DEFINE(HAVE_STAT_ST_UMTIME, 1, [whether struct stat contains st_umtime])
1481 AC_DEFINE(HAVE_STAT_ST_UATIME, 1, [whether struct stat contains st_uatime])
1482 AC_DEFINE(HAVE_STAT_ST_UCTIME, 1, [whether struct stat contains st_uctime])
1483 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1484 [whether struct stat has sub-second timestamps in st_uXtime])
1487 AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1491 #if TIME_WITH_SYS_TIME
1492 # include <sys/time.h>
1495 # if HAVE_SYS_TIME_H
1496 # include <sys/time.h>
1501 #ifdef HAVE_SYS_STAT_H
1502 #include <sys/stat.h>
1507 struct stat s = {0};
1508 t = s.st_birthtimespec;
1510 samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_st_birthtimespec=no)
1513 if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1514 AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1517 AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
1521 #if TIME_WITH_SYS_TIME
1522 # include <sys/time.h>
1525 # if HAVE_SYS_TIME_H
1526 # include <sys/time.h>
1531 #ifdef HAVE_SYS_STAT_H
1532 #include <sys/stat.h>
1537 struct stat s = {0};
1538 t.tv_nsec = s.st_birthtimensec;
1540 samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_st_birthtimensec=no)
1543 if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1544 AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1547 AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
1551 #if TIME_WITH_SYS_TIME
1552 # include <sys/time.h>
1555 # if HAVE_SYS_TIME_H
1556 # include <sys/time.h>
1561 #ifdef HAVE_SYS_STAT_H
1562 #include <sys/stat.h>
1567 struct stat s = {0};
1570 samba_cv_stat_st_birthtime=yes, samba_cv_stat_st_birthtime=no)
1573 if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1574 AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1577 #####################################
1578 # needed for SRV lookups
1579 AC_CHECK_LIB(resolv, dn_expand)
1580 AC_CHECK_LIB(resolv, _dn_expand)
1581 AC_CHECK_LIB(resolv, __dn_expand)
1584 # Check for the functions putprpwnam, set_auth_parameters,
1585 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1586 # Needed for OSF1 and HPUX.
1589 AC_LIBTESTFUNC(security, putprpwnam)
1590 AC_LIBTESTFUNC(sec, putprpwnam)
1592 AC_LIBTESTFUNC(security, set_auth_parameters)
1593 AC_LIBTESTFUNC(sec, set_auth_parameters)
1595 # UnixWare 7.x has its getspnam in -lgen
1596 AC_LIBTESTFUNC(gen, getspnam)
1598 AC_LIBTESTFUNC(security, getspnam)
1599 AC_LIBTESTFUNC(sec, getspnam)
1601 AC_LIBTESTFUNC(security, bigcrypt)
1602 AC_LIBTESTFUNC(sec, bigcrypt)
1604 AC_LIBTESTFUNC(security, getprpwnam)
1605 AC_LIBTESTFUNC(sec, getprpwnam)
1607 AC_CHECK_FUNCS(strsignal)
1609 ############################################
1610 # Check if we have libattr
1613 AC_SEARCH_LIBS(getproplist, [proplist])
1614 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1615 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1616 AC_CHECK_FUNCS(sizeof_proplist_entry)
1619 AC_SEARCH_LIBS(getxattr, [attr])
1620 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1621 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1622 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1623 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1624 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1625 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1626 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1630 ########################################################
1631 # Check if attropen() is present if this is Solaris
1634 AC_CHECK_FUNCS(attropen)
1638 ########################################################
1639 # Do xattr functions take additional options like on Darwin?
1640 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1641 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1643 LIBS="$LIBS $ACL_LIBS"
1645 #include <sys/types.h>
1646 #if HAVE_ATTR_XATTR_H
1647 #include <attr/xattr.h>
1648 #elif HAVE_SYS_XATTR_H
1649 #include <sys/xattr.h>
1652 getxattr(0, 0, 0, 0, 0, 0);
1654 [smb_attr_cv_xattr_add_opt=yes],
1655 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1657 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1658 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1662 # Check if we have extattr
1664 *freebsd4* | *dragonfly* )
1665 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1668 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1669 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1670 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1671 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1681 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1683 if test "x$enable_pie" != xno
1685 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1687 cat > conftest.c <<EOF
1689 main () { return 0;}
1691 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1699 if test x"${samba_cv_fpie}" = x"yes"
1708 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1710 if test "x$enable_relro" != xno
1712 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1714 cat > conftest.c <<EOF
1716 main () { return 0;}
1718 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1726 if test x"${samba_cv_relro}" = x"yes"
1728 RELRO_LDFLAGS="-Wl,-z,relro"
1736 # Assume non-shared by default and override below
1739 # these are the defaults, good for lots of systems
1744 SHLD="\${CC} \${CFLAGS}"
1745 PICFLAG="${PIE_CFLAGS}"
1749 # this bit needs to be modified for each OS that supports share libs
1750 # You need to specify how to create a shared library and
1751 # how to compile C code to produce PIC object files
1753 AC_MSG_CHECKING([ability to build shared libraries])
1755 # and these are for particular systems
1757 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1759 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1760 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1762 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1764 DYNEXP="-Wl,--export-dynamic"
1766 SONAMEFLAG="-Wl,-soname="
1767 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1769 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1773 if test "${GCC}" = "yes"; then
1775 SONAMEFLAG="-Wl,-soname="
1776 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1781 ## ${CFLAGS} added for building 64-bit shared
1782 ## libs using Sun's Compiler
1783 LDSHFLAGS="-G \${CFLAGS}"
1785 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1786 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1788 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1791 SONAMEFLAG="-Wl,-h,"
1792 PICFLAG="-KPIC" # Is this correct for SunOS
1793 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1794 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1796 *netbsd* | *freebsd* | *dragonfly* )
1799 DYNEXP="-Wl,--export-dynamic"
1800 SONAMEFLAG="-Wl,-soname,"
1801 PICFLAG="-fPIC -DPIC"
1802 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1803 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1805 *openbsd*) BLDSHARED="true"
1807 DYNEXP="-Wl,-Bdynamic"
1808 SONAMEFLAG="-Wl,-soname,"
1810 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1811 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1813 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1815 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1819 LDSHFLAGS="-set_version sgi1.0 -shared"
1820 SONAMEFLAG="-soname "
1822 if test "${GCC}" = "yes"; then
1827 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1829 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1831 # use expfull to export underscored symbols
1832 # add rtl to remove /lib/crt0.o warning
1833 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1834 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1836 # as AIX code is always position independent...
1837 # .po will just create compile warnings, use po.o:
1838 if test "${GCC}" != "yes"; then
1839 ## for funky AIX compiler using strncpy()
1840 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1843 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1844 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1845 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1847 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1848 # Use special PIC flags for the native HP-UX compiler.
1851 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1852 SONAMEFLAG="-Wl,+h "
1854 if test "${GCC}" = "yes"; then
1857 PICFLAG="+z +ESnolit"
1859 if test "$host_cpu" = "ia64"; then
1862 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1865 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1867 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1868 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1870 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1871 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1873 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1876 SONAMEFLAG="-Wl,-soname,"
1878 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1879 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1881 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1882 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1884 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1887 SONAMEFLAG="-Wl,-soname,"
1889 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1891 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1892 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1894 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1895 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1897 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1899 *-univel-*) if [ test "$GCC" != yes ]; then
1900 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1905 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1907 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1910 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1911 if [ test "$GCC" != yes ]; then
1912 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1915 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1917 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1922 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1924 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1925 CFLAGS="$CFLAGS -fno-common"
1928 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1930 # Since gcc doesn't fail on unrecognised options, the
1931 # PIE test incorrectly succeeds. Darwin gcc does not
1932 # actually support the PIE stuff.
1935 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1939 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1943 if test "$enable_shared" != "yes"; then
1947 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1948 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1951 if test x"$BLDSHARED" = x"true" ; then
1952 LDFLAGS="$LDFLAGS -L./bin"
1955 AC_MSG_RESULT($BLDSHARED)
1957 AC_MSG_CHECKING([LDFLAGS])
1958 AC_MSG_RESULT([$LDFLAGS])
1959 AC_MSG_CHECKING([DYNEXP])
1960 AC_MSG_RESULT([$DYNEXP])
1962 #######################################################
1963 # test whether building a shared library actually works
1964 if test $BLDSHARED = true; then
1966 AC_MSG_CHECKING([SHLD])
1967 AC_MSG_RESULT([$SHLD])
1968 AC_MSG_CHECKING([LDSHFLAGS])
1969 AC_MSG_RESULT([$LDSHFLAGS])
1971 AC_MSG_CHECKING([SHLIBEXT])
1972 AC_MSG_RESULT([$SHLIBEXT])
1973 AC_MSG_CHECKING([SONAMEFLAG])
1974 AC_MSG_RESULT([$SONAMEFLAG])
1976 AC_MSG_CHECKING([PICFLAG])
1977 AC_MSG_RESULT([$PICFLAG])
1979 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1980 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1982 AC_CACHE_CHECK([whether building shared libraries actually works],
1983 [ac_cv_shlib_works],[
1984 # try building a trivial shared library
1985 ac_cv_shlib_works=no
1986 # The $SHLD and $LDSHFLAGS variables may contain references to other
1987 # variables so they need to be eval'ed.
1988 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1989 shlib.o ${srcdir-.}/tests/shlib.c && \
1990 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1991 shlib.o && ac_cv_shlib_works=yes
1992 rm -f "shlib.$SHLIBEXT" shlib.o
1995 if test $ac_cv_shlib_works = no; then
2000 if test x"$BLDSHARED" != x"true"; then
2001 LDSHFLAGS="shared-libraries-disabled"
2002 SONAMEFLAG="shared-libraries-disabled"
2003 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2004 SHLD="shared-libraries-disabled"
2005 PICFLAG="${PIE_CFLAGS}"
2006 SHLIBEXT="shared_libraries_disabled"
2009 AC_MSG_CHECKING([used PICFLAG])
2010 AC_MSG_RESULT([$PICFLAG])
2012 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2014 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2018 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2019 AC_TRY_RUN([#include <stdio.h>
2020 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2021 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2022 if test x"$samba_cv_have_longlong" = x"yes"; then
2023 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2024 AC_CHECK_TYPE(intptr_t, unsigned long long)
2026 AC_CHECK_TYPE(intptr_t, unsigned long)
2030 # Check if the compiler supports the LL prefix on long long integers.
2033 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2034 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2035 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2036 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2037 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2041 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2042 AC_TRY_RUN([#include <time.h>
2043 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2044 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2045 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2046 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2049 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2050 AC_TRY_RUN([#include <stdio.h>
2051 #include <sys/stat.h>
2052 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2053 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2054 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2055 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2058 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2060 #if defined(HAVE_UNISTD_H)
2064 #include <sys/stat.h>
2065 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2066 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2067 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2068 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2071 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2073 #if defined(HAVE_UNISTD_H)
2077 #include <sys/stat.h>
2078 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2079 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2080 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2081 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2084 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2086 #if defined(HAVE_UNISTD_H)
2090 #include <sys/stat.h>
2091 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2092 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2093 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2094 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2097 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2099 #if defined(HAVE_UNISTD_H)
2103 #include <sys/stat.h>
2104 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2105 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2106 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2107 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2110 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2112 #if defined(HAVE_UNISTD_H)
2116 #include <sys/stat.h>
2117 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2118 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2119 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2120 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2123 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2125 #if defined(HAVE_UNISTD_H)
2128 #include <sys/types.h>
2129 #include <dirent.h>],
2131 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2132 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2133 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2136 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2138 #if defined(HAVE_UNISTD_H)
2141 #include <sys/types.h>
2142 #include <dirent.h>],
2143 [struct dirent64 de;],
2144 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2145 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2146 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2149 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2151 #if defined(HAVE_UNISTD_H)
2154 #include <sys/types.h>
2155 main() { dev_t dev; int i = major(dev); return 0; }],
2156 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2157 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2158 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2161 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2163 #if defined(HAVE_UNISTD_H)
2166 #include <sys/types.h>
2167 main() { dev_t dev; int i = minor(dev); return 0; }],
2168 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2169 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2170 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2173 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2175 #if defined(HAVE_UNISTD_H)
2178 #include <sys/types.h>
2179 main() { dev_t dev = makedev(1,2); return 0; }],
2180 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2181 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2182 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2185 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2186 AC_TRY_RUN([#include <stdio.h>
2187 main() { char c; c=250; exit((c > 0)?0:1); }],
2188 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2189 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2190 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2193 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2194 AC_TRY_COMPILE([#include <sys/types.h>
2196 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2197 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2198 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2199 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2202 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2203 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2204 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2205 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2206 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2209 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2211 #include <sys/time.h>
2212 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2213 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2214 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2215 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2216 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2219 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2221 # On some systems (eg. Linux) librt can pull in libpthread. We
2222 # don't want this to happen because libpthreads changes signal delivery
2223 # semantics in ways we are not prepared for. This breaks Linux oplocks
2224 # which rely on signals.
2226 AC_LIBTESTFUNC(rt, clock_gettime,
2228 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2229 [Whether clock_gettime is available])
2230 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2231 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2232 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2237 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2238 AC_TRY_RUN([#include <sys/types.h>
2240 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2241 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2242 di->d_name[0] == 0) exit(0); exit(1);} ],
2243 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2244 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2245 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2248 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2249 AC_TRY_COMPILE([#include <sys/types.h>
2250 #include <utime.h>],
2251 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2252 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2253 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2254 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2258 # Check utmp details, but only if our OS offers utmp.h
2259 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2260 dnl utmp and utmpx come in many flavours
2261 dnl We need to check for many of them
2262 dnl But we don't need to do each and every one, because our code uses
2263 dnl mostly just the utmp (not utmpx) fields.
2265 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2267 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2268 AC_TRY_COMPILE([#include <sys/types.h>
2270 [struct utmp ut; ut.ut_name[0] = 'a';],
2271 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2272 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2273 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2276 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2277 AC_TRY_COMPILE([#include <sys/types.h>
2279 [struct utmp ut; ut.ut_user[0] = 'a';],
2280 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2281 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2282 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2285 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2286 AC_TRY_COMPILE([#include <sys/types.h>
2288 [struct utmp ut; ut.ut_id[0] = 'a';],
2289 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2290 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2291 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2294 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2295 AC_TRY_COMPILE([#include <sys/types.h>
2297 [struct utmp ut; ut.ut_host[0] = 'a';],
2298 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2299 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2300 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2303 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2304 AC_TRY_COMPILE([#include <sys/types.h>
2306 [struct utmp ut; time_t t; ut.ut_time = t;],
2307 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2308 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2309 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2312 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2313 AC_TRY_COMPILE([#include <sys/types.h>
2315 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2316 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2317 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2318 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2321 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2322 AC_TRY_COMPILE([#include <sys/types.h>
2324 [struct utmp ut; ut.ut_type = 0;],
2325 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2326 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2327 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2330 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2331 AC_TRY_COMPILE([#include <sys/types.h>
2333 [struct utmp ut; ut.ut_pid = 0;],
2334 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2335 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2336 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2339 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2340 AC_TRY_COMPILE([#include <sys/types.h>
2342 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2343 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2344 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2345 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2348 dnl Look for the IPv6 varient by preference. Many systems have both.
2349 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2350 AC_TRY_COMPILE([#include <sys/types.h>
2352 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2353 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2354 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2355 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2358 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2359 AC_TRY_COMPILE([#include <sys/types.h>
2361 [struct utmp ut; ut.ut_addr = 0;],
2362 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2363 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2364 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2367 if test x$ac_cv_func_pututline = xyes ; then
2368 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2369 AC_TRY_COMPILE([#include <sys/types.h>
2371 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2372 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2373 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2374 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2378 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2379 AC_TRY_COMPILE([#include <sys/types.h>
2380 #include <utmpx.h>],
2381 [struct utmpx ux; ux.ut_syslen = 0;],
2382 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2383 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2384 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2391 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2392 AC_ARG_WITH(libiconv,
2393 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2395 if test "$withval" = "no" ; then
2396 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2398 if test "$withval" != "yes" ; then
2400 ICONV_LOOK_DIRS="$withval"
2405 for i in $ICONV_LOOK_DIRS ; do
2408 save_LDFLAGS="$LDFLAGS"
2409 save_CPPFLAGS="$CPPFLAGS"
2411 iconv_current_LIBS=""
2412 iconv_current_LDFLAGS=""
2413 iconv_current_CPPFLAGS=""
2418 # This is here to handle -withval stuff for --with-libiconv
2419 # Perhaps we should always add a -L
2420 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2422 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2423 # installation paths. This gets a little tricky since we might have iconv
2424 # in both libiconv and in libc. In this case the jm_ICONV test will always
2425 # succeed when the header is found. To counter this, make sure the
2426 # library directory is there and check the ABI directory first (which
2427 # should be harmless on other systems.
2428 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2429 for l in "lib32" "lib" "lib/hpux32"; do
2430 if test -d "$i/$l" ; then
2431 LDFLAGS="$save_LDFLAGS -L$i/$l"
2433 export LDFLAGS LIBS CPPFLAGS
2434 # Try to find iconv(3)
2436 if test x"$ICONV_FOUND" = "xyes" ; then
2443 if test x"$ICONV_FOUND" = "xyes" ; then
2444 iconv_current_LDFLAGS="-L$i/$libext"
2445 iconv_current_CPPFLAGS="-I$i/include"
2447 if test x"$jm_cv_lib_iconv" != x; then
2448 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2450 # We found iconv in libc.
2451 iconv_current_LIBS=""
2456 if test x"$ICONV_FOUND" = "xyes" ; then
2458 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2459 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2460 LIBS="$save_LIBS $iconv_current_LIBS"
2461 export LDFLAGS LIBS CPPFLAGS
2463 default_dos_charset=no
2464 default_display_charset=no
2465 default_unix_charset=no
2467 # check for default dos charset name
2468 for j in CP850 IBM850 ; do
2470 default_dos_charset="$ICONV_CHARSET"
2471 if test x"$default_dos_charset" = x"$j"; then
2476 # check for default display charset name
2477 for j in ASCII 646 ; do
2479 default_display_charset="$ICONV_CHARSET"
2480 if test x"$default_display_charset" = x"$j"; then
2485 # check for default unix charset name
2486 for j in UTF-8 UTF8 ; do
2488 default_unix_charset="$ICONV_CHARSET"
2489 if test x"$default_unix_charset" = x"$j"; then
2494 if test "$default_dos_charset" != "no" -a \
2495 "$default_dos_charset" != "cross" -a \
2496 "$default_display_charset" != "no" -a \
2497 "$default_display_charset" != "cross" -a \
2498 "$default_unix_charset" != "no" -a \
2499 "$default_unix_charset" != "cross"
2501 samba_cv_HAVE_NATIVE_ICONV=yes
2503 if test "$default_dos_charset" = "cross" -o \
2504 "$default_display_charset" = "cross" -o \
2505 "$default_unix_charset" = "cross"
2507 samba_cv_HAVE_NATIVE_ICONV=cross
2509 samba_cv_HAVE_NATIVE_ICONV=no
2513 # At this point, we have a libiconv candidate. We know that
2514 # we have the right headers and libraries, but we don't know
2515 # whether it does the conversions we want. We can't test this
2516 # because we are cross-compiling. This is not necessarily a big
2517 # deal, since we can't guarantee that the results we get now will
2518 # match the results we get at runtime anyway.
2519 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2520 default_dos_charset="CP850"
2521 default_display_charset="ASCII"
2522 default_unix_charset="UTF-8"
2523 samba_cv_HAVE_NATIVE_ICONV=yes
2524 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2525 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2528 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2530 CPPFLAGS=$save_CPPFLAGS
2531 LDFLAGS=$save_LDFLAGS
2534 if test x"$iconv_current_LIBS" != x; then
2535 LIBS="$LIBS $iconv_current_LIBS"
2538 # Add the flags we need to CPPFLAGS and LDFLAGS
2539 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2540 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2542 # Turn the #defines into string literals
2543 default_dos_charset="\"$default_dos_charset\""
2544 default_display_charset="\"$default_display_charset\""
2545 default_unix_charset="\"$default_unix_charset\""
2547 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2548 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2549 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2550 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2555 # We didn't find a working iconv, so keep going
2558 # We only need to clean these up here for the next pass through the loop
2559 CPPFLAGS=$save_CPPFLAGS
2560 LDFLAGS=$save_LDFLAGS
2562 export LDFLAGS LIBS CPPFLAGS
2567 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2568 AC_MSG_WARN([Sufficient support for iconv function was not found.
2569 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2570 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2571 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2572 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2576 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2578 #include <sys/types.h>
2581 #define F_GETLEASE 1025
2584 int fd = open("/dev/null", O_RDONLY);
2585 return fcntl(fd, F_GETLEASE, 0) == -1;
2588 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2589 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2590 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2593 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2595 #include <sys/types.h>
2599 #define F_NOTIFY 1026
2602 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2605 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2606 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2607 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2610 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2611 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2612 AC_CHECK_FUNCS(inotify_init)
2613 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2615 samba_cv_HAVE_INOTIFY=yes,
2616 samba_cv_HAVE_INOTIFY=no,
2617 samba_cv_HAVE_INOTIFY=cross)
2619 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2620 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2623 #################################################
2624 # Check if FAM notifications are available. For FAM info, see
2625 # http://oss.sgi.com/projects/fam/
2626 # http://savannah.nongnu.org/projects/fam/
2628 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2630 if test x$enable_fam != xno; then
2631 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2632 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2633 # On IRIX, libfam requires libC, but other FAM implementations
2634 # might not need it.
2635 AC_CHECK_LIB(fam, FAMOpen2,
2636 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2637 [samba_cv_HAVE_LIBFAM=no])
2639 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2641 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2642 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2643 [samba_cv_HAVE_LIBFAM=no])
2644 unset samba_fam_xtra
2648 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2649 default_shared_modules="$default_shared_modules vfs_notify_fam"
2650 AC_TRY_COMPILE([#include <fam.h>],
2651 [FAMCodes code = FAMChanged;],
2652 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2653 [Whether fam.h contains a typedef for enum FAMCodes]),
2657 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2658 AC_MSG_ERROR(FAM support requested but FAM library not available )
2662 AC_SUBST(SMB_FAM_LIBS)
2664 #################################################
2665 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2667 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2669 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2670 # Theoretically it should work with AIX JFS2 too but this needs testing
2671 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2672 default_shared_modules="$default_shared_modules vfs_tsmsm"
2675 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2677 #include <sys/types.h>
2680 #include <sys/file.h>
2682 #define LOCK_MAND 32
2683 #define LOCK_READ 64
2686 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2689 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2690 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2691 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2695 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2696 AC_TRY_COMPILE([#include <sys/types.h>
2697 #include <fcntl.h>],
2698 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2699 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2700 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2701 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2704 #################################################
2705 # Check for POSIX capability support
2707 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2708 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2711 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2714 AC_LIBTESTFUNC(cap, cap_get_proc)
2716 AC_CACHE_CHECK([for POSIX capabilities],
2717 samba_cv_HAVE_POSIX_CAPABILITIES,
2720 #include <sys/types.h>
2721 #include <sys/capability.h>
2724 cap_value_t vals[1];
2725 if (!(cap = cap_get_proc()))
2727 vals[0] = CAP_CHOWN;
2728 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2732 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2733 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2734 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2737 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2738 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2739 [Whether POSIX capabilities are available])
2747 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2748 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2751 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2752 AC_TRY_COMPILE([#include <sys/types.h>
2753 #if defined(HAVE_RPC_RPC_H)
2754 #include <rpc/rpc.h>
2757 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2758 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2759 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2762 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2763 AC_TRY_COMPILE([#include <sys/types.h>
2764 #if defined(HAVE_RPC_RPC_H)
2765 #include <rpc/rpc.h>
2768 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2769 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2770 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2773 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2774 AC_TRY_COMPILE([#include <sys/types.h>
2775 #if defined(HAVE_RPC_RPC_H)
2776 #include <rpc/rpc.h>
2779 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2780 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2781 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2784 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2785 AC_TRY_COMPILE([#include <sys/types.h>
2786 #if defined(HAVE_RPC_RPC_H)
2787 #include <rpc/rpc.h>
2790 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2791 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2792 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2796 dnl Some systems (SCO) have a problem including
2797 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2798 dnl as a #define in <prot.h> and as part of an enum
2802 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2803 AC_TRY_COMPILE([#include <sys/types.h>
2804 #ifdef HAVE_SYS_SECURITY_H
2805 #include <sys/security.h>
2807 #endif /* HAVE_SYS_SECURITY_H */
2808 #if defined(HAVE_RPC_RPC_H)
2809 #include <rpc/rpc.h>
2812 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2813 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2814 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2817 AC_MSG_CHECKING([for test routines])
2818 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2820 AC_MSG_ERROR([cant find test code. Aborting config]),
2821 AC_MSG_WARN([cannot run when cross-compiling]))
2823 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2824 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2825 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2826 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2827 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2830 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2831 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2832 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2833 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2834 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2837 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2838 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2839 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2840 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2841 AC_CHECK_FUNCS(getpagesize)
2843 ################################################
2844 # look for a method of setting the effective uid
2847 if test $seteuid = no; then
2848 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2850 #define AUTOCONF_TEST 1
2851 #define USE_SETREUID 1
2852 #include "confdefs.h"
2853 #include "${srcdir-.}/lib/util_sec.c"],
2854 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2855 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2856 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2860 # we check for setresuid second as it conflicts with AIO on Linux.
2861 # see http://samba.org/~tridge/junkcode/aio_uid.c
2862 if test $seteuid = no; then
2863 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2865 #define AUTOCONF_TEST 1
2866 #define USE_SETRESUID 1
2867 #include "confdefs.h"
2868 #include "${srcdir-.}/lib/util_sec.c"],
2869 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2870 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2871 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2875 if test $seteuid = no; then
2876 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2878 #define AUTOCONF_TEST 1
2879 #define USE_SETEUID 1
2880 #include "confdefs.h"
2881 #include "${srcdir-.}/lib/util_sec.c"],
2882 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2883 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2884 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2888 if test $seteuid = no; then
2889 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2891 #define AUTOCONF_TEST 1
2892 #define USE_SETUIDX 1
2893 #include "confdefs.h"
2894 #include "${srcdir-.}/lib/util_sec.c"],
2895 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2896 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2897 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2901 AC_CACHE_CHECK([for the Darwin initgroups system call],
2902 samba_cv_DARWIN_INITGROUPS,
2904 #include <sys/syscall.h>
2907 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2908 samba_cv_DARWIN_INITGROUPS=yes,
2909 samba_cv_DARWIN_INITGROUPS=no)
2912 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2913 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2914 [Whether to use the Darwin-specific initgroups system call])
2917 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2918 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2919 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2920 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2921 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2924 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2925 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2926 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2927 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2928 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2933 dnl Don't check for 64 bit fcntl locking if we know that the
2934 dnl glibc2.1 broken check has succeeded.
2937 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2939 #if defined(HAVE_UNISTD_H)
2949 #ifdef HAVE_SYS_FCNTL_H
2950 #include <sys/fcntl.h>
2952 main() { struct flock64 fl64;
2953 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2959 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2961 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2962 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2966 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2967 AC_TRY_COMPILE([#include <sys/types.h>
2968 #include <sys/stat.h>
2969 #include <unistd.h>],
2970 [struct stat st; st.st_blocks = 0;],
2971 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2972 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2973 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2976 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2977 AC_TRY_COMPILE([#include <sys/types.h>
2978 #include <sys/stat.h>
2979 #include <unistd.h>],
2980 [struct stat st; st.st_blksize = 0;],
2981 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2982 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2983 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2986 AC_CACHE_CHECK([for st_flags in struct stat],
2987 samba_cv_HAVE_STAT_ST_FLAGS,
2989 AC_TRY_COMPILE([#include <sys/types.h>
2990 #include <sys/stat.h>
2991 #include <unistd.h>],
2992 [struct stat st; st.st_flags = 0;],
2993 samba_cv_HAVE_STAT_ST_FLAGS=yes,
2994 samba_cv_HAVE_STAT_ST_FLAGS=no,
2995 samba_cv_HAVE_STAT_ST_FLAGS=cross)
2998 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2999 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3000 [Whether the stat struct has a st_flags member])
3003 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3005 #include <sys/types.h>
3006 #include <sys/acl.h>
3007 #if defined(HAVE_RPCSVC_NIS_H)
3008 #include <rpcsvc/nis.h>
3011 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3012 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3013 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3016 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3022 void exit_on_core(int ignored) {
3028 signal(SIGSEGV, exit_on_core);
3029 newpath = realpath("/tmp", NULL);
3030 exit((newpath != NULL) ? 0 : 1);
3033 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3034 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3035 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3038 #################################################
3039 # check for AFS clear-text auth support
3040 samba_cv_WITH_AFS=no
3041 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3043 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3044 [ case "$withval" in
3046 AC_MSG_RESULT($withval)
3047 samba_cv_WITH_AFS=$withval
3056 ####################################################
3057 # check for Linux-specific AFS fake-kaserver support
3058 samba_cv_WITH_FAKE_KASERVER=no
3059 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3060 AC_ARG_WITH(fake-kaserver,
3061 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3062 [ case "$withval" in
3064 AC_MSG_RESULT($withval)
3065 samba_cv_WITH_FAKE_KASERVER=$withval
3074 #################################################
3075 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3076 if test x"$samba_cv_WITH_AFS" != x"no" ||
3077 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3079 # see if this box has the afs-headers in /usr/include/afs
3080 AC_MSG_CHECKING(for /usr/include/afs)
3081 if test -d /usr/include/afs; then
3082 CFLAGS="$CFLAGS -I/usr/include/afs"
3083 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3091 AC_CHECK_HEADERS(afs.h afs/afs.h)
3092 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3093 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3094 test x"$samba_cv_WITH_AFS" = x"auto"; then
3095 AC_MSG_WARN([AFS cannot be supported without afs.h])
3097 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3100 have_afs_headers=yes
3104 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3105 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3108 #################################################
3109 # check whether to compile AFS/NT ACL mapping module
3110 samba_cv_WITH_VFS_AFSACL=no
3111 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3112 AC_ARG_WITH(vfs-afsacl,
3113 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3114 [ case "$withval" in
3116 AC_MSG_RESULT($withval)
3117 samba_cv_WITH_VFS_AFSACL=yes
3126 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3127 default_shared_modules="$default_shared_modules vfs_afsacl"
3130 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3131 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3134 #################################################
3135 # check for the DFS clear-text auth system
3136 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3138 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3139 [ case "$withval" in
3142 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3151 ########################################################
3152 # Compile with LDAP support?
3154 with_ldap_support=auto
3155 AC_MSG_CHECKING([for LDAP support])
3158 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3159 [ case "$withval" in
3161 with_ldap_support=$withval
3165 AC_MSG_RESULT($with_ldap_support)
3170 AC_SUBST(SMBLDAPUTIL)
3174 if test x"$with_ldap_support" != x"no"; then
3176 ##################################################################
3177 # first test for ldap.h and lber.h
3178 # (ldap.h is required for this test)
3179 AC_CHECK_HEADERS(ldap.h lber.h)
3181 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3182 if test x"$with_ldap_support" = x"yes"; then
3183 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3185 AC_MSG_WARN(ldap.h is needed for LDAP support)
3188 with_ldap_support=no
3191 ##################################################################
3192 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3193 # unsigned int in include/includes.h
3196 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3197 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3198 with_ldap_support=yes
3201 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3202 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3203 if test x"$with_ldap_support" = x"yes"; then
3204 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3206 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3208 with_ldap_support=no
3214 if test x"$with_ldap_support" != x"no"; then
3217 ##################################################################
3218 # we might need the lber lib on some systems. To avoid link errors
3219 # this test must be before the libldap test
3220 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3222 ########################################################
3223 # If ber_sockbuf_add_io() is available we can add
3224 # SASL wrapping hooks
3225 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3227 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3228 AC_TRY_COMPILE([#include <ldap.h>],
3229 [int val = LDAP_OPT_SOCKBUF;],
3230 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3231 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3233 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3234 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3235 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3238 #######################################################
3239 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3240 # ldap logging and print it out in the samba logs
3241 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3242 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3243 [AC_TRY_COMPILE([#include <lber.h>],
3244 [int val = LBER_OPT_LOG_PRINT_FN;],
3245 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3246 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3248 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3249 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3250 [Support for LDAP/LBER logging interception])
3253 ########################################################
3254 # now see if we can find the ldap libs in standard paths
3255 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3257 ########################################################
3258 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3259 # Check found in pam_ldap 145.
3260 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3262 LIBS="$LIBS $LDAP_LIBS"
3263 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3267 [ldap_set_rebind_proc(0, 0, 0);],
3268 [smb_ldap_cv_ldap_set_rebind_proc=3],
3269 [smb_ldap_cv_ldap_set_rebind_proc=2]
3273 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3275 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3277 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3278 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3279 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3280 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3281 default_shared_modules="$default_shared_modules";
3282 SMBLDAP="lib/smbldap.o"
3283 SMBLDAPUTIL="lib/smbldap_util.o"
3284 with_ldap_support=yes
3285 AC_MSG_CHECKING(whether LDAP support is used)
3288 if test x"$with_ldap_support" = x"yes"; then
3289 AC_MSG_ERROR(libldap is needed for LDAP support)
3291 AC_MSG_WARN(libldap is needed for LDAP support)
3295 with_ldap_support=no
3301 #################################################
3302 # active directory support
3304 with_ads_support=auto
3305 AC_MSG_CHECKING([for Active Directory and krb5 support])
3308 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3309 [ case "$withval" in
3311 with_ads_support="$withval"
3315 AC_MSG_RESULT($with_ads_support)
3320 if test x"$with_ldap_support" != x"yes"; then
3322 if test x"$with_ads_support" = x"yes"; then
3323 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3324 elif test x"$with_ads_support" = x"auto"; then
3325 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3331 # Check to see whether there is enough LDAP functionality to be able
3332 # to build AD support.
3334 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3337 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3339 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3340 if test x"$with_ads_support" = x"yes"; then
3341 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3342 elif test x"$with_ads_support" = x"auto"; then
3343 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3349 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3351 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3352 if test x"$with_ads_support" = x"yes"; then
3353 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3354 elif test x"$with_ads_support" = x"auto"; then
3355 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3363 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3365 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3366 if test x"$with_ads_support" = x"yes"; then
3367 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3368 elif test x"$with_ads_support" = x"auto"; then
3369 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3376 if test x"$with_ads_support" != x"no"; then
3378 # Do no harm to the values of CFLAGS and LIBS while testing for
3381 if test x$FOUND_KRB5 = x"no"; then
3382 #################################################
3383 # check for location of Kerberos 5 install
3384 AC_MSG_CHECKING(for kerberos 5 install path)
3386 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3387 [ case "$withval" in
3389 AC_MSG_RESULT(no krb5-path given)
3396 AC_MSG_RESULT($withval)
3397 KRB5_CFLAGS="-I$withval/include"
3398 KRB5_CPPFLAGS="-I$withval/include"
3399 KRB5_LDFLAGS="-L$withval/lib"
3401 if test -x "$withval/bin/krb5-config"; then
3402 KRB5CONFIG=$withval/bin/krb5-config
3406 AC_MSG_RESULT(no krb5-path given)
3410 #################################################
3411 # check for krb5-config from recent MIT and Heimdal kerberos 5
3412 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3413 AC_MSG_CHECKING(for working krb5-config)
3414 if test -x "$KRB5CONFIG"; then
3415 ac_save_CFLAGS=$CFLAGS
3416 CFLAGS="";export CFLAGS
3417 ac_save_LDFLAGS=$LDFLAGS
3418 LDFLAGS="";export LDFLAGS
3419 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3420 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3421 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3422 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3423 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3424 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3428 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3431 if test x$FOUND_KRB5 = x"no"; then
3432 #################################################
3433 # see if this box has the SuSE location for the heimdal krb implementation
3434 AC_MSG_CHECKING(for /usr/include/heimdal)
3435 if test -d /usr/include/heimdal; then
3436 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3437 KRB5_CFLAGS="-I/usr/include/heimdal"
3438 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3439 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3443 KRB5_CFLAGS="-I/usr/include/heimdal"
3444 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3453 if test x$FOUND_KRB5 = x"no"; then
3454 #################################################
3455 # see if this box has the RedHat location for kerberos
3456 AC_MSG_CHECKING(for /usr/kerberos)
3457 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3458 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3459 KRB5_CFLAGS="-I/usr/kerberos/include"
3460 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3468 if test x$FOUND_KRB5 = x"no"; then
3469 #################################################
3470 # see if this box has the OpenBSD location for heimdal krb5
3471 AC_MSG_CHECKING(for /usr/include/kerberosV)
3472 if test -d /usr/include/kerberosV; then
3473 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3474 KRB5_LIBS="-lcrypto"
3482 ac_save_CFLAGS=$CFLAGS
3483 ac_save_CPPFLAGS=$CPPFLAGS
3484 ac_save_LDFLAGS=$LDFLAGS
3486 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3487 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3488 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3490 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3492 # now check for krb5.h. Some systems have the libraries without the headers!
3493 # note that this check is done here to allow for different kerberos
3495 AC_CHECK_HEADERS(krb5.h)
3497 if test x"$ac_cv_header_krb5_h" = x"no"; then
3499 # Give a warning if AD support was not explicitly requested,
3500 # i.e with_ads_support = auto, otherwise die with an error.
3502 if test x"$with_ads_support" = x"yes"; then
3503 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3505 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3508 # Turn off AD support and restore CFLAGS and LIBS variables
3510 with_ads_support="no"
3512 CFLAGS=$ac_save_CFLAGS
3513 CPPFLAGS=$ac_save_CPPFLAGS
3514 LDFLAGS=$ac_save_LDFLAGS
3516 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3517 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3518 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3519 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3523 # Now we have determined whether we really want ADS support
3525 if test x"$with_ads_support" != x"no"; then
3530 # now check for gssapi headers. This is also done here to allow for
3531 # different kerberos include paths
3532 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3534 ##################################################################
3535 # we might need the k5crypto and com_err libraries on some systems
3536 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3537 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3540 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3541 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3542 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3544 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3545 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3547 ########################################################
3548 # now see if we can find the krb5 libs in standard paths
3549 # or as specified above
3550 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3551 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3553 ########################################################
3554 # now see if we can find the gssapi libs in standard paths
3555 if test x"$have_gssapi" != x"yes"; then
3556 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3559 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3560 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3561 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3562 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3563 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3564 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3565 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3566 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3567 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3568 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3569 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3570 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3571 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3572 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3573 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3574 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3575 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3576 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3577 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3578 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3579 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3580 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3581 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3582 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3583 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3584 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3585 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3586 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3587 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3588 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3589 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3590 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3591 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3592 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3593 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3594 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3595 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3596 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3597 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3598 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3599 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3600 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3601 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3603 LIBS="$KRB5_LIBS $LIBS"
3605 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3606 smb_krb5_cv_ticket_has_keyinfo,
3615 krb5_enctype enctype;
3617 enctype = ticket.enc_part.enctype;
3618 kvno = ticket.enc_part.kvno;
3620 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3621 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3624 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3625 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3626 [Whether the krb5_ticket structure contains the kvno and enctype])
3629 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3630 smb_krb5_cv_creds_opt_free_context,
3636 krb5_get_init_creds_opt *opt = NULL;
3637 krb5_get_init_creds_opt_free(ctx, opt);
3639 [smb_krb5_cv_creds_opt_free_context=yes],
3640 [smb_krb5_cv_creds_opt_free_context=no]
3644 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3645 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3646 [Whether krb5_get_init_creds_opt_free takes a context argument])
3649 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3652 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3653 [smb_krb5_cv_verify_checksum=7],
3654 [smb_krb5_cv_verify_checksum=6],
3657 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3659 AC_CACHE_CHECK([for checksum in krb5_checksum],
3660 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3661 AC_TRY_COMPILE([#include <krb5.h>],
3662 [krb5_checksum cksum; cksum.checksum.length = 0;],
3663 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3664 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3666 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3667 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3668 [Whether the krb5_checksum struct has a checksum property])
3671 AC_CACHE_CHECK([for etype in EncryptedData],
3672 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3673 AC_TRY_COMPILE([#include <krb5.h>],
3674 [EncryptedData edata; edata.etype = 0;],
3675 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3676 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3678 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3679 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3680 [Whether the EncryptedData struct has a etype property])
3683 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3684 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3685 AC_TRY_COMPILE([#include <krb5.h>],
3686 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3687 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3688 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3690 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3691 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3692 [Whether the krb5_ap_req struct has a ticket pointer])
3695 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3696 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3697 AC_TRY_COMPILE([#include <krb5.h>],
3698 [krb5_error err; err.e_data = NULL;],
3699 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3700 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3702 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3703 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3704 [Whether the krb5_error struct has a e_data pointer])
3707 AC_CACHE_CHECK([for krb5_crypto type],
3708 samba_cv_HAVE_KRB5_CRYPTO,[
3709 AC_TRY_COMPILE([#include <krb5.h>],
3710 [krb5_crypto crypto;],
3711 samba_cv_HAVE_KRB5_CRYPTO=yes,
3712 samba_cv_HAVE_KRB5_CRYPTO=no)])
3714 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3715 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3716 [Whether the type krb5_crypto exists])
3719 AC_CACHE_CHECK([for krb5_encrypt_block type],
3720 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3721 AC_TRY_COMPILE([#include <krb5.h>],
3722 [krb5_encrypt_block block;],
3723 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3724 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3726 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3727 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3728 [Whether the type krb5_encrypt_block exists])
3731 AC_CACHE_CHECK([for addrtype in krb5_address],
3732 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3733 AC_TRY_COMPILE([#include <krb5.h>],
3734 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3735 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3736 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3738 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3739 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3740 [Whether the krb5_address struct has a addrtype property])
3743 AC_CACHE_CHECK([for addr_type in krb5_address],
3744 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3745 AC_TRY_COMPILE([#include <krb5.h>],
3746 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3747 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3748 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3750 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3751 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3752 [Whether the krb5_address struct has a addr_type property])
3755 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3756 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3757 [AC_TRY_COMPILE([#include <krb5.h>],
3758 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3759 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3761 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3762 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3763 [Whether the krb5_ticket struct has a enc_part2 property])
3766 AC_CACHE_CHECK([for keyblock in krb5_creds],
3767 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3768 AC_TRY_COMPILE([#include <krb5.h>],
3769 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3770 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3771 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3773 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3774 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3775 [Whether the krb5_creds struct has a keyblock property])
3778 AC_CACHE_CHECK([for session in krb5_creds],
3779 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3780 AC_TRY_COMPILE([#include <krb5.h>],
3781 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3782 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3783 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3785 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3786 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3787 [Whether the krb5_creds struct has a session property])
3790 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3791 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3792 AC_TRY_COMPILE([#include <krb5.h>],
3793 [krb5_keyblock key; key.keyvalue.data = NULL;],
3794 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3795 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3797 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3798 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3799 [Whether the krb5_keyblock struct has a keyvalue property])
3802 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3803 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3804 AC_TRY_COMPILE([#include <krb5.h>],
3805 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3806 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3807 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3808 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3809 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3810 AC_TRY_COMPILE([#include <krb5.h>],
3811 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3812 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3813 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3814 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3815 # w.r.t. arcfour and windows, so we must not enable it here
3816 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3817 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3818 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3819 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3822 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3823 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3824 AC_TRY_COMPILE([#include <krb5.h>],
3825 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3826 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3827 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3829 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3830 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3831 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3834 AC_CACHE_CHECK([for KV5M_KEYTAB],
3835 samba_cv_HAVE_KV5M_KEYTAB,[
3836 AC_TRY_COMPILE([#include <krb5.h>],
3837 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3838 samba_cv_HAVE_KV5M_KEYTAB=yes,
3839 samba_cv_HAVE_KV5M_KEYTAB=no)])
3841 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3842 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3843 [Whether the KV5M_KEYTAB option is available])
3846 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3847 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3848 AC_TRY_COMPILE([#include <krb5.h>],
3849 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3850 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3851 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3853 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3854 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3855 [Whether KRB5_KU_OTHER_CKSUM is available])
3858 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3859 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3860 AC_TRY_COMPILE([#include <krb5.h>],
3861 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3862 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3863 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3865 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3866 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3867 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3870 AC_CACHE_CHECK([for the krb5_princ_component macro],
3871 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3872 AC_TRY_LINK([#include <krb5.h>],
3873 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3874 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3875 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3877 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3878 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3879 [Whether krb5_princ_component is available])
3882 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3883 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3884 AC_TRY_COMPILE([#include <krb5.h>],
3885 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3886 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3887 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3889 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3890 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3891 [Whether krb5_keytab_entry has key member])
3894 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3895 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3896 AC_TRY_COMPILE([#include <krb5.h>],
3897 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3898 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3899 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3901 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3902 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3903 [Whether krb5_keytab_entry has keyblock member])
3906 AC_CACHE_CHECK([for magic in krb5_address],
3907 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3908 AC_TRY_COMPILE([#include <krb5.h>],
3909 [krb5_address addr; addr.magic = 0;],
3910 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3911 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3913 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3914 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3915 [Whether the krb5_address struct has a magic property])
3918 AC_CACHE_CHECK([for WRFILE: keytab support],
3919 samba_cv_HAVE_WRFILE_KEYTAB,[
3924 krb5_context context;
3927 krb5_init_context(&context);
3928 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3930 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3931 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3933 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3934 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3935 [Whether the WRFILE:-keytab is supported])
3938 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3939 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3940 AC_TRY_COMPILE([#include <krb5.h>],
3942 krb5_context context;
3943 krb5_principal principal;
3944 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3945 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3946 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3948 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3949 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3950 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3953 AC_CACHE_CHECK([for krb5_addresses type],
3954 samba_cv_HAVE_KRB5_ADDRESSES,[
3955 AC_TRY_COMPILE([#include <krb5.h>],
3956 [krb5_addresses addr;],
3957 samba_cv_HAVE_KRB5_ADDRESSES=yes,
3958 samba_cv_HAVE_KRB5_ADDRESSES=no)])
3960 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3961 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3962 [Whether the type krb5_addresses type exists])
3965 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3966 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3967 AC_TRY_COMPILE([#include <krb5.h>],
3969 krb5_mk_error(0,0,0);],
3970 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3971 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3973 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3974 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3975 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3978 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3979 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3980 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3985 krb5_context context = NULL;
3987 krb5_enctype_to_string(context, 1, &str);
3988 if (str) free (str);
3991 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3992 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3993 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3995 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3996 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3997 [whether krb5_enctype_to_string takes krb5_context argument])
4000 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4001 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4006 krb5_enctype_to_string(1, buf, 256);
4009 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4010 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4011 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4013 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4014 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4015 [whether krb5_enctype_to_string takes size_t argument])
4019 AC_CACHE_CHECK([for krb5_principal_get_realm],
4020 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4021 AC_TRY_LINK([#include <krb5.h>],
4022 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4023 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4024 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4026 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4027 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4028 [Whether the function krb5_principal_get_realm is defined])
4031 AC_CACHE_CHECK([for krb5_princ_realm],
4032 samba_cv_HAVE_KRB5_PRINC_REALM,[
4033 AC_TRY_LINK([#include <krb5.h>],
4034 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4035 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4036 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4038 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4039 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4040 [Whether the macro krb5_princ_realm is defined])
4045 # Now the decisions whether we can support krb5
4047 # NOTE: all tests should be done before this block!
4050 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4051 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4055 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4056 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4058 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4062 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4063 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4065 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4069 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4070 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4072 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4076 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4077 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4079 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4083 if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4085 # We only need the following functions if we can't get the enctype
4086 # and kvno out of the ticket directly (ie. on Heimdal).
4088 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4090 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4094 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4096 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4102 if test x"$use_ads" = x"yes"; then
4103 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4104 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4105 if test x"$have_gssapi" = x"yes"; then
4106 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4109 if test x"$with_ads_support" = x"yes"; then
4110 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4112 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4114 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4115 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4116 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4117 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4121 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4122 AC_MSG_RESULT([$use_ads])
4124 LIBS="$ac_save_LIBS"
4127 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4128 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4131 ########################################################
4132 # Compile with DNS Updates support?
4134 with_dnsupdate_support=no
4135 AC_MSG_CHECKING([whether to enable DNS Updates support])
4137 AC_ARG_WITH(dnsupdate,
4138 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4139 [ case "$withval" in
4141 with_dnsupdate_support=$withval
4145 AC_MSG_RESULT($with_dnsupdate_support)
4147 if test x"$with_dnsupdate_support" != x"no"; then
4149 ################################################################
4150 # first test for Active Directory support being enabled
4151 #if test x"$with_ads_support" = x"no"; then
4152 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4153 # with_dnsupdate_support=no
4155 ##################################################################
4156 # then test for uuid.h (necessary to generate unique DNS keynames
4157 # (uuid.h is required for this test)
4158 AC_CHECK_HEADERS(uuid/uuid.h)
4160 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4161 if test x"$with_dnsupdate_support" = x"yes"; then
4162 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4164 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4166 with_dnsupdate_support=no
4170 if test x"$with_dnsupdate_support" != x"no"; then
4172 ########################################################
4173 # Now see if we can find the uuid libs in standard paths
4174 # On some systems, the uuid API is in libc, so we have to
4175 # be careful not to insert a spurious -luuid.
4178 AC_LIBTESTFUNC(uuid, uuid_generate,
4183 SMB_REMOVE_LIB(uuid)
4187 with_dnsupdate_support=yes
4188 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4191 if test x"$with_dnsupdate_support" = x"yes"; then
4192 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4194 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4196 with_dnsupdate_support=no
4200 #################################################
4201 # check for automount support
4202 AC_MSG_CHECKING(whether to use automount)
4203 AC_ARG_WITH(automount,
4204 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4205 [ case "$withval" in
4208 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4217 #################################################
4218 # check for mount- and umount.cifs support
4220 INSTALL_CIFSMOUNT=""
4221 UNINSTALL_CIFSMOUNT=""
4222 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4223 AC_ARG_WITH(cifsmount,
4224 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4225 [ case "$withval" in
4233 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4234 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4235 INSTALL_CIFSMOUNT="installcifsmount"
4236 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4239 AC_MSG_ERROR(not on a linux system!)
4244 [ case "$host_os" in
4247 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4248 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4249 INSTALL_CIFSMOUNT="installcifsmount"
4250 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4258 #################################################
4259 # check for cifs.upcall support
4260 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4262 INSTALL_CIFSUPCALL=""
4263 UNINSTALL_CIFSUPCALL=""
4264 AC_MSG_CHECKING(whether to build cifs.upcall)
4265 AC_ARG_WITH(cifsupcall,
4266 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4267 [ case "$withval" in
4274 if test x"$use_ads" != x"yes"; then
4275 AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4276 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4277 AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4280 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4281 CIFSUPCALL_PROGS="bin/cifs.upcall"
4282 INSTALL_CIFSUPCALL="installcifsupcall"
4283 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4287 AC_MSG_ERROR(not on a linux system!)
4292 [ case "$host_os" in
4294 if test x"$use_ads" != x"yes"; then
4295 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4296 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4297 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4300 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4301 CIFSUPCALL_PROGS="bin/cifs.upcall"
4302 INSTALL_CIFSUPCALL="installcifsupcall"
4303 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4313 #################################################
4314 # Check for a PAM clear-text auth, accounts, password
4315 # and session support. Most PAM implementations keep their
4316 # headers in /usr/include/security. Darwin keeps its in
4319 with_pam_for_crypt=no
4321 AC_MSG_CHECKING(whether to try PAM support)
4323 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4324 [ case "$withval" in
4330 AC_MSG_RESULT([$try_pam])
4333 create_pam_modules=no
4334 if test x"${try_pam}" != x"no";then
4336 create_pam_modules=yes
4338 # Most systems have PAM headers in /usr/include/security, but Darwin
4339 # has them in /usr/include/pam.
4340 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4341 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4342 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4343 if test x"${try_pam}" = x"yes";then
4344 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4347 create_pam_modules=no
4350 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4351 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4352 if test x"${try_pam}" = x"yes";then
4353 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4356 create_pam_modules=no
4359 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4360 #if HAVE_SECURITY_PAM_APPL_H
4361 #include <security/pam_appl.h>
4363 #if HAVE_PAM_PAM_APPL_H
4364 #include <pam/pam_appl.h>
4367 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4368 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4369 if test x"${try_pam}" = x"yes";then
4370 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4372 create_pam_modules=no
4375 if test x"$use_pam" = x"yes"; then
4376 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4377 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4378 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4379 with_pam_for_crypt=yes
4381 if test x"$create_pam_modules" = x"yes"; then
4382 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4383 # this checks are optional,
4384 # we don't care about the results here
4385 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4386 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4387 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4389 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4392 AC_MSG_CHECKING(whether to use PAM support)
4393 AC_MSG_RESULT([$use_pam])
4395 AC_MSG_CHECKING(whether to have PAM MODULES support)
4396 AC_MSG_RESULT([$create_pam_modules])
4399 #################################################
4400 # check for pam_smbpass support
4402 INSTALL_PAM_MODULES=""
4403 UNINSTALL_PAM_MODULES=""
4404 AC_MSG_CHECKING(whether to use pam_smbpass)
4405 AC_ARG_WITH(pam_smbpass,
4406 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4407 [ case "$withval" in
4411 # Conditions under which pam_smbpass should not be built.
4413 if test x"$BLDSHARED" != x"true"; then
4414 AC_MSG_ERROR([No support for shared modules])
4415 elif test x"$create_pam_modules" != x"yes"; then
4416 AC_MSG_ERROR([No support for PAM MODULES])
4418 PAM_MODULES="pam_smbpass"
4419 INSTALL_PAM_MODULES="installpammodules"
4420 UNINSTALL_PAM_MODULES="uninstallpammodules"
4431 ###############################################
4432 # test for where we get crypt() from
4433 AC_SEARCH_LIBS(crypt, [crypt],
4434 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4435 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4438 ## moved after the check for -lcrypt in order to
4439 ## ensure that the necessary libraries are included
4440 ## check checking for truncated salt. Wrapped by the
4441 ## $with_pam_for_crypt variable as above --jerry
4443 if test $with_pam_for_crypt = no; then
4444 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4446 LIBS="$AUTH_LIBS $LIBS"
4447 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4448 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4449 LIBS="$crypt_LIBS"])
4450 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4451 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4455 #################################################
4456 # check for a NISPLUS_HOME support
4457 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4458 AC_ARG_WITH(nisplus-home,
4459 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4460 [ case "$withval" in
4463 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4472 #################################################
4473 # check for syslog logging
4474 AC_MSG_CHECKING(whether to use syslog logging)
4476 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4477 [ case "$withval" in
4480 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4489 #################################################
4490 # check for custom syslog facility
4491 AC_MSG_CHECKING(whether to use a custom syslog facility)
4492 AC_ARG_WITH(syslog-facility,
4493 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4495 if test "$withval" = "no" ; then
4496 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4498 if test "$withval" != "yes" ; then
4499 syslog_facility="$withval"
4500 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4505 #################################################
4506 # check for experimental disk-quotas support
4508 samba_cv_WITH_QUOTAS=auto
4509 samba_cv_TRY_QUOTAS=no
4510 samba_cv_RUN_QUOTA_TESTS=auto
4511 samba_cv_WITH_SYS_QUOTAS=auto
4512 samba_cv_TRY_SYS_QUOTAS=auto
4513 samba_cv_SYSQUOTA_FOUND=no
4515 AC_MSG_CHECKING(whether to try disk-quotas support)
4517 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4518 [ case "$withval" in
4521 samba_cv_WITH_QUOTAS=yes
4522 samba_cv_TRY_QUOTAS=yes
4523 samba_cv_RUN_QUOTA_TESTS=yes
4524 #set sys quotas to auto in this case
4525 samba_cv_TRY_SYS_QUOTAS=auto
4529 samba_cv_WITH_QUOTAS=auto
4530 samba_cv_TRY_QUOTAS=auto
4531 samba_cv_RUN_QUOTA_TESTS=auto
4532 #set sys quotas to auto in this case
4533 samba_cv_TRY_SYS_QUOTAS=auto
4537 samba_cv_WITH_QUOTAS=no
4538 samba_cv_TRY_QUOTAS=no
4539 samba_cv_RUN_QUOTA_TESTS=no
4542 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4545 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4548 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4549 AC_ARG_WITH(sys-quotas,
4550 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4551 [ case "$withval" in
4554 samba_cv_WITH_SYS_QUOTAS=yes
4555 samba_cv_TRY_SYS_QUOTAS=yes
4556 samba_cv_RUN_QUOTA_TESTS=yes
4560 samba_cv_WITH_SYS_QUOTAS=auto
4561 samba_cv_TRY_SYS_QUOTAS=auto
4562 samba_cv_RUN_QUOTA_TESTS=auto
4566 samba_cv_WITH_SYS_QUOTAS=no
4567 samba_cv_TRY_SYS_QUOTAS=no
4570 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4573 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4576 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4577 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4581 samba_cv_TRY_SYS_QUOTAS=yes
4582 samba_cv_RUN_QUOTA_TESTS=yes
4586 samba_cv_TRY_SYS_QUOTAS=no
4591 #############################################
4592 # only check for quota stuff if --with-quotas
4593 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4596 # on linux we didn't need to test we have builtin support
4598 samba_cv_SYSQUOTA_FOUND=yes
4599 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4600 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4601 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4604 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4605 samba_cv_found_xfs_header=yes
4606 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4610 # need to set this define when using static linking (BUG 1473)
4611 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4617 # some broken header files need this
4618 AC_CHECK_HEADER(asm/types.h,[
4619 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4620 AC_ADD_INCLUDE(<asm/types.h>)
4623 # For quotas on Veritas VxFS filesystems
4624 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4626 # For quotas on Linux XFS filesystems
4627 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4629 # For sys/quota.h and linux/quota.h
4630 AC_CHECK_HEADERS(sys/quota.h)
4632 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4633 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4634 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4636 #include "confdefs.h"
4637 #ifdef HAVE_SYS_TYPES_H
4638 #include <sys/types.h>
4640 #ifdef HAVE_ASM_TYPES_H
4641 #include <asm/types.h>
4643 #include <sys/quota.h>
4644 ],[int i = Q_XGETQUOTA;],
4645 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4646 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4647 samba_cv_found_xfs_header=yes
4651 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4652 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4654 #include "confdefs.h"
4655 #ifdef HAVE_SYS_QUOTA_H
4656 #include <sys/quota.h>
4660 D.dqb_fsoftlimit = 0;],
4661 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4662 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4663 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4667 # look for a working quota system
4669 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4670 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4672 #define HAVE_QUOTACTL_4A 1
4673 #define AUTOCONF_TEST 1
4674 #include "confdefs.h"
4675 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4676 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4677 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4678 samba_cv_SYSQUOTA_FOUND=yes;
4679 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4680 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4684 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4685 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4687 #define HAVE_QUOTACTL_4B 1
4688 #define AUTOCONF_TEST 1
4689 #include "confdefs.h"
4690 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4691 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4692 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4693 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4694 samba_cv_SYSQUOTA_FOUND=yes;
4695 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4696 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4700 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4701 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4703 #define HAVE_QUOTACTL_3 1
4704 #define AUTOCONF_TEST 1
4705 #include "confdefs.h"
4706 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4707 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4708 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4709 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4710 samba_cv_SYSQUOTA_FOUND=yes;
4711 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4712 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4716 #################################################
4717 # check for mntent.h and struct mntent
4718 AC_CHECK_HEADERS(mntent.h)
4719 #################################################
4720 # check for setmntent,getmntent,endmntent
4721 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4723 #################################################
4724 # check for devnm.h and struct mntent
4725 AC_CHECK_HEADERS(devnm.h)
4726 #################################################
4728 AC_CHECK_FUNCS(devnm)
4730 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4731 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4732 # if --with-sys-quotas=yes then build it
4733 # you have can use the get/set quota command smb.conf
4735 samba_cv_SYSQUOTA_FOUND=auto
4737 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4738 # if --with-sys-quotas=yes then build it
4739 # you have can use the get/set quota command smb.conf
4741 samba_cv_TRY_SYS_QUOTAS=auto
4745 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4746 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4747 SAVE_CPPFLAGS="$CPPFLAGS"
4748 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4750 #include "confdefs.h"
4751 #define NO_PROTO_H 1
4752 #define NO_CONFIG_H 1
4753 #define HAVE_SYS_QUOTAS 1
4754 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4755 #include "${srcdir-.}/lib/sysquotas.c"
4756 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4757 CPPFLAGS="$SAVE_CPPFLAGS"
4759 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4760 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4761 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4762 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4763 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4764 samba_cv_WE_USE_SYS_QUOTAS=yes
4772 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4773 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4774 SAVE_CPPFLAGS="$CPPFLAGS"
4775 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4777 #include "confdefs.h"
4778 #define NO_PROTO_H 1
4779 #define NO_CONFIG_H 1
4780 #define HAVE_SYS_QUOTAS 1
4781 #define HAVE_XFS_QUOTAS 1
4782 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4783 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4784 CPPFLAGS="$SAVE_CPPFLAGS"
4786 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4787 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4788 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4793 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4794 SAVE_CPPFLAGS="$CPPFLAGS"
4795 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4797 #include "confdefs.h"
4798 #define NO_PROTO_H 1
4799 #define NO_CONFIG_H 1
4800 #include "${srcdir-.}/smbd/quotas.c"
4801 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4802 CPPFLAGS="$SAVE_CPPFLAGS"
4804 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4805 AC_MSG_CHECKING(whether to use the old quota support)
4806 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4807 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4808 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4818 ####################
4819 # End of quota check samba_cv_RUN_QUOTA_TESTS
4822 #################################################
4823 # check for experimental utmp accounting
4825 AC_MSG_CHECKING(whether to support utmp accounting)
4828 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4829 [ case "$withval" in
4839 # utmp requires utmp.h
4840 # Note similar check earlier, when checking utmp details.
4842 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4843 utmp_no_reason=", no utmp.h on $host_os"
4847 # Display test results
4849 if test x"$WITH_UTMP" = x"yes"; then
4851 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4853 AC_MSG_RESULT(no$utmp_no_reason)
4858 UNINSTALLLIBCMD_SH=:
4861 if test $BLDSHARED = true; then
4862 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4863 UNINSTALLLIBCMD_SH="rm -f"
4865 if test $enable_static = yes; then
4866 INSTALLLIBCMD_A="\$(INSTALLCMD)"
4867 UNINSTALLLIBCMD_A="rm -f"
4870 #################################################
4871 # --disable-shared-libs
4872 # can be used to disable the internal use of shared libs altogether
4873 # (this only has an effect when building shared libs is enabled)
4878 AC_MSG_CHECKING(whether to use shared libraries internally)
4879 AC_ARG_ENABLE([shared-libs],
4880 AS_HELP_STRING([--enable-shared-libs],
4881 [Use shared libraries internally (default=yes)]),
4882 [enable_shared_libs=$enableval],
4883 [enable_shared_libs=yes])
4885 if test x"$enable_shared_libs" != x"no" ; then
4886 USESHARED=$BLDSHARED
4889 AC_MSG_RESULT([$USESHARED])
4891 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4892 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4895 #################################################
4896 # --with-static-libs=LIBS:
4897 # link (internal) libs dynamically or statically?
4899 # If a subsystem is built as a library then this controls whether they are
4900 # linked into Samba targets statically or dynamically:
4902 # * If we build the shared library at all, we link dynamically by default.
4904 # * We only link statically if we don't build shared or if the library
4905 # appears in the --with-static-libs configure option.
4908 # --with-static-libs=libtalloc makes use of libtalloc.a instead
4909 # of linking the dynamic variant with -ltalloc.
4911 # NOTE: This option only affects libraries that we do not only build
4912 # but that samba also links against as libraries (as opposed to linking
4913 # the plain object files. - This has to be configured in Makefile.in.
4914 # So in particular it does not harm to give invalid or unknown names here.
4917 AC_ARG_WITH([static-libs],
4918 [AS_HELP_STRING([--with-static-libs=LIBS],
4919 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4920 [AS_IF([test $withval],
4921 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4922 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4923 eval LINK_$lib=STATIC
4929 # until we have organized other internal subsystems (as util, registry
4930 # and smbconf) into shared libraries, we CAN NOT link libnetapi
4931 # dynamically to samba programs.
4933 LINK_LIBNETAPI=STATIC
4935 LINK_LIBSMBCLIENT=STATIC
4938 # The library versions are hardcoded here
4939 # and filled into the LIBFOO_SOVER variable.
4941 # TODO: for talloc and tdb (at least), these should
4942 # be extracted from their respective source directories
4944 SMB_LIBRARY(talloc, 1)
4946 SMB_LIBRARY(netapi, 0)
4947 SMB_LIBRARY(smbclient, 0)
4948 SMB_LIBRARY(smbsharemodes, 0)
4949 SMB_LIBRARY(addns, 0, no, [undefined API])
4953 #################################################
4954 # these tests are taken from the GNU fileutils package
4955 AC_CHECKING(how to get filesystem space usage)
4958 # Test for statvfs64.
4959 if test $space = no; then
4961 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4963 #if defined(HAVE_UNISTD_H)
4966 #include <sys/types.h>
4967 #include <sys/statvfs.h>
4970 struct statvfs64 fsd;
4971 exit (statvfs64 (".", &fsd));
4973 fu_cv_sys_stat_statvfs64=yes,
4974 fu_cv_sys_stat_statvfs64=no,
4975 fu_cv_sys_stat_statvfs64=cross)])
4976 if test $fu_cv_sys_stat_statvfs64 = yes; then
4978 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4982 # Perform only the link test since it seems there are no variants of the
4983 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4984 # because that got a false positive on SCO OSR5. Adding the declaration
4985 # of a `struct statvfs' causes this test to fail (as it should) on such
4986 # systems. That system is reported to work fine with STAT_STATFS4 which
4987 # is what it gets when this test fails.
4988 if test $space = no; then
4990 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4991 [AC_TRY_LINK([#include <sys/types.h>
4992 #include <sys/statvfs.h>],
4993 [struct statvfs fsd; statvfs (0, &fsd);],
4994 fu_cv_sys_stat_statvfs=yes,
4995 fu_cv_sys_stat_statvfs=no)])
4996 if test $fu_cv_sys_stat_statvfs = yes; then
4998 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5002 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5003 # This is not the case on ancient Linux systems.
5005 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5006 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5007 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5008 if test x"$samba_cv_fsid_int" = x"yes"; then
5009 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5012 if test $space = no; then
5013 # DEC Alpha running OSF/1
5014 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5015 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5017 #include <sys/param.h>
5018 #include <sys/types.h>
5019 #include <sys/mount.h>
5024 exit (statfs (".", &fsd, sizeof (struct statfs)));
5026 fu_cv_sys_stat_statfs3_osf1=yes,
5027 fu_cv_sys_stat_statfs3_osf1=no,
5028 fu_cv_sys_stat_statfs3_osf1=no)])
5029 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5030 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5032 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5036 if test $space = no; then
5038 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5039 member (AIX, 4.3BSD)])
5040 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5042 #ifdef HAVE_SYS_PARAM_H
5043 #include <sys/param.h>
5045 #ifdef HAVE_SYS_MOUNT_H
5046 #include <sys/mount.h>
5048 #ifdef HAVE_SYS_VFS_H
5049 #include <sys/vfs.h>
5055 exit (statfs (".", &fsd));
5057 fu_cv_sys_stat_statfs2_bsize=yes,
5058 fu_cv_sys_stat_statfs2_bsize=no,
5059 fu_cv_sys_stat_statfs2_bsize=no)])
5060 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5061 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5063 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5067 if test $space = no; then
5069 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5070 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5071 [AC_TRY_RUN([#include <sys/types.h>
5072 #include <sys/statfs.h>
5076 exit (statfs (".", &fsd, sizeof fsd, 0));
5078 fu_cv_sys_stat_statfs4=yes,
5079 fu_cv_sys_stat_statfs4=no,
5080 fu_cv_sys_stat_statfs4=no)])
5081 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5082 if test $fu_cv_sys_stat_statfs4 = yes; then
5084 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5088 if test $space = no; then
5090 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5091 member (4.4BSD and NetBSD)])
5092 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5093 [AC_TRY_RUN([#include <sys/types.h>
5094 #ifdef HAVE_SYS_PARAM_H
5095 #include <sys/param.h>
5097 #ifdef HAVE_SYS_MOUNT_H
5098 #include <sys/mount.h>
5104 exit (statfs (".", &fsd));
5106 fu_cv_sys_stat_statfs2_fsize=yes,
5107 fu_cv_sys_stat_statfs2_fsize=no,
5108 fu_cv_sys_stat_statfs2_fsize=no)])
5109 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5110 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5112 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5116 if test $space = no; then
5118 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5119 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5120 [AC_TRY_RUN([#include <sys/types.h>
5121 #ifdef HAVE_SYS_PARAM_H
5122 #include <sys/param.h>
5124 #ifdef HAVE_SYS_MOUNT_H
5125 #include <sys/mount.h>
5127 #ifdef HAVE_SYS_FS_TYPES_H
5128 #include <sys/fs_types.h>
5133 /* Ultrix's statfs returns 1 for success,
5134 0 for not mounted, -1 for failure. */
5135 exit (statfs (".", &fsd) != 1);
5137 fu_cv_sys_stat_fs_data=yes,
5138 fu_cv_sys_stat_fs_data=no,
5139 fu_cv_sys_stat_fs_data=no)])
5140 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5141 if test $fu_cv_sys_stat_fs_data = yes; then
5143 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5148 # As a gating factor for large file support, in order to
5149 # use <4GB files we must have the following minimal support
5151 # long long, and a 64 bit off_t or off64_t.
5152 # If we don't have all of these then disable large
5155 AC_MSG_CHECKING([if large file support can be enabled])
5157 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5158 #include <sys/types.h>
5164 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5165 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5166 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5168 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5170 #################################################
5171 # check for cluster extensions
5173 AC_MSG_CHECKING(whether to include cluster support)
5174 AC_ARG_WITH(cluster-support,
5175 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5176 if test "x$with_cluster_support" = "xyes"; then
5177 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5184 #################################################
5185 # check for ACL support
5187 AC_MSG_CHECKING(whether to support ACLs)
5188 AC_ARG_WITH(acl-support,
5189 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5190 [ case "$withval" in
5192 with_acl_support="$withval"
5196 if test x"$with_acl_support" = x ; then
5197 with_acl_support="auto"
5200 AC_MSG_RESULT($with_acl_support)
5202 if test x"$with_acl_support" = x"no"; then
5203 AC_MSG_RESULT(Disabling ACL support)
5204 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5206 AC_MSG_NOTICE(checking whether ACL support is available:)
5209 AC_MSG_NOTICE(Using UnixWare ACLs)
5210 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5211 default_static_modules="$default_static_modules vfs_solarisacl"
5214 AC_MSG_NOTICE(Using solaris ACLs)
5215 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5216 ACL_LIBS="$ACL_LIBS -lsec"
5217 default_static_modules="$default_static_modules vfs_solarisacl"
5220 AC_MSG_NOTICE(Using HPUX ACLs)
5221 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5222 default_static_modules="$default_static_modules vfs_hpuxacl"
5225 AC_MSG_NOTICE(Using IRIX ACLs)
5226 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5227 default_static_modules="$default_static_modules vfs_irixacl"
5230 AC_MSG_NOTICE(Using AIX ACLs)
5231 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5232 default_static_modules="$default_static_modules vfs_aixacl"
5235 AC_MSG_NOTICE(Using Tru64 ACLs)
5236 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5237 ACL_LIBS="$ACL_LIBS -lpacl"
5238 default_static_modules="$default_static_modules vfs_tru64acl"
5241 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5242 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5245 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5248 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5251 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5253 LIBS="$LIBS $ACL_LIBS"
5255 #include <sys/types.h>
5256 #include <sys/acl.h>
5260 acl_entry_t *entry_p;
5261 return acl_get_entry(acl, entry_id, entry_p);
5263 [samba_cv_HAVE_POSIX_ACLS=yes],
5264 [samba_cv_HAVE_POSIX_ACLS=no])
5267 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5268 AC_MSG_NOTICE(Using posix ACLs)
5269 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5270 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5272 LIBS="$LIBS $ACL_LIBS"
5274 #include <sys/types.h>
5275 #include <sys/acl.h>
5277 acl_permset_t permset_d;
5279 return acl_get_perm_np(permset_d, perm);
5281 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5282 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5285 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5286 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5288 default_static_modules="$default_static_modules vfs_posixacl"
5290 AC_MSG_NOTICE(ACL support is not avaliable)
5291 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5295 fi # with_acl_support
5299 #################################################
5300 # check for AIO support
5302 AC_MSG_CHECKING(whether to support asynchronous io)
5303 AC_ARG_WITH(aio-support,
5304 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5305 [ case "$withval" in
5312 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5313 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5314 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5317 AC_TRY_LINK([#include <sys/types.h>
5319 [ struct aiocb a; return aio_read(&a);],
5320 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5322 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5325 AC_TRY_LINK([#include <sys/types.h>
5327 [ struct aiocb64 a; return aio_read64(&a);],
5328 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5330 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5331 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5332 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5334 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5335 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5339 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5340 AC_MSG_CHECKING(for aio_read)
5341 AC_LINK_IFELSE([#include <aio.h>
5342 int main() { struct aiocb a; return aio_read(&a); }],
5343 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5344 [AC_MSG_RESULT(no)])
5346 AC_MSG_CHECKING(for aio_write)
5347 AC_LINK_IFELSE([#include <aio.h>
5348 int main() { struct aiocb a; return aio_write(&a); }],
5349 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5350 [AC_MSG_RESULT(no)])
5352 AC_MSG_CHECKING(for aio_fsync)
5353 AC_LINK_IFELSE([#include <aio.h>
5354 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5355 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5356 [AC_MSG_RESULT(no)])
5358 AC_MSG_CHECKING(for aio_return)
5359 AC_LINK_IFELSE([#include <aio.h>
5360 int main() { struct aiocb a; return aio_return(&a); }],
5361 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5362 [AC_MSG_RESULT(no)])
5364 AC_MSG_CHECKING(for aio_error)
5365 AC_LINK_IFELSE([#include <aio.h>
5366 int main() { struct aiocb a; return aio_error(&a); }],
5367 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5368 [AC_MSG_RESULT(no)])
5370 AC_MSG_CHECKING(for aio_cancel)
5371 AC_LINK_IFELSE([#include <aio.h>
5372 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5373 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5374 [AC_MSG_RESULT(no)])
5376 AC_MSG_CHECKING(for aio_suspend)
5377 AC_LINK_IFELSE([#include <aio.h>
5378 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5379 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5380 [AC_MSG_RESULT(no)])
5383 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5384 AC_MSG_CHECKING(for aio_read64)
5385 AC_LINK_IFELSE([#include <aio.h>
5386 int main() { struct aiocb a; return aio_read64(&a); }],
5387 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5388 [AC_MSG_RESULT(no)])
5390 AC_MSG_CHECKING(for aio_write64)
5391 AC_LINK_IFELSE([#include <aio.h>
5392 int main() { struct aiocb a; return aio_write64(&a); }],
5393 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5394 [AC_MSG_RESULT(no)])
5396 AC_MSG_CHECKING(for aio_fsync64)
5397 AC_LINK_IFELSE([#include <aio.h>
5398 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5399 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5400 [AC_MSG_RESULT(no)])
5402 AC_MSG_CHECKING(for aio_return64)
5403 AC_LINK_IFELSE([#include <aio.h>
5404 int main() { struct aiocb a; return aio_return64(&a); }],
5405 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5406 [AC_MSG_RESULT(no)])
5408 AC_MSG_CHECKING(for aio_error64)
5409 AC_LINK_IFELSE([#include <aio.h>
5410 int main() { struct aiocb a; return aio_error64(&a); }],
5411 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5412 [AC_MSG_RESULT(no)])
5414 AC_MSG_CHECKING(for aio_cancel64)
5415 AC_LINK_IFELSE([#include <aio.h>
5416 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5417 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5418 [AC_MSG_RESULT(no)])
5420 AC_MSG_CHECKING(for aio_suspend64)
5421 AC_LINK_IFELSE([#include <aio.h>
5422 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5423 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5424 [AC_MSG_RESULT(no)])
5431 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5434 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5438 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5439 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5440 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5441 default_shared_modules="$default_shared_modules vfs_aio_fork"
5445 #################################################
5446 # check for sendfile support
5448 with_sendfile_support=yes
5449 AC_MSG_CHECKING(whether to check to support sendfile)
5450 AC_ARG_WITH(sendfile-support,
5451 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5452 [ case "$withval" in
5459 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5460 AC_TRY_LINK([#include <sys/sendfile.h>],
5465 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5467 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5469 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5470 AC_TRY_LINK([#include <sys/sendfile.h>],
5475 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5477 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5479 # Try and cope with broken Linux sendfile....
5480 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5482 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5483 #undef _FILE_OFFSET_BITS
5485 #include <sys/sendfile.h>],
5490 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5492 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5494 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5495 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5496 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5497 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5498 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5499 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5500 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5501 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5502 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5503 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5504 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5510 *freebsd* | *dragonfly* )
5511 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5513 #include <sys/types.h>
5515 #include <sys/socket.h>
5516 #include <sys/uio.h>],
5518 int fromfd, tofd, ret, total=0;
5519 off_t offset, nwritten;
5522 hdr.headers = &hdtrl;
5524 hdr.trailers = NULL;
5526 hdtrl.iov_base = NULL;
5528 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5530 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5532 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5533 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5534 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5535 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5542 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5544 #include <sys/socket.h>
5545 #include <sys/uio.h>],
5549 struct iovec hdtrl[2];
5553 hdtrl[0].iov_base = 0;
5554 hdtrl[0].iov_len = 0;
5556 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5558 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5559 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5560 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5561 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5562 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5567 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5569 #include <sys/socket.h>
5570 #include <sys/uio.h>],
5574 struct iovec hdtrl[2];
5578 hdtrl[0].iov_base = 0;
5579 hdtrl[0].iov_len = 0;
5581 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5583 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5584 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5585 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5586 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5587 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5594 AC_CHECK_LIB(sendfile,sendfilev)
5595 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5597 #include <sys/sendfile.h>],
5601 struct sendfilevec vec[2];
5607 vec[0].sfv_fd = SFV_FD_SELF;
5608 vec[0].sfv_flag = 0;
5613 vec[1].sfv_flag = 0;
5616 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5618 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5620 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5621 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5622 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5623 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5628 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5630 #include <sys/sendfile.h>],
5634 struct sendfilevec vec[2];
5640 vec[0].sfv_fd = SFV_FD_SELF;
5641 vec[0].sfv_flag = 0;
5646 vec[1].sfv_flag = 0;
5649 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5651 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5653 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5654 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5655 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5656 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5662 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5664 #include <sys/socket.h>],
5668 struct sf_parms hdtrl;
5672 hdtrl.header_data = 0;
5673 hdtrl.header_length = 0;
5674 hdtrl.file_descriptor = fromfd;
5675 hdtrl.file_offset = 0;
5676 hdtrl.file_bytes = 0;
5677 hdtrl.trailer_data = 0;
5678 hdtrl.trailer_length = 0;
5680 nwritten = send_file(&tofd, &hdtrl, 0);
5682 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5683 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5684 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5685 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5686 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5702 ############################################
5703 # See if we have the Linux readahead syscall.
5705 AC_CACHE_CHECK([for Linux readahead],
5706 samba_cv_HAVE_LINUX_READAHEAD,[
5708 #if defined(HAVE_UNISTD_H)
5711 #include <fcntl.h>],
5712 [ssize_t err = readahead(0,0,0x80000);],
5713 samba_cv_HAVE_LINUX_READAHEAD=yes,
5714 samba_cv_HAVE_LINUX_READAHEAD=no)])
5716 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5717 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5718 [Whether Linux readahead is available])
5721 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5723 ############################################
5724 # See if we have the posix_fadvise syscall.
5726 AC_CACHE_CHECK([for posix_fadvise],
5727 samba_cv_HAVE_POSIX_FADVISE,[
5729 #if defined(HAVE_UNISTD_H)
5732 #include <fcntl.h>],
5733 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5734 samba_cv_HAVE_POSIX_FADVISE=yes,
5735 samba_cv_HAVE_POSIX_FADVISE=no)])
5737 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5738 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5739 [Whether posix_fadvise is available])
5742 ############################################
5743 # See if we have the Linux splice syscall.
5745 AC_CACHE_CHECK([for Linux splice],
5746 samba_cv_HAVE_LINUX_SPLICE,[
5748 #if defined(HAVE_UNISTD_H)
5751 #include <fcntl.h>],
5752 [long ret = splice(0,0,1,0,400,0);],
5753 samba_cv_HAVE_LINUX_SPLICE=yes,
5754 samba_cv_HAVE_LINUX_SPLICE=no)])
5756 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5757 AC_DEFINE(HAVE_LINUX_SPLICE,1,
5758 [Whether Linux splice is available])
5761 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5764 #################################################
5765 # Check whether winbind is supported on this platform. If so we need to
5766 # build and install client programs, sbin programs and shared libraries
5768 AC_MSG_CHECKING(whether to build winbind)
5770 # Initially, the value of $host_os decides whether winbind is supported
5774 # Define the winbind shared library name and any specific linker flags
5775 # it needs to be built with.
5777 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5778 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5779 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5780 NSSSONAMEVERSIONSUFFIX=""
5781 WINBIND_NSS_PTHREAD=""
5785 NSSSONAMEVERSIONSUFFIX=".2"
5786 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5789 # FreeBSD winbind client is implemented as a wrapper around
5790 # the Linux version.
5791 NSSSONAMEVERSIONSUFFIX=".1"
5792 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5793 nsswitch/winbind_nss_linux.o"
5794 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5795 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5799 # NetBSD winbind client is implemented as a wrapper
5800 # around the Linux version. It needs getpwent_r() to
5801 # indicate libc's use of the correct nsdispatch API.
5803 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5804 WINBIND_NSS_EXTRA_OBJS="\
5805 nsswitch/winbind_nss_netbsd.o \
5806 nsswitch/winbind_nss_linux.o"
5807 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5808 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5811 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5815 # IRIX has differently named shared libraries
5816 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5817 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5818 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5821 # Solaris winbind client is implemented as a wrapper around
5822 # the Linux version.
5823 NSSSONAMEVERSIONSUFFIX=".1"
5824 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5825 nsswitch/winbind_nss_linux.o"
5826 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5827 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5830 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5833 # AIX has even differently named shared libraries. No
5834 # WINS support has been implemented yet.
5835 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5836 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5837 WINBIND_NSS="nsswitch/WINBIND"
5842 winbind_no_reason=", unsupported on $host_os"
5846 # Check the setting of --with-winbind
5848 AC_ARG_WITH(winbind,
5849 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5862 # We need unix domain sockets for winbind
5864 if test x"$HAVE_WINBIND" = x"yes"; then
5865 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5866 winbind_no_reason=", no unix domain socket support on $host_os"
5871 # Display test results
5873 if test x"$HAVE_WINBIND" = x"no"; then
5878 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5879 BUILD_LIBWBCLIENT_SHARED=no
5881 BUILD_LIBWBCLIENT_SHARED=yes
5884 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5885 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5887 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5888 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5889 ## Only worry about libwbclient if we have shared library support
5891 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5892 LIBWBCLIENT=libwbclient
5893 INSTALL_LIBWBCLIENT=installlibwbclient
5894 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5895 WINBIND_LIBS="-lwbclient"
5897 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5900 if test x"$HAVE_WINBIND" = x"yes"; then
5902 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5904 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5905 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5906 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5907 PAM_MODULES="$PAM_MODULES pam_winbind"
5908 INSTALL_PAM_MODULES="installpammodules"
5909 UNINSTALL_PAM_MODULES="uninstallpammodules"
5912 AC_MSG_RESULT(no$winbind_no_reason)
5915 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5916 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5918 AC_SUBST(WINBIND_NSS_PTHREAD)
5919 AC_SUBST(WINBIND_NSS)
5920 AC_SUBST(WINBIND_WINS_NSS)
5921 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5922 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5923 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5924 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5925 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5927 AC_SUBST(WINBIND_KRB5_LOCATOR)
5929 # Solaris 10 does have new member in nss_XbyY_key
5930 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5931 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5932 [#include <nss_dbdefs.h>])
5934 # Solaris has some extra fields in struct passwd that need to be
5935 # initialised otherwise nscd crashes.
5937 AC_CHECK_MEMBER(struct passwd.pw_comment,
5938 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5941 AC_CHECK_MEMBER(struct passwd.pw_age,
5942 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5945 # AIX 4.3.x and 5.1 do not have as many members in
5946 # struct secmethod_table as AIX 5.2
5947 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5948 [#include <usersec.h>])
5949 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5950 [#include <usersec.h>])
5952 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5953 AC_TRY_COMPILE([#include <sys/types.h>
5954 #include <sys/socket.h>],
5957 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5959 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5960 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5961 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5965 #################################################
5966 # Check to see if we should use the included popt
5968 AC_ARG_WITH(included-popt,
5969 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5980 if test x"$INCLUDED_POPT" != x"yes"; then
5981 AC_CHECK_LIB(popt, poptGetContext,
5982 INCLUDED_POPT=no, INCLUDED_POPT=yes)
5985 AC_MSG_CHECKING(whether to use included popt)
5986 if test x"$INCLUDED_POPT" = x"yes"; then
5988 BUILD_POPT='$(POPT_OBJ)'
5989 POPTLIBS='$(POPT_OBJ)'
5990 FLAGS1="-I\$(srcdir)/popt"
5996 AC_SUBST(BUILD_POPT)
6000 #################################################
6001 # Check if user wants DNS service discovery support
6003 AC_ARG_ENABLE(dnssd,
6004 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
6006 AC_SUBST(DNSSD_LIBS)
6007 if test x"$enable_dnssd" != x"no"; then
6008 have_dnssd_support=yes
6010 AC_CHECK_HEADERS(dns_sd.h)
6011 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6012 have_dnssd_support=no
6015 # On Darwin the DNSSD API is in libc, but on other platforms it's
6016 # probably in -ldns_sd
6017 AC_CHECK_FUNCS(DNSServiceRegister)
6018 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6019 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6020 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6021 have_dnssd_support=no
6024 if test x"$have_dnssd_support" = x"yes"; then
6025 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6026 [Whether to enable DNS service discovery support])
6028 if test x"$enable_dnssd" = x"yes"; then
6029 AC_MSG_ERROR(DNS service discovery support not available)
6035 #################################################
6036 # Check to see if we should use the included iniparser
6038 AC_ARG_WITH(included-iniparser,
6039 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6043 INCLUDED_INIPARSER=yes
6046 INCLUDED_INIPARSER=no
6050 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6051 AC_CHECK_LIB(iniparser, iniparser_load,
6052 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6055 AC_MSG_CHECKING(whether to use included iniparser)
6056 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6058 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6060 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6064 INIPARSERLIBS="-liniparser"
6066 AC_SUBST(BUILD_INIPARSER)
6067 AC_SUBST(INIPARSERLIBS)
6072 # Checks for the vfs_fileid module
6074 AC_CHECK_FUNC(getmntent)
6076 AC_CHECK_HEADERS(sys/statfs.h)
6078 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6079 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6081 #include <sys/types.h>
6082 #include <sys/statfs.h>
6086 fsid_t fsid = fsd.f_fsid;
6087 return statfs (".", &fsd);
6089 vfsfileid_cv_statfs=yes,
6090 vfsfileid_cv_statfs=no,
6091 vfsfileid_cv_statfs=cross)
6093 AC_MSG_RESULT($vfsfileid_cv_statfs)
6095 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6096 x"$vfsfileid_cv_statfs" = x"yes"; then
6097 default_shared_modules="$default_shared_modules vfs_fileid"
6100 # Checks for the vfs_fileid module
6103 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6105 eval MODULE_DEFAULT_$i=STATIC
6108 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6110 dnl Fall back to static if we cannot build shared libraries
6111 eval MODULE_DEFAULT_$i=STATIC
6113 if test $BLDSHARED = true; then
6114 eval MODULE_DEFAULT_$i=SHARED
6118 dnl Always build these modules static
6119 MODULE_rpc_spoolss=STATIC
6120 MODULE_rpc_srvsvc=STATIC
6121 MODULE_idmap_tdb=STATIC
6122 MODULE_idmap_passdb=STATIC
6123 MODULE_idmap_nss=STATIC
6125 MODULE_nss_info_template=STATIC
6127 AC_ARG_WITH(static-modules,
6128 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6129 [ if test $withval; then
6130 for i in `echo $withval | sed -e 's/,/ /g'`
6132 eval MODULE_$i=STATIC
6136 AC_ARG_WITH(shared-modules,
6137 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6138 [ if test $withval; then
6139 for i in `echo $withval | sed -e 's/,/ /g'`
6141 eval MODULE_$i=SHARED
6145 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6146 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6147 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6148 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6149 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6152 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6153 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6154 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6155 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6156 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6157 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6158 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
6159 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6160 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6161 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6162 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6163 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6164 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6165 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6166 SMB_SUBSYSTEM(RPC,smbd/server.o)
6168 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6169 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6170 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6171 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6172 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6173 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6174 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6175 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6177 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6178 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6180 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6181 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6182 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6183 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6184 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6186 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6187 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6188 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6189 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6190 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6191 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6192 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6193 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6195 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6196 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6197 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6198 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6199 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6200 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6201 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6202 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6203 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6204 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6205 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6206 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6207 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6208 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6209 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6210 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6211 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6212 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6213 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6214 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6215 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6216 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6217 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6218 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6219 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6220 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6221 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6222 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6223 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6224 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6225 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6226 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6227 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6228 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6229 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6230 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6231 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6234 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6236 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6238 #################################################
6239 # do extra things if we are running insure
6241 if test "${ac_cv_prog_CC}" = "insure"; then
6242 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6245 #################################################
6246 # If run from the build farm, enable NASTY hacks
6247 #################################################
6248 AC_MSG_CHECKING(whether to enable build farm hacks)
6249 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6251 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6256 #################################################
6257 # check for bad librt/libpthread interactions
6259 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6260 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6261 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6262 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6264 SMB_IF_RTSIGNAL_BUG(
6266 # Have RT_SIGNAL bug, need to check whether the problem will
6267 # affect anything we have configured.
6270 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6271 if test x"$rt_signal_lease_ok" = x"no" ; then
6276 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6277 if test x"$rt_signal_notify_ok" = x"no" ; then
6282 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6283 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6284 if test x"$rt_signal_aio_ok" = x"no" ; then
6289 if test x"$rt_do_error" = x"yes" ; then
6290 SMB_IS_LIBPTHREAD_LINKED(
6294 *** On this platforms, linking Samba against pthreads causes problems
6295 *** with the oplock and change notification mechanisms. You may be
6296 *** using pthreads as a side-effect of using the --with-aio-support
6297 *** or --with-profiling-data options. Please remove these and try again.
6304 *** On this platform, the oplock and change notification mechanisms do not
6305 *** appear to work. Please report this problem to samba-technical@samba.org
6306 *** and attach the config.log file from this directory.
6310 AC_MSG_ERROR(unable to use realtime signals on this platform)
6314 # no RT_SIGNAL bug, we are golden
6315 SMB_IS_LIBPTHREAD_LINKED(
6317 AC_MSG_WARN(using libpthreads - this may degrade performance)
6322 # cross compiling, I hope you know what you are doing
6328 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6329 LIB_REMOVE_USR_LIB(LDFLAGS)
6330 LIB_REMOVE_USR_LIB(LIBS)
6331 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6333 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6334 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6335 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6337 #################################################
6338 # Display summary of libraries detected
6340 AC_MSG_RESULT([Using libraries:])
6341 AC_MSG_RESULT([ LIBS = $LIBS])
6342 if test x"$with_ads_support" != x"no"; then
6343 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6345 if test x"$with_ldap_support" != x"no"; then
6346 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6348 if test x"$with_dnsupdate_support" != x"no"; then
6349 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6351 if test x"$have_dnssd_support" != x"no"; then
6352 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6354 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6356 #################################################
6357 # final configure stuff
6359 AC_MSG_CHECKING([configure summary])
6360 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6362 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6363 AC_MSG_WARN([cannot run when cross-compiling]))
6365 dnl Merge in developer cflags from now on
6366 AC_SUBST(DEVELOPER_CFLAGS)
6367 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6368 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6371 # Stuff the smbd-only libraries at the end of the smbd link
6372 # path (if we have them).
6373 SMBD_LIBS="$samba_dmapi_libs"
6377 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6378 lib/netapi/examples/Makefile
6379 pkgconfig/smbclient.pc
6380 pkgconfig/wbclient.pc
6382 pkgconfig/smbsharemodes.pc
6385 #################################################
6386 # Print very concise instructions on building/use
6387 if test "x$enable_dmalloc" = xyes
6389 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6390 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])