1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
25 AC_LIBREPLACE_CC_CHECKS
27 m4_include(../lib/tevent/libtevent.m4)
30 for obj in ${TEVENT_OBJ}; do
31 LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
33 AC_SUBST(LIBTEVENT_OBJ0)
34 LIBS="${LIBS} ${TEVENT_LIBS}"
36 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
37 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
43 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
45 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
46 if test "x${srcdir-.}" != "x."; then
47 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
50 dnl Unique-to-Samba variables we'll be playing with.
51 AC_SUBST(SAMBA_CPPFLAGS)
56 AC_SUBST(MODULE_EXPORTS)
62 AC_SUBST(RELRO_LDFLAGS)
64 AC_SUBST(INSTALLLIBCMD_SH)
65 AC_SUBST(INSTALLLIBCMD_A)
66 AC_SUBST(UNINSTALLLIBCMD_SH)
67 AC_SUBST(UNINSTALLLIBCMD_A)
69 AC_SUBST(INSTALL_LIBWBCLIENT)
70 AC_SUBST(UNINSTALL_LIBWBCLIENT)
71 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
72 AC_SUBST(LIBWBCLIENT_SHARED)
73 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
74 AC_SUBST(LIBWBCLIENT_STATIC)
75 AC_SUBST(LIBWBCLIENT_TARGET)
76 AC_SUBST(LIBWBCLIENT_SOVER)
78 AC_SUBST(LIBWBCLIENT_LIBS)
80 AC_SUBST(LIBSAMBAUTIL_SHARED)
92 AC_SUBST(INSTALL_PAM_MODULES)
93 AC_SUBST(UNINSTALL_PAM_MODULES)
95 AC_SUBST(EXTRA_BIN_PROGS)
96 AC_SUBST(CIFSMOUNT_PROGS)
97 AC_SUBST(INSTALL_CIFSMOUNT)
98 AC_SUBST(UNINSTALL_CIFSMOUNT)
99 AC_SUBST(CIFSUMOUNT_PROGS)
100 AC_SUBST(INSTALL_CIFSUMOUNT)
101 AC_SUBST(UNINSTALL_CIFSUMOUNT)
102 AC_SUBST(CIFSUPCALL_PROGS)
103 AC_SUBST(INSTALL_CIFSUPCALL)
104 AC_SUBST(UNINSTALL_CIFSUPCALL)
105 AC_SUBST(EXTRA_SBIN_PROGS)
106 AC_SUBST(EXTRA_ALL_TARGETS)
107 AC_SUBST(CONFIG_LIBS)
110 # compile with optimization and without debugging by default, but
111 # allow people to set their own preference.
112 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
113 # if it has no value. This prevent *very* large debug binaries from occurring
115 if test "x$debug" = "xyes" ; then
116 CFLAGS="${CFLAGS} -g"
118 if test "x$CFLAGS" = x; then
122 m4_include(../lib/socket_wrapper/config.m4)
123 m4_include(../lib/nss_wrapper/config.m4)
125 m4_include(m4/swat.m4)
127 # Probe the gcc version for extra CFLAGS. We always stash these in
128 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
129 # Makefile edit, avoiding the need to re-run configure.
130 if test x"$ac_cv_prog_gcc" = x"yes" ; then
131 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
132 # Add -Wdeclaration-after-statement if compiler supports it
134 [that the C compiler understands -Wdeclaration-after-statement],
135 samba_cv_HAVE_Wdeclaration_after_statement, [
140 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
141 samba_cv_HAVE_Wdeclaration_after_statement=yes,
142 samba_cv_HAVE_Wdeclaration_after_statement=no,
143 samba_cv_HAVE_Wdeclaration_after_statement=cross)
146 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
147 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
150 #-Werror-implicit-function-declaration
152 [that the C compiler understands -Werror-implicit-function-declaration],
153 samba_cv_HAVE_Werror_implicit_function_declaration, [
158 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
159 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
160 samba_cv_HAVE_Werror_implicit_function_declaration=no,
161 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
163 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
164 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
167 # krb5developer is like developer, except we don't get
168 # -Wstrict-prototypes.
169 if test x"$krb5_developer" != x"$yes" ; then
170 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
173 if test x"$picky_developer" = x"yes"; then
174 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
178 #################################################
179 # check for a shared memory profiling support
180 AC_MSG_CHECKING(whether to use profiling)
181 AC_ARG_WITH(profiling-data,
182 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
186 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
187 samba_cv_WITH_PROFILE=yes
191 samba_cv_WITH_PROFILE=no
197 dnl Checks for programs.
198 merged_build_possible=yes
203 m4_include(../m4/check_make.m4)
204 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
207 m4_include(../m4/check_perl.m4)
208 AC_SAMBA_PERL([true], [merged_build_possible=no])
210 AC_CHECK_TOOL(AR, ar)
212 dnl Check if we use GNU ld
216 dnl Certain versions of GNU ld the default is not to have the
217 dnl --allow-shlib-undefined flag defined. This causes a stackload of
218 dnl warnings when building modules.
219 if test "$ac_cv_prog_gnu_ld" = "yes"; then
220 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
221 AC_MSG_CHECKING(GNU ld release date)
223 ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
225 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
226 if test -n "$ac_cv_gnu_ld_date"; then
227 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
228 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
230 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
231 ac_cv_gnu_ld_version_script=yes
234 AC_MSG_CHECKING(GNU ld release version)
236 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^[^0-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
237 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
238 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
240 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
241 AC_MSG_CHECKING(GNU ld release version major)
242 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
243 AC_MSG_CHECKING(GNU ld release version minor)
244 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
245 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
246 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
248 if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
249 ac_cv_gnu_ld_version_script=yes
254 dnl look for executable suffix
257 dnl Check if C compiler understands -c and -o at the same time
259 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
266 dnl Check if the C compiler understands -Werror
267 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
272 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
273 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
274 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
275 Werror_FLAGS="-Werror"
277 dnl Check if the C compiler understands -w2
278 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
283 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
284 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
285 if test x"$samba_cv_HAVE_w2" = x"yes"; then
288 dnl Check if the C compiler understands -errwarn
289 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
294 }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
295 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
296 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
297 Werror_FLAGS="-errwarn=%all"
302 ############################################
303 # check if the compiler can handle negative enum values
304 # and don't truncate the values to INT_MAX
305 # a runtime test is needed here
307 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
311 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
313 enum negative_values v1 = NEGATIVE_VALUE;
314 unsigned v2 = NEGATIVE_VALUE;
316 if (v1 != 0xFFFFFFFF) {
317 printf("%u != 0xFFFFFFFF\n", v1);
320 if (v2 != 0xFFFFFFFF) {
321 printf("%u != 0xFFFFFFFF\n", v2);
328 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
329 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
330 AC_MSG_WARN([using --uint-enums for pidl])
331 PIDL_ARGS="$PIDL_ARGS --uint-enums"
334 dnl Figure out the flags to support named structure initializers
336 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
338 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
339 AC_MSG_CHECKING(uname -s)
340 AC_MSG_RESULT(${UNAME_S})
342 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
343 AC_MSG_CHECKING(uname -r)
344 AC_MSG_RESULT(${UNAME_R})
346 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
347 AC_MSG_CHECKING(uname -m)
348 AC_MSG_RESULT(${UNAME_M})
350 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
351 AC_MSG_CHECKING(uname -p)
352 AC_MSG_RESULT(${UNAME_P})
354 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
355 AC_MSG_CHECKING(uname -i)
356 AC_MSG_RESULT(${UNAME_I})
358 dnl Add #include for broken IRIX header files
361 #TODO add to libreplace
362 if test x"$ac_cv_prog_gcc" != x"yes" ; then
363 dnl Fix sensible defaults for MIPSPro compilers. The
364 dnl error numbers are valid for the 7.3 compilers,
365 dnl hopefully also valid for the 7.4 series.
367 dnl Bugzilla 3801. Force an error on warning 1035
368 dnl so we don't incorrectly detect stdint.h. This
369 dnl warning is emitted for #error directives.
370 CFLAGS="$CFLAGS -diag_error 1035"
371 dnl 1209: Controlling expression is constant
372 dnl 1174: Function foo declared but never referenced
373 dnl 3201: Parameter foo was never referenced
374 CFLAGS="$CFLAGS -woff 1209,1174,3201"
382 dnl Add modules that have to be built by default here
383 dnl These have to be built static:
384 default_static_modules="pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
386 dnl These are preferably build shared, and static if dlopen() is not available
387 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_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen"
389 if test "x$developer" = xyes; then
390 default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
391 default_shared_modules="$default_shared_modules charset_weird perfcount_test"
395 # Config CPPFLAG settings for strange OS's that must be set
396 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
397 # case statement; its first reference must be unconditional.
402 # Defines needed for HPUX support.
403 # HPUX has bigcrypt but (sometimes?) doesn't use it for
404 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
408 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
414 # CRAY Unicos has broken const handling
416 AC_MSG_RESULT([disabling const])
417 CPPFLAGS="$CPPFLAGS -Dconst="
421 # AIX4.x doesn't even admit to having large
422 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
425 AC_MSG_RESULT([enabling large file support])
426 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
427 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
430 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
431 # to the existance of large files..
432 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
433 # recommendations on large file support, however it makes the
434 # compile work using gcc 2.7 and 2.8, whereas using the Sun
435 # recommendation makes the compile fail on gcc2.7. JRA.
437 # Solaris uses SYSV printing. Make sure to set that here. --jerry
440 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
442 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
443 AC_MSG_RESULT([no large file support])
446 AC_MSG_RESULT([enabling large file support])
447 if test "$ac_cv_prog_gcc" = yes; then
448 ${CC-cc} -v >conftest.c 2>&1
449 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
451 case "$ac_cv_gcc_compiler_version_number" in
452 *"gcc version 2.6"*|*"gcc version 2.7"*)
453 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
454 LDFLAGS="$LDFLAGS -lthread"
455 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
458 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
459 LDFLAGS="$LDFLAGS -lthread"
460 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
461 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
465 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
466 LDFLAGS="$LDFLAGS -lthread"
467 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
468 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
474 # IRIX uses SYSV printing. Make sure to set that here
477 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
479 *freebsd*|*dragonfly*)
480 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
483 # VOS may need to have POSIX support and System V compatibility enabled.
490 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
491 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
495 *-D_SYSV*|*-D_SVID_SOURCE*)
498 CPPFLAGS="$CPPFLAGS -D_SYSV"
499 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
503 # Tests needed for SINIX large file support.
506 if test $host = mips-sni-sysv4 ; then
507 AC_MSG_CHECKING([for LFS support])
508 old_CPPFLAGS="$CPPFLAGS"
509 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
513 #if _LFS64_LARGEFILE == 1
518 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
519 CPPFLAGS="$old_CPPFLAGS"
520 if test x$SINIX_LFS_SUPPORT = xyes ; then
521 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
522 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
523 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
524 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
525 LIBS="`getconf LFS64_LIBS` $LIBS"
527 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
531 # Systems with LFS support.
533 gnu* | k*bsd*-gnu | kopensolaris*-gnu)
534 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
535 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
536 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
537 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
540 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
543 AC_MSG_CHECKING([for LFS support])
544 old_CPPFLAGS="$CPPFLAGS"
545 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
548 #include <sys/utsname.h>
552 #if _LFS64_LARGEFILE == 1
557 /* Ensure this is glibc 2.2 or higher */
558 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
559 int libc_major = __GLIBC__;
560 int libc_minor = __GLIBC_MINOR__;
568 /* Ensure this is kernel 2.4 or higher */
571 release = strdup(uts.release);
572 major = atoi(strsep(&release, "."));
573 minor = atoi(strsep(&release, "."));
575 if (major > 2 || (major == 2 && minor > 3))
582 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
583 CPPFLAGS="$old_CPPFLAGS"
584 if test x$LINUX_LFS_SUPPORT = xyes ; then
585 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
586 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
587 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
588 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
590 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
594 # MacOS X is the *only* system that uses compose character in utf8. This
595 # is so horribly broken....
598 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
600 # Add a system specific charset module.
601 default_shared_modules="$default_shared_modules charset_macosxfs"
605 AC_MSG_CHECKING([for LFS support])
606 old_CPPFLAGS="$CPPFLAGS"
607 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
611 #if _LFS64_LARGEFILE == 1
616 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
617 CPPFLAGS="$old_CPPFLAGS"
618 if test x$GLIBC_LFS_SUPPORT = xyes ; then
619 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
620 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
621 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
623 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
628 SAVE_CPPFLAGS="${CPPFLAGS}"
629 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
631 AC_LIBREPLACE_BROKEN_CHECKS
632 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
633 AC_LIBREPLACE_NETWORK_CHECKS
635 CPPFLAGS="${SAVE_CPPFLAGS}"
637 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
640 for obj in ${LIBREPLACEOBJ}; do
641 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
643 AC_SUBST(LIBREPLACE_OBJS)
645 # add -ldl to the global LIBS
646 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
647 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
650 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
651 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
652 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
653 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
654 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
655 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
656 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
657 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
658 AC_CHECK_HEADERS(sys/sysmacros.h)
659 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
660 AC_CHECK_HEADERS(langinfo.h locale.h)
661 AC_CHECK_HEADERS(xfs/libxfs.h)
662 AC_CHECK_HEADERS(netgroup.h)
664 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
670 ## These fail to compile on IRIX so just check for their presence
671 AC_CHECK_HEADERS(sys/mode.h,,,)
673 # Look for Darwin headers
674 old_CPPFLAGS="$CPPFLAGS"
675 CPPFLAGS="-Iinclude $CPPFLAGS"
676 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
677 CPPFLAGS="$old_CPPFLAGS"
679 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
680 # subdirectory of headers.
681 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
684 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
685 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
689 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
690 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
691 if test x"$ac_cv_header_shadow_h" = x"yes"; then
692 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
696 AC_CHECK_HEADERS(shadow.h)
697 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
698 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
700 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
701 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
703 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
705 # For experimental utmp support (lastlog on some BSD-like systems)
706 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
708 AC_CHECK_SIZEOF(int,cross)
709 AC_CHECK_SIZEOF(long,cross)
710 AC_CHECK_SIZEOF(long long,cross)
711 AC_CHECK_SIZEOF(short,cross)
726 AC_CHECK_TYPE(ssize_t, int)
727 AC_CHECK_TYPE(wchar_t, unsigned short)
729 ############################################
730 # for cups support we need libcups, and a handful of header files
733 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
735 if test x$enable_cups != xno; then
736 AC_PATH_PROG(CUPS_CONFIG, cups-config)
738 if test "x$CUPS_CONFIG" != x; then
740 ac_save_CFLAGS=$CFLAGS
741 ac_save_LDFLAGS=$LDFLAGS
742 ac_save_PRINT_LIBS=$PRINT_LIBS
743 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
744 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
745 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
746 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
747 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
748 x"$ac_cv_header_cups_language_h" = xyes; then
749 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
750 samba_cv_HAVE_CUPS=yes
751 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
753 AC_MSG_WARN([cups-config around but cups-devel not installed])
754 CFLAGS=$ac_save_CFLAGS
755 LDFLAGS=$ac_save_LDFLAGS
756 PRINT_LIBS=$ac_save_PRINT_LIBS
759 elif test x"$enable_cups" = x"yes"; then
760 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
764 AC_ARG_ENABLE(iprint,
765 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
767 if test x$enable_iprint != xno; then
768 if test x"$samba_cv_HAVE_CUPS" = xyes; then
769 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
770 elif test x"$enable_iprint" = x"yes"; then
771 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
775 ############################################
776 # check if the compiler will optimize out function calls
777 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
782 this_function_does_not_exist();
788 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
789 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
790 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
793 #############################################
794 # check for fd passing struct via msg_control
795 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
797 #include <sys/types.h>
800 #include <sys/socket.h>
801 #include <sys/un.h>],
806 char control[CMSG_SPACE(sizeof(int))];
808 msg.msg_control = control_un.control;
809 msg.msg_controllen = sizeof(control_un.control);
811 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
812 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
813 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
814 [If we can use msg_control for passing file descriptors])
817 #############################################
818 # check for fd passing struct via msg_acctrights
819 AC_CACHE_CHECK([for fd passing via msg_acctrights],
820 samba_cv_msghdr_msg_acctrights, [
822 #include <sys/types.h>
825 #include <sys/socket.h>
826 #include <sys/un.h>],
830 msg.msg_acctrights = (caddr_t) &fd;
831 msg.msg_acctrightslen = sizeof(fd);
833 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
834 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
835 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
836 [If we can use msg_acctrights for passing file descriptors])
839 AC_CHECK_FUNCS(dirfd)
840 if test x"$ac_cv_func_dirfd" = x"yes"; then
841 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
844 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
846 #include <sys/types.h>
851 #include <signal.h>],[struct sigevent s;],
852 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
853 if test x"$samba_cv_struct_sigevent" = x"yes"; then
854 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
855 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
856 [#include <signal.h>])
859 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
861 #include <sys/types.h>
866 #if TIME_WITH_SYS_TIME
867 # include <sys/time.h>
871 # include <sys/time.h>
876 ],[struct timespec ts;],
877 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
878 if test x"$samba_cv_struct_timespec" = x"yes"; then
879 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
882 # and glibc has setresuid under linux but the function does
883 # nothing until kernel 2.1.44! very dumb.
884 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
885 AC_TRY_RUN([#include <errno.h>
886 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
887 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
888 if test x"$samba_cv_have_setresuid" = x"yes"; then
889 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
892 # Do the same check for setresguid...
894 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
895 AC_TRY_RUN([#include <unistd.h>
897 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
898 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
899 if test x"$samba_cv_have_setresgid" = x"yes"; then
900 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
905 ###############################################
906 # Readline included by default unless explicitly asked not to
907 test "${with_readline+set}" != "set" && with_readline=yes
909 # test for where we get readline() from
910 AC_MSG_CHECKING(whether to use readline)
911 AC_ARG_WITH(readline,
912 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
913 [ case "$with_readline" in
917 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
918 AC_CHECK_HEADERS(readline/history.h)
920 AC_CHECK_HEADERS(readline.h readline/readline.h,[
921 for termlib in ncurses curses termcap terminfo termlib tinfo; do
922 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
924 AC_CHECK_LIB(readline, rl_callback_handler_install,
925 [TERMLIBS="-lreadline $TERMLIBS"
926 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
927 break], [TERMLIBS=], $TERMLIBS)])
935 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
936 # alternate readline path
938 _cppflags=${CPPFLAGS}
940 # Add additional search path
941 LDFLAGS="-L$with_readline/lib $LDFLAGS"
942 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
944 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
945 AC_CHECK_HEADERS(readline/history.h)
947 AC_CHECK_HEADERS(readline.h readline/readline.h,[
948 for termlib in ncurses curses termcap terminfo termlib; do
949 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
951 AC_CHECK_LIB(readline, rl_callback_handler_install,
952 [TERMLDFLAGS="-L$with_readline/lib"
953 TERMCPPFLAGS="-I$with_readline/include"
954 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
955 TERMLIBS="-lreadline $TERMLIBS"
956 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
957 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
965 AC_SUBST(TERMLDFLAGS)
967 # The readline API changed slightly from readline3 to readline4, so
968 # code will generate warnings on one of them unless we have a few
970 AC_CHECK_LIB(readline, rl_completion_matches,
971 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
972 [Do we have rl_completion_matches?])],
976 # not all readline libs have rl_event_hook or history_list
977 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
978 AC_CHECK_LIB(readline, history_list,
979 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
983 ###############################################
984 # test for where we get yp_get_default_domain() from
985 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
986 AC_CHECK_FUNCS(yp_get_default_domain)
988 # Check if we have execl, if not we need to compile smbrun.
989 AC_CHECK_FUNCS(execl)
990 if test x"$ac_cv_func_execl" = x"no"; then
991 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
994 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
995 AC_CHECK_FUNCS(strtol)
996 AC_CHECK_FUNCS(strchr chflags)
997 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
998 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
999 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1000 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1001 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1002 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1003 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1004 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1005 AC_CHECK_FUNCS(getpwent_r)
1006 AC_CHECK_FUNCS(getdents64)
1007 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1008 AC_CHECK_FUNCS(syslog vsyslog timegm)
1009 AC_CHECK_FUNCS(setlocale nl_langinfo)
1010 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1011 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1012 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1013 AC_CHECK_HEADERS(sys/mman.h)
1014 # setbuffer, shmget, shm_open are needed for smbtorture
1015 AC_CHECK_FUNCS(shmget shm_open)
1016 AC_CHECK_FUNCS(gettext dgettext)
1018 # Find a method of generating a stack trace
1019 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1020 # libexecinfo provides backtrace_symbols on FreeBSD
1021 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1022 AC_CHECK_FUNCS(backtrace_symbols)
1023 AC_CHECK_LIB(exc, trace_back_stack)
1025 # check for sysctlbyname for BSD systems
1026 AC_CHECK_FUNCS(sysctlbyname)
1028 printf "%s" "checking for GPFS GPL libs... "
1030 LIBS="$LIBS -lgpfs_gpl"
1031 AC_TRY_LINK([#include <gpfs_gpl.h>],
1032 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1033 samba_cv_HAVE_GPFS=yes,
1034 samba_cv_HAVE_GPFS=no)
1035 echo $samba_cv_HAVE_GPFS
1036 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1037 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1038 default_shared_modules="$default_shared_modules vfs_gpfs"
1042 printf "%s" "checking for GPFS libs (with 3.2.1 PTF8 available as GPL)... "
1045 AC_TRY_LINK([#include <gpfs.h>],
1046 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1047 samba_cv_HAVE_GPFS=yes,
1048 samba_cv_HAVE_GPFS=no)
1049 echo $samba_cv_HAVE_GPFS
1050 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1051 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1052 default_shared_modules="$default_shared_modules vfs_gpfs"
1056 #############################################
1057 # check if building on Isilon OneFS
1058 printf "%s" "checking for Isilon OneFS... "
1060 LIBS="$LIBS -lisi_version"
1061 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1062 [get_isilon_copyright()],
1063 samba_cv_HAVE_ONEFS=yes,
1064 samba_cv_HAVE_ONEFS=no)
1065 echo $samba_cv_HAVE_ONEFS
1066 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1067 AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1068 default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1069 default_static_modules="$default_static_modules"
1070 ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1071 # Need to also add general libs for oplocks support
1072 save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1074 AC_SUBST(ONEFS_LIBS)
1077 # Note that all the libunwind symbols in the API are defined to internal
1078 # platform-specific version, so we must include libunwind.h before checking
1080 AC_MSG_CHECKING([for libunwind])
1083 UNWIND_ARCH="unknown"
1084 if test x"$UNAME_I" != x"unknown"; then
1085 UNWIND_ARCH="$UNAME_I"
1086 elif test x"$UNAME_M" != x"unknown"; then
1087 UNWIND_ARCH="$UNAME_M"
1088 elif test x"$UNAME_P" != x"unknown"; then
1089 UNWIND_ARCH="$UNAME_P"
1092 case "$UNWIND_ARCH" in
1094 # This probably won't link without
1095 # the platform-specific libunwind.
1096 LIBS="$LIBS -lunwind"
1099 # Add the platform-specific libunwind module.
1100 LIBS="$LIBS -lunwind -lunwind-x86"
1103 # Add the platform-specific libunwind module.
1104 # based on uname -i, uname -m or uname -p
1105 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1111 #ifdef HAVE_LIBUNWIND_H
1112 #include <libunwind.h>
1116 unw_context_t ctx; unw_cursor_t cur;
1117 char buf[256]; unw_word_t off;
1118 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1119 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1123 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1125 # If we have libunwind, test whether we also have libunwind-ptrace
1126 # which would let us unwind arbitrary processes.
1128 AC_CHECK_HEADERS(libunwind-ptrace.h)
1129 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1131 LIBUNWIND_PTRACE="-lunwind-ptrace";
1132 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1133 [Whether libunwind-ptrace.a is available.])
1135 [ LIBUNWIND_PTRACE="" ])
1144 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1145 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1146 AC_CHECK_HEADERS(sys/ptrace.h)
1147 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1150 #if HAVE_SYS_TYPES_H
1151 #include <sys/types.h>
1153 #if HAVE_SYS_PTRACE_H
1154 #include <sys/ptrace.h>
1158 pid_t me = (pid_t)-1;
1159 ptrace(PTRACE_ATTACH, me, 0, 0);
1160 ptrace(PTRACE_DETACH, me, 0, 0);
1165 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1166 [Whether the Linux ptrace(2) interface is available.])
1174 AC_SUBST(LIBUNWIND_PTRACE)
1176 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1177 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1178 AC_CHECK_FUNCS(__getcwd _getcwd)
1179 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1180 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1181 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1182 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1183 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1184 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1185 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1186 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1187 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1188 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1189 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1190 AC_CHECK_FUNCS(prctl)
1193 #ifdef HAVE_SYS_PRCTL_H
1194 #include <sys/prctl.h>
1197 [int i; i = prtcl(0); ],
1198 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1204 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1205 # glibc <= 2.3.2 has a broken getgrouplist
1208 #include <sys/utsname.h>
1210 /* glibc up to 2.3 has a broken getgrouplist */
1211 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1212 int libc_major = __GLIBC__;
1213 int libc_minor = __GLIBC_MINOR__;
1217 if ((libc_major == 2) && (libc_minor <= 3))
1222 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1223 if test x"$linux_getgrouplist_ok" = x"yes"; then
1224 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1228 AC_CHECK_FUNCS(getgrouplist)
1233 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1236 if test x$ac_cv_func_stat64 = xno ; then
1237 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1239 #if defined(HAVE_UNISTD_H)
1242 #include <sys/stat.h>
1243 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1244 AC_MSG_RESULT([$ac_cv_func_stat64])
1245 if test x$ac_cv_func_stat64 = xyes ; then
1246 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1250 if test x$ac_cv_func_lstat64 = xno ; then
1251 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1253 #if defined(HAVE_UNISTD_H)
1256 #include <sys/stat.h>
1257 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1258 AC_MSG_RESULT([$ac_cv_func_lstat64])
1259 if test x$ac_cv_func_lstat64 = xyes ; then
1260 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1264 if test x$ac_cv_func_fstat64 = xno ; then
1265 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1267 #if defined(HAVE_UNISTD_H)
1270 #include <sys/stat.h>
1271 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1272 AC_MSG_RESULT([$ac_cv_func_fstat64])
1273 if test x$ac_cv_func_fstat64 = xyes ; then
1274 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1278 #################################################
1279 # Check whether struct stat has timestamps with sub-second resolution.
1282 samba_cv_stat_hires=no
1283 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1284 [samba_cv_stat_hires=yes])
1285 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1286 [samba_cv_stat_hires=yes])
1287 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1288 [samba_cv_stat_hires=yes])
1289 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1290 [samba_cv_stat_hires=yes])
1291 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1292 [samba_cv_stat_hires=yes])
1294 if test x"$samba_cv_stat_hires" = x"yes" ; then
1295 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1296 [whether struct stat has sub-second timestamps])
1299 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1300 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1301 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1304 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1307 [#include <sys/stat.h>],
1309 int a = UF_DOS_ARCHIVE;
1310 int h = UF_DOS_HIDDEN;
1312 int s = UF_DOS_SYSTEM;
1313 int i = UF_DOS_NOINDEX;
1314 int f = UF_DOS_FLAGS;
1316 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1319 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1320 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1323 #####################################
1324 # needed for SRV lookups
1325 AC_CHECK_LIB(resolv, dn_expand)
1326 AC_CHECK_LIB(resolv, _dn_expand)
1327 AC_CHECK_LIB(resolv, __dn_expand)
1330 # Check for the functions putprpwnam, set_auth_parameters,
1331 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1332 # Needed for OSF1 and HPUX.
1335 AC_LIBTESTFUNC(security, putprpwnam)
1336 AC_LIBTESTFUNC(sec, putprpwnam)
1338 AC_LIBTESTFUNC(security, set_auth_parameters)
1339 AC_LIBTESTFUNC(sec, set_auth_parameters)
1341 # UnixWare 7.x has its getspnam in -lgen
1342 AC_LIBTESTFUNC(gen, getspnam)
1344 AC_LIBTESTFUNC(security, getspnam)
1345 AC_LIBTESTFUNC(sec, getspnam)
1347 AC_LIBTESTFUNC(security, bigcrypt)
1348 AC_LIBTESTFUNC(sec, bigcrypt)
1350 AC_LIBTESTFUNC(security, getprpwnam)
1351 AC_LIBTESTFUNC(sec, getprpwnam)
1353 AC_CHECK_FUNCS(strsignal)
1355 ############################################
1356 # Check if we have libattr
1359 AC_SEARCH_LIBS(getproplist, [proplist])
1360 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1361 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1362 AC_CHECK_FUNCS(sizeof_proplist_entry)
1365 AC_SEARCH_LIBS(getxattr, [attr])
1366 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1367 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1368 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1369 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1370 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1371 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1372 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1376 ########################################################
1377 # Check if attropen() is present if this is Solaris
1380 AC_CHECK_FUNCS(attropen)
1384 ########################################################
1385 # Do xattr functions take additional options like on Darwin?
1386 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1387 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1389 LIBS="$LIBS $ACL_LIBS"
1391 #include <sys/types.h>
1392 #if HAVE_ATTR_XATTR_H
1393 #include <attr/xattr.h>
1394 #elif HAVE_SYS_XATTR_H
1395 #include <sys/xattr.h>
1398 getxattr(0, 0, 0, 0, 0, 0);
1400 [smb_attr_cv_xattr_add_opt=yes],
1401 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1403 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1404 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1408 # Check if we have extattr
1410 *freebsd4* | *dragonfly* )
1411 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1414 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1415 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1416 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1417 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1427 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1429 if test "x$enable_pie" != xno
1431 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1433 cat > conftest.c <<EOF
1435 main () { return 0;}
1437 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1445 if test x"${samba_cv_fpie}" = x"yes"
1454 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1456 if test "x$enable_relro" != xno
1458 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1460 cat > conftest.c <<EOF
1462 main () { return 0;}
1464 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1472 if test x"${samba_cv_relro}" = x"yes"
1474 RELRO_LDFLAGS="-Wl,-z,relro"
1482 # Assume non-shared by default and override below
1485 # these are the defaults, good for lots of systems
1490 SHLD="\${CC} \${CFLAGS}"
1491 PICFLAG="${PIE_CFLAGS}"
1495 # this bit needs to be modified for each OS that supports share libs
1496 # You need to specify how to create a shared library and
1497 # how to compile C code to produce PIC object files
1499 AC_MSG_CHECKING([ability to build shared libraries])
1501 # and these are for particular systems
1503 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1504 case "$host_os" in *linux*)
1505 AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1508 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1509 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1511 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1513 DYNEXP="-Wl,--export-dynamic"
1515 SONAMEFLAG="-Wl,-soname="
1516 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1518 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1522 if test "${GCC}" = "yes"; then
1524 SONAMEFLAG="-Wl,-soname="
1525 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1530 ## ${CFLAGS} added for building 64-bit shared
1531 ## libs using Sun's Compiler
1532 LDSHFLAGS="-G \${CFLAGS}"
1534 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1535 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1537 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1540 SONAMEFLAG="-Wl,-h,"
1541 PICFLAG="-KPIC" # Is this correct for SunOS
1542 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1543 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1545 *netbsd* | *freebsd* | *dragonfly* )
1548 DYNEXP="-Wl,--export-dynamic"
1549 SONAMEFLAG="-Wl,-soname,"
1550 PICFLAG="-fPIC -DPIC"
1551 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1552 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1554 *openbsd*) BLDSHARED="true"
1556 DYNEXP="-Wl,-Bdynamic"
1557 SONAMEFLAG="-Wl,-soname,"
1559 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1560 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1562 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1564 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1568 LDSHFLAGS="-set_version sgi1.0 -shared"
1569 SONAMEFLAG="-soname "
1571 if test "${GCC}" = "yes"; then
1576 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1578 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1580 # use expfull to export underscored symbols
1581 # add rtl to remove /lib/crt0.o warning
1582 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1583 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1585 # as AIX code is always position independent...
1586 # .po will just create compile warnings, use po.o:
1587 if test "${GCC}" != "yes"; then
1588 ## for funky AIX compiler using strncpy()
1589 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1592 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1593 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1594 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1596 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1597 # Use special PIC flags for the native HP-UX compiler.
1600 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1601 SONAMEFLAG="-Wl,+h "
1603 if test "${GCC}" = "yes"; then
1606 PICFLAG="+z +ESnolit"
1608 if test "$host_cpu" = "ia64"; then
1611 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1614 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1616 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1617 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1619 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1620 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1622 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1625 SONAMEFLAG="-Wl,-soname,"
1627 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1628 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1630 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1631 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1633 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1636 SONAMEFLAG="-Wl,-soname,"
1638 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1640 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1641 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1643 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1644 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1646 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1648 *-univel-*) if [ test "$GCC" != yes ]; then
1649 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1654 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1656 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1659 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1660 if [ test "$GCC" != yes ]; then
1661 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1664 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1666 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1671 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1673 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1674 CFLAGS="$CFLAGS -fno-common"
1677 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1679 # Since gcc doesn't fail on unrecognised options, the
1680 # PIE test incorrectly succeeds. Darwin gcc does not
1681 # actually support the PIE stuff.
1684 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1688 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1692 if test "$enable_shared" != "yes"; then
1696 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1697 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1700 if test x"$BLDSHARED" = x"true" ; then
1701 LDFLAGS="$LDFLAGS -L./bin"
1704 AC_MSG_RESULT($BLDSHARED)
1706 AC_MSG_CHECKING([LDFLAGS])
1707 AC_MSG_RESULT([$LDFLAGS])
1708 AC_MSG_CHECKING([DYNEXP])
1709 AC_MSG_RESULT([$DYNEXP])
1711 #######################################################
1712 # test whether building a shared library actually works
1713 if test $BLDSHARED = true; then
1715 AC_MSG_CHECKING([SHLD])
1716 AC_MSG_RESULT([$SHLD])
1717 AC_MSG_CHECKING([LDSHFLAGS])
1718 AC_MSG_RESULT([$LDSHFLAGS])
1720 AC_MSG_CHECKING([SHLIBEXT])
1721 AC_MSG_RESULT([$SHLIBEXT])
1722 AC_MSG_CHECKING([SONAMEFLAG])
1723 AC_MSG_RESULT([$SONAMEFLAG])
1725 AC_MSG_CHECKING([PICFLAG])
1726 AC_MSG_RESULT([$PICFLAG])
1728 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1729 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1731 AC_CACHE_CHECK([whether building shared libraries actually works],
1732 [ac_cv_shlib_works],[
1733 # try building a trivial shared library
1734 ac_cv_shlib_works=no
1735 # The $SHLD and $LDSHFLAGS variables may contain references to other
1736 # variables so they need to be eval'ed.
1737 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1738 shlib.o ${srcdir-.}/../tests/shlib.c && \
1739 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1740 shlib.o && ac_cv_shlib_works=yes
1741 rm -f "shlib.$SHLIBEXT" shlib.o
1744 if test $ac_cv_shlib_works = no; then
1749 if test x"$BLDSHARED" != x"true"; then
1750 LDSHFLAGS="shared-libraries-disabled"
1751 SONAMEFLAG="shared-libraries-disabled"
1752 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1753 SHLD="shared-libraries-disabled"
1754 PICFLAG="${PIE_CFLAGS}"
1755 SHLIBEXT="shared_libraries_disabled"
1756 merged_build_possible=no
1759 AC_MSG_CHECKING([used PICFLAG])
1760 AC_MSG_RESULT([$PICFLAG])
1762 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1764 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1768 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1769 AC_TRY_RUN([#include <stdio.h>
1770 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1771 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1772 if test x"$samba_cv_have_longlong" = x"yes"; then
1773 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1774 AC_CHECK_TYPE(intptr_t, unsigned long long)
1776 AC_CHECK_TYPE(intptr_t, unsigned long)
1780 # Check if the compiler supports the LL prefix on long long integers.
1783 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1784 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1785 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1786 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1787 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1791 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1792 AC_TRY_RUN([#include <time.h>
1793 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1794 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1795 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1796 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1799 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1800 AC_TRY_RUN([#include <stdio.h>
1801 #include <sys/stat.h>
1802 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1803 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1804 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1805 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1808 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1810 #if defined(HAVE_UNISTD_H)
1814 #include <sys/stat.h>
1815 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1816 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1817 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1818 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1821 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1823 #if defined(HAVE_UNISTD_H)
1827 #include <sys/stat.h>
1828 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1829 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1830 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1831 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1834 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1836 #if defined(HAVE_UNISTD_H)
1840 #include <sys/stat.h>
1841 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1842 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1843 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1844 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1847 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1849 #if defined(HAVE_UNISTD_H)
1853 #include <sys/stat.h>
1854 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1855 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1856 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1857 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1860 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1862 #if defined(HAVE_UNISTD_H)
1866 #include <sys/stat.h>
1867 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1868 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1869 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1870 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1873 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1875 #if defined(HAVE_UNISTD_H)
1878 #include <sys/types.h>
1879 #include <dirent.h>],
1881 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1882 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1883 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1886 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1888 #if defined(HAVE_UNISTD_H)
1891 #include <sys/types.h>
1892 #include <dirent.h>],
1893 [struct dirent64 de;],
1894 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1895 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1896 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1899 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1901 #if defined(HAVE_UNISTD_H)
1904 #include <sys/types.h>
1905 main() { dev_t dev; int i = major(dev); return 0; }],
1906 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1907 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1908 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1911 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1913 #if defined(HAVE_UNISTD_H)
1916 #include <sys/types.h>
1917 main() { dev_t dev; int i = minor(dev); return 0; }],
1918 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1919 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1920 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1923 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1925 #if defined(HAVE_UNISTD_H)
1928 #include <sys/types.h>
1929 main() { dev_t dev = makedev(1,2); return 0; }],
1930 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1931 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1932 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1935 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1936 AC_TRY_RUN([#include <stdio.h>
1937 main() { char c; c=250; exit((c > 0)?0:1); }],
1938 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1939 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1940 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1943 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1944 AC_TRY_COMPILE([#include <sys/types.h>
1946 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1947 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1948 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1949 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1952 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1953 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1954 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1955 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1956 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1959 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1961 #include <sys/time.h>
1962 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
1963 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
1964 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
1965 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1966 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
1969 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
1971 # On some systems (eg. Linux) librt can pull in libpthread. We
1972 # don't want this to happen because libpthreads changes signal delivery
1973 # semantics in ways we are not prepared for. This breaks Linux oplocks
1974 # which rely on signals.
1976 AC_LIBTESTFUNC(rt, clock_gettime,
1978 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
1979 [Whether clock_gettime is available])
1980 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
1981 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
1982 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
1987 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
1988 AC_TRY_RUN([#include <sys/types.h>
1990 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1991 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1992 di->d_name[0] == 0) exit(0); exit(1);} ],
1993 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
1994 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
1995 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
1998 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1999 AC_TRY_COMPILE([#include <sys/types.h>
2000 #include <utime.h>],
2001 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2002 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2003 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2004 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2008 # Check utmp details, but only if our OS offers utmp.h
2009 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2010 dnl utmp and utmpx come in many flavours
2011 dnl We need to check for many of them
2012 dnl But we don't need to do each and every one, because our code uses
2013 dnl mostly just the utmp (not utmpx) fields.
2015 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2017 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2018 AC_TRY_COMPILE([#include <sys/types.h>
2020 [struct utmp ut; ut.ut_name[0] = 'a';],
2021 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2022 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2023 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2026 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2027 AC_TRY_COMPILE([#include <sys/types.h>
2029 [struct utmp ut; ut.ut_user[0] = 'a';],
2030 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2031 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2032 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2035 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2036 AC_TRY_COMPILE([#include <sys/types.h>
2038 [struct utmp ut; ut.ut_id[0] = 'a';],
2039 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2040 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2041 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2044 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2045 AC_TRY_COMPILE([#include <sys/types.h>
2047 [struct utmp ut; ut.ut_host[0] = 'a';],
2048 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2049 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2050 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2053 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2054 AC_TRY_COMPILE([#include <sys/types.h>
2056 [struct utmp ut; time_t t; ut.ut_time = t;],
2057 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2058 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2059 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2062 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2063 AC_TRY_COMPILE([#include <sys/types.h>
2065 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2066 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2067 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2068 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2071 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2072 AC_TRY_COMPILE([#include <sys/types.h>
2074 [struct utmp ut; ut.ut_type = 0;],
2075 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2076 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2077 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2080 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2081 AC_TRY_COMPILE([#include <sys/types.h>
2083 [struct utmp ut; ut.ut_pid = 0;],
2084 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2085 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2086 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2089 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2090 AC_TRY_COMPILE([#include <sys/types.h>
2092 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2093 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2094 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2095 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2098 dnl Look for the IPv6 varient by preference. Many systems have both.
2099 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2100 AC_TRY_COMPILE([#include <sys/types.h>
2102 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2103 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2104 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2105 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2108 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2109 AC_TRY_COMPILE([#include <sys/types.h>
2111 [struct utmp ut; ut.ut_addr = 0;],
2112 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2113 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2114 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2117 if test x$ac_cv_func_pututline = xyes ; then
2118 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2119 AC_TRY_COMPILE([#include <sys/types.h>
2121 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2122 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2123 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2124 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2128 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2129 AC_TRY_COMPILE([#include <sys/types.h>
2130 #include <utmpx.h>],
2131 [struct utmpx ux; ux.ut_syslen = 0;],
2132 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2133 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2134 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2141 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2142 AC_ARG_WITH(libiconv,
2143 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2145 if test "$withval" = "no" ; then
2146 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2148 if test "$withval" != "yes" ; then
2150 ICONV_LOOK_DIRS="$withval"
2155 for i in $ICONV_LOOK_DIRS ; do
2158 save_LDFLAGS="$LDFLAGS"
2159 save_CPPFLAGS="$CPPFLAGS"
2161 iconv_current_LIBS=""
2162 iconv_current_LDFLAGS=""
2163 iconv_current_CPPFLAGS=""
2168 # This is here to handle -withval stuff for --with-libiconv
2169 # Perhaps we should always add a -L
2170 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2172 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2173 # installation paths. This gets a little tricky since we might have iconv
2174 # in both libiconv and in libc. In this case the jm_ICONV test will always
2175 # succeed when the header is found. To counter this, make sure the
2176 # library directory is there and check the ABI directory first (which
2177 # should be harmless on other systems, but causes tons of linker warnings on
2178 # 64bit Ubuntu systems).
2179 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2180 # installed, I've decided to fix the linker warnings.
2182 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2183 for l in "lib" "lib32" "lib/hpux32"; do
2184 if test -d "$i/$l" ; then
2185 LDFLAGS="$save_LDFLAGS -L$i/$l"
2187 export LDFLAGS LIBS CPPFLAGS
2188 # Try to find iconv(3)
2190 if test x"$ICONV_FOUND" = "xyes" ; then
2197 if test x"$ICONV_FOUND" = "xyes" ; then
2198 iconv_current_LDFLAGS="-L$i/$libext"
2199 iconv_current_CPPFLAGS="-I$i/include"
2201 if test x"$jm_cv_lib_iconv" != x; then
2202 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2204 # We found iconv in libc.
2205 iconv_current_LIBS=""
2210 if test x"$ICONV_FOUND" = "xyes" ; then
2212 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2213 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2214 LIBS="$save_LIBS $iconv_current_LIBS"
2215 export LDFLAGS LIBS CPPFLAGS
2217 default_dos_charset=no
2218 default_display_charset=no
2219 default_unix_charset=no
2221 # check for default dos charset name
2222 for j in CP850 IBM850 ; do
2224 default_dos_charset="$ICONV_CHARSET"
2225 if test x"$default_dos_charset" = x"$j"; then
2230 # check for default display charset name
2231 for j in ASCII 646 ; do
2233 default_display_charset="$ICONV_CHARSET"
2234 if test x"$default_display_charset" = x"$j"; then
2239 # check for default unix charset name
2240 for j in UTF-8 UTF8 ; do
2242 default_unix_charset="$ICONV_CHARSET"
2243 if test x"$default_unix_charset" = x"$j"; then
2248 if test "$default_dos_charset" != "no" -a \
2249 "$default_dos_charset" != "cross" -a \
2250 "$default_display_charset" != "no" -a \
2251 "$default_display_charset" != "cross" -a \
2252 "$default_unix_charset" != "no" -a \
2253 "$default_unix_charset" != "cross"
2255 samba_cv_HAVE_NATIVE_ICONV=yes
2257 if test "$default_dos_charset" = "cross" -o \
2258 "$default_display_charset" = "cross" -o \
2259 "$default_unix_charset" = "cross"
2261 samba_cv_HAVE_NATIVE_ICONV=cross
2263 samba_cv_HAVE_NATIVE_ICONV=no
2267 # At this point, we have a libiconv candidate. We know that
2268 # we have the right headers and libraries, but we don't know
2269 # whether it does the conversions we want. We can't test this
2270 # because we are cross-compiling. This is not necessarily a big
2271 # deal, since we can't guarantee that the results we get now will
2272 # match the results we get at runtime anyway.
2273 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2274 default_dos_charset="CP850"
2275 default_display_charset="ASCII"
2276 default_unix_charset="UTF-8"
2277 samba_cv_HAVE_NATIVE_ICONV=yes
2278 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2279 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2282 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2284 CPPFLAGS=$save_CPPFLAGS
2285 LDFLAGS=$save_LDFLAGS
2288 if test x"$iconv_current_LIBS" != x; then
2289 LIBS="$LIBS $iconv_current_LIBS"
2292 # Add the flags we need to CPPFLAGS and LDFLAGS
2293 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2294 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2296 # Turn the #defines into string literals
2297 default_dos_charset="\"$default_dos_charset\""
2298 default_display_charset="\"$default_display_charset\""
2299 default_unix_charset="\"$default_unix_charset\""
2301 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2302 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2303 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2304 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2309 # We didn't find a working iconv, so keep going
2312 # We only need to clean these up here for the next pass through the loop
2313 CPPFLAGS=$save_CPPFLAGS
2314 LDFLAGS=$save_LDFLAGS
2316 export LDFLAGS LIBS CPPFLAGS
2321 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2322 AC_MSG_WARN([Sufficient support for iconv function was not found.
2323 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2324 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2325 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2326 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2330 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2332 #include <sys/types.h>
2335 #define F_GETLEASE 1025
2338 int fd = open("/dev/null", O_RDONLY);
2339 return fcntl(fd, F_GETLEASE, 0) == -1;
2342 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2343 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2344 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2347 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2349 #include <sys/types.h>
2353 #define F_NOTIFY 1026
2356 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2359 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2360 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2361 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2364 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2365 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2366 AC_CHECK_FUNCS(inotify_init)
2367 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2369 samba_cv_HAVE_INOTIFY=yes,
2370 samba_cv_HAVE_INOTIFY=no,
2371 samba_cv_HAVE_INOTIFY=cross)
2373 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2374 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2377 #################################################
2378 # Check if FAM notifications are available. For FAM info, see
2379 # http://oss.sgi.com/projects/fam/
2380 # http://savannah.nongnu.org/projects/fam/
2382 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2384 if test x$enable_fam != xno; then
2385 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2386 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2387 # On IRIX, libfam requires libC, but other FAM implementations
2388 # might not need it.
2389 AC_CHECK_LIB(fam, FAMOpen2,
2390 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2391 [samba_cv_HAVE_LIBFAM=no])
2393 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2395 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2396 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2397 [samba_cv_HAVE_LIBFAM=no])
2398 unset samba_fam_xtra
2402 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2403 default_shared_modules="$default_shared_modules vfs_notify_fam"
2404 AC_TRY_COMPILE([#include <fam.h>],
2405 [enum FAMCodes code = FAMChanged;],
2406 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2407 [Whether fam.h contains a typedef for enum FAMCodes]),
2411 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2412 AC_MSG_ERROR(FAM support requested but FAM library not available )
2416 AC_SUBST(SMB_FAM_LIBS)
2418 #################################################
2419 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2421 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2423 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2424 # Theoretically it should work with AIX JFS2 too but this needs testing
2425 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2426 default_shared_modules="$default_shared_modules vfs_tsmsm"
2429 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2431 #include <sys/types.h>
2434 #include <sys/file.h>
2436 #define LOCK_MAND 32
2437 #define LOCK_READ 64
2440 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2443 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2444 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2445 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2449 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2450 AC_TRY_COMPILE([#include <sys/types.h>
2451 #include <fcntl.h>],
2452 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2453 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2454 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2455 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2458 #################################################
2459 # Check for POSIX capability support
2461 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2462 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2465 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2468 AC_LIBTESTFUNC(cap, cap_get_proc)
2470 AC_CACHE_CHECK([for POSIX capabilities],
2471 samba_cv_HAVE_POSIX_CAPABILITIES,
2474 #include <sys/types.h>
2475 #include <sys/capability.h>
2478 cap_value_t vals[1];
2479 if (!(cap = cap_get_proc()))
2481 vals[0] = CAP_CHOWN;
2482 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2486 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2487 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2488 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2491 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2492 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2493 [Whether POSIX capabilities are available])
2501 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2502 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2505 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2506 AC_TRY_COMPILE([#include <sys/types.h>
2507 #if defined(HAVE_RPC_RPC_H)
2508 #include <rpc/rpc.h>
2511 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2512 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2513 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2516 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2517 AC_TRY_COMPILE([#include <sys/types.h>
2518 #if defined(HAVE_RPC_RPC_H)
2519 #include <rpc/rpc.h>
2522 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2523 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2524 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2527 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2528 AC_TRY_COMPILE([#include <sys/types.h>
2529 #if defined(HAVE_RPC_RPC_H)
2530 #include <rpc/rpc.h>
2533 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2534 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2535 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2538 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2539 AC_TRY_COMPILE([#include <sys/types.h>
2540 #if defined(HAVE_RPC_RPC_H)
2541 #include <rpc/rpc.h>
2544 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2545 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2546 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2550 dnl Some systems (SCO) have a problem including
2551 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2552 dnl as a #define in <prot.h> and as part of an enum
2556 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2557 AC_TRY_COMPILE([#include <sys/types.h>
2558 #ifdef HAVE_SYS_SECURITY_H
2559 #include <sys/security.h>
2561 #endif /* HAVE_SYS_SECURITY_H */
2562 #if defined(HAVE_RPC_RPC_H)
2563 #include <rpc/rpc.h>
2566 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2567 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2568 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2571 AC_MSG_CHECKING([for test routines])
2572 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2574 AC_MSG_ERROR([cant find test code. Aborting config]),
2575 AC_MSG_WARN([cannot run when cross-compiling]))
2577 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2578 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2579 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2580 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2581 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2584 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2585 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2586 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2587 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2588 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2591 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2592 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2593 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2594 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2595 AC_CHECK_FUNCS(getpagesize)
2597 ################################################
2598 # look for a method of setting the effective uid
2601 if test $seteuid = no; then
2602 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2604 #define AUTOCONF_TEST 1
2605 #define USE_SETREUID 1
2606 #include "confdefs.h"
2607 #include "${srcdir-.}/lib/util_sec.c"],
2608 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2609 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2610 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2614 # we check for setresuid second as it conflicts with AIO on Linux.
2615 # see http://samba.org/~tridge/junkcode/aio_uid.c
2616 if test $seteuid = no; then
2617 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2619 #define AUTOCONF_TEST 1
2620 #define USE_SETRESUID 1
2621 #include "confdefs.h"
2622 #include "${srcdir-.}/lib/util_sec.c"],
2623 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2624 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2625 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2629 if test $seteuid = no; then
2630 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2632 #define AUTOCONF_TEST 1
2633 #define USE_SETEUID 1
2634 #include "confdefs.h"
2635 #include "${srcdir-.}/lib/util_sec.c"],
2636 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2637 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2638 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2642 if test $seteuid = no; then
2643 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2645 #define AUTOCONF_TEST 1
2646 #define USE_SETUIDX 1
2647 #include "confdefs.h"
2648 #include "${srcdir-.}/lib/util_sec.c"],
2649 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2650 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2651 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2655 AC_CACHE_CHECK([for the Darwin initgroups system call],
2656 samba_cv_DARWIN_INITGROUPS,
2658 #include <sys/syscall.h>
2661 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2662 samba_cv_DARWIN_INITGROUPS=yes,
2663 samba_cv_DARWIN_INITGROUPS=no)
2666 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2667 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2668 [Whether to use the Darwin-specific initgroups system call])
2671 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2672 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2673 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2674 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2675 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2678 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2679 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2680 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2681 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2682 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2687 dnl Don't check for 64 bit fcntl locking if we know that the
2688 dnl glibc2.1 broken check has succeeded.
2691 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2693 #if defined(HAVE_UNISTD_H)
2703 #ifdef HAVE_SYS_FCNTL_H
2704 #include <sys/fcntl.h>
2706 main() { struct flock64 fl64;
2707 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2713 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2715 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2716 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2720 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2721 AC_TRY_COMPILE([#include <sys/types.h>
2722 #include <sys/stat.h>
2723 #include <unistd.h>],
2724 [struct stat st; st.st_blocks = 0;],
2725 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2726 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2727 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2730 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
2732 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2733 AC_TRY_COMPILE([#include <sys/types.h>
2734 #include <sys/stat.h>
2735 #include <unistd.h>],
2736 [struct stat st; st.st_blksize = 0;],
2737 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2738 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2739 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2742 AC_CACHE_CHECK([for st_flags in struct stat],
2743 samba_cv_HAVE_STAT_ST_FLAGS,
2745 AC_TRY_COMPILE([#include <sys/types.h>
2746 #include <sys/stat.h>
2747 #include <unistd.h>],
2748 [struct stat st; st.st_flags = 0;],
2749 samba_cv_HAVE_STAT_ST_FLAGS=yes,
2750 samba_cv_HAVE_STAT_ST_FLAGS=no,
2751 samba_cv_HAVE_STAT_ST_FLAGS=cross)
2754 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2755 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2756 [Whether the stat struct has a st_flags member])
2759 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2761 #include <sys/types.h>
2762 #include <sys/acl.h>
2763 #if defined(HAVE_RPCSVC_NIS_H)
2764 #include <rpcsvc/nis.h>
2767 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2768 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2769 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2772 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2778 void exit_on_core(int ignored) {
2784 signal(SIGSEGV, exit_on_core);
2785 newpath = realpath("/tmp", NULL);
2786 exit((newpath != NULL) ? 0 : 1);
2789 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2790 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2791 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2794 #################################################
2795 # check for AFS clear-text auth support
2796 samba_cv_WITH_AFS=no
2797 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2799 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2800 [ case "$withval" in
2802 AC_MSG_RESULT($withval)
2803 samba_cv_WITH_AFS=$withval
2812 ####################################################
2813 # check for Linux-specific AFS fake-kaserver support
2814 samba_cv_WITH_FAKE_KASERVER=no
2815 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2816 AC_ARG_WITH(fake-kaserver,
2817 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2818 [ case "$withval" in
2820 AC_MSG_RESULT($withval)
2821 samba_cv_WITH_FAKE_KASERVER=$withval
2830 #################################################
2831 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2832 if test x"$samba_cv_WITH_AFS" != x"no" ||
2833 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2835 # see if this box has the OpenSSL DES libraries
2836 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
2838 # see if this box has the afs-headers in /usr/include/afs
2839 AC_MSG_CHECKING(for /usr/include/afs)
2840 if test -d /usr/include/afs; then
2848 AC_CHECK_HEADERS(afs.h afs/afs.h)
2849 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2850 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2851 test x"$samba_cv_WITH_AFS" = x"auto"; then
2852 AC_MSG_WARN([AFS cannot be supported without afs.h])
2854 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2857 have_afs_headers=yes
2861 FAKE_KASERVER_OBJ=""
2862 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2863 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2864 FAKE_KASERVER_OBJ="utils/net_afs.o"
2866 AC_SUBST(FAKE_KASERVER_OBJ)
2868 #################################################
2869 # check whether to compile AFS/NT ACL mapping module
2870 samba_cv_WITH_VFS_AFSACL=no
2871 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2872 AC_ARG_WITH(vfs-afsacl,
2873 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2874 [ case "$withval" in
2876 AC_MSG_RESULT($withval)
2877 samba_cv_WITH_VFS_AFSACL=yes
2886 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2887 default_shared_modules="$default_shared_modules vfs_afsacl"
2890 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2891 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2894 #################################################
2895 # check for the DFS clear-text auth system
2896 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2898 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2899 [ case "$withval" in
2902 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2911 ########################################################
2912 # Compile with LDAP support?
2914 with_ldap_support=auto
2915 AC_MSG_CHECKING([for LDAP support])
2918 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2919 [ case "$withval" in
2921 with_ldap_support=$withval
2925 AC_MSG_RESULT($with_ldap_support)
2930 AC_SUBST(SMBLDAPUTIL)
2934 if test x"$with_ldap_support" != x"no"; then
2936 ##################################################################
2937 # first test for ldap.h and lber.h
2938 # (ldap.h is required for this test)
2939 AC_CHECK_HEADERS(ldap.h lber.h)
2941 if test x"$ac_cv_header_ldap_h" != x"yes"; then
2942 if test x"$with_ldap_support" = x"yes"; then
2943 AC_MSG_ERROR(ldap.h is needed for LDAP support)
2945 AC_MSG_WARN(ldap.h is needed for LDAP support)
2948 with_ldap_support=no
2951 ##################################################################
2952 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
2953 # unsigned int in include/includes.h
2956 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2957 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
2958 with_ldap_support=yes
2961 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
2962 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
2963 if test x"$with_ldap_support" = x"yes"; then
2964 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
2966 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2968 with_ldap_support=no
2974 if test x"$with_ldap_support" != x"no"; then
2977 ##################################################################
2978 # we might need the lber lib on some systems. To avoid link errors
2979 # this test must be before the libldap test
2980 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2982 ########################################################
2983 # If ber_sockbuf_add_io() is available we can add
2984 # SASL wrapping hooks
2985 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
2987 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
2988 AC_TRY_COMPILE([#include <ldap.h>],
2989 [int val = LDAP_OPT_SOCKBUF;],
2990 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
2991 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
2993 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
2994 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
2995 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
2998 #######################################################
2999 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3000 # ldap logging and print it out in the samba logs
3001 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3002 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3003 [AC_TRY_COMPILE([#include <lber.h>],
3004 [int val = LBER_OPT_LOG_PRINT_FN;],
3005 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3006 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3008 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3009 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3010 [Support for LDAP/LBER logging interception])
3013 ########################################################
3014 # now see if we can find the ldap libs in standard paths
3015 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3017 ########################################################
3018 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3019 # Check found in pam_ldap 145.
3020 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3022 LIBS="$LIBS $LDAP_LIBS"
3023 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3027 [ldap_set_rebind_proc(0, 0, 0);],
3028 [smb_ldap_cv_ldap_set_rebind_proc=3],
3029 [smb_ldap_cv_ldap_set_rebind_proc=2]
3033 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3035 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3037 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3038 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3039 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3040 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3041 default_shared_modules="$default_shared_modules";
3042 SMBLDAP="lib/smbldap.o"
3043 SMBLDAPUTIL="lib/smbldap_util.o"
3044 with_ldap_support=yes
3045 AC_MSG_CHECKING(whether LDAP support is used)
3048 if test x"$with_ldap_support" = x"yes"; then
3049 AC_MSG_ERROR(libldap is needed for LDAP support)
3051 AC_MSG_WARN(libldap is needed for LDAP support)
3055 with_ldap_support=no
3061 #################################################
3062 # active directory support
3064 with_ads_support=auto
3065 AC_MSG_CHECKING([for Active Directory and krb5 support])
3068 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3069 [ case "$withval" in
3071 with_ads_support="$withval"
3075 AC_MSG_RESULT($with_ads_support)
3080 if test x"$with_ldap_support" != x"yes"; then
3082 if test x"$with_ads_support" = x"yes"; then
3083 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3084 elif test x"$with_ads_support" = x"auto"; then
3085 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3091 # Check to see whether there is enough LDAP functionality to be able
3092 # to build AD support.
3094 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3097 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3099 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3100 if test x"$with_ads_support" = x"yes"; then
3101 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3102 elif test x"$with_ads_support" = x"auto"; then
3103 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3109 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3111 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3112 if test x"$with_ads_support" = x"yes"; then
3113 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3114 elif test x"$with_ads_support" = x"auto"; then
3115 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3123 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3125 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3126 if test x"$with_ads_support" = x"yes"; then
3127 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3128 elif test x"$with_ads_support" = x"auto"; then
3129 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3136 if test x"$with_ads_support" != x"no"; then
3138 # Do no harm to the values of CFLAGS and LIBS while testing for
3141 if test x$FOUND_KRB5 = x"no"; then
3142 #################################################
3143 # check for location of Kerberos 5 install
3144 AC_MSG_CHECKING(for kerberos 5 install path)
3146 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3147 [ case "$withval" in
3149 AC_MSG_RESULT(no krb5-path given)
3156 AC_MSG_RESULT($withval)
3157 KRB5_CFLAGS="-I$withval/include"
3158 KRB5_CPPFLAGS="-I$withval/include"
3159 KRB5_LDFLAGS="-L$withval/lib"
3161 if test -x "$withval/bin/krb5-config"; then
3162 KRB5CONFIG=$withval/bin/krb5-config
3166 AC_MSG_RESULT(no krb5-path given)
3170 #################################################
3171 # check for krb5-config from recent MIT and Heimdal kerberos 5
3172 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3173 AC_MSG_CHECKING(for working krb5-config)
3174 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3175 ac_save_CFLAGS=$CFLAGS
3176 CFLAGS="";export CFLAGS
3177 ac_save_LDFLAGS=$LDFLAGS
3178 LDFLAGS="";export LDFLAGS
3179 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3180 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3181 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3182 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3183 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3184 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3188 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3191 if test x$FOUND_KRB5 = x"no"; then
3192 #################################################
3193 # see if this box has the SuSE location for the heimdal krb implementation
3194 AC_MSG_CHECKING(for /usr/include/heimdal)
3195 if test -d /usr/include/heimdal; then
3196 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3197 KRB5_CFLAGS="-I/usr/include/heimdal"
3198 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3199 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3203 KRB5_CFLAGS="-I/usr/include/heimdal"
3204 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3213 if test x$FOUND_KRB5 = x"no"; then
3214 #################################################
3215 # see if this box has the RedHat location for kerberos
3216 AC_MSG_CHECKING(for /usr/kerberos)
3217 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3218 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3219 KRB5_CFLAGS="-I/usr/kerberos/include"
3220 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3228 if test x$FOUND_KRB5 = x"no"; then
3229 #################################################
3230 # see if this box has the OpenBSD location for heimdal krb5
3231 AC_MSG_CHECKING(for /usr/include/kerberosV)
3232 if test -d /usr/include/kerberosV; then
3233 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3234 KRB5_LIBS="-lcrypto"
3242 ac_save_CFLAGS=$CFLAGS
3243 ac_save_CPPFLAGS=$CPPFLAGS
3244 ac_save_LDFLAGS=$LDFLAGS
3246 # remove needless evil rpath stuff as early as possible:
3247 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3248 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3249 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3250 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3251 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3253 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3255 # now check for krb5.h. Some systems have the libraries without the headers!
3256 # note that this check is done here to allow for different kerberos
3258 AC_CHECK_HEADERS(krb5.h)
3260 if test x"$ac_cv_header_krb5_h" = x"no"; then
3262 # Give a warning if AD support was not explicitly requested,
3263 # i.e with_ads_support = auto, otherwise die with an error.
3265 if test x"$with_ads_support" = x"yes"; then
3266 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3268 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3271 # Turn off AD support and restore CFLAGS and LIBS variables
3273 with_ads_support="no"
3275 CFLAGS=$ac_save_CFLAGS
3276 CPPFLAGS=$ac_save_CPPFLAGS
3277 LDFLAGS=$ac_save_LDFLAGS
3279 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3280 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3281 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3282 if test x"$BLDSHARED" = x"true" ; then
3283 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3288 # Now we have determined whether we really want ADS support
3290 if test x"$with_ads_support" != x"no"; then
3295 # now check for gssapi headers. This is also done here to allow for
3296 # different kerberos include paths
3297 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3299 ##################################################################
3300 # we might need the k5crypto and com_err libraries on some systems
3301 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3302 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3305 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3306 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3307 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3309 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3310 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3312 ########################################################
3313 # now see if we can find the krb5 libs in standard paths
3314 # or as specified above
3315 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3316 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3318 ########################################################
3319 # now see if we can find the gssapi libs in standard paths
3320 if test x"$have_gssapi" != x"yes"; then
3321 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3324 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3325 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3326 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3327 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3328 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3329 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3330 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3331 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3332 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3333 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3334 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3335 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3336 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3337 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3338 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3339 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3340 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3341 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3342 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3343 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3344 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3345 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3346 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3347 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3348 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3349 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3350 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3351 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3352 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3353 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3354 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3355 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3356 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3357 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3358 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3359 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3360 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3361 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3362 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3363 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3364 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3365 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3366 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3368 LIBS="$KRB5_LIBS $LIBS"
3370 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3371 smb_krb5_cv_ticket_has_keyinfo,
3380 krb5_enctype enctype;
3382 enctype = ticket.enc_part.enctype;
3383 kvno = ticket.enc_part.kvno;
3385 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3386 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3389 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3390 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3391 [Whether the krb5_ticket structure contains the kvno and enctype])
3394 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3395 smb_krb5_cv_creds_opt_free_context,
3401 krb5_get_init_creds_opt *opt = NULL;
3402 krb5_get_init_creds_opt_free(ctx, opt);
3404 [smb_krb5_cv_creds_opt_free_context=yes],
3405 [smb_krb5_cv_creds_opt_free_context=no]
3409 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3410 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3411 [Whether krb5_get_init_creds_opt_free takes a context argument])
3414 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3417 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3418 [smb_krb5_cv_verify_checksum=7],
3419 [smb_krb5_cv_verify_checksum=6],
3422 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3424 AC_CACHE_CHECK([for checksum in krb5_checksum],
3425 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3426 AC_TRY_COMPILE([#include <krb5.h>],
3427 [krb5_checksum cksum; cksum.checksum.length = 0;],
3428 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3429 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3431 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3432 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3433 [Whether the krb5_checksum struct has a checksum property])
3436 AC_CACHE_CHECK([for etype in EncryptedData],
3437 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3438 AC_TRY_COMPILE([#include <krb5.h>],
3439 [EncryptedData edata; edata.etype = 0;],
3440 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3441 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3443 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3444 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3445 [Whether the EncryptedData struct has a etype property])
3448 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3449 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3450 AC_TRY_COMPILE([#include <krb5.h>],
3451 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3452 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3453 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3455 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3456 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3457 [Whether the krb5_ap_req struct has a ticket pointer])
3460 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3461 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3462 AC_TRY_COMPILE([#include <krb5.h>],
3463 [krb5_error err; err.e_data = NULL;],
3464 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3465 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3467 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3468 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3469 [Whether the krb5_error struct has a e_data pointer])
3472 AC_CACHE_CHECK([for krb5_crypto type],
3473 samba_cv_HAVE_KRB5_CRYPTO,[
3474 AC_TRY_COMPILE([#include <krb5.h>],
3475 [krb5_crypto crypto;],
3476 samba_cv_HAVE_KRB5_CRYPTO=yes,
3477 samba_cv_HAVE_KRB5_CRYPTO=no)])
3479 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3480 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3481 [Whether the type krb5_crypto exists])
3484 AC_CACHE_CHECK([for krb5_encrypt_block type],
3485 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3486 AC_TRY_COMPILE([#include <krb5.h>],
3487 [krb5_encrypt_block block;],
3488 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3489 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3491 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3492 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3493 [Whether the type krb5_encrypt_block exists])
3496 AC_CACHE_CHECK([for addrtype in krb5_address],
3497 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3498 AC_TRY_COMPILE([#include <krb5.h>],
3499 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3500 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3501 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3503 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3504 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3505 [Whether the krb5_address struct has a addrtype property])
3508 AC_CACHE_CHECK([for addr_type in krb5_address],
3509 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3510 AC_TRY_COMPILE([#include <krb5.h>],
3511 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3512 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3513 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3515 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3516 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3517 [Whether the krb5_address struct has a addr_type property])
3520 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3521 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3522 [AC_TRY_COMPILE([#include <krb5.h>],
3523 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3524 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3526 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3527 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3528 [Whether the krb5_ticket struct has a enc_part2 property])
3531 AC_CACHE_CHECK([for keyblock in krb5_creds],
3532 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3533 AC_TRY_COMPILE([#include <krb5.h>],
3534 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3535 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3536 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3538 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3539 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3540 [Whether the krb5_creds struct has a keyblock property])
3543 AC_CACHE_CHECK([for session in krb5_creds],
3544 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3545 AC_TRY_COMPILE([#include <krb5.h>],
3546 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3547 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3548 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3550 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3551 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3552 [Whether the krb5_creds struct has a session property])
3555 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3556 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3557 AC_TRY_COMPILE([#include <krb5.h>],
3558 [krb5_keyblock key; key.keyvalue.data = NULL;],
3559 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3560 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3562 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3563 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3564 [Whether the krb5_keyblock struct has a keyvalue property])
3567 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3568 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3569 AC_TRY_COMPILE([#include <krb5.h>],
3570 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3571 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3572 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3573 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3574 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3575 AC_TRY_COMPILE([#include <krb5.h>],
3576 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3577 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3578 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3579 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3580 # w.r.t. arcfour and windows, so we must not enable it here
3581 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3582 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3583 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3584 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3587 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3588 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3589 AC_TRY_COMPILE([#include <krb5.h>],
3590 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3591 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3592 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3594 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3595 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3596 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3599 AC_CACHE_CHECK([for KV5M_KEYTAB],
3600 samba_cv_HAVE_KV5M_KEYTAB,[
3601 AC_TRY_COMPILE([#include <krb5.h>],
3602 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3603 samba_cv_HAVE_KV5M_KEYTAB=yes,
3604 samba_cv_HAVE_KV5M_KEYTAB=no)])
3606 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3607 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3608 [Whether the KV5M_KEYTAB option is available])
3611 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3612 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3613 AC_TRY_COMPILE([#include <krb5.h>],
3614 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3615 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3616 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3618 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3619 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3620 [Whether KRB5_KU_OTHER_CKSUM is available])
3623 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3624 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3625 AC_TRY_COMPILE([#include <krb5.h>],
3626 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3627 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3628 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3630 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3631 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3632 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3635 AC_CACHE_CHECK([for the krb5_princ_component macro],
3636 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3637 AC_TRY_LINK([#include <krb5.h>],
3638 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3639 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3640 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3642 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3643 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3644 [Whether krb5_princ_component is available])
3647 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3648 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3649 AC_TRY_COMPILE([#include <krb5.h>],
3650 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3651 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3652 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3654 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3655 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3656 [Whether krb5_keytab_entry has key member])
3659 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3660 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3661 AC_TRY_COMPILE([#include <krb5.h>],
3662 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3663 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3664 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3666 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3667 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3668 [Whether krb5_keytab_entry has keyblock member])
3671 AC_CACHE_CHECK([for magic in krb5_address],
3672 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3673 AC_TRY_COMPILE([#include <krb5.h>],
3674 [krb5_address addr; addr.magic = 0;],
3675 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3676 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3678 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3679 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3680 [Whether the krb5_address struct has a magic property])
3683 AC_CACHE_CHECK([for WRFILE: keytab support],
3684 samba_cv_HAVE_WRFILE_KEYTAB,[
3689 krb5_context context;
3692 krb5_init_context(&context);
3693 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3695 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3696 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3698 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3699 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3700 [Whether the WRFILE:-keytab is supported])
3703 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3704 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3705 AC_TRY_COMPILE([#include <krb5.h>],
3707 krb5_context context;
3708 krb5_principal principal;
3709 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3710 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3711 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3713 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3714 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3715 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3718 AC_CACHE_CHECK([for krb5_addresses type],
3719 samba_cv_HAVE_KRB5_ADDRESSES,[
3720 AC_TRY_COMPILE([#include <krb5.h>],
3721 [krb5_addresses addr;],
3722 samba_cv_HAVE_KRB5_ADDRESSES=yes,
3723 samba_cv_HAVE_KRB5_ADDRESSES=no)])
3725 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3726 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3727 [Whether the type krb5_addresses type exists])
3730 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3731 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3732 AC_TRY_COMPILE([#include <krb5.h>],
3734 krb5_mk_error(0,0,0);],
3735 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3736 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3738 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3739 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3740 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3743 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3744 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3745 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3750 krb5_context context = NULL;
3752 krb5_enctype_to_string(context, 1, &str);
3753 if (str) free (str);
3756 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3757 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3758 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3760 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3761 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3762 [whether krb5_enctype_to_string takes krb5_context argument])
3765 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3766 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
3771 krb5_enctype_to_string(1, buf, 256);
3774 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3775 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
3776 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
3778 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
3779 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3780 [whether krb5_enctype_to_string takes size_t argument])
3784 AC_CACHE_CHECK([for krb5_principal_get_realm],
3785 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3786 AC_TRY_LINK([#include <krb5.h>],
3787 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3788 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3789 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3791 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3792 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3793 [Whether the function krb5_principal_get_realm is defined])
3796 AC_CACHE_CHECK([for krb5_princ_realm],
3797 samba_cv_HAVE_KRB5_PRINC_REALM,[
3798 AC_TRY_LINK([#include <krb5.h>],
3799 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3800 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3801 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3803 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3804 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3805 [Whether the macro krb5_princ_realm is defined])
3810 # Now the decisions whether we can support krb5
3812 # NOTE: all tests should be done before this block!
3815 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3816 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3820 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3821 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3823 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3827 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3828 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3830 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3834 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3835 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3837 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3841 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3842 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3844 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3848 if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
3850 # We only need the following functions if we can't get the enctype
3851 # and kvno out of the ticket directly (ie. on Heimdal).
3853 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3855 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3859 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3861 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3867 if test x"$use_ads" = x"yes"; then
3868 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3869 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3870 if test x"$have_gssapi" = x"yes"; then
3871 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3874 if test x"$with_ads_support" = x"yes"; then
3875 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3877 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3879 AC_REMOVE_DEFINE(HAVE_KRB5_H)
3880 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3881 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3882 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3886 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3887 AC_MSG_RESULT([$use_ads])
3889 LIBS="$ac_save_LIBS"
3892 if test x"$use_ads" != xyes; then
3893 merged_build_possible=no
3896 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3897 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3900 ########################################################
3901 # Compile with DNS Updates support?
3903 with_dnsupdate_support=no
3904 AC_MSG_CHECKING([whether to enable DNS Updates support])
3906 AC_ARG_WITH(dnsupdate,
3907 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
3908 [ case "$withval" in
3910 with_dnsupdate_support=$withval
3914 AC_MSG_RESULT($with_dnsupdate_support)
3916 if test x"$with_dnsupdate_support" != x"no"; then
3918 ################################################################
3919 # first test for Active Directory support being enabled
3920 #if test x"$with_ads_support" = x"no"; then
3921 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3922 # with_dnsupdate_support=no
3924 ##################################################################
3925 # then test for uuid.h (necessary to generate unique DNS keynames
3926 # (uuid.h is required for this test)
3927 AC_CHECK_HEADERS(uuid/uuid.h)
3929 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3930 if test x"$with_dnsupdate_support" = x"yes"; then
3931 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3933 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3935 with_dnsupdate_support=no
3939 if test x"$with_dnsupdate_support" != x"no"; then
3941 ########################################################
3942 # Now see if we can find the uuid libs in standard paths
3943 # On some systems, the uuid API is in libc, so we have to
3944 # be careful not to insert a spurious -luuid.
3947 AC_LIBTESTFUNC(uuid, uuid_generate,
3952 SMB_REMOVE_LIB(uuid)
3956 with_dnsupdate_support=yes
3957 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3960 if test x"$with_dnsupdate_support" = x"yes"; then
3961 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
3963 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
3965 with_dnsupdate_support=no
3969 #################################################
3970 # check for automount support
3971 AC_MSG_CHECKING(whether to use automount)
3972 AC_ARG_WITH(automount,
3973 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
3974 [ case "$withval" in
3977 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3986 #################################################
3987 # check for mount- and umount.cifs support
3989 INSTALL_CIFSMOUNT=""
3990 UNINSTALL_CIFSMOUNT=""
3991 AC_MSG_CHECKING(whether to build mount.cifs)
3992 AC_ARG_WITH(cifsmount,
3993 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs (Linux only) support (default=yes)])],
3994 [ case "$withval" in
4002 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4003 CIFSMOUNT_PROGS="bin/mount.cifs"
4004 INSTALL_CIFSMOUNT="installcifsmount"
4005 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4008 AC_MSG_ERROR(not on a linux system!)
4013 [ case "$host_os" in
4016 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4017 CIFSMOUNT_PROGS="bin/mount.cifs"
4018 INSTALL_CIFSMOUNT="installcifsmount"
4019 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4028 INSTALL_CIFSUMOUNT=""
4029 UNINSTALL_CIFSUMOUNT=""
4030 AC_MSG_CHECKING(whether to build umount.cifs)
4031 AC_ARG_WITH(cifsumount,
4032 [AS_HELP_STRING([--with-cifsumount], [Include umount.cifs (Linux only) support (default=no)])],
4033 [ case "$withval" in
4038 AC_DEFINE(WITH_CIFSUMOUNT,1,[Whether to build umount.cifs])
4039 CIFSUMOUNT_PROGS="bin/umount.cifs"
4040 INSTALL_CIFSUMOUNT="installcifsumount"
4041 UNINSTALL_CIFSUMOUNT="uninstallcifsumount"
4044 AC_MSG_ERROR(not on a linux system!)
4055 #################################################
4056 # check for cifs.upcall support
4057 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4059 INSTALL_CIFSUPCALL=""
4060 UNINSTALL_CIFSUPCALL=""
4061 AC_MSG_CHECKING(whether to build cifs.upcall)
4062 AC_ARG_WITH(cifsupcall,
4063 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4064 [ case "$withval" in
4071 if test x"$use_ads" != x"yes"; then
4072 AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4073 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4074 AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4077 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4078 CIFSUPCALL_PROGS="bin/cifs.upcall"
4079 INSTALL_CIFSUPCALL="installcifsupcall"
4080 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4084 AC_MSG_ERROR(not on a linux system!)
4089 [ case "$host_os" in
4091 if test x"$use_ads" != x"yes"; then
4092 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4093 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4094 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4097 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4098 CIFSUPCALL_PROGS="bin/cifs.upcall"
4099 INSTALL_CIFSUPCALL="installcifsupcall"
4100 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4110 #################################################
4111 # Check for a PAM clear-text auth, accounts, password
4112 # and session support. Most PAM implementations keep their
4113 # headers in /usr/include/security. Darwin keeps its in
4116 with_pam_for_crypt=no
4118 AC_MSG_CHECKING(whether to try PAM support)
4120 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4121 [ case "$withval" in
4127 AC_MSG_RESULT([$try_pam])
4130 create_pam_modules=no
4131 if test x"${try_pam}" != x"no";then
4133 create_pam_modules=yes
4135 # Most systems have PAM headers in /usr/include/security, but Darwin
4136 # has them in /usr/include/pam.
4137 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4138 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4139 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4140 if test x"${try_pam}" = x"yes";then
4141 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4144 create_pam_modules=no
4147 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4148 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4149 if test x"${try_pam}" = x"yes";then
4150 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4153 create_pam_modules=no
4156 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4157 #if HAVE_SECURITY_PAM_APPL_H
4158 #include <security/pam_appl.h>
4160 #if HAVE_PAM_PAM_APPL_H
4161 #include <pam/pam_appl.h>
4164 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4165 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4166 if test x"${try_pam}" = x"yes";then
4167 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4169 create_pam_modules=no
4172 if test x"$use_pam" = x"yes"; then
4173 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4174 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4175 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4176 with_pam_for_crypt=yes
4178 if test x"$create_pam_modules" = x"yes"; then
4179 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4180 # this checks are optional,
4181 # we don't care about the results here
4182 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4183 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4184 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4186 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4189 AC_MSG_CHECKING(whether to use PAM support)
4190 AC_MSG_RESULT([$use_pam])
4192 AC_MSG_CHECKING(whether to have PAM MODULES support)
4193 AC_MSG_RESULT([$create_pam_modules])
4196 #################################################
4197 # check for pam_smbpass support
4199 INSTALL_PAM_MODULES=""
4200 UNINSTALL_PAM_MODULES=""
4201 AC_MSG_CHECKING(whether to use pam_smbpass)
4202 AC_ARG_WITH(pam_smbpass,
4203 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4204 [ case "$withval" in
4208 # Conditions under which pam_smbpass should not be built.
4210 if test x"$BLDSHARED" != x"true"; then
4211 AC_MSG_ERROR([No support for shared modules])
4212 elif test x"$create_pam_modules" != x"yes"; then
4213 AC_MSG_ERROR([No support for PAM MODULES])
4215 PAM_MODULES="pam_smbpass"
4216 INSTALL_PAM_MODULES="installpammodules"
4217 UNINSTALL_PAM_MODULES="uninstallpammodules"
4229 ## moved after the check for -lcrypt in order to
4230 ## ensure that the necessary libraries are included
4231 ## check checking for truncated salt. Wrapped by the
4232 ## $with_pam_for_crypt variable as above --jerry
4234 if test $with_pam_for_crypt = no; then
4235 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4237 LIBS="$AUTH_LIBS $LIBS"
4238 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4239 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4240 LIBS="$crypt_LIBS"])
4241 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4242 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4246 #################################################
4247 # check for a NISPLUS_HOME support
4248 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4249 AC_ARG_WITH(nisplus-home,
4250 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4251 [ case "$withval" in
4254 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4263 #################################################
4264 # check for syslog logging
4265 AC_MSG_CHECKING(whether to use syslog logging)
4267 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4268 [ case "$withval" in
4271 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4280 #################################################
4281 # check for custom syslog facility
4282 AC_MSG_CHECKING(whether to use a custom syslog facility)
4283 AC_ARG_WITH(syslog-facility,
4284 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4286 if test "$withval" = "no" ; then
4287 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4289 if test "$withval" != "yes" ; then
4290 syslog_facility="$withval"
4291 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4296 #################################################
4297 # check for experimental disk-quotas support
4299 samba_cv_WITH_QUOTAS=auto
4300 samba_cv_TRY_QUOTAS=no
4301 samba_cv_RUN_QUOTA_TESTS=auto
4302 samba_cv_WITH_SYS_QUOTAS=auto
4303 samba_cv_TRY_SYS_QUOTAS=auto
4304 samba_cv_SYSQUOTA_FOUND=no
4306 AC_MSG_CHECKING(whether to try disk-quotas support)
4308 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4309 [ case "$withval" in
4312 samba_cv_WITH_QUOTAS=yes
4313 samba_cv_TRY_QUOTAS=yes
4314 samba_cv_RUN_QUOTA_TESTS=yes
4315 #set sys quotas to auto in this case
4316 samba_cv_TRY_SYS_QUOTAS=auto
4320 samba_cv_WITH_QUOTAS=auto
4321 samba_cv_TRY_QUOTAS=auto
4322 samba_cv_RUN_QUOTA_TESTS=auto
4323 #set sys quotas to auto in this case
4324 samba_cv_TRY_SYS_QUOTAS=auto
4328 samba_cv_WITH_QUOTAS=no
4329 samba_cv_TRY_QUOTAS=no
4330 samba_cv_RUN_QUOTA_TESTS=no
4333 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4336 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4339 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4340 AC_ARG_WITH(sys-quotas,
4341 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4342 [ case "$withval" in
4345 samba_cv_WITH_SYS_QUOTAS=yes
4346 samba_cv_TRY_SYS_QUOTAS=yes
4347 samba_cv_RUN_QUOTA_TESTS=yes
4351 samba_cv_WITH_SYS_QUOTAS=auto
4352 samba_cv_TRY_SYS_QUOTAS=auto
4353 samba_cv_RUN_QUOTA_TESTS=auto
4357 samba_cv_WITH_SYS_QUOTAS=no
4358 samba_cv_TRY_SYS_QUOTAS=no
4361 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4364 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4367 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4368 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4372 samba_cv_TRY_SYS_QUOTAS=yes
4373 samba_cv_RUN_QUOTA_TESTS=yes
4377 samba_cv_TRY_SYS_QUOTAS=no
4382 #############################################
4383 # only check for quota stuff if --with-quotas
4384 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4387 # on linux we didn't need to test we have builtin support
4389 samba_cv_SYSQUOTA_FOUND=yes
4390 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4391 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4392 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4395 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4396 samba_cv_found_xfs_header=yes
4397 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4401 # need to set this define when using static linking (BUG 1473)
4402 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4408 # some broken header files need this
4409 AC_CHECK_HEADER(asm/types.h,[
4410 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4411 AC_ADD_INCLUDE(<asm/types.h>)
4414 # For quotas on Veritas VxFS filesystems
4415 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4417 # For quotas on Linux XFS filesystems
4418 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4420 # For sys/quota.h and linux/quota.h
4421 AC_CHECK_HEADERS(sys/quota.h)
4423 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4424 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4425 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4427 #include "confdefs.h"
4428 #ifdef HAVE_SYS_TYPES_H
4429 #include <sys/types.h>
4431 #ifdef HAVE_ASM_TYPES_H
4432 #include <asm/types.h>
4434 #include <sys/quota.h>
4435 ],[int i = Q_XGETQUOTA;],
4436 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4437 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4438 samba_cv_found_xfs_header=yes
4442 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4443 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4445 #include "confdefs.h"
4446 #ifdef HAVE_SYS_QUOTA_H
4447 #include <sys/quota.h>
4451 D.dqb_fsoftlimit = 0;],
4452 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4453 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4454 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4458 # look for a working quota system
4460 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4461 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4463 #define HAVE_QUOTACTL_4A 1
4464 #define AUTOCONF_TEST 1
4465 #include "confdefs.h"
4466 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4467 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4468 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4469 samba_cv_SYSQUOTA_FOUND=yes;
4470 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4471 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4475 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4476 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4478 #define HAVE_QUOTACTL_4B 1
4479 #define AUTOCONF_TEST 1
4480 #include "confdefs.h"
4481 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4482 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4483 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4484 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4485 samba_cv_SYSQUOTA_FOUND=yes;
4486 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4487 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4491 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4492 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4494 #define HAVE_QUOTACTL_3 1
4495 #define AUTOCONF_TEST 1
4496 #include "confdefs.h"
4497 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4498 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4499 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4500 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4501 samba_cv_SYSQUOTA_FOUND=yes;
4502 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4503 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4507 #################################################
4508 # check for mntent.h and struct mntent
4509 AC_CHECK_HEADERS(mntent.h)
4510 #################################################
4511 # check for setmntent,getmntent,endmntent
4512 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4514 #################################################
4515 # check for devnm.h and struct mntent
4516 AC_CHECK_HEADERS(devnm.h)
4517 #################################################
4519 AC_CHECK_FUNCS(devnm)
4521 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4522 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4523 # if --with-sys-quotas=yes then build it
4524 # you have can use the get/set quota command smb.conf
4526 samba_cv_SYSQUOTA_FOUND=auto
4528 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4529 # if --with-sys-quotas=yes then build it
4530 # you have can use the get/set quota command smb.conf
4532 samba_cv_TRY_SYS_QUOTAS=auto
4536 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4537 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4538 SAVE_CPPFLAGS="$CPPFLAGS"
4539 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4541 #include "confdefs.h"
4542 #define NO_PROTO_H 1
4543 #define NO_CONFIG_H 1
4544 #define HAVE_SYS_QUOTAS 1
4545 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4546 #include "${srcdir-.}/lib/sysquotas.c"
4547 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4548 CPPFLAGS="$SAVE_CPPFLAGS"
4550 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4551 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4552 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4553 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4554 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4555 samba_cv_WE_USE_SYS_QUOTAS=yes
4563 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4564 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4565 SAVE_CPPFLAGS="$CPPFLAGS"
4566 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4568 #include "confdefs.h"
4569 #define NO_PROTO_H 1
4570 #define NO_CONFIG_H 1
4571 #define HAVE_SYS_QUOTAS 1
4572 #define HAVE_XFS_QUOTAS 1
4573 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4574 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4575 CPPFLAGS="$SAVE_CPPFLAGS"
4577 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4578 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4579 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4584 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4585 SAVE_CPPFLAGS="$CPPFLAGS"
4586 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4588 #include "confdefs.h"
4589 #define NO_PROTO_H 1
4590 #define NO_CONFIG_H 1
4591 #include "${srcdir-.}/smbd/quotas.c"
4592 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4593 CPPFLAGS="$SAVE_CPPFLAGS"
4595 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4596 AC_MSG_CHECKING(whether to use the old quota support)
4597 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4598 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4599 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4609 ####################
4610 # End of quota check samba_cv_RUN_QUOTA_TESTS
4613 #################################################
4614 # check for experimental utmp accounting
4616 AC_MSG_CHECKING(whether to support utmp accounting)
4619 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4620 [ case "$withval" in
4630 # utmp requires utmp.h
4631 # Note similar check earlier, when checking utmp details.
4633 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4634 utmp_no_reason=", no utmp.h on $host_os"
4638 # Display test results
4640 if test x"$WITH_UTMP" = x"yes"; then
4642 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4644 AC_MSG_RESULT(no$utmp_no_reason)
4649 UNINSTALLLIBCMD_SH=:
4652 if test $BLDSHARED = true; then
4653 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4654 UNINSTALLLIBCMD_SH="rm -f"
4656 if test $enable_static = yes; then
4657 INSTALLLIBCMD_A="\$(INSTALLCMD)"
4658 UNINSTALLLIBCMD_A="rm -f"
4661 #################################################
4662 # --disable-shared-libs
4663 # can be used to disable the internal use of shared libs altogether
4664 # (this only has an effect when building shared libs is enabled)
4669 AC_MSG_CHECKING(whether to use shared libraries internally)
4670 AC_ARG_ENABLE([shared-libs],
4671 AS_HELP_STRING([--enable-shared-libs],
4672 [Use shared libraries internally (default=yes)]),
4673 [enable_shared_libs=$enableval],
4674 [enable_shared_libs=yes])
4676 if test x"$enable_shared_libs" != x"no" ; then
4677 USESHARED=$BLDSHARED
4680 AC_MSG_RESULT([$USESHARED])
4682 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4683 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4686 #################################################
4687 # --with-static-libs=LIBS:
4688 # link (internal) libs dynamically or statically?
4690 # If a subsystem is built as a library then this controls whether they are
4691 # linked into Samba targets statically or dynamically:
4693 # * If we build the shared library at all, we link dynamically by default.
4695 # * We only link statically if we don't build shared or if the library
4696 # appears in the --with-static-libs configure option.
4699 # --with-static-libs=libtalloc makes use of libtalloc.a instead
4700 # of linking the dynamic variant with -ltalloc.
4702 # NOTE: This option only affects libraries that we do not only build
4703 # but that samba also links against as libraries (as opposed to linking
4704 # the plain object files. - This has to be configured in Makefile.in.
4705 # So in particular it does not harm to give invalid or unknown names here.
4708 AC_ARG_WITH([static-libs],
4709 [AS_HELP_STRING([--with-static-libs=LIBS],
4710 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4711 [AS_IF([test $withval],
4712 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4713 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4714 eval LINK_$lib=STATIC
4720 # until we have organized other internal subsystems (as util, registry
4721 # and smbconf) into shared libraries, we CAN NOT link libnetapi
4722 # dynamically to samba programs.
4724 LINK_LIBNETAPI=STATIC
4726 LINK_LIBSMBCLIENT=STATIC
4729 # The library versions are hardcoded here
4730 # and filled into the LIBFOO_SOVER variable.
4732 # TODO: for talloc and tdb (at least), these should
4733 # be extracted from their respective source directories
4735 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
4736 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
4738 if test "x$enable_external_libtalloc" != xno
4740 PKG_CHECK_MODULES(LIBTALLOC, talloc >= 1.3.0,
4741 [ enable_external_libtalloc=yes ],
4742 [ if test x$enable_external_libtalloc = xyes; then
4743 AC_MSG_ERROR([Unable to find libtalloc])
4745 enable_external_libtalloc=no
4750 if test "x$enable_external_libtalloc" = xno
4752 m4_include(../lib/talloc/libtalloc.m4)
4753 LINK_LIBTALLOC=STATIC
4754 SMB_LIBRARY(talloc, 1)
4756 for obj in ${TALLOC_OBJ}; do
4757 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
4759 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
4760 AC_SUBST(LIBTALLOC_OBJ0)
4762 TALLOCTORT="bin/talloctort\$(EXEEXT)"
4763 AC_SUBST(TALLOCTORT)
4767 AC_ARG_ENABLE(external_libtdb,
4768 [AS_HELP_STRING([--enable-external-libtdb],
4769 [Enable external tdb [default=auto]])],
4770 [ enable_external_libtalloc=$enableval ],
4771 [ enable_external_libtalloc=auto ])
4773 if test "x$enable_external_libtdb" != xno
4775 PKG_CHECK_MODULES(LIBTDB, tdb >= 1.1.4,
4776 [ enable_external_libtdb=yes ],
4778 if test x$enable_external_libtdb = xyes; then
4779 AC_MSG_ERROR([Unable to find libtdb])
4781 enable_external_libtdb=no
4786 AC_SUBST(LIBTDB_OBJ0)
4787 if test "x$enable_external_libtdb" = xno
4789 m4_include(../lib/tdb/libtdb.m4)
4793 for obj in ${TDB_OBJ}; do
4794 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
4796 AC_SUBST(LIBTDB_OBJ0)
4797 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
4799 TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
4801 TDBDUMP="bin/tdbdump\$(EXEEXT)"
4803 TDBTOOL="bin/tdbtool\$(EXEEXT)"
4805 TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
4806 AC_SUBST(TDBTORTURE)
4810 AC_ARG_ENABLE(external_liblua,
4811 [AS_HELP_STRING([--enable-external-liblua],
4812 [Enable external lua [default=auto]])],
4813 [ enable_external_liblua=$enableval ],
4814 [ enable_external_liblua=auto ])
4816 if test "x$enable_external_liblua" != xno
4818 PKG_CHECK_MODULES(LIBLUA, lua5.1 >= 5.1.4,
4819 [ enable_external_liblua=yes ],
4821 if test x$enable_external_liblua = xyes; then
4822 AC_MSG_ERROR([Unable to find liblua])
4824 enable_external_liblua=no
4829 AC_SUBST(LIBLUA_OBJ0)
4830 if test "x$enable_external_liblua" = xno
4834 LIBLUA_OBJ0="lua-5.1.4/src/lapi.o lua-5.1.4/src/lauxlib.o \
4835 lua-5.1.4/src/lbaselib.o lua-5.1.4/src/lcode.o \
4836 lua-5.1.4/src/ldblib.o lua-5.1.4/src/ldebug.o lua-5.1.4/src/ldo.o \
4837 lua-5.1.4/src/ldump.o lua-5.1.4/src/lfunc.o lua-5.1.4/src/lgc.o \
4838 lua-5.1.4/src/linit.o lua-5.1.4/src/liolib.o lua-5.1.4/src/llex.o \
4839 lua-5.1.4/src/lmathlib.o lua-5.1.4/src/lmem.o \
4840 lua-5.1.4/src/loadlib.o lua-5.1.4/src/lobject.o \
4841 lua-5.1.4/src/lopcodes.o lua-5.1.4/src/loslib.o \
4842 lua-5.1.4/src/lparser.o lua-5.1.4/src/lstate.o \
4843 lua-5.1.4/src/lstring.o lua-5.1.4/src/lstrlib.o \
4844 lua-5.1.4/src/ltable.o lua-5.1.4/src/ltablib.o lua-5.1.4/src/ltm.o \
4845 lua-5.1.4/src/lundump.o lua-5.1.4/src/lvm.o \
4846 lua-5.1.4/src/lzio.o lua-5.1.4/src/print.o"
4847 AC_SUBST(LIBLUA_OBJ0)
4850 SMB_LIBRARY(netapi, 0)
4851 SMB_LIBRARY(smbclient, 0)
4852 SMB_LIBRARY(smbsharemodes, 0)
4853 SMB_LIBRARY(addns, 0, no, [undefined API])
4856 #################################################
4857 # these tests are taken from the GNU fileutils package
4858 AC_CHECKING(how to get filesystem space usage)
4861 # Test for statvfs64.
4862 if test $space = no; then
4864 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4866 #if defined(HAVE_UNISTD_H)
4869 #include <sys/types.h>
4870 #include <sys/statvfs.h>
4873 struct statvfs64 fsd;
4874 exit (statvfs64 (".", &fsd));
4876 fu_cv_sys_stat_statvfs64=yes,
4877 fu_cv_sys_stat_statvfs64=no,
4878 fu_cv_sys_stat_statvfs64=cross)])
4879 if test $fu_cv_sys_stat_statvfs64 = yes; then
4881 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4885 # Perform only the link test since it seems there are no variants of the
4886 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4887 # because that got a false positive on SCO OSR5. Adding the declaration
4888 # of a `struct statvfs' causes this test to fail (as it should) on such
4889 # systems. That system is reported to work fine with STAT_STATFS4 which
4890 # is what it gets when this test fails.
4891 if test $space = no; then
4893 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4894 [AC_TRY_LINK([#include <sys/types.h>
4895 #include <sys/statvfs.h>],
4896 [struct statvfs fsd; statvfs (0, &fsd);],
4897 fu_cv_sys_stat_statvfs=yes,
4898 fu_cv_sys_stat_statvfs=no)])
4899 if test $fu_cv_sys_stat_statvfs = yes; then
4901 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4905 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4906 # This is not the case on ancient Linux systems.
4908 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4909 AC_TRY_COMPILE([#include <sys/types.h>
4910 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4911 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4912 if test x"$samba_cv_fsid_int" = x"yes"; then
4913 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4916 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4917 # systems use f_bsize.
4918 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4919 AC_TRY_COMPILE([#include <sys/types.h>
4920 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4921 samba_cv_frsize=yes,samba_cv_frsize=no)])
4922 if test x"$samba_cv_frsize" = x"yes"; then
4923 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4926 # Some systems use f_flag in struct statvfs while others use f_flags
4927 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
4928 AC_TRY_COMPILE([#include <sys/types.h>
4929 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
4930 samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
4931 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
4932 AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
4935 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
4936 AC_TRY_COMPILE([#include <sys/types.h>
4937 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
4938 samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
4939 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
4940 AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
4943 if test $space = no; then
4944 # DEC Alpha running OSF/1
4945 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4946 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4948 #include <sys/param.h>
4949 #include <sys/types.h>
4950 #include <sys/mount.h>
4955 exit (statfs (".", &fsd, sizeof (struct statfs)));
4957 fu_cv_sys_stat_statfs3_osf1=yes,
4958 fu_cv_sys_stat_statfs3_osf1=no,
4959 fu_cv_sys_stat_statfs3_osf1=no)])
4960 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4961 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4963 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4967 if test $space = no; then
4969 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4970 member (AIX, 4.3BSD)])
4971 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4973 #ifdef HAVE_SYS_PARAM_H
4974 #include <sys/param.h>
4976 #ifdef HAVE_SYS_MOUNT_H
4977 #include <sys/mount.h>
4979 #ifdef HAVE_SYS_VFS_H
4980 #include <sys/vfs.h>
4986 exit (statfs (".", &fsd));
4988 fu_cv_sys_stat_statfs2_bsize=yes,
4989 fu_cv_sys_stat_statfs2_bsize=no,
4990 fu_cv_sys_stat_statfs2_bsize=no)])
4991 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4992 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4994 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4998 if test $space = no; then
5000 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5001 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5002 [AC_TRY_RUN([#include <sys/types.h>
5003 #include <sys/statfs.h>
5007 exit (statfs (".", &fsd, sizeof fsd, 0));
5009 fu_cv_sys_stat_statfs4=yes,
5010 fu_cv_sys_stat_statfs4=no,
5011 fu_cv_sys_stat_statfs4=no)])
5012 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5013 if test $fu_cv_sys_stat_statfs4 = yes; then
5015 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5019 if test $space = no; then
5021 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5022 member (4.4BSD and NetBSD)])
5023 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5024 [AC_TRY_RUN([#include <sys/types.h>
5025 #ifdef HAVE_SYS_PARAM_H
5026 #include <sys/param.h>
5028 #ifdef HAVE_SYS_MOUNT_H
5029 #include <sys/mount.h>
5035 exit (statfs (".", &fsd));
5037 fu_cv_sys_stat_statfs2_fsize=yes,
5038 fu_cv_sys_stat_statfs2_fsize=no,
5039 fu_cv_sys_stat_statfs2_fsize=no)])
5040 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5041 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5043 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5047 if test $space = no; then
5049 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5050 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5051 [AC_TRY_RUN([#include <sys/types.h>
5052 #ifdef HAVE_SYS_PARAM_H
5053 #include <sys/param.h>
5055 #ifdef HAVE_SYS_MOUNT_H
5056 #include <sys/mount.h>
5058 #ifdef HAVE_SYS_FS_TYPES_H
5059 #include <sys/fs_types.h>
5064 /* Ultrix's statfs returns 1 for success,
5065 0 for not mounted, -1 for failure. */
5066 exit (statfs (".", &fsd) != 1);
5068 fu_cv_sys_stat_fs_data=yes,
5069 fu_cv_sys_stat_fs_data=no,
5070 fu_cv_sys_stat_fs_data=no)])
5071 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5072 if test $fu_cv_sys_stat_fs_data = yes; then
5074 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5079 # As a gating factor for large file support, in order to
5080 # use <4GB files we must have the following minimal support
5082 # long long, and a 64 bit off_t or off64_t.
5083 # If we don't have all of these then disable large
5086 AC_MSG_CHECKING([if large file support can be enabled])
5088 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5089 #include <sys/types.h>
5095 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5096 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5097 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5099 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5101 #################################################
5102 # check for cluster extensions
5105 AC_SUBST(CTDB_CFLAGS)
5107 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5108 [ case "$withval" in
5110 AC_MSG_WARN([--with-ctdb called without argument])
5113 CTDB_CPPFLAGS="-I$withval/include"
5117 SAVED_CPPFLAGS="$CPPFLAGS"
5118 CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS"
5119 ctdb_broken="missing or broken headers"
5121 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5122 #include "confdefs.h"
5124 #include "replace.h"
5125 #include "system/wait.h"
5126 #include "system/network.h"
5127 #define private #error __USED_RESERVED_WORD_private__
5133 AC_HAVE_DECL(CTDB_CONTROL_TRANS2_COMMIT_RETRY,[
5134 #include "confdefs.h"
5136 #include "replace.h"
5137 #include "system/wait.h"
5138 #include "system/network.h"
5142 #include <ctdb_private.h>
5144 if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then
5147 ctdb_broken="missing transaction support"
5150 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5151 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5152 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5154 #include "confdefs.h"
5156 #include "replace.h"
5157 #include "system/wait.h"
5158 #include "system/network.h"
5162 #include <ctdb_private.h>
5165 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5166 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5168 ctdb_broken="missing struct ctdb_control_tcp"
5170 #include "confdefs.h"
5172 #include "replace.h"
5173 #include "system/wait.h"
5174 #include "system/network.h"
5178 #include <ctdb_private.h>
5181 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5182 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5184 #include "confdefs.h"
5186 #include "replace.h"
5187 #include "system/wait.h"
5188 #include "system/network.h"
5192 #include <ctdb_private.h>
5194 CPPFLAGS="$SAVED_CPPFLAGS"
5196 AC_MSG_CHECKING(cluster support)
5197 AC_ARG_WITH(cluster-support,
5198 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5200 if test x"$with_cluster_support" = x ; then
5201 with_cluster_support="auto"
5204 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5205 if test "x$with_cluster_support" = "xyes"; then
5206 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5208 with_cluster_support=no
5211 if test x"$ctdb_broken" != x"no"; then
5212 if test "x$with_cluster_support" = "xyes"; then
5213 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5215 with_cluster_support=no
5218 if test "x$with_cluster_support" != "xno"; then
5219 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5220 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5226 #################################################
5227 # check for ACL support
5229 AC_MSG_CHECKING(whether to support ACLs)
5230 AC_ARG_WITH(acl-support,
5231 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5232 [ case "$withval" in
5234 with_acl_support="$withval"
5238 if test x"$with_acl_support" = x ; then
5239 with_acl_support="auto"
5242 AC_MSG_RESULT($with_acl_support)
5244 if test x"$with_acl_support" = x"no"; then
5245 AC_MSG_RESULT(Disabling ACL support)
5246 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5248 AC_MSG_NOTICE(checking whether ACL support is available:)
5251 AC_MSG_NOTICE(Using UnixWare ACLs)
5252 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5253 default_static_modules="$default_static_modules vfs_solarisacl"
5256 AC_MSG_NOTICE(Using solaris ACLs)
5257 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5258 ACL_LIBS="$ACL_LIBS -lsec"
5259 default_static_modules="$default_static_modules vfs_solarisacl"
5262 AC_MSG_NOTICE(Using HPUX ACLs)
5263 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5264 default_static_modules="$default_static_modules vfs_hpuxacl"
5267 AC_MSG_NOTICE(Using IRIX ACLs)
5268 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5269 default_static_modules="$default_static_modules vfs_irixacl"
5272 AC_MSG_NOTICE(Using AIX ACLs)
5273 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5274 default_static_modules="$default_static_modules vfs_aixacl"
5277 AC_MSG_NOTICE(Using Tru64 ACLs)
5278 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5279 ACL_LIBS="$ACL_LIBS -lpacl"
5280 default_static_modules="$default_static_modules vfs_tru64acl"
5283 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5284 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5287 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5290 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5293 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5295 LIBS="$LIBS $ACL_LIBS"
5297 #include <sys/types.h>
5298 #include <sys/acl.h>
5302 acl_entry_t *entry_p;
5303 return acl_get_entry(acl, entry_id, entry_p);
5305 [samba_cv_HAVE_POSIX_ACLS=yes],
5306 [samba_cv_HAVE_POSIX_ACLS=no])
5309 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5310 AC_MSG_NOTICE(Using posix ACLs)
5311 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5312 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5314 LIBS="$LIBS $ACL_LIBS"
5316 #include <sys/types.h>
5317 #include <sys/acl.h>
5319 acl_permset_t permset_d;
5321 return acl_get_perm_np(permset_d, perm);
5323 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5324 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5327 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5328 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5330 default_static_modules="$default_static_modules vfs_posixacl"
5332 AC_MSG_NOTICE(ACL support is not avaliable)
5333 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5337 fi # with_acl_support
5341 #################################################
5342 # check for AIO support
5344 AC_MSG_CHECKING(whether to support asynchronous io)
5345 AC_ARG_WITH(aio-support,
5346 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5347 [ case "$withval" in
5354 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5355 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5356 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5359 AC_TRY_LINK([#include <sys/types.h>
5361 [ struct aiocb a; return aio_read(&a);],
5362 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5364 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5367 AC_TRY_LINK([#include <sys/types.h>
5369 [ struct aiocb64 a; return aio_read64(&a);],
5370 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5372 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5373 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5374 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5376 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5377 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5381 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5382 AC_MSG_CHECKING(for aio_read)
5383 AC_LINK_IFELSE([#include <aio.h>
5384 int main() { struct aiocb a; return aio_read(&a); }],
5385 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5386 [AC_MSG_RESULT(no)])
5388 AC_MSG_CHECKING(for aio_write)
5389 AC_LINK_IFELSE([#include <aio.h>
5390 int main() { struct aiocb a; return aio_write(&a); }],
5391 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5392 [AC_MSG_RESULT(no)])
5394 AC_MSG_CHECKING(for aio_fsync)
5395 AC_LINK_IFELSE([#include <aio.h>
5396 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5397 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5398 [AC_MSG_RESULT(no)])
5400 AC_MSG_CHECKING(for aio_return)
5401 AC_LINK_IFELSE([#include <aio.h>
5402 int main() { struct aiocb a; return aio_return(&a); }],
5403 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5404 [AC_MSG_RESULT(no)])
5406 AC_MSG_CHECKING(for aio_error)
5407 AC_LINK_IFELSE([#include <aio.h>
5408 int main() { struct aiocb a; return aio_error(&a); }],
5409 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5410 [AC_MSG_RESULT(no)])
5412 AC_MSG_CHECKING(for aio_cancel)
5413 AC_LINK_IFELSE([#include <aio.h>
5414 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5415 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5416 [AC_MSG_RESULT(no)])
5418 AC_MSG_CHECKING(for aio_suspend)
5419 AC_LINK_IFELSE([#include <aio.h>
5420 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5421 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5422 [AC_MSG_RESULT(no)])
5425 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5426 AC_MSG_CHECKING(for aio_read64)
5427 AC_LINK_IFELSE([#include <aio.h>
5428 int main() { struct aiocb a; return aio_read64(&a); }],
5429 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5430 [AC_MSG_RESULT(no)])
5432 AC_MSG_CHECKING(for aio_write64)
5433 AC_LINK_IFELSE([#include <aio.h>
5434 int main() { struct aiocb a; return aio_write64(&a); }],
5435 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5436 [AC_MSG_RESULT(no)])
5438 AC_MSG_CHECKING(for aio_fsync64)
5439 AC_LINK_IFELSE([#include <aio.h>
5440 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5441 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5442 [AC_MSG_RESULT(no)])
5444 AC_MSG_CHECKING(for aio_return64)
5445 AC_LINK_IFELSE([#include <aio.h>
5446 int main() { struct aiocb a; return aio_return64(&a); }],
5447 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5448 [AC_MSG_RESULT(no)])
5450 AC_MSG_CHECKING(for aio_error64)
5451 AC_LINK_IFELSE([#include <aio.h>
5452 int main() { struct aiocb a; return aio_error64(&a); }],
5453 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5454 [AC_MSG_RESULT(no)])
5456 AC_MSG_CHECKING(for aio_cancel64)
5457 AC_LINK_IFELSE([#include <aio.h>
5458 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5459 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5460 [AC_MSG_RESULT(no)])
5462 AC_MSG_CHECKING(for aio_suspend64)
5463 AC_LINK_IFELSE([#include <aio.h>
5464 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5465 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5466 [AC_MSG_RESULT(no)])
5473 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5476 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5480 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5481 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5482 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5483 default_shared_modules="$default_shared_modules vfs_aio_fork"
5487 #################################################
5488 # check for sendfile support
5490 with_sendfile_support=yes
5491 AC_MSG_CHECKING(whether to check to support sendfile)
5492 AC_ARG_WITH(sendfile-support,
5493 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5494 [ case "$withval" in
5500 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5501 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5502 AC_TRY_LINK([#include <sys/sendfile.h>],
5507 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5509 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5511 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5512 AC_TRY_LINK([#include <sys/sendfile.h>],
5517 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5519 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5521 # Try and cope with broken Linux sendfile....
5522 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5524 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5525 #undef _FILE_OFFSET_BITS
5527 #include <sys/sendfile.h>],
5532 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5534 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5536 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5537 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5538 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5539 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5540 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5541 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5542 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5543 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5544 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5545 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5546 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5552 *freebsd* | *dragonfly* )
5553 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5555 #include <sys/types.h>
5557 #include <sys/socket.h>
5558 #include <sys/uio.h>],
5560 int fromfd, tofd, ret, total=0;
5561 off_t offset, nwritten;
5564 hdr.headers = &hdtrl;
5566 hdr.trailers = NULL;
5568 hdtrl.iov_base = NULL;
5570 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5572 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5574 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5575 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5576 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5577 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5584 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5586 #include <sys/socket.h>
5587 #include <sys/uio.h>],
5591 struct iovec hdtrl[2];
5595 hdtrl[0].iov_base = 0;
5596 hdtrl[0].iov_len = 0;
5598 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5600 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5601 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5602 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5603 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5604 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5609 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5611 #include <sys/socket.h>
5612 #include <sys/uio.h>],
5616 struct iovec hdtrl[2];
5620 hdtrl[0].iov_base = 0;
5621 hdtrl[0].iov_len = 0;
5623 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5625 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5626 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5627 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5628 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5629 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5636 AC_CHECK_LIB(sendfile,sendfilev)
5637 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5639 #include <sys/sendfile.h>],
5643 struct sendfilevec vec[2];
5649 vec[0].sfv_fd = SFV_FD_SELF;
5650 vec[0].sfv_flag = 0;
5655 vec[1].sfv_flag = 0;
5658 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5660 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5662 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5663 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5664 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5665 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5670 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5672 #include <sys/sendfile.h>],
5676 struct sendfilevec vec[2];
5682 vec[0].sfv_fd = SFV_FD_SELF;
5683 vec[0].sfv_flag = 0;
5688 vec[1].sfv_flag = 0;
5691 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5693 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5695 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5696 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5697 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5698 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5704 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5706 #include <sys/socket.h>],
5710 struct sf_parms hdtrl;
5714 hdtrl.header_data = 0;
5715 hdtrl.header_length = 0;
5716 hdtrl.file_descriptor = fromfd;
5717 hdtrl.file_offset = 0;
5718 hdtrl.file_bytes = 0;
5719 hdtrl.trailer_data = 0;
5720 hdtrl.trailer_length = 0;
5722 nwritten = send_file(&tofd, &hdtrl, 0);
5724 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5725 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5726 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5727 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5728 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5744 ############################################
5745 # See if we have the Linux readahead syscall.
5747 AC_CACHE_CHECK([for Linux readahead],
5748 samba_cv_HAVE_LINUX_READAHEAD,[
5750 #if defined(HAVE_UNISTD_H)
5753 #include <fcntl.h>],
5754 [ssize_t err = readahead(0,0,0x80000);],
5755 samba_cv_HAVE_LINUX_READAHEAD=yes,
5756 samba_cv_HAVE_LINUX_READAHEAD=no)])
5758 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5759 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5760 [Whether Linux readahead is available])
5763 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5765 ############################################
5766 # See if we have the posix_fadvise syscall.
5768 AC_CACHE_CHECK([for posix_fadvise],
5769 samba_cv_HAVE_POSIX_FADVISE,[
5771 #if defined(HAVE_UNISTD_H)
5774 #include <fcntl.h>],
5775 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5776 samba_cv_HAVE_POSIX_FADVISE=yes,
5777 samba_cv_HAVE_POSIX_FADVISE=no)])
5779 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5780 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5781 [Whether posix_fadvise is available])
5784 ############################################
5785 # See if we have the Linux splice syscall.
5789 AC_CACHE_CHECK([for Linux splice],
5790 samba_cv_HAVE_LINUX_SPLICE,[
5792 #if defined(HAVE_UNISTD_H)
5795 #include <fcntl.h>],
5796 [long ret = splice(0,0,1,0,400,0);],
5797 samba_cv_HAVE_LINUX_SPLICE=yes,
5798 samba_cv_HAVE_LINUX_SPLICE=no)])
5801 samba_cv_HAVE_LINUX_SPLICE=no
5805 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5806 AC_DEFINE(HAVE_LINUX_SPLICE,1,
5807 [Whether Linux splice is available])
5810 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5812 ############################################
5813 # See if we have the a broken readlink syscall.
5815 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5816 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5817 samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5819 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5820 AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5823 #################################################
5824 # Check whether winbind is supported on this platform. If so we need to
5825 # build and install client programs, sbin programs and shared libraries
5827 AC_MSG_CHECKING(whether to build winbind)
5829 # Initially, the value of $host_os decides whether winbind is supported
5834 # Define external wbclient library to link against. This disables winbind.
5835 # We define this here so --with-winbind can override it.
5836 AC_ARG_WITH(wbclient,
5837 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5850 WBCLIENT_INCLUDES="-I$withval/include"
5851 WBCLIENT_LDFLAGS="-L$withval/lib"
5856 AC_SUBST(WBCLIENT_INCLUDES)
5857 AC_SUBST(WBCLIENT_LDFLAGS)
5858 AC_SUBST(WBCLIENT_LIBS)
5861 # Define the winbind shared library name and any specific linker flags
5862 # it needs to be built with.
5864 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5865 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5866 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5867 NSSSONAMEVERSIONSUFFIX=""
5868 WINBIND_NSS_PTHREAD=""
5871 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5872 NSSSONAMEVERSIONSUFFIX=".2"
5873 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5876 # FreeBSD winbind client is implemented as a wrapper around
5877 # the Linux version.
5878 NSSSONAMEVERSIONSUFFIX=".1"
5879 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5880 ../nsswitch/winbind_nss_linux.o"
5881 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5882 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5886 # NetBSD winbind client is implemented as a wrapper
5887 # around the Linux version. It needs getpwent_r() to
5888 # indicate libc's use of the correct nsdispatch API.
5890 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5891 WINBIND_NSS_EXTRA_OBJS="\
5892 ../nsswitch/winbind_nss_netbsd.o \
5893 ../nsswitch/winbind_nss_linux.o"
5894 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5895 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5898 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5902 # IRIX has differently named shared libraries
5903 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5904 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5905 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5908 # Solaris winbind client is implemented as a wrapper around
5909 # the Linux version.
5910 NSSSONAMEVERSIONSUFFIX=".1"
5911 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5912 ../nsswitch/winbind_nss_linux.o"
5913 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5914 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5917 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5920 # AIX has even differently named shared libraries. No
5921 # WINS support has been implemented yet.
5922 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5923 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5924 WINBIND_NSS="../nsswitch/WINBIND"
5929 winbind_no_reason=", unsupported on $host_os"
5933 # Check the setting of --with-winbind
5935 AC_ARG_WITH(winbind,
5936 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5950 # We need unix domain sockets for winbind
5952 if test x"$HAVE_WINBIND" = x"yes"; then
5953 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5954 winbind_no_reason=", no unix domain socket support on $host_os"
5959 # Display test results
5961 if test x"$HAVE_WINBIND" = x"no"; then
5965 if test x"$HAVE_WBCLIENT" = x"yes"; then
5966 AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
5967 [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
5968 LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
5970 AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
5971 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5973 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5974 BUILD_LIBWBCLIENT_SHARED=no
5976 BUILD_LIBWBCLIENT_SHARED=yes
5979 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5980 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5982 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5983 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5984 ## Only worry about libwbclient if we have shared
5986 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5987 LIBWBCLIENT_TARGET=$LIBWBCLIENT_SHARED_TARGET
5988 LIBWBCLIENT=libwbclient
5989 INSTALL_LIBWBCLIENT=installlibwbclient
5990 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5991 LIBWBCLIENT_LIBS="-lwbclient"
5993 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5994 LIBWBCLIENT_TARGET=$LIBWBCLIENT_STATIC_TARGET
5995 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
5999 if test x"$HAVE_WINBIND" = x"yes"; then
6001 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6003 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6004 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6005 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6006 PAM_MODULES="$PAM_MODULES pam_winbind"
6007 INSTALL_PAM_MODULES="installpammodules"
6008 UNINSTALL_PAM_MODULES="uninstallpammodules"
6011 AC_MSG_RESULT(no$winbind_no_reason)
6014 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6015 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])
6016 samba_cv_HAVE_PTHREAD=yes],
6017 samba_cv_HAVE_PTHREAD=no)
6019 AC_SUBST(WINBIND_NSS_PTHREAD)
6020 AC_SUBST(WINBIND_NSS)
6021 AC_SUBST(WINBIND_WINS_NSS)
6022 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6023 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6024 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6025 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6026 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
6028 AC_SUBST(WINBIND_KRB5_LOCATOR)
6030 # Solaris 10 does have new member in nss_XbyY_key
6031 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6032 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6033 [#include <nss_dbdefs.h>])
6035 # Solaris has some extra fields in struct passwd that need to be
6036 # initialised otherwise nscd crashes.
6038 AC_CHECK_MEMBER(struct passwd.pw_comment,
6039 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6042 AC_CHECK_MEMBER(struct passwd.pw_age,
6043 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6046 # AIX 4.3.x and 5.1 do not have as many members in
6047 # struct secmethod_table as AIX 5.2
6048 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6049 [#include <usersec.h>])
6050 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6051 [#include <usersec.h>])
6053 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6054 AC_TRY_COMPILE([#include <sys/types.h>
6055 #include <sys/socket.h>],
6058 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6060 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6061 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6062 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6066 #################################################
6067 # Check to see if we should use the included popt
6069 AC_ARG_WITH(included-popt,
6070 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6081 if test x"$INCLUDED_POPT" != x"yes"; then
6082 AC_CHECK_LIB(popt, poptGetContext,
6083 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6086 AC_MSG_CHECKING(whether to use included popt)
6087 if test x"$INCLUDED_POPT" = x"yes"; then
6089 BUILD_POPT='$(POPT_OBJ)'
6090 POPTLIBS='$(POPT_OBJ)'
6091 FLAGS1="-I\$(srcdir)/../lib/popt"
6097 AC_SUBST(BUILD_POPT)
6101 #################################################
6102 # Check if user wants DNS service discovery support
6104 AC_ARG_ENABLE(dnssd,
6105 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6107 AC_SUBST(DNSSD_LIBS)
6108 if test x"$enable_dnssd" = x"yes"; then
6109 have_dnssd_support=yes
6111 AC_CHECK_HEADERS(dns_sd.h)
6112 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6113 have_dnssd_support=no
6116 # On Darwin the DNSSD API is in libc, but on other platforms it's
6117 # probably in -ldns_sd
6118 AC_CHECK_FUNCS(DNSServiceRegister)
6119 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6120 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6121 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6122 have_dnssd_support=no
6125 if test x"$have_dnssd_support" = x"yes"; then
6126 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6127 [Whether to enable DNS service discovery support])
6129 if test x"$enable_dnssd" = x"yes"; then
6130 AC_MSG_ERROR(DNS service discovery support not available)
6136 #################################################
6137 # Check if user wants avahi support
6139 AC_ARG_ENABLE(avahi,
6140 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6142 if test x"$enable_avahi" != x"no"; then
6143 have_avahi_support=yes
6145 AC_CHECK_HEADERS(avahi-common/watch.h)
6146 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6147 have_avahi_support=no
6150 AC_CHECK_HEADERS(avahi-client/client.h)
6151 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6152 have_avahi_support=no
6156 AC_CHECK_LIB(avahi-client, avahi_client_new)
6157 AC_CHECK_LIB(avahi-common, avahi_strerror)
6160 if test x"$ac_cv_lib_ext_avahi_client_avahi_client_new" != x"yes" -o \
6161 test x"$ac_cv_lib_ext_avahi_common_avahi_strerror" != x"yes" ; then
6162 have_avahi_support=no
6165 if test x"$have_avahi_support" = x"yes"; then
6166 AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6167 AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6168 [Whether to enable avahi support])
6169 AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6171 if test x"$enable_avahi" = x"yes"; then
6172 AC_MSG_ERROR(avahi support not available)
6177 #################################################
6178 # Check if user wants pthreadpool support
6180 AC_ARG_ENABLE(pthreadpool,
6181 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=auto)])])
6183 if test x"$enable_pthreadpool" != x"no" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6184 AC_TRY_LINK([#include "pthread.h"],
6185 [pthread_create(NULL, NULL, NULL, NULL)],
6186 ,LIBS="$LIBS -lpthread")
6187 AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6188 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6191 #################################################
6192 # Check to see if we should use the included iniparser
6194 AC_ARG_WITH(included-iniparser,
6195 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6199 INCLUDED_INIPARSER=yes
6202 INCLUDED_INIPARSER=no
6206 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6207 AC_CHECK_LIB(iniparser, iniparser_load,
6208 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6211 AC_MSG_CHECKING(whether to use included iniparser)
6212 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6214 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6216 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6220 INIPARSERLIBS="-liniparser"
6222 AC_SUBST(BUILD_INIPARSER)
6223 AC_SUBST(INIPARSERLIBS)
6228 # Checks for the vfs_fileid module
6230 AC_CHECK_FUNC(getmntent)
6232 AC_CHECK_HEADERS(sys/statfs.h)
6234 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6235 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6237 #include <sys/types.h>
6238 #include <sys/statfs.h>
6242 fsid_t fsid = fsd.f_fsid;
6243 return statfs (".", &fsd);
6245 vfsfileid_cv_statfs=yes,
6246 vfsfileid_cv_statfs=no,
6247 vfsfileid_cv_statfs=cross)
6249 AC_MSG_RESULT($vfsfileid_cv_statfs)
6251 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6252 x"$vfsfileid_cv_statfs" = x"yes"; then
6253 default_shared_modules="$default_shared_modules vfs_fileid"
6256 # Checks for the vfs_fileid module
6259 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6261 eval MODULE_DEFAULT_$i=STATIC
6264 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6266 dnl Fall back to static if we cannot build shared libraries
6267 eval MODULE_DEFAULT_$i=STATIC
6269 if test $BLDSHARED = true; then
6270 eval MODULE_DEFAULT_$i=SHARED
6274 dnl Always build these modules static
6275 MODULE_rpc_spoolss=STATIC
6276 MODULE_rpc_srvsvc=STATIC
6277 MODULE_idmap_tdb=STATIC
6278 MODULE_idmap_passdb=STATIC
6279 MODULE_idmap_nss=STATIC
6281 MODULE_nss_info_template=STATIC
6283 AC_ARG_WITH(static-modules,
6284 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6285 [ if test $withval; then
6286 for i in `echo $withval | sed -e 's/,/ /g'`
6288 eval MODULE_$i=STATIC
6292 AC_ARG_WITH(shared-modules,
6293 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6294 [ if test $withval; then
6295 for i in `echo $withval | sed -e 's/,/ /g'`
6297 eval MODULE_$i=SHARED
6301 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6302 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6303 SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6304 AC_SUBST(SMBD_FAM_LIBS)
6307 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6308 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6309 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6310 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6311 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6312 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6313 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6316 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6317 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6318 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6319 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6320 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6321 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6322 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6323 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6324 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6325 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6326 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6327 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6328 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6329 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6330 SMB_SUBSYSTEM(RPC,smbd/server.o)
6332 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6333 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6334 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6335 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6336 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6337 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6338 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6339 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6340 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6341 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6343 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6344 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6346 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6347 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6348 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6349 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6350 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6352 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6353 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6354 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6355 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6356 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6357 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6358 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6359 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6360 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6361 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6363 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6364 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6365 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6366 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6367 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6368 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6369 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6370 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6371 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6372 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6373 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6374 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6375 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6376 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6377 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6378 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6379 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6380 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6381 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6382 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6383 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6384 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6385 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6386 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6387 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6388 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6389 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6390 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6391 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6392 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6393 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6394 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6395 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6396 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6397 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6398 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6399 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6400 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6401 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6402 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6403 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6404 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6405 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6407 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6409 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6410 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6411 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6413 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6414 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6415 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6416 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6418 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6420 #################################################
6421 # do extra things if we are running insure
6423 if test "${ac_cv_prog_CC}" = "insure"; then
6424 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6427 #################################################
6428 # If run from the build farm, enable NASTY hacks
6429 #################################################
6430 AC_MSG_CHECKING(whether to enable build farm hacks)
6431 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6433 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6438 #################################################
6439 # check for bad librt/libpthread interactions
6441 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6442 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6443 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6444 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6446 SMB_IF_RTSIGNAL_BUG(
6448 # Have RT_SIGNAL bug, need to check whether the problem will
6449 # affect anything we have configured.
6452 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6453 if test x"$rt_signal_lease_ok" = x"no" ; then
6458 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6459 if test x"$rt_signal_notify_ok" = x"no" ; then
6464 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6465 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6466 if test x"$rt_signal_aio_ok" = x"no" ; then
6471 if test x"$rt_do_error" = x"yes" ; then
6472 SMB_IS_LIBPTHREAD_LINKED(
6476 *** On this platforms, linking Samba against pthreads causes problems
6477 *** with the oplock and change notification mechanisms. You may be
6478 *** using pthreads as a side-effect of using the --with-aio-support
6479 *** or --with-profiling-data options. Please remove these and try again.
6486 *** On this platform, the oplock and change notification mechanisms do not
6487 *** appear to work. Please report this problem to samba-technical@samba.org
6488 *** and attach the config.log file from this directory.
6492 AC_MSG_ERROR(unable to use realtime signals on this platform)
6496 # no RT_SIGNAL bug, we are golden
6497 SMB_IS_LIBPTHREAD_LINKED(
6499 AC_MSG_WARN(using libpthreads - this may degrade performance)
6504 # cross compiling, I hope you know what you are doing
6510 AC_ARG_ENABLE(merged-build,
6511 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])],
6512 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6514 if test x"$enable_merged_build" = x"yes" -a \
6515 x"$merged_build_possible" = x"no" ; then
6516 AC_MSG_ERROR(Merged build required but not possible)
6519 m4_include(../lib/zlib/zlib.m4)
6521 if test x$enable_merged_build = xauto; then
6523 m4_include(../m4/check_python.m4)
6524 AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6526 AC_MSG_CHECKING([whether it would be possible to do a merged build])
6527 AC_MSG_RESULT([$merged_build_possible])
6529 # Enable merged build automatically if possible, when in developer mode
6530 if test "x$developer" = xyes; then
6531 enable_merged_build=$merged_build_possible
6535 if test x$enable_merged_build = xyes; then
6537 saved_USESHARED="$USESHARED"
6539 m4_include(samba4.m4)
6540 USESHARED="$saved_USESHARED"
6545 AC_ZLIB([ZLIB_OBJS=""], [
6547 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6548 deflate.o trees.o zutil.o inflate.o infback.o \
6549 inftrees.o inffast.o
6551 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6553 CFLAGS="-I../lib/zlib $CFLAGS"
6556 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6558 if test "x$enable_dmalloc" = xyes
6560 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6561 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6562 [Define to check invariants around some common functions])
6563 LIBS="$LIBS -ldmalloc"
6566 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6567 LIB_REMOVE_USR_LIB(LDFLAGS)
6568 LIB_REMOVE_USR_LIB(LIBS)
6570 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6571 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6572 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6574 #################################################
6575 # Display summary of libraries detected
6577 AC_MSG_RESULT([Using libraries:])
6578 AC_MSG_RESULT([ LIBS = $LIBS])
6579 if test x"$with_ads_support" != x"no"; then
6580 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6582 if test x"$with_ldap_support" != x"no"; then
6583 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6585 if test x"$with_dnsupdate_support" != x"no"; then
6586 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6588 if test x"$have_dnssd_support" != x"no"; then
6589 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6591 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6593 #################################################
6594 # final configure stuff
6596 AC_MSG_CHECKING([configure summary])
6597 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6599 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6600 AC_MSG_WARN([cannot run when cross-compiling]))
6602 dnl Merge in developer cflags from now on
6603 AC_SUBST(DEVELOPER_CFLAGS)
6604 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6605 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6608 # Stuff the smbd-only libraries at the end of the smbd link
6609 # path (if we have them).
6610 SMBD_LIBS="$samba_dmapi_libs"
6613 CFLAGS="${CFLAGS} \$(FLAGS)"
6615 if test x$MERGED_BUILD != x1; then
6616 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6618 if test x"$BLDSHARED" = x"true" ; then
6619 LDFLAGS="$LDFLAGS -L./bin"
6624 if test x$samba_cv_gnu_make = xyes; then
6627 # When we don't have GNU Make, generate a copy of Makefile.in
6628 # that doesn't have the "include " statements but just includes
6629 # the files verbatim.
6630 MAKEFILE=Makefile-noincludes
6631 $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6634 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6635 lib/netapi/examples/Makefile
6636 lib/netapi/tests/Makefile
6637 pkgconfig/smbclient.pc
6638 pkgconfig/wbclient.pc
6640 pkgconfig/smbsharemodes.pc
6641 ../examples/libsmbclient/Makefile.internal
6643 dnl If we had to expand the includes, make tsure the output file is moved back
6644 AC_OUTPUT_COMMANDS([
6645 if test x$MAKEFILE != Makefile; then
6646 mv $MAKEFILE Makefile
6650 #################################################
6651 # Print very concise instructions on building/use
6652 if test "x$enable_dmalloc" = xyes
6654 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6655 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])