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/autoconf/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
25 AC_LIBREPLACE_CC_CHECKS
26 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
28 m4_include(../lib/tevent/libtevent.m4)
29 m4_include(../lib/ccan/libccan.m4)
32 for obj in ${TEVENT_OBJ}; do
33 LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
35 AC_SUBST(LIBTEVENT_OBJ0)
36 LIBS="${LIBS} ${TEVENT_LIBS}"
38 SAMBA_CPPFLAGS="-Iinclude/autoconf -Iautoconf -Iautoconf/source3"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
42 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CCAN_CFLAGS}"
43 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
44 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
45 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/tdb_compat"
47 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
49 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
50 if test "x${srcdir-.}" != "x."; then
51 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
54 dnl Unique-to-Samba variables we'll be playing with.
55 AC_SUBST(SAMBA_CPPFLAGS)
60 AC_SUBST(MODULE_EXPORTS)
66 AC_SUBST(RELRO_LDFLAGS)
68 AC_SUBST(INSTALLLIBCMD_SH)
69 AC_SUBST(INSTALLLIBCMD_A)
70 AC_SUBST(UNINSTALLLIBCMD_SH)
71 AC_SUBST(UNINSTALLLIBCMD_A)
73 AC_SUBST(INSTALL_LIBWBCLIENT)
74 AC_SUBST(UNINSTALL_LIBWBCLIENT)
75 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
76 AC_SUBST(LIBWBCLIENT_SHARED_TARGET_SOVER)
77 AC_SUBST(LIBWBCLIENT_SHARED_TARGET_FULLVER)
78 AC_SUBST(LIBWBCLIENT_SHARED)
79 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
80 AC_SUBST(LIBWBCLIENT_STATIC)
81 AC_SUBST(LIBWBCLIENT_SOVER)
82 AC_SUBST(LIBWBCLIENT_FULLVER)
84 AC_SUBST(LIBWBCLIENT_LIBS)
86 AC_SUBST(LIBSAMBAUTIL_SHARED)
97 AC_SUBST(INSTALL_PAM_MODULES)
98 AC_SUBST(UNINSTALL_PAM_MODULES)
100 AC_SUBST(EXTRA_BIN_PROGS)
101 AC_SUBST(CIFSMOUNT_PROGS)
102 AC_SUBST(INSTALL_CIFSMOUNT)
103 AC_SUBST(UNINSTALL_CIFSMOUNT)
104 AC_SUBST(CIFSUMOUNT_PROGS)
105 AC_SUBST(INSTALL_CIFSUMOUNT)
106 AC_SUBST(UNINSTALL_CIFSUMOUNT)
107 AC_SUBST(CIFSUPCALL_PROGS)
108 AC_SUBST(INSTALL_CIFSUPCALL)
109 AC_SUBST(UNINSTALL_CIFSUPCALL)
110 AC_SUBST(EXTRA_SBIN_PROGS)
111 AC_SUBST(EXTRA_ALL_TARGETS)
112 AC_SUBST(CONFIG_LIBS)
115 # compile with optimization and without debugging by default, but
116 # allow people to set their own preference.
117 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
118 # if it has no value. This prevent *very* large debug binaries from occurring
120 if test "x$debug" = "xyes" ; then
121 CFLAGS="${CFLAGS} -g"
123 if test "x$CFLAGS" = x; then
127 m4_include(../lib/socket_wrapper/config.m4)
128 m4_include(../lib/nss_wrapper/config.m4)
129 m4_include(../lib/uid_wrapper/config.m4)
131 m4_include(m4/swat.m4)
133 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
135 # Probe the gcc version for extra CFLAGS. We always stash these in
136 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
137 # Makefile edit, avoiding the need to re-run configure.
138 if test x"$ac_cv_prog_gcc" = x"yes" ; then
139 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
140 # Add -Wdeclaration-after-statement if compiler supports it
142 [that the C compiler understands -Wdeclaration-after-statement],
143 samba_cv_HAVE_Wdeclaration_after_statement, [
148 }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
149 samba_cv_HAVE_Wdeclaration_after_statement=yes,
150 samba_cv_HAVE_Wdeclaration_after_statement=no,
151 samba_cv_HAVE_Wdeclaration_after_statement=cross)
154 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
155 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
158 #-Werror-implicit-function-declaration
160 [that the C compiler understands -Werror-implicit-function-declaration],
161 samba_cv_HAVE_Werror_implicit_function_declaration, [
166 }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
167 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
168 samba_cv_HAVE_Werror_implicit_function_declaration=no,
169 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
171 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
172 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
175 # krb5developer is like developer, except we don't get
176 # -Wstrict-prototypes.
177 if test x"$krb5_developer" != x"$yes" ; then
178 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
181 if test x"$picky_developer" = x"yes"; then
182 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
186 #################################################
187 # check for a shared memory profiling support
188 AC_MSG_CHECKING(whether to use profiling)
189 AC_ARG_WITH(profiling-data,
190 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
194 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
195 samba_cv_WITH_PROFILE=yes
199 samba_cv_WITH_PROFILE=no
208 m4_include(../m4/check_make.m4)
209 AC_SAMBA_GNU_MAKE([true], [true])
211 selftest_possible="yes"
214 m4_include(../m4/check_perl.m4)
215 AC_SAMBA_PERL([true], [selftest_possible=no])
218 m4_include(../m4/check_python.m4)
219 AC_SAMBA_PYTHON_DEVEL([true], [selftest_possible=no])
221 AC_CHECK_TOOL(AR, ar)
223 dnl Check if we (actually our C compiler!) use GNU ld
226 dnl Certain versions of GNU ld the default is not to have the
227 dnl --allow-shlib-undefined flag defined. This causes a stackload of
228 dnl warnings when building modules.
229 if test "$ac_cv_prog_gnu_ld" = "yes"; then
230 ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>&1 < /dev/null | grep "GNU ld"`
231 AC_MSG_CHECKING(GNU ld release date)
233 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'`
235 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
236 if test -n "$ac_cv_gnu_ld_date"; then
237 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
238 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
240 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
241 ac_cv_gnu_ld_version_script=yes
244 AC_MSG_CHECKING(GNU ld release version)
246 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | awk '{print $NF}' | sed -n 's,\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
247 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
248 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
250 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
251 AC_MSG_CHECKING(GNU ld release version major)
252 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
253 AC_MSG_CHECKING(GNU ld release version minor)
254 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
255 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
256 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
258 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
259 ac_cv_gnu_ld_version_script=yes
264 dnl Check if C compiler understands -c and -o at the same time
266 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
273 dnl Check if the C compiler understands -Werror (GNU)
274 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
279 }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
280 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
281 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
282 Werror_FLAGS="-Werror"
284 dnl Check if the C compiler understands -w2
285 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
290 }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
291 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
292 if test x"$samba_cv_HAVE_w2" = x"yes"; then
295 dnl Check if the C compiler understands -errwarn (Sun)
296 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
301 }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
302 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
303 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
304 Werror_FLAGS="-errwarn=%all"
306 dnl Check if the C compiler understands -qhalt (IBM)
307 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
312 }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
313 samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
314 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
315 Werror_FLAGS="-qhalt=w"
321 ############################################
322 # check if the compiler can handle negative enum values
323 # and don't truncate the values to INT_MAX
324 # a runtime test is needed here
326 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
330 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
332 enum negative_values v1 = NEGATIVE_VALUE;
333 unsigned v2 = NEGATIVE_VALUE;
335 if (v1 != 0xFFFFFFFF) {
336 printf("%u != 0xFFFFFFFF\n", v1);
339 if (v2 != 0xFFFFFFFF) {
340 printf("%u != 0xFFFFFFFF\n", v2);
347 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv_CC_NEGATIVE_ENUM_VALUES=no)])
348 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
349 AC_MSG_WARN([using --uint-enums for pidl])
350 PIDL_ARGS="$PIDL_ARGS --uint-enums"
353 dnl Figure out the flags to support named structure initializers
355 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
357 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
358 AC_MSG_CHECKING(uname -s)
359 AC_MSG_RESULT(${UNAME_S})
361 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
362 AC_MSG_CHECKING(uname -r)
363 AC_MSG_RESULT(${UNAME_R})
365 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
366 AC_MSG_CHECKING(uname -m)
367 AC_MSG_RESULT(${UNAME_M})
369 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
370 AC_MSG_CHECKING(uname -p)
371 AC_MSG_RESULT(${UNAME_P})
373 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
374 AC_MSG_CHECKING(uname -i)
375 AC_MSG_RESULT(${UNAME_I})
377 dnl Add #include for broken IRIX header files
380 #TODO add to libreplace
381 if test x"$ac_cv_prog_gcc" != x"yes" ; then
382 dnl Fix sensible defaults for MIPSPro compilers. The
383 dnl error numbers are valid for the 7.3 compilers,
384 dnl hopefully also valid for the 7.4 series.
386 dnl Bugzilla 3801. Force an error on warning 1035
387 dnl so we don't incorrectly detect stdint.h. This
388 dnl warning is emitted for #error directives.
389 CFLAGS="$CFLAGS -diag_error 1035"
390 dnl 1209: Controlling expression is constant
391 dnl 1174: Function foo declared but never referenced
392 dnl 3201: Parameter foo was never referenced
393 CFLAGS="$CFLAGS -woff 1209,1174,3201"
401 AC_SUBST(LDSHFLAGS_Z_DEFS)
403 AC_SUBST(LDSHFLAGS_Z_NODEFS)
405 dnl Add modules that have to be built by default here
406 dnl These have to be built static:
407 default_static_modules=""
408 default_static_modules="$default_static_modules pdb_smbpasswd"
409 default_static_modules="$default_static_modules pdb_tdbsam"
410 default_static_modules="$default_static_modules pdb_wbc_sam"
411 default_static_modules="$default_static_modules rpc_lsarpc"
412 default_static_modules="$default_static_modules rpc_samr"
413 default_static_modules="$default_static_modules rpc_winreg"
414 default_static_modules="$default_static_modules rpc_initshutdown"
415 default_static_modules="$default_static_modules rpc_dssetup"
416 default_static_modules="$default_static_modules rpc_wkssvc"
417 default_static_modules="$default_static_modules rpc_svcctl"
418 default_static_modules="$default_static_modules rpc_ntsvcs"
419 default_static_modules="$default_static_modules rpc_netlogon"
420 default_static_modules="$default_static_modules rpc_netdfs"
421 default_static_modules="$default_static_modules rpc_srvsvc"
422 default_static_modules="$default_static_modules rpc_spoolss"
423 default_static_modules="$default_static_modules rpc_eventlog"
424 default_static_modules="$default_static_modules auth_sam"
425 default_static_modules="$default_static_modules auth_unix"
426 default_static_modules="$default_static_modules auth_winbind"
427 default_static_modules="$default_static_modules auth_wbc"
428 default_static_modules="$default_static_modules auth_domain"
429 default_static_modules="$default_static_modules auth_builtin"
430 default_static_modules="$default_static_modules vfs_default"
431 default_static_modules="$default_static_modules nss_info_template"
433 dnl These are preferably build shared, and static if dlopen() is not available
434 default_shared_modules=""
435 default_shared_modules="$default_shared_modules vfs_recycle"
436 default_shared_modules="$default_shared_modules vfs_audit"
437 default_shared_modules="$default_shared_modules vfs_extd_audit"
438 default_shared_modules="$default_shared_modules vfs_full_audit"
439 default_shared_modules="$default_shared_modules vfs_netatalk"
440 default_shared_modules="$default_shared_modules vfs_fake_perms"
441 default_shared_modules="$default_shared_modules vfs_default_quota"
442 default_shared_modules="$default_shared_modules vfs_readonly"
443 default_shared_modules="$default_shared_modules vfs_cap"
444 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
445 default_shared_modules="$default_shared_modules vfs_shadow_copy"
446 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
447 default_shared_modules="$default_shared_modules auth_script"
448 default_shared_modules="$default_shared_modules vfs_readahead"
449 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
450 default_shared_modules="$default_shared_modules vfs_streams_xattr"
451 default_shared_modules="$default_shared_modules vfs_streams_depot"
452 default_shared_modules="$default_shared_modules vfs_acl_xattr"
453 default_shared_modules="$default_shared_modules vfs_acl_tdb"
454 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
455 default_shared_modules="$default_shared_modules vfs_preopen"
456 default_shared_modules="$default_shared_modules vfs_catia"
457 default_shared_modules="$default_shared_modules vfs_scannedonly"
458 default_shared_modules="$default_shared_modules vfs_crossrename"
459 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
460 default_shared_modules="$default_shared_modules vfs_time_audit"
461 default_shared_modules="$default_shared_modules vfs_media_harmony"
462 default_shared_modules="$default_shared_modules idmap_autorid"
463 default_shared_modules="$default_shared_modules idmap_tdb2"
464 default_shared_modules="$default_shared_modules idmap_rid"
465 default_shared_modules="$default_shared_modules idmap_hash"
467 if test "x$developer" = xyes; then
468 default_shared_modules="$default_shared_modules perfcount_test"
471 if test x"$selftest" = x"yes" -o "x$developer" = xyes; then
472 default_shared_modules="$default_shared_modules vfs_fake_acls"
476 # Config CPPFLAG settings for strange OS's that must be set
477 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
478 # case statement; its first reference must be unconditional.
483 # Defines needed for HPUX support.
484 # HPUX has bigcrypt but (sometimes?) doesn't use it for
485 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
489 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
495 # AIX4.x doesn't even admit to having large
496 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
499 AC_MSG_RESULT([enabling large file support])
500 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
501 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
504 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
505 # to the existance of large files..
507 # Solaris uses SYSV printing. Make sure to set that here. --jerry
510 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
511 LDFLAGS="$LDFLAGS -lthread"
512 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
515 # IRIX uses SYSV printing. Make sure to set that here
518 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
520 *freebsd*|*dragonfly*)
521 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
524 # VOS may need to have POSIX support and System V compatibility enabled.
531 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
532 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
536 *-D_SYSV*|*-D_SVID_SOURCE*)
539 CPPFLAGS="$CPPFLAGS -D_SYSV"
540 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
545 *linux* | *hurd* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
546 CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
547 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
551 # MacOS X is the *only* system that uses compose character in utf8. This
552 # is so horribly broken....
555 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
557 # Add a system specific charset module.
558 default_shared_modules="$default_shared_modules"
566 SAVE_CPPFLAGS="${CPPFLAGS}"
567 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
569 AC_LIBREPLACE_BROKEN_CHECKS
570 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
571 AC_LIBREPLACE_NETWORK_CHECKS
573 CPPFLAGS="${SAVE_CPPFLAGS}"
575 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
577 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
578 AC_SUBST(LIBREPLACE_OBJS)
580 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS} ${LIBREPLACE_FILESYS_LIBS}"
581 AC_SUBST(LIBREPLACE_LIBS)
584 # add -ldl to the global LIBS
585 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
586 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
589 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
590 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
591 AC_CHECK_HEADERS(limits.h float.h libintl.h)
592 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
593 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h)
594 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
595 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
596 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
597 AC_CHECK_HEADERS(sys/sysmacros.h)
598 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
599 AC_CHECK_HEADERS(langinfo.h locale.h)
600 AC_CHECK_HEADERS(xfs/libxfs.h)
601 AC_CHECK_HEADERS(netgroup.h)
602 AC_CHECK_HEADERS(linux/falloc.h)
603 AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h)
605 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
611 if test "x$ac_cv_header_CommonCrypto_CommonDigest_h" != "xyes"
613 CRYPTO_MD5_OBJ="../lib/crypto/md5.o"
615 AC_SUBST(CRYPTO_MD5_OBJ)
617 ## These fail to compile on IRIX so just check for their presence
618 AC_CHECK_HEADERS(sys/mode.h,,,)
620 # Look for Darwin headers
621 old_CPPFLAGS="$CPPFLAGS"
622 CPPFLAGS="-Iinclude $CPPFLAGS"
623 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
624 CPPFLAGS="$old_CPPFLAGS"
626 # To link lib/util/charset/charset_macosxfs.c, we need to tell the linker
627 # about CoreFoundation, at least on os X 10.4..10.7 resp. darwin8..12
630 LDFLAGS="$LDFLAGS -framework CoreFoundation"
634 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
635 # subdirectory of headers.
636 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
638 if test x"$enable_developer" = x"yes" ; then
639 if test x"$ac_cv_header_valgrind_h" = xyes -o \
640 x"$ac_cv_header_valgrind_valgrind_h" = xyes ; then
641 AC_DEFINE(VALGRIND,1,[Whether we have valgrind headers])
646 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
647 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
651 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
652 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
653 if test x"$ac_cv_header_shadow_h" = x"yes"; then
654 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
658 AC_CHECK_HEADERS(shadow.h)
659 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
660 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
662 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
664 # For experimental utmp support (lastlog on some BSD-like systems)
665 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
667 AC_CHECK_SIZEOF(int,cross)
668 AC_CHECK_SIZEOF(long,cross)
669 AC_CHECK_SIZEOF(long long,cross)
670 AC_CHECK_SIZEOF(short,cross)
685 AC_CHECK_TYPE(ssize_t, int)
686 AC_CHECK_TYPE(wchar_t, unsigned short)
688 ############################################
689 # for cups support we need libcups, and a handful of header files
692 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
694 if test x$enable_cups != xno; then
695 AC_PATH_PROG(CUPS_CONFIG, cups-config)
697 if test "x$CUPS_CONFIG" != x; then
699 ac_save_LDFLAGS=$LDFLAGS
700 ac_save_PRINT_LIBS=$PRINT_LIBS
701 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
703 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
704 x"$ac_cv_header_cups_language_h" = xyes; then
705 # try linking with -lcups alone first. That should work unless libcups is
706 # underlinked. With cups-config --libs we pull in unwanted and unneeded
707 # dendencies including thread libraries - use cups-config only if really
709 AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
710 [PRINT_LIBS="$ac_save_PRINT_LIBS -lcups"],
711 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
712 PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
714 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
715 samba_cv_HAVE_CUPS=yes
716 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
718 AC_MSG_WARN([cups-config around but cups-devel not installed])
719 CFLAGS=$ac_save_CFLAGS
720 LDFLAGS=$ac_save_LDFLAGS
721 PRINT_LIBS=$ac_save_PRINT_LIBS
724 elif test x"$enable_cups" = x"yes"; then
725 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
729 AC_ARG_ENABLE(iprint,
730 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
732 if test x$enable_iprint != xno; then
733 if test x"$samba_cv_HAVE_CUPS" = xyes; then
734 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
735 elif test x"$enable_iprint" = x"yes"; then
736 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
740 ############################################
741 # check if the compiler will optimize out function calls
742 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
747 this_function_does_not_exist();
753 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
754 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
755 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
758 #############################################
759 # check for fd passing struct via msg_control
760 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
762 #include <sys/types.h>
765 #include <sys/socket.h>
766 #include <sys/un.h>],
771 char control[CMSG_SPACE(sizeof(int))];
773 msg.msg_control = control_un.control;
774 msg.msg_controllen = sizeof(control_un.control);
776 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
777 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
778 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
779 [If we can use msg_control for passing file descriptors])
782 #############################################
783 # check for fd passing struct via msg_acctrights
784 AC_CACHE_CHECK([for fd passing via msg_acctrights],
785 samba_cv_msghdr_msg_acctrights, [
787 #include <sys/types.h>
790 #include <sys/socket.h>
791 #include <sys/un.h>],
795 msg.msg_acctrights = (caddr_t) &fd;
796 msg.msg_acctrightslen = sizeof(fd);
798 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
799 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
800 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
801 [If we can use msg_acctrights for passing file descriptors])
804 AC_CHECK_FUNCS(dirfd)
805 if test x"$ac_cv_func_dirfd" = x"yes"; then
806 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
809 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
811 #include <sys/types.h>
816 #include <signal.h>],[struct sigevent s;],
817 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
818 if test x"$samba_cv_struct_sigevent" = x"yes"; then
819 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
820 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
821 [#include <signal.h>])
824 # and glibc has setresuid under linux but the function does
825 # nothing until kernel 2.1.44! very dumb.
826 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
827 AC_TRY_RUN([#include <errno.h>
828 main() { setresuid(1,1,1); setresuid(2,2,2); return(errno==EPERM?0:1);}],
829 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
830 if test x"$samba_cv_have_setresuid" = x"yes"; then
831 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
834 # Do the same check for setresguid...
836 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
837 AC_TRY_RUN([#include <unistd.h>
839 main() { errno = 0; setresgid(1,1,1); return(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
840 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
841 if test x"$samba_cv_have_setresgid" = x"yes"; then
842 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
847 ###############################################
848 # Readline included by default unless explicitly asked not to
849 test "${with_readline+set}" != "set" && with_readline=yes
851 # test for where we get readline() from
852 AC_MSG_CHECKING(whether to use readline)
853 AC_ARG_WITH(readline,
854 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
855 [ case "$with_readline" in
859 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
860 AC_CHECK_HEADERS(readline/history.h)
862 AC_CHECK_HEADERS(readline.h readline/readline.h,[
863 for termlib in ncurses curses termcap terminfo termlib tinfo; do
864 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
866 AC_CHECK_LIB(readline, rl_callback_handler_install,
867 [TERMLIBS="-lreadline $TERMLIBS"
868 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
869 break], [TERMLIBS=], $TERMLIBS)])
877 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
878 # alternate readline path
880 _cppflags=${CPPFLAGS}
882 # Add additional search path
883 LDFLAGS="-L$with_readline/lib $LDFLAGS"
884 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
886 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
887 AC_CHECK_HEADERS(readline/history.h)
889 AC_CHECK_HEADERS(readline.h readline/readline.h,[
890 for termlib in ncurses curses termcap terminfo termlib; do
891 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
893 AC_CHECK_LIB(readline, rl_callback_handler_install,
894 [TERMLDFLAGS="-L$with_readline/lib"
895 TERMCPPFLAGS="-I$with_readline/include"
896 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
897 TERMLIBS="-lreadline $TERMLIBS"
898 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
899 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
907 AC_SUBST(TERMLDFLAGS)
909 # The readline API changed slightly from readline3 to readline4, so
910 # code will generate warnings on one of them unless we have a few
912 AC_CHECK_LIB(readline, rl_completion_matches,
913 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
914 [Do we have rl_completion_matches?])],
918 # not all readline libs have rl_event_hook or history_list
919 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
920 AC_CHECK_LIB(readline, history_list,
921 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
925 ###############################################
926 # test for where we get yp_get_default_domain() from
927 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
928 AC_CHECK_FUNCS(yp_get_default_domain)
930 # Check if we have execl, if not we need to compile smbrun.
931 AC_CHECK_FUNCS(execl)
932 if test x"$ac_cv_func_execl" = x"no"; then
933 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun"
936 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
937 AC_CHECK_FUNCS(strtol)
938 AC_CHECK_FUNCS(strchr chflags)
939 AC_CHECK_FUNCS(getrlimit fsync setpgid)
940 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
941 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
942 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
943 AC_CHECK_FUNCS(initgroups select rdchk getgrnam getgrent pathconf)
944 AC_CHECK_FUNCS(getgrset)
945 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups syscall sysconf)
946 AC_CHECK_FUNCS(atexit grantpt posix_fallocate)
947 AC_CHECK_FUNCS(fallocate)
948 AC_CHECK_FUNCS(fseeko setluid getpwanam)
949 AC_CHECK_FUNCS(fdopendir)
950 AC_CHECK_FUNCS(getpwent_r)
951 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
952 AC_CHECK_FUNCS(syslog vsyslog timegm)
953 AC_CHECK_FUNCS(setlocale)
954 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
955 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
956 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
957 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
958 AC_CHECK_HEADERS(sys/mman.h)
959 # setbuffer, shmget, shm_open are needed for smbtorture
960 AC_CHECK_FUNCS(shmget shm_open)
961 AC_CHECK_FUNCS(gettext dgettext)
962 AC_CHECK_FUNCS(bindtextdomain textdomain bind_textdomain_codeset)
963 AC_CHECK_FUNCS(strupr)
965 # Find a method of generating a stack trace
966 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
967 # libexecinfo provides backtrace_symbols on FreeBSD
968 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
969 AC_CHECK_FUNCS(backtrace_symbols)
970 AC_CHECK_LIB(exc, trace_back_stack)
972 # check for sysctlbyname and sysctl for BSD systems
973 AC_CHECK_FUNCS(sysctlbyname)
974 AC_CHECK_FUNCS(sysctl)
976 #################################################
977 # Check to see if core dump directory is defined in linux
978 # with /proc/sys/kernel/core_pattern
980 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
981 AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
982 [Whether Linux kernel uses core_pattern for core files]),
985 #############################
986 # check if building with gpfs
987 AC_CHECK_HEADERS(gpfs_gpl.h)
988 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
989 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
990 default_shared_modules="$default_shared_modules vfs_gpfs"
993 # Note that all the libunwind symbols in the API are defined to internal
994 # platform-specific version, so we must include libunwind.h before checking
996 AC_MSG_CHECKING([for libunwind])
999 UNWIND_ARCH="unknown"
1000 if test x"$UNAME_I" != x"unknown"; then
1001 UNWIND_ARCH="$UNAME_I"
1002 elif test x"$UNAME_M" != x"unknown"; then
1003 UNWIND_ARCH="$UNAME_M"
1004 elif test x"$UNAME_P" != x"unknown"; then
1005 UNWIND_ARCH="$UNAME_P"
1008 case "$UNWIND_ARCH" in
1010 # This probably won't link without
1011 # the platform-specific libunwind.
1012 LIBS="$LIBS -lunwind"
1015 # Add the platform-specific libunwind module.
1016 LIBS="$LIBS -lunwind -lunwind-x86"
1019 # Add the platform-specific libunwind module.
1020 # based on uname -i, uname -m or uname -p
1021 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1027 #ifdef HAVE_LIBUNWIND_H
1028 #include <libunwind.h>
1032 unw_context_t ctx; unw_cursor_t cur;
1033 char buf[256]; unw_word_t off;
1034 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1035 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1039 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1041 # If we have libunwind, test whether we also have libunwind-ptrace
1042 # which would let us unwind arbitrary processes.
1044 AC_CHECK_HEADERS(libunwind-ptrace.h)
1045 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1047 LIBUNWIND_PTRACE="-lunwind-ptrace";
1048 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1049 [Whether libunwind-ptrace.a is available.])
1051 [ LIBUNWIND_PTRACE="" ])
1060 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1061 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1062 AC_CHECK_HEADERS(sys/ptrace.h)
1063 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1066 #if HAVE_SYS_TYPES_H
1067 #include <sys/types.h>
1069 #if HAVE_SYS_PTRACE_H
1070 #include <sys/ptrace.h>
1074 pid_t me = (pid_t)-1;
1075 ptrace(PTRACE_ATTACH, me, 0, 0);
1076 ptrace(PTRACE_DETACH, me, 0, 0);
1081 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1082 [Whether the Linux ptrace(2) interface is available.])
1090 AC_SUBST(LIBUNWIND_PTRACE)
1092 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1093 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1094 AC_CHECK_FUNCS(__getcwd _getcwd)
1095 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1096 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1097 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1098 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1099 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1100 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1101 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek)
1102 AC_CHECK_FUNCS(pread _pread __pread)
1103 AC_CHECK_FUNCS(pwrite _pwrite __pwrite)
1104 AC_CHECK_FUNCS(prctl)
1107 #ifdef HAVE_SYS_PRCTL_H
1108 #include <sys/prctl.h>
1111 [int i; i = prtcl(0); ],
1112 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1118 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1119 # glibc <= 2.3.2 has a broken getgrouplist
1120 AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1122 #include <sys/utsname.h>
1124 /* glibc up to 2.3 has a broken getgrouplist */
1125 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1126 int libc_major = __GLIBC__;
1127 int libc_minor = __GLIBC_MINOR__;
1131 if ((libc_major == 2) && (libc_minor <= 3))
1136 ], [samba_cv_linux_getgrouplist_ok=yes],
1137 [samba_cv_linux_getgrouplist_ok=no],
1138 [samba_cv_linux_getgrouplist_ok=cross])])
1139 if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1140 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1144 AC_CHECK_FUNCS(getgrouplist)
1148 #################################################
1149 # Check whether struct stat has timestamps with sub-second resolution.
1152 samba_cv_stat_hires=no
1153 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1154 [samba_cv_stat_hires=yes])
1155 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1156 [samba_cv_stat_hires=yes])
1157 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1158 [samba_cv_stat_hires=yes])
1159 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1160 [samba_cv_stat_hires=yes])
1161 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1162 [samba_cv_stat_hires=yes])
1164 if test x"$samba_cv_stat_hires" = x"yes" ; then
1165 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1166 [whether struct stat has sub-second timestamps])
1169 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1170 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1171 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1174 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1177 [#include <sys/stat.h>],
1179 int a = UF_DOS_ARCHIVE;
1180 int h = UF_DOS_HIDDEN;
1182 int s = UF_DOS_SYSTEM;
1183 int i = UF_DOS_NOINDEX;
1184 int f = UF_DOS_FLAGS;
1186 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1189 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1190 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1193 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1194 samba_cv_function_attribute_destructor,
1196 AC_COMPILE_IFELSE([AC_LANG_SOURCE(
1198 __attribute__((destructor))
1199 static void cleanup(void) { }
1201 samba_cv_function_attribute_destructor=yes)
1204 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1205 AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1206 [whether we can compile with __attribute__((destructor))])
1209 #####################################
1210 # needed for SRV lookups
1211 AC_CHECK_LIB(resolv, dn_expand)
1212 AC_CHECK_LIB(resolv, _dn_expand)
1213 AC_CHECK_LIB(resolv, __dn_expand)
1214 AC_CHECK_LIB(inet, dn_expand)
1217 # Check for the functions putprpwnam, set_auth_parameters,
1218 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1219 # Needed for OSF1 and HPUX.
1222 AC_LIBTESTFUNC(security, putprpwnam)
1223 AC_LIBTESTFUNC(sec, putprpwnam)
1225 AC_LIBTESTFUNC(security, set_auth_parameters)
1226 AC_LIBTESTFUNC(sec, set_auth_parameters)
1228 # UnixWare 7.x has its getspnam in -lgen
1229 AC_LIBTESTFUNC(gen, getspnam)
1231 AC_LIBTESTFUNC(security, getspnam)
1232 AC_LIBTESTFUNC(sec, getspnam)
1234 AC_LIBTESTFUNC(security, bigcrypt)
1235 AC_LIBTESTFUNC(sec, bigcrypt)
1237 AC_LIBTESTFUNC(security, getprpwnam)
1238 AC_LIBTESTFUNC(sec, getprpwnam)
1240 AC_CHECK_FUNCS(strsignal)
1248 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1250 if test "x$enable_pie" != xno
1252 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1254 cat > conftest.c <<EOF
1256 int main () { return 0;}
1258 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1266 if test x"${samba_cv_fpie}" = x"yes"
1275 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1277 if test "x$enable_relro" != xno
1279 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1281 cat > conftest.c <<EOF
1283 main () { return 0;}
1285 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1293 if test x"${samba_cv_relro}" = x"yes"
1295 RELRO_LDFLAGS="-Wl,-z,relro"
1303 # Assume non-shared by default and override below
1306 # these are the defaults, good for lots of systems
1311 SHLD="\${CC} \${CFLAGS}"
1312 PICFLAG="${PIE_CFLAGS}"
1316 # this bit needs to be modified for each OS that supports share libs
1317 # You need to specify how to create a shared library and
1318 # how to compile C code to produce PIC object files
1320 AC_MSG_CHECKING([ability to build shared libraries])
1322 # and these are for particular systems
1324 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1326 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1327 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1330 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1331 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1332 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1334 DYNEXP="-Wl,--export-dynamic"
1336 SONAMEFLAG="-Wl,-soname="
1337 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1339 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1341 if test "${GCC}" = "yes"; then
1343 SONAMEFLAG="-Wl,-soname="
1344 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1352 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1353 SONAMEFLAG="-Wl,-soname="
1355 SONAMEFLAG="-Wl,-h,"
1357 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1359 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1362 SONAMEFLAG="-Wl,-h,"
1363 PICFLAG="-KPIC" # Is this correct for SunOS
1364 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1366 *netbsd* | *freebsd* | *dragonfly* )
1369 DYNEXP="-Wl,--export-dynamic"
1370 SONAMEFLAG="-Wl,-soname,"
1371 PICFLAG="-fPIC -DPIC"
1372 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1374 *openbsd*) BLDSHARED="true"
1376 DYNEXP="-Wl,-Bdynamic"
1377 SONAMEFLAG="-Wl,-soname,"
1379 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1381 *irix*) BLDSHARED="true"
1382 LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1383 SONAMEFLAG="-Wl,-soname,"
1384 if test "${GCC}" = "yes"; then
1389 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1391 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1393 # use expfull to export underscored symbols
1394 # add rtl to remove /lib/crt0.o warning
1395 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1396 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1398 # as AIX code is always position independent...
1399 # .po will just create compile warnings, use po.o:
1400 if test "${GCC}" != "yes"; then
1401 ## for funky AIX compiler using strncpy()
1402 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1405 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1406 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1407 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1409 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1410 # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1411 # 64bit build using HP's cc with CFLAGS="+DD64"
1412 # hppa: 64bit build unsupported by gcc
1413 # 64bit build using HP's cc with CFLAGS="+DA2.0w"
1414 # HP-UX 11.00 ld needs PHSS_33034
1416 if test "${GCC}" = "yes"; then
1422 # "Uses depth-first symbol resolution"
1423 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1424 if test "$host_cpu" != "ia64"; then
1425 # "don't store literals in read-only memory" (?):
1426 PICFLAG="$PICFLAG +ESnolit"
1429 if test "$host_cpu" = "ia64"; then
1431 # TODO: does the linker find the right 32/64 bit version of the libs? :
1432 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1435 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1437 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1438 SONAMEFLAG="-Wl,-soname="
1440 SONAMEFLAG="-Wl,+h,"
1442 # PIE/PIC flags at link time are required on HP-UX because
1443 # linking requires a temporary source file, which is being
1444 # compiled with the indicated flags - which need to contain
1445 # PIC flags when we don't support PIE flags:
1446 if test "$PIE_LDFLAGS" = "" ; then
1447 PIE_LDFLAGS=\${PICFLAG}
1449 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1450 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1452 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1455 SONAMEFLAG="-Wl,-soname,"
1456 if test "${GCC}" = "yes"; then
1459 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1460 for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1461 saved_ldflags="$LDFLAGS"
1462 AC_MSG_CHECKING([if $flags works])
1463 LDFLAGS="$flags $saved_ldflags"
1465 [AC_MSG_RESULT([yes])
1466 LDSHFLAGS_Z_NODEFS=$flags],
1467 AC_MSG_RESULT([no]))
1468 LDFLAGS="$saved_ldflags"
1469 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1472 *sco*) AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1474 *unixware*) BLDSHARED="true"
1476 SONAMEFLAG="-Wl,-soname,"
1478 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1480 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1481 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1483 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1484 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1486 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1488 *-univel-*) if [ test "$GCC" != yes ]; then
1489 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1494 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1496 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1499 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1500 if [ test "$GCC" != yes ]; then
1501 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1504 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1506 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1511 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1513 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1514 CFLAGS="$CFLAGS -fno-common"
1517 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1519 # Since gcc doesn't fail on unrecognised options, the
1520 # PIE test incorrectly succeeds. Darwin gcc does not
1521 # actually support the PIE stuff.
1524 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1528 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1532 if test "$enable_shared" != "yes"; then
1536 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1537 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1540 if test x"$BLDSHARED" = x"true" ; then
1541 LDFLAGS="$LDFLAGS -L./bin"
1544 AC_MSG_RESULT($BLDSHARED)
1546 if test x"$enable_developer" = x"yes" ; then
1547 default_as_needed=auto
1549 default_as_needed=no
1551 AC_ARG_ENABLE(as-needed,
1552 AS_HELP_STRING([--enable-as-needed],
1553 [Turn on as-needed support if available (default=no)]),
1554 [enable_as_needed=$enableval],
1555 [enable_as_needed=$default_as_needed])
1556 if test "x$enable_as_needed" != xno; then
1557 saved_before_as_needed_ldflags="$LDFLAGS"
1558 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1559 saved_ldflags="$LDFLAGS"
1560 AC_MSG_CHECKING([if $flags works])
1561 LDFLAGS="$flags $saved_ldflags"
1563 [AC_MSG_RESULT([yes])
1564 LD_AS_NEEDED_FLAG=$flags
1565 ld_as_needed_flag_found=yes],
1566 AC_MSG_RESULT([no]))
1567 LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1568 test x"$ld_as_needed_flag_found" = xyes && break
1572 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1573 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1574 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1575 cat > conftest_shb.c <<END
1578 cat > conftest_sha.c <<END
1584 cat > conftest.c <<END
1593 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1594 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1595 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1596 AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1597 AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1598 AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1599 if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1603 ld_as_needed_flag_found=no
1604 LDFLAGS="$saved_before_as_needed_ldflags"
1605 AC_MSG_RESULT([yes])
1607 rm conftest* libconftest*
1610 # check if we have to disable LD_AS_NEEDED_FLAG:
1611 # On some systems for a veriety of reasons linking with
1612 # -Wl,--as-needed -lreadline -lncurses fails
1613 # we have to retest, if these combination is detected before.
1616 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1617 if test x$ld_as_needed_flag_found = xyes ; then
1618 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1619 # try if check no fails
1621 LIBS="$LIBS $TERMLIBS"
1622 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1629 # for historical reasons almost all linkers don't complain about unresolved
1630 # symbols in shared libs. Except for the internal samba modules we want to get
1631 # errors when we produce a shared lib with unresolved symbols. On some
1632 # platforms unresolved symbols might be intended, so we might have to add
1633 # platform specific exceptions here.
1635 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1636 saved_ldflags="$LDFLAGS"
1637 AC_MSG_CHECKING([if $flags works])
1638 LDFLAGS="$flags $saved_ldflags"
1640 [AC_MSG_RESULT([yes])
1641 LDSHFLAGS_Z_DEFS=$flags
1642 ldshflags_z_defs_found=yes],
1643 AC_MSG_RESULT([no]))
1644 LDFLAGS=$saved_ldflags
1645 test x"$ldshflags_z_defs_found" = xyes && break
1648 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1649 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1650 AC_MSG_CHECKING([LDFLAGS])
1651 AC_MSG_RESULT([$LDFLAGS])
1652 AC_MSG_CHECKING([DYNEXP])
1653 AC_MSG_RESULT([$DYNEXP])
1655 #######################################################
1656 # test whether building a shared library actually works
1657 if test $BLDSHARED = true; then
1659 AC_MSG_CHECKING([SHLD])
1660 AC_MSG_RESULT([$SHLD])
1661 AC_MSG_CHECKING([LDSHFLAGS])
1662 AC_MSG_RESULT([$LDSHFLAGS])
1664 AC_MSG_CHECKING([SHLIBEXT])
1665 AC_MSG_RESULT([$SHLIBEXT])
1666 AC_MSG_CHECKING([SONAMEFLAG])
1667 AC_MSG_RESULT([$SONAMEFLAG])
1669 AC_MSG_CHECKING([PICFLAG])
1670 AC_MSG_RESULT([$PICFLAG])
1672 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1673 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1675 AC_CACHE_CHECK([whether building shared libraries actually works],
1676 [ac_cv_shlib_works],[
1677 # try building a trivial shared library
1678 ac_cv_shlib_works=no
1679 # The $SHLD and $LDSHFLAGS variables may contain references to other
1680 # variables so they need to be eval'ed.
1681 if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1683 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1684 TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1685 if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1687 ac_cv_shlib_works=yes
1690 rm -f "shlib.$SHLIBEXT" shlib.o
1693 if test $ac_cv_shlib_works = no; then
1698 if test x"$BLDSHARED" != x"true"; then
1699 LDSHFLAGS="shared-libraries-disabled"
1700 SONAMEFLAG="shared-libraries-disabled"
1701 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1702 SHLD="shared-libraries-disabled"
1703 PICFLAG="${PIE_CFLAGS}"
1704 SHLIBEXT="shared_libraries_disabled"
1705 smbtorture_possible=no
1708 AC_MSG_CHECKING([used PICFLAG])
1709 AC_MSG_RESULT([$PICFLAG])
1711 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1715 ###########################################################
1717 # Configuration of subsystems / libraries
1719 ###########################################################
1723 UNINSTALLLIBCMD_SH=:
1726 if test $BLDSHARED = true; then
1727 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1728 UNINSTALLLIBCMD_SH="rm -f"
1730 if test $enable_static = yes; then
1731 INSTALLLIBCMD_A="\$(INSTALLCMD)"
1732 UNINSTALLLIBCMD_A="rm -f"
1735 #################################################
1736 # --disable-shared-libs
1737 # can be used to disable the internal use of shared libs altogether
1738 # (this only has an effect when building shared libs is enabled)
1743 AC_MSG_CHECKING(whether to use shared libraries internally)
1744 AC_ARG_ENABLE([shared-libs],
1745 AS_HELP_STRING([--enable-shared-libs],
1746 [Use shared libraries internally (default=yes)]),
1747 [enable_shared_libs=$enableval],
1748 [enable_shared_libs=yes])
1750 if test x"$enable_shared_libs" != x"no" ; then
1751 USESHARED=$BLDSHARED
1754 AC_MSG_RESULT([$USESHARED])
1756 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1757 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1760 #################################################
1761 # --with-static-libs=LIBS:
1762 # link (internal) libs dynamically or statically?
1764 # If a subsystem is built as a library then this controls whether they are
1765 # linked into Samba targets statically or dynamically:
1767 # * If we build the shared library at all, we link dynamically by default.
1769 # * We only link statically if we don't build shared or if the library
1770 # appears in the --with-static-libs configure option.
1773 # --with-static-libs=libtalloc makes use of libtalloc.a instead
1774 # of linking the dynamic variant with -ltalloc.
1776 # NOTE: This option only affects libraries that we do not only build
1777 # but that samba also links against as libraries (as opposed to linking
1778 # the plain object files. - This has to be configured in Makefile.in.
1779 # So in particular it does not harm to give invalid or unknown names here.
1782 AC_ARG_WITH([static-libs],
1783 [AS_HELP_STRING([--with-static-libs=LIBS],
1784 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1785 [AS_IF([test $withval],
1786 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1787 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1788 eval LINK_$lib=STATIC
1794 # until we have organized other internal subsystems (as util, registry
1795 # and smbconf) into shared libraries, we CAN NOT link libnetapi
1796 # dynamically to samba programs.
1798 LINK_LIBNETAPI=STATIC
1800 LINK_LIBSMBCLIENT=STATIC
1803 # The library versions are hardcoded here
1804 # and filled into the LIBFOO_SOVER variable.
1806 # TODO: for talloc and tdb (at least), these should
1807 # be extracted from their respective source directories
1809 AC_ARG_ENABLE(external_libtalloc,
1810 [AS_HELP_STRING([--enable-external-libtalloc],
1811 [Enable external talloc [default=auto]])],
1812 [ enable_external_libtalloc=$enableval ],
1813 [ enable_external_libtalloc=auto ])
1815 if test "x$enable_external_libtalloc" != xno
1817 PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1818 [ enable_external_libtalloc=yes ],
1819 [ if test x$enable_external_libtalloc = xyes; then
1820 AC_MSG_ERROR([Unable to find libtalloc])
1822 enable_external_libtalloc=no
1827 if test "x$enable_external_libtalloc" = xno
1829 m4_include(../lib/talloc/libtalloc.m4)
1830 LINK_LIBTALLOC=STATIC
1831 LIBTALLOCVERSION=`grep ^VERSION ${tallocdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1832 SMB_LIBRARY(talloc, 2, ${LIBTALLOCVERSION})
1834 for obj in ${TALLOC_OBJ}; do
1835 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1837 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1838 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1839 AC_SUBST(LIBTALLOC_OBJ0)
1841 TALLOCTORT="bin/talloctort"
1842 AC_SUBST(TALLOCTORT)
1846 AC_ARG_ENABLE(external_libtdb,
1847 [AS_HELP_STRING([--enable-external-libtdb],
1848 [Enable external tdb [default=auto]])],
1849 [ enable_external_libtdb=$enableval ],
1850 [ enable_external_libtdb=auto ])
1852 if test "x$enable_external_libtdb" != xno
1854 PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.6,
1855 [ enable_external_libtdb=yes ],
1857 if test x$enable_external_libtdb = xyes; then
1858 AC_MSG_ERROR([Unable to find libtdb])
1860 enable_external_libtdb=no
1865 AC_SUBST(LIBTDB_OBJ0)
1866 if test "x$enable_external_libtdb" = xno
1868 m4_include(../lib/tdb/libtdb.m4)
1870 LIBTDBVERSION=`grep ^VERSION ${tdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1871 SMB_LIBRARY(tdb, 1, ${LIBTDBVERSION})
1873 LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
1874 for obj in ${TDB_OBJ}; do
1875 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
1877 AC_SUBST(LIBTDB_OBJ0)
1878 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
1879 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
1881 TDBBACKUP="bin/tdbbackup"
1883 TDBDUMP="bin/tdbdump"
1885 TDBRESTORE="bin/tdbrestore"
1886 AC_SUBST(TDBRESTORE)
1887 TDBTOOL="bin/tdbtool"
1889 TDBTORTURE="bin/tdbtorture"
1890 AC_SUBST(TDBTORTURE)
1893 AC_ARG_ENABLE(external_libntdb,
1894 [AS_HELP_STRING([--enable-external-libntdb],
1895 [Enable external ntdb [default=auto]])],
1896 [ enable_external_libntdb=$enableval ],
1897 [ enable_external_libntdb=auto ])
1899 if test "x$enable_external_libntdb" != xno
1901 PKG_CHECK_MODULES(LIBNTDB, ntdb >= 1.0,
1902 [ enable_external_libntdb=yes ],
1904 if test x$enable_external_libntdb = xyes; then
1905 AC_MSG_ERROR([Unable to find libntdb])
1907 enable_external_libntdb=no
1912 AC_SUBST(LIBNTDB_OBJ0)
1913 if test "x$enable_external_libntdb" = xno
1915 m4_include(../lib/ntdb/libntdb.m4)
1917 LIBNTDBVERSION=`grep ^VERSION ${ntdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1918 SMB_LIBRARY(ntdb, 1, ${LIBNTDBVERSION})
1920 LIBNTDB_LIBS="$LIBNTDB_LIBS $NTDB_DEPS"
1921 for obj in ${NTDB_OBJ}; do
1922 LIBNTDB_OBJ0="${LIBNTDB_OBJ0} ${ntdbdir}/${obj}"
1924 AC_SUBST(LIBNTDB_OBJ0)
1925 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${NTDB_CFLAGS}"
1926 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${NTDB_CFLAGS}"
1928 NTDBBACKUP="bin/ntdbbackup"
1929 AC_SUBST(NTDBBACKUP)
1930 NTDBDUMP="bin/ntdbdump"
1932 NTDBRESTORE="bin/ntdbrestore"
1933 AC_SUBST(NTDBRESTORE)
1934 NTDBTOOL="bin/ntdbtool"
1936 NTDBTORTURE="bin/ntdbtorture"
1937 AC_SUBST(NTDBTORTURE)
1940 SMB_LIBRARY(netapi, 0)
1941 SMB_LIBRARY(smbclient, 0)
1942 SMB_LIBRARY(smbsharemodes, 0)
1947 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1948 AC_TRY_RUN([#include <stdio.h>
1949 main() { long long x = 1000000; x *= x; return(((x/1000000) == 1000000)? 0: 1); }],
1950 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1951 if test x"$samba_cv_have_longlong" = x"yes"; then
1952 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1953 AC_CHECK_TYPE(intptr_t, unsigned long long)
1955 AC_CHECK_TYPE(intptr_t, unsigned long)
1959 # Check if the compiler supports the LL prefix on long long integers.
1962 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1963 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1964 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1965 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1966 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1970 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1971 AC_TRY_RUN([#include <time.h>
1972 main() { return((sizeof(time_t) == 8) ? 0 : 1); }],
1973 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1974 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1975 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1978 AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
1979 AC_TRY_RUN([#include <time.h>
1982 if (sizeof(time_t) == 8) {
1983 time_t max_time = 0x7fffffffffffffffll;
1984 tm = gmtime(&max_time);
1985 /* This should fail with 32-bit tm_year. */
1987 /* Max time_t that works with 32-bit int tm_year in struct tm. */
1988 max_time = 67768036191676799ll;
1989 tm = gmtime(&max_time);
1997 samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
1998 if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
1999 AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
2004 # As a gating factor for large file support, in order to
2005 # use >4GB files we must have the following minimal support
2006 # available: a 64 bit off_t
2007 # If we don't have all of these then fail the build
2010 AC_MSG_CHECKING([if large file support can be enabled])
2011 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2012 AC_TRY_RUN([#include <stdio.h>
2013 #include <sys/stat.h>
2014 main() { return((sizeof(off_t) == 8) ? 0 : 1); }],
2015 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2016 if test x"$samba_cv_SIZEOF_OFF_T" = x"no"; then
2017 AC_MSG_ERROR(["large file support support not available: sizeof(off_t) != 8"])
2020 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2022 #if defined(HAVE_UNISTD_H)
2026 #include <sys/stat.h>
2027 main() { return((sizeof(ino_t) == 8) ? 0 : 1); }],
2028 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2029 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2030 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2033 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2035 #if defined(HAVE_UNISTD_H)
2039 #include <sys/stat.h>
2040 main() { return((sizeof(dev_t) == 8) ? 0 : 1); }],
2041 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2042 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2043 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2046 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2048 #if defined(HAVE_UNISTD_H)
2051 #include <sys/types.h>
2052 main() { dev_t dev; int i = major(dev); return 0; }],
2053 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2054 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2055 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2058 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2060 #if defined(HAVE_UNISTD_H)
2063 #include <sys/types.h>
2064 main() { dev_t dev; int i = minor(dev); return 0; }],
2065 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2066 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2067 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2070 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2072 #if defined(HAVE_UNISTD_H)
2075 #include <sys/types.h>
2076 main() { dev_t dev = makedev(1,2); return 0; }],
2077 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2078 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2079 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2082 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2083 AC_TRY_COMPILE([#include <sys/types.h>
2085 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2086 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2087 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2088 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2091 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2092 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2093 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2094 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2095 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2098 if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then
2102 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2103 AC_TRY_RUN([#include <sys/types.h>
2105 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2106 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2107 di->d_name[0] == 0) return(0); return(1);} ],
2108 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2109 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2110 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2113 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2114 AC_TRY_COMPILE([#include <sys/types.h>
2115 #include <utime.h>],
2116 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return(utime("foo.c",&tbuf));],
2117 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2118 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2119 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2123 # Check utmp details, but only if our OS offers utmp.h
2124 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2125 dnl utmp and utmpx come in many flavours
2126 dnl We need to check for many of them
2127 dnl But we don't need to do each and every one, because our code uses
2128 dnl mostly just the utmp (not utmpx) fields.
2130 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2132 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2133 AC_TRY_COMPILE([#include <sys/types.h>
2135 [struct utmp ut; ut.ut_name[0] = 'a';],
2136 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2137 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2138 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2141 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2142 AC_TRY_COMPILE([#include <sys/types.h>
2144 [struct utmp ut; ut.ut_user[0] = 'a';],
2145 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2146 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2147 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2150 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2151 AC_TRY_COMPILE([#include <sys/types.h>
2153 [struct utmp ut; ut.ut_id[0] = 'a';],
2154 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2155 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2156 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2159 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2160 AC_TRY_COMPILE([#include <sys/types.h>
2162 [struct utmp ut; ut.ut_host[0] = 'a';],
2163 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2164 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2165 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2168 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2169 AC_TRY_COMPILE([#include <sys/types.h>
2171 [struct utmp ut; time_t t; ut.ut_time = t;],
2172 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2173 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2174 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2177 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2178 AC_TRY_COMPILE([#include <sys/types.h>
2180 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2181 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2182 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2183 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2186 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2187 AC_TRY_COMPILE([#include <sys/types.h>
2189 [struct utmp ut; ut.ut_type = 0;],
2190 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2191 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2192 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2195 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2196 AC_TRY_COMPILE([#include <sys/types.h>
2198 [struct utmp ut; ut.ut_pid = 0;],
2199 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2200 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2201 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2204 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2205 AC_TRY_COMPILE([#include <sys/types.h>
2207 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2208 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2209 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2210 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2213 if test x$ac_cv_func_pututline = xyes ; then
2214 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2215 AC_TRY_COMPILE([#include <sys/types.h>
2217 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2218 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2219 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2220 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2224 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2225 AC_TRY_COMPILE([#include <sys/types.h>
2226 #include <utmpx.h>],
2227 [struct utmpx ux; ux.ut_syslen = 0;],
2228 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2229 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2230 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2233 AC_CACHE_CHECK([whether sizeof ut_line in utmp is ok],samba_cv_HAVE_UX_UT_LINE,[
2234 AC_TRY_RUN([#include <stdio.h>
2235 #include <sys/types.h>
2238 if (sizeof(((struct utmp *)NULL)->ut_line) < 15) {
2244 samba_cv_HAVE_UX_UT_LINE=yes,samba_cv_HAVE_UX_UT_LINE=no,samba_cv_HAVE_UX_UT_LINE=cross)])
2249 AC_CACHE_CHECK([for linux fallocate],samba_cv_HAVE_LINUX_FALLOCATE,[
2251 #if defined(HAVE_UNISTD_H)
2254 #include <sys/types.h>
2257 #if defined(HAVE_LINUX_FALLOC_H)
2258 #include <linux/falloc.h>
2260 [int ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2261 samba_cv_HAVE_LINUX_FALLOCATE=yes,samba_cv_HAVE_LINUX_FALLOCATE=no)])
2262 if test x"$samba_cv_HAVE_LINUX_FALLOCATE" = x"yes" && test x"$ac_cv_func_fallocate" = x"yes"; then
2263 AC_DEFINE(HAVE_LINUX_FALLOCATE,1,[Whether the Linux 'fallocate' function is available])
2266 AC_CACHE_CHECK([for getcwd takes NULL],samba_cv_GETCWD_TAKES_NULL,[
2268 #if defined(HAVE_UNISTD_H)
2271 main() { char *s = getcwd(NULL,0); if (s) return(0); return(1); }],
2272 samba_cv_GETCWD_TAKES_NULL=yes,samba_cv_GETCWD_TAKES_NULL=no,samba_cv_GETCWD_TAKES_NULL=cross)])
2273 if test x"$samba_cv_GETCWD_TAKES_NULL" = x"yes"; then
2274 AC_DEFINE(GETCWD_TAKES_NULL,1,[Whether the getcwd function takes NULL as an argument])
2277 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2278 AC_ARG_WITH(libiconv,
2279 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2281 if test "$withval" = "no" ; then
2282 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2284 if test "$withval" != "yes" ; then
2286 ICONV_LOOK_DIRS="$withval"
2291 for i in $ICONV_LOOK_DIRS ; do
2294 save_LDFLAGS="$LDFLAGS"
2295 save_CPPFLAGS="$CPPFLAGS"
2297 iconv_current_LIBS=""
2298 iconv_current_LDFLAGS=""
2299 iconv_current_CPPFLAGS=""
2304 # This is here to handle -withval stuff for --with-libiconv
2305 # Perhaps we should always add a -L
2306 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2308 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2309 # installation paths. This gets a little tricky since we might have iconv
2310 # in both libiconv and in libc. In this case the jm_ICONV test will always
2311 # succeed when the header is found. To counter this, make sure the
2312 # library directory is there and check the ABI directory first (which
2313 # should be harmless on other systems, but causes tons of linker warnings on
2314 # 64bit Ubuntu systems).
2315 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2316 # installed, I've decided to fix the linker warnings.
2318 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2319 for l in "lib" "lib32" "lib/hpux32"; do
2320 if test -d "$i/$l" ; then
2321 LDFLAGS="$save_LDFLAGS -L$i/$l"
2323 export LDFLAGS LIBS CPPFLAGS
2324 # Try to find iconv(3)
2326 if test x"$ICONV_FOUND" = "xyes" ; then
2333 if test x"$ICONV_FOUND" = "xyes" ; then
2334 iconv_current_LDFLAGS="-L$i/$libext"
2335 iconv_current_CPPFLAGS="-I$i/include"
2337 if test x"$jm_cv_lib_iconv" != x; then
2338 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2340 # We found iconv in libc.
2341 iconv_current_LIBS=""
2346 if test x"$ICONV_FOUND" = "xyes" ; then
2348 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2349 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2350 LIBS="$save_LIBS $iconv_current_LIBS"
2351 export LDFLAGS LIBS CPPFLAGS
2353 default_dos_charset=no
2354 default_unix_charset=no
2356 # check for default dos charset name
2357 for j in CP850 IBM850 ; do
2359 default_dos_charset="$ICONV_CHARSET"
2360 if test x"$default_dos_charset" = x"$j"; then
2365 # check for default unix charset name
2366 for j in UTF-8 UTF8 ; do
2368 default_unix_charset="$ICONV_CHARSET"
2369 if test x"$default_unix_charset" = x"$j"; then
2374 if test "$default_dos_charset" != "no" -a \
2375 "$default_dos_charset" != "cross" -a \
2376 "$default_unix_charset" != "no" -a \
2377 "$default_unix_charset" != "cross"
2379 samba_cv_HAVE_NATIVE_ICONV=yes
2381 if test "$default_dos_charset" = "cross" -o \
2382 "$default_unix_charset" = "cross"
2384 samba_cv_HAVE_NATIVE_ICONV=cross
2386 samba_cv_HAVE_NATIVE_ICONV=no
2390 # At this point, we have a libiconv candidate. We know that
2391 # we have the right headers and libraries, but we don't know
2392 # whether it does the conversions we want. We can't test this
2393 # because we are cross-compiling. This is not necessarily a big
2394 # deal, since we can't guarantee that the results we get now will
2395 # match the results we get at runtime anyway.
2396 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2397 default_dos_charset="CP850"
2398 default_unix_charset="UTF-8"
2399 samba_cv_HAVE_NATIVE_ICONV=yes
2400 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2401 AC_MSG_WARN([$default_dos_charset and $default_unix_charset to UCS-16LE])
2404 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2406 CPPFLAGS=$save_CPPFLAGS
2407 LDFLAGS=$save_LDFLAGS
2410 if test x"$iconv_current_LIBS" != x; then
2411 LIBS="$LIBS $iconv_current_LIBS"
2414 # Add the flags we need to CPPFLAGS and LDFLAGS
2415 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2416 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2418 # Turn the #defines into string literals
2419 default_dos_charset="\"$default_dos_charset\""
2420 default_unix_charset="\"$default_unix_charset\""
2422 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2423 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2424 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2429 # We didn't find a working iconv, so keep going
2432 # We only need to clean these up here for the next pass through the loop
2433 CPPFLAGS=$save_CPPFLAGS
2434 LDFLAGS=$save_LDFLAGS
2436 export LDFLAGS LIBS CPPFLAGS
2441 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2442 AC_MSG_WARN([Sufficient support for iconv function was not found.
2443 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2444 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2445 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2449 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2451 #include <sys/types.h>
2454 #define F_GETLEASE 1025
2457 int fd = open("/dev/null", O_RDONLY);
2458 return fcntl(fd, F_GETLEASE, 0) == -1;
2461 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2462 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2463 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2466 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2468 #include <sys/types.h>
2472 #define F_NOTIFY 1026
2475 return(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2478 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2479 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2480 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2483 AC_CHECK_HEADER(sys/inotify.h)
2485 if test x"ac_cv_header_sys_inotify_h" = x"yes"; then
2486 AC_DEFINE(HAVE_INOTIFY,1,[For inotify support])
2489 #################################################
2490 # Check if FAM notifications are available. For FAM info, see
2491 # http://oss.sgi.com/projects/fam/
2492 # http://savannah.nongnu.org/projects/fam/
2494 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2496 if test x$enable_fam != xno; then
2497 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2498 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2499 # On IRIX, libfam requires libC, but other FAM implementations
2500 # might not need it.
2501 AC_CHECK_LIB(fam, FAMOpen2,
2502 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2503 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2504 [samba_cv_HAVE_LIBFAM=no])
2506 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2508 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2509 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2510 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2511 [samba_cv_HAVE_LIBFAM=no])
2512 unset samba_fam_xtra
2515 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2516 default_shared_modules="$default_shared_modules vfs_notify_fam"
2517 AC_TRY_COMPILE([#include <fam.h>],
2518 [enum FAMCodes code = FAMChanged;],
2519 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2520 [Whether fam.h contains a typedef for enum FAMCodes]),
2524 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2525 AC_CHECK_LIB(fam, FAMNoExists,
2526 [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2529 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2530 AC_MSG_ERROR(FAM support requested but FAM library not available )
2534 AC_SUBST(SMB_FAM_LIBS)
2536 #################################################
2537 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2540 with_dmapi_support=auto
2541 AC_MSG_CHECKING(whether to use DMAPI support)
2543 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2544 [ case "$withval" in
2546 with_dmapi_support=$withval
2550 AC_MSG_RESULT([$with_dmapi_support])
2552 if test x"$with_dmapi_support" != xno ; then
2553 SMB_CHECK_DMAPI([], [
2554 AC_MSG_NOTICE(DMAPI support not present)
2555 if test x"$with_dmapi_support" = xyes ; then
2556 AC_MSG_ERROR(no DMAPI support found but requested!)
2562 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2563 # Theoretically it should work with AIX JFS2 too but this needs testing
2564 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2565 default_shared_modules="$default_shared_modules vfs_tsmsm"
2568 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2570 #include <sys/types.h>
2573 #include <sys/file.h>
2575 #define LOCK_MAND 32
2576 #define LOCK_READ 64
2579 return(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2582 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2583 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2584 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2588 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2589 AC_TRY_COMPILE([#include <sys/types.h>
2590 #include <fcntl.h>],
2591 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2592 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2593 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2594 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2597 #################################################
2598 # Check for POSIX capability support
2600 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2601 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2604 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2607 AC_LIBTESTFUNC(cap, cap_get_proc)
2609 AC_CACHE_CHECK([for POSIX capabilities],
2610 samba_cv_HAVE_POSIX_CAPABILITIES,
2613 #include <sys/types.h>
2614 #include <sys/capability.h>
2617 cap_value_t vals[1];
2618 if (!(cap = cap_get_proc()))
2620 vals[0] = CAP_CHOWN;
2621 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2625 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2626 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2627 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2630 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2631 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2632 [Whether POSIX capabilities are available])
2640 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2641 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2644 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2645 AC_TRY_COMPILE([#include <sys/types.h>
2646 #if defined(HAVE_RPC_RPC_H)
2647 #include <rpc/rpc.h>
2650 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2651 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2652 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2655 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2656 AC_TRY_COMPILE([#include <sys/types.h>
2657 #if defined(HAVE_RPC_RPC_H)
2658 #include <rpc/rpc.h>
2661 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2662 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2663 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2666 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2667 AC_TRY_COMPILE([#include <sys/types.h>
2668 #if defined(HAVE_RPC_RPC_H)
2669 #include <rpc/rpc.h>
2672 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2673 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2674 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2677 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2678 AC_TRY_COMPILE([#include <sys/types.h>
2679 #if defined(HAVE_RPC_RPC_H)
2680 #include <rpc/rpc.h>
2683 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2684 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2685 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2689 dnl Some systems (SCO) have a problem including
2690 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2691 dnl as a #define in <prot.h> and as part of an enum
2695 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2696 AC_TRY_COMPILE([#include <sys/types.h>
2697 #ifdef HAVE_SYS_SECURITY_H
2698 #include <sys/security.h>
2700 #endif /* HAVE_SYS_SECURITY_H */
2701 #if defined(HAVE_RPC_RPC_H)
2702 #include <rpc/rpc.h>
2705 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2706 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2707 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2710 AC_MSG_CHECKING([for test routines])
2711 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2713 AC_MSG_ERROR([cant find test code. Aborting config]),
2714 AC_MSG_WARN([cannot run when cross-compiling]))
2716 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2717 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2718 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2719 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2720 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2723 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2724 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2725 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2726 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2727 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2730 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2731 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2732 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2733 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2734 AC_CHECK_FUNCS(getpagesize)
2736 ################################################
2737 # look for a method of setting the effective uid
2740 ################################################
2741 # Start by checking for 32-bit system call definitions on Linux.
2745 AC_CACHE_CHECK([for Linux 32-bit system calls],samba_cv_USE_LINUX_32BIT_SYSCALLS,[
2747 #if defined(HAVE_UNISTD_H)
2752 #include <sys/types.h>
2755 #ifdef HAVE_SYS_PRIV_H
2756 #include <sys/priv.h>
2758 #ifdef HAVE_SYS_ID_H
2762 #if defined(HAVE_SYSCALL_H)
2763 #include <syscall.h>
2766 #if defined(HAVE_SYS_SYSCALL_H)
2767 #include <sys/syscall.h>
2771 syscall(SYS_setresuid32, -1, -1, -1);
2772 syscall(SYS_setresgid32, -1, -1, -1);
2773 syscall(SYS_setreuid32, -1, -1);
2774 syscall(SYS_setregid32, -1, -1);
2775 syscall(SYS_setuid32, -1);
2776 syscall(SYS_setgid32, -1);
2777 syscall(SYS_setgroups32, 0, NULL);
2778 ], samba_cv_USE_LINUX_32BIT_SYSCALLS=yes,samba_cv_USE_LINUX_32BIT_SYSCALLS=no,samba_cv_USE_LINUX_32BIT_SYSCALLS=cross)])
2780 if test x"$samba_cv_USE_LINUX_32BIT_SYSCALLS" = x"yes"; then
2781 AC_DEFINE(USE_LINUX_32BIT_SYSCALLS,1,[Use Linux 32-bit system calls])
2782 AC_CACHE_CHECK([for Linux thread-specific credentials with 32-bit system calls],samba_cv_USE_LINUX_THREAD_CREDENTIALS,[
2784 #define AUTOCONF_TEST 1
2785 #define USE_LINUX_THREAD_CREDENTIALS 1
2786 #define USE_LINUX_32BIT_SYSCALLS 1
2787 #include "${srcdir-.}/../lib/util/setid.c"
2788 #include "${srcdir-.}/lib/util_sec.c"],
2789 samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
2790 if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
2792 AC_DEFINE(USE_LINUX_THREAD_CREDENTIALS,1,[Whether we can use Linux thread-specific credentials with 32-bit system calls])
2796 if test $seteuid = no; then
2797 AC_CACHE_CHECK([for Linux thread-specific credentials],samba_cv_USE_LINUX_THREAD_CREDENTIALS,[
2799 #define AUTOCONF_TEST 1
2800 #define USE_LINUX_THREAD_CREDENTIALS 1
2801 #include "${srcdir-.}/../lib/util/setid.c"
2802 #include "${srcdir-.}/lib/util_sec.c"],
2803 samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
2804 if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
2805 seteuid=yes;AC_DEFINE(USE_LINUX_THREAD_CREDENTIALS,1,[Whether we can use Linux thread-specific credentials])
2812 if test $seteuid = no; then
2813 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2815 #define AUTOCONF_TEST 1
2816 #define USE_SETREUID 1
2817 #include "confdefs.h"
2818 #include "${srcdir-.}/../lib/util/setid.c"
2819 #include "${srcdir-.}/lib/util_sec.c"],
2820 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2821 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2822 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2826 # we check for setresuid second as it conflicts with AIO on Linux.
2827 # see http://samba.org/~tridge/junkcode/aio_uid.c
2828 if test $seteuid = no; then
2829 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2831 #define AUTOCONF_TEST 1
2832 #define USE_SETRESUID 1
2833 #include "confdefs.h"
2834 #include "${srcdir-.}/../lib/util/setid.c"
2835 #include "${srcdir-.}/lib/util_sec.c"],
2836 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2837 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2838 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2842 if test $seteuid = no; then
2843 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2845 #define AUTOCONF_TEST 1
2846 #define USE_SETEUID 1
2847 #include "confdefs.h"
2848 #include "${srcdir-.}/../lib/util/setid.c"
2849 #include "${srcdir-.}/lib/util_sec.c"],
2850 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2851 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2852 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2856 if test $seteuid = no; then
2857 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2859 #define AUTOCONF_TEST 1
2860 #define USE_SETUIDX 1
2861 #include "confdefs.h"
2862 #include "${srcdir-.}/../lib/util/setid.c"
2863 #include "${srcdir-.}/lib/util_sec.c"],
2864 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2865 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2866 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2870 AC_CACHE_CHECK([for the Darwin initgroups system call],
2871 samba_cv_DARWIN_INITGROUPS,
2873 #include <sys/syscall.h>
2876 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2877 samba_cv_DARWIN_INITGROUPS=yes,
2878 samba_cv_DARWIN_INITGROUPS=no)
2881 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2882 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2883 [Whether to use the Darwin-specific initgroups system call])
2886 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2887 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2888 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2889 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2890 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2893 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
2894 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
2896 #define _XOPEN_SOURCE 600
2898 #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
2899 #error probably broken posix_fallocate
2903 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
2904 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
2905 AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE, 1, Whether we have a broken posix_fallocate)
2909 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2910 AC_TRY_COMPILE([#include <sys/types.h>
2911 #include <sys/stat.h>
2912 #include <unistd.h>],
2913 [struct stat st; st.st_blocks = 0;],
2914 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2915 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2916 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2919 AC_CACHE_CHECK([for 32 bit blkcnt_t],samba_cv_SIZEOF_BLKCNT_T_4,[
2921 #if defined(HAVE_UNISTD_H)
2925 #include <sys/types.h>
2926 #include <sys/stat.h>
2927 main() { return((sizeof(blkcnt_t) == 4) ? 0 : 1); }],
2928 samba_cv_SIZEOF_BLKCNT_T_4=yes,samba_cv_SIZEOF_BLKCNT_T_4=no,samba_cv_SIZEOF_BLKCNT_T_4=cross)])
2929 if test x"$samba_cv_SIZEOF_BLKCNT_T_4" = x"yes"; then
2930 AC_DEFINE(SIZEOF_BLKCNT_T_4,1,[The size of the 'blkcnt_t' type])
2933 AC_CACHE_CHECK([for 64 bit blkcnt_t],samba_cv_SIZEOF_BLKCNT_T_8,[
2935 #if defined(HAVE_UNISTD_H)
2939 #include <sys/types.h>
2940 #include <sys/stat.h>
2941 main() { return((sizeof(blkcnt_t) == 8) ? 0 : 1); }],
2942 samba_cv_SIZEOF_BLKCNT_T_8=yes,samba_cv_SIZEOF_BLKCNT_T_8=no,samba_cv_SIZEOF_BLKCNT_T_8=cross)])
2943 if test x"$samba_cv_SIZEOF_BLKCNT_T_8" = x"yes"; then
2944 AC_DEFINE(SIZEOF_BLKCNT_T_8,1,[The size of the 'blkcnt_t' type])
2947 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2948 AC_TRY_COMPILE([#include <sys/types.h>
2949 #include <sys/stat.h>
2950 #include <unistd.h>],
2951 [struct stat st; st.st_blksize = 0;],
2952 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2953 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2954 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2957 AC_CACHE_CHECK([for st_flags in struct stat],
2958 samba_cv_HAVE_STAT_ST_FLAGS,
2960 AC_TRY_COMPILE([#include <sys/types.h>
2961 #include <sys/stat.h>
2962 #include <unistd.h>],
2963 [struct stat st; st.st_flags = 0;],
2964 samba_cv_HAVE_STAT_ST_FLAGS=yes,
2965 samba_cv_HAVE_STAT_ST_FLAGS=no,
2966 samba_cv_HAVE_STAT_ST_FLAGS=cross)
2969 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2970 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2971 [Whether the stat struct has a st_flags member])
2974 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2976 #include <sys/types.h>
2977 #include <sys/acl.h>
2978 #if defined(HAVE_RPCSVC_NIS_H)
2979 #include <rpcsvc/nis.h>
2982 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2983 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2984 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2987 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2993 void exit_on_core(int ignored) {
2999 signal(SIGSEGV, exit_on_core);
3000 newpath = realpath("/tmp", NULL);
3001 return((newpath != NULL) ? 0 : 1);
3004 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3005 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3006 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3009 #################################################
3010 # check for AFS clear-text auth support
3011 samba_cv_WITH_AFS=no
3012 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3014 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3015 [ case "$withval" in
3017 AC_MSG_RESULT($withval)
3018 samba_cv_WITH_AFS=$withval
3027 ####################################################
3028 # check for Linux-specific AFS fake-kaserver support
3029 samba_cv_WITH_FAKE_KASERVER=no
3030 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3031 AC_ARG_WITH(fake-kaserver,
3032 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3033 [ case "$withval" in
3035 AC_MSG_RESULT($withval)
3036 samba_cv_WITH_FAKE_KASERVER=$withval
3045 #################################################
3046 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3047 if test x"$samba_cv_WITH_AFS" != x"no" ||
3048 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3050 # see if this box has the OpenSSL DES libraries
3051 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3053 # see if this box has the afs-headers in /usr/include/afs
3054 AC_MSG_CHECKING(for /usr/include/afs)
3055 if test -d /usr/include/afs; then
3063 AC_CHECK_HEADERS(afs.h afs/afs.h)
3064 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3065 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3066 test x"$samba_cv_WITH_AFS" = x"auto"; then
3067 AC_MSG_WARN([AFS cannot be supported without afs.h])
3069 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3072 have_afs_headers=yes
3076 FAKE_KASERVER_OBJ=""
3077 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3078 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3079 FAKE_KASERVER_OBJ="utils/net_afs.o"
3081 AC_SUBST(FAKE_KASERVER_OBJ)
3083 #################################################
3084 # check whether to compile AFS/NT ACL mapping module
3085 samba_cv_WITH_VFS_AFSACL=no
3086 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3087 AC_ARG_WITH(vfs-afsacl,
3088 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3089 [ case "$withval" in
3091 AC_MSG_RESULT($withval)
3092 samba_cv_WITH_VFS_AFSACL=yes
3101 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3102 default_shared_modules="$default_shared_modules vfs_afsacl"
3105 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3106 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3109 #################################################
3110 # check for the DFS clear-text auth system
3111 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3113 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3114 [ case "$withval" in
3117 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3126 ########################################################
3127 # Compile with LDAP support?
3129 with_ldap_support=auto
3130 AC_MSG_CHECKING([for LDAP support])
3133 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3134 [ case "$withval" in
3136 with_ldap_support=$withval
3140 AC_MSG_RESULT($with_ldap_support)
3145 if test x"$with_ldap_support" != x"no"; then
3147 ##################################################################
3148 # first test for ldap.h and lber.h
3149 # (ldap.h is required for this test)
3150 AC_CHECK_HEADERS(ldap.h lber.h)
3152 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3153 if test x"$with_ldap_support" = x"yes"; then
3154 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3156 AC_MSG_WARN(ldap.h is needed for LDAP support)
3159 with_ldap_support=no
3162 ##################################################################
3163 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3164 # unsigned int in include/includes.h
3167 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3168 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3169 with_ldap_support=yes
3172 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3173 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3174 if test x"$with_ldap_support" = x"yes"; then
3175 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3177 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3179 with_ldap_support=no
3185 if test x"$with_ldap_support" != x"no"; then
3188 ##################################################################
3189 # we might need the lber lib on some systems. To avoid link errors
3190 # this test must be before the libldap test
3191 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3193 ########################################################
3194 # If ber_sockbuf_add_io() is available we can add
3195 # SASL wrapping hooks
3196 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3198 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3199 AC_TRY_COMPILE([#include <ldap.h>],
3200 [int val = LDAP_OPT_SOCKBUF;],
3201 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3202 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3204 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3205 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3206 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3209 #######################################################
3210 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3211 # ldap logging and print it out in the samba logs
3212 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3213 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3214 [AC_TRY_COMPILE([#include <lber.h>],
3215 [int val = LBER_OPT_LOG_PRINT_FN;],
3216 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3217 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3219 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3220 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3221 [Support for LDAP/LBER logging interception])
3224 ########################################################
3225 # now see if we can find the ldap libs in standard paths
3226 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3228 ########################################################
3229 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3230 # Check found in pam_ldap 145.
3231 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3233 LIBS="$LIBS $LDAP_LIBS"
3234 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3238 [ldap_set_rebind_proc(0, 0, 0);],
3239 [smb_ldap_cv_ldap_set_rebind_proc=3],
3240 [smb_ldap_cv_ldap_set_rebind_proc=2]
3244 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3246 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3248 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3249 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3250 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3251 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3252 default_shared_modules="$default_shared_modules";
3253 SMBLDAP="lib/smbldap.o"
3254 with_ldap_support=yes
3255 AC_MSG_CHECKING(whether LDAP support is used)
3258 if test x"$with_ldap_support" = x"yes"; then
3259 AC_MSG_ERROR(libldap is needed for LDAP support)
3261 AC_MSG_WARN(libldap is needed for LDAP support)
3265 with_ldap_support=no
3271 #################################################
3272 # active directory support
3274 with_ads_support=auto
3275 AC_MSG_CHECKING([for Active Directory and krb5 support])
3278 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3279 [ case "$withval" in
3281 with_ads_support="$withval"
3285 AC_MSG_RESULT($with_ads_support)
3290 if test x"$with_ldap_support" != x"yes"; then
3292 if test x"$with_ads_support" = x"yes"; then
3293 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3294 elif test x"$with_ads_support" = x"auto"; then
3295 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3301 # Check to see whether there is enough LDAP functionality to be able
3302 # to build AD support.
3304 # HPUX and Solaris only has ldap_init; ok, we take care of this in smbldap.c
3307 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3309 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3310 if test x"$with_ads_support" = x"yes"; then
3311 AC_MSG_ERROR(Active Directory support on HPUX or Solaris requires ldap_init)
3312 elif test x"$with_ads_support" = x"auto"; then
3313 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX or Solaris))
3319 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3321 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3322 if test x"$with_ads_support" = x"yes"; then
3323 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3324 elif test x"$with_ads_support" = x"auto"; then
3325 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3333 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3335 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3336 if test x"$with_ads_support" = x"yes"; then
3337 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3338 elif test x"$with_ads_support" = x"auto"; then
3339 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3346 if test x"$with_ads_support" != x"no"; then
3348 # Do no harm to the values of CFLAGS and LIBS while testing for
3351 if test x$FOUND_KRB5 = x"no"; then
3352 #################################################
3353 # check for location of Kerberos 5 install
3354 AC_MSG_CHECKING(for kerberos 5 install path)
3356 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3357 [ case "$withval" in
3359 AC_MSG_RESULT(no krb5-path given)
3365 AC_MSG_RESULT($withval)
3366 KRB5_CFLAGS="-I$withval/include"
3367 KRB5_CPPFLAGS="-I$withval/include"
3368 KRB5_LDFLAGS="-L$withval/lib"
3370 if test -x "$withval/bin/krb5-config"; then
3371 KRB5CONFIG=$withval/bin/krb5-config
3375 AC_MSG_RESULT(no krb5-path given)
3379 #################################################
3380 # check for krb5-config from recent MIT and Heimdal kerberos 5
3381 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3382 AC_MSG_CHECKING(for working krb5-config)
3383 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3384 ac_save_CFLAGS=$CFLAGS
3385 CFLAGS="";export CFLAGS
3386 ac_save_LDFLAGS=$LDFLAGS
3387 LDFLAGS="";export LDFLAGS
3388 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3389 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3390 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3391 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3392 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3393 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3397 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3400 if test x$FOUND_KRB5 = x"no"; then
3401 #################################################
3402 # see if this box has the SuSE location for the heimdal krb implementation
3403 AC_MSG_CHECKING(for /usr/include/heimdal)
3404 if test -d /usr/include/heimdal; then
3405 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3406 KRB5_CFLAGS="-I/usr/include/heimdal"
3407 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3408 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3412 KRB5_CFLAGS="-I/usr/include/heimdal"
3413 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3422 if test x$FOUND_KRB5 = x"no"; then
3423 #################################################
3424 # see if this box has the RedHat location for kerberos
3425 AC_MSG_CHECKING(for /usr/kerberos)
3426 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3427 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3428 KRB5_CFLAGS="-I/usr/kerberos/include"
3429 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3437 if test x$FOUND_KRB5 = x"no"; then
3438 #################################################
3439 # see if this box has the OpenBSD location for heimdal krb5
3440 AC_MSG_CHECKING(for /usr/include/kerberosV)
3441 if test -d /usr/include/kerberosV; then
3442 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3443 KRB5_LIBS="-lcrypto"
3451 if test x$FOUND_KRB5 = x"no"; then
3452 #################################################
3453 # see if this box has Solaris MIT kerberos implementation
3454 AC_MSG_CHECKING(for Solaris MIT kerberos)
3455 if test -x "$KRB5CONFIG" && $KRB5CONFIG --version | grep -s Solaris | grep -s MIT > /dev/null ; then
3457 KRB5_LIBS="-lgss -lkrb5"
3458 KRB5_CFLAGS="`$KRB5CONFIG --cflags`"
3459 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags`"
3466 ac_save_CFLAGS=$CFLAGS
3467 ac_save_CPPFLAGS=$CPPFLAGS
3468 ac_save_LDFLAGS=$LDFLAGS
3470 # remove needless evil rpath stuff as early as possible:
3471 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3472 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3473 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3474 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3475 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3477 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3479 # now check for krb5.h. Some systems have the libraries without the headers!
3480 # note that this check is done here to allow for different kerberos
3482 AC_CHECK_HEADERS(krb5.h)
3484 if test x"$ac_cv_header_krb5_h" = x"no"; then
3486 # Give a warning if AD support was not explicitly requested,
3487 # i.e with_ads_support = auto, otherwise die with an error.
3489 if test x"$with_ads_support" = x"yes"; then
3490 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3492 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3495 # Turn off AD support and restore CFLAGS and LIBS variables
3497 with_ads_support="no"
3499 CFLAGS=$ac_save_CFLAGS
3500 CPPFLAGS=$ac_save_CPPFLAGS
3501 LDFLAGS=$ac_save_LDFLAGS
3504 # check for new heimdal KRB5_DEPRECATED handling
3506 AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3507 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3509 [#define KRB5_DEPRECATED 1
3512 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3513 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3515 if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3516 AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3517 [Whether to use deprecated krb5 interfaces])
3521 # Now we have determined whether we really want ADS support
3523 if test x"$with_ads_support" != x"no"; then
3528 # now check for gssapi headers. This is also done here to allow for
3529 # different kerberos include paths
3530 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h gssapi/gssapi_krb5.h com_err.h)
3532 ##################################################################
3533 # we might need the k5crypto and com_err libraries on some systems
3534 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3535 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3538 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3539 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3540 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3542 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3543 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3545 ########################################################
3546 # now see if we can find the krb5 libs in standard paths
3547 # or as specified above
3548 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3549 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3551 ########################################################
3552 # now see if we can find the gssapi libs in standard paths
3553 if test x"$have_gssapi" != x"yes"; then
3554 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3555 AC_CHECK_LIB_EXT(gss, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3557 ################################################################
3558 # test for AD / GSSAPI support being enabled
3559 if test x"$have_gssapi" != xyes ; then
3560 AC_MSG_WARN([Samba cannot be supported without GSSAPI])
3563 AC_DEFINE(HAVE_GSSAPI, , [Whether the platform has GSSAPI support])
3566 # This is for FreeBSD (and possibly others). gss_mech_krb5 is a
3567 # #define to GSS_KRB5_MECHANISM, which is defined in -lgssapi_krb5
3568 # Also, gsskrb5_extract_authz_data_from_sec_context is in -lgssapi_krb5
3569 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS, GSS_KRB5_MECHANISM,
3570 [KRB5_LIBS="$KRB5_LIBS -lgssapi_krb5"])
3572 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3573 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3574 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3575 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3576 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3577 AC_CHECK_FUNC_EXT(krb5_c_string_to_key, $KRB5_LIBS)
3578 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3579 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3580 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3581 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3582 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3583 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3584 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3585 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3586 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3587 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3588 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3589 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3590 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3591 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3592 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3593 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3594 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3595 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3596 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3597 AC_CHECK_FUNC_EXT(krb5_make_principal, $KRB5_LIBS)
3598 AC_CHECK_FUNC_EXT(krb5_principal_get_num_comp, $KRB5_LIBS)
3599 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3600 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3601 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3602 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3603 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3604 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3605 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3606 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3607 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3608 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3609 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3610 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3611 AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3612 AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3613 AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3614 AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3615 AC_CHECK_FUNC_EXT(krb5_get_init_creds_keytab, $KRB5_LIBS)
3616 AC_CHECK_FUNC_EXT(krb5_build_principal_alloc_va, $KRB5_LIBS)
3617 AC_CHECK_FUNC_EXT(krb5_cc_get_lifetime, $KRB5_LIBS)
3618 AC_CHECK_FUNC_EXT(krb5_cc_retrieve_cred, $KRB5_LIBS)
3619 AC_CHECK_FUNC_EXT(krb5_free_checksum_contents, $KRB5_LIBS)
3620 AC_CHECK_FUNC_EXT(krb5_create_checksum, $KRB5_LIBS)
3621 AC_CHECK_FUNC_EXT(krb5_c_make_checksum, $KRB5_LIBS)
3622 AC_CHECK_FUNC_EXT(gss_krb5_import_cred, $KRB5_LIBS)
3623 AC_CHECK_FUNC_EXT(gss_get_name_attribute, $KRB5_LIBS)
3624 AC_CHECK_FUNC_EXT(gsskrb5_extract_authz_data_from_sec_context, $KRB5_LIBS)
3625 AC_CHECK_FUNC_EXT(gss_mech_krb5, $KRB5_LIBS)
3626 AC_CHECK_FUNC_EXT(gss_oid_equal, $KRB5_LIBS)
3627 AC_CHECK_FUNC_EXT(gss_inquire_sec_context_by_oid, $KRB5_LIBS)
3628 AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3630 # MIT krb5 1.8 does not expose this call (yet)
3631 AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3633 # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3634 # but does have the symbol
3635 AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3637 LIBS="$KRB5_LIBS $LIBS"
3639 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3640 smb_krb5_cv_creds_opt_free_context,
3646 krb5_get_init_creds_opt *opt = NULL;
3647 krb5_get_init_creds_opt_free(ctx, opt);
3649 [smb_krb5_cv_creds_opt_free_context=yes],
3650 [smb_krb5_cv_creds_opt_free_context=no]
3654 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3655 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3656 [Whether krb5_get_init_creds_opt_free takes a context argument])
3659 AC_CACHE_CHECK([for checksum in krb5_checksum],
3660 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3661 AC_TRY_COMPILE([#include <krb5.h>],
3662 [krb5_checksum cksum; cksum.checksum.length = 0;],
3663 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3664 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3666 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3667 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3668 [Whether the krb5_checksum struct has a checksum property])
3671 AC_CACHE_CHECK([for etype in EncryptedData],
3672 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3673 AC_TRY_COMPILE([#include <krb5.h>],
3674 [EncryptedData edata; edata.etype = 0;],
3675 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3676 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3678 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3679 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3680 [Whether the EncryptedData struct has a etype property])
3683 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3684 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3685 AC_TRY_COMPILE([#include <krb5.h>],
3686 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3687 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3688 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3690 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3691 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3692 [Whether the krb5_ap_req struct has a ticket pointer])
3695 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3696 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3697 AC_TRY_COMPILE([#include <krb5.h>],
3698 [krb5_error err; err.e_data = NULL;],
3699 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3700 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3702 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3703 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3704 [Whether the krb5_error struct has a e_data pointer])
3707 AC_CACHE_CHECK([for krb5_crypto type],
3708 samba_cv_HAVE_KRB5_CRYPTO,[
3709 AC_TRY_COMPILE([#include <krb5.h>],
3710 [krb5_crypto crypto;],
3711 samba_cv_HAVE_KRB5_CRYPTO=yes,
3712 samba_cv_HAVE_KRB5_CRYPTO=no)])
3714 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3715 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3716 [Whether the type krb5_crypto exists])
3719 AC_CACHE_CHECK([for addrtype in krb5_address],
3720 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3721 AC_TRY_COMPILE([#include <krb5.h>],
3722 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3723 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3724 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3726 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3727 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3728 [Whether the krb5_address struct has a addrtype property])
3731 AC_CACHE_CHECK([for addr_type in krb5_address],
3732 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3733 AC_TRY_COMPILE([#include <krb5.h>],
3734 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3735 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3736 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3738 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3739 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3740 [Whether the krb5_address struct has a addr_type property])
3743 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3744 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3745 AC_TRY_COMPILE([#include <krb5.h>],
3746 [krb5_keyblock key; key.keyvalue.data = NULL;],
3747 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3748 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3750 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3751 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3752 [Whether the krb5_keyblock struct has a keyvalue property])
3755 found_arcfour_hmac=no
3756 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3757 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3758 AC_TRY_COMPILE([#include <krb5.h>],
3759 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3760 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3761 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3762 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3763 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3764 AC_TRY_COMPILE([#include <krb5.h>],
3765 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3766 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3767 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3768 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3769 # w.r.t. arcfour and windows, so we must not enable it here
3770 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3771 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3772 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3773 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
3774 found_arcfour_hmac=yes
3776 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
3777 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
3778 AC_TRY_COMPILE([#include <krb5.h>],
3779 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
3780 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
3781 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
3782 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
3783 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
3784 [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
3785 found_arcfour_hmac=yes
3788 AC_CACHE_CHECK([for ENCTYPE_AES128_CTS_HMAC_SHA1_96],
3789 samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,[
3790 AC_TRY_COMPILE([#include <krb5.h>],
3791 [krb5_enctype enctype; enctype = ENCTYPE_AES128_CTS_HMAC_SHA1_96;],
3792 samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=yes,
3793 samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=no)])
3794 if test x"$samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96" = x"yes"; then
3795 AC_DEFINE(HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,1,
3796 [Whether the ENCTYPE_AES128_CTS_HMAC_SHA1_96 key type definition is available])
3798 AC_CACHE_CHECK([for ENCTYPE_AES256_CTS_HMAC_SHA1_96],
3799 samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,[
3800 AC_TRY_COMPILE([#include <krb5.h>],
3801 [krb5_enctype enctype; enctype = ENCTYPE_AES256_CTS_HMAC_SHA1_96;],
3802 samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=yes,
3803 samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=no)])
3804 if test x"$samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96" = x"yes"; then
3805 AC_DEFINE(HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,1,
3806 [Whether the ENCTYPE_AES256_CTS_HMAC_SHA1_96 key type definition is available])
3809 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3810 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3811 AC_TRY_COMPILE([#include <krb5.h>],
3812 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3813 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3814 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3816 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3817 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3818 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3821 AC_CACHE_CHECK([for KV5M_KEYTAB],
3822 samba_cv_HAVE_KV5M_KEYTAB,[
3823 AC_TRY_COMPILE([#include <krb5.h>],
3824 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3825 samba_cv_HAVE_KV5M_KEYTAB=yes,
3826 samba_cv_HAVE_KV5M_KEYTAB=no)])
3828 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3829 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3830 [Whether the KV5M_KEYTAB option is available])
3833 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3834 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3835 AC_TRY_COMPILE([#include <krb5.h>],
3836 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3837 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3838 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3840 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3841 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3842 [Whether KRB5_KU_OTHER_CKSUM is available])
3845 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3846 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3847 AC_TRY_COMPILE([#include <krb5.h>],
3848 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3849 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3850 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3852 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3853 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3854 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3857 AC_CACHE_CHECK([for the krb5_princ_component macro],
3858 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3859 AC_TRY_LINK([#include <krb5.h>],
3860 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3861 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3862 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3864 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3865 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3866 [Whether krb5_princ_component is available])
3869 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3870 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3871 AC_TRY_COMPILE([#include <krb5.h>],
3872 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3873 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3874 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3876 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3877 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3878 [Whether krb5_keytab_entry has key member])
3881 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3882 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3883 AC_TRY_COMPILE([#include <krb5.h>],
3884 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3885 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3886 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3888 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3889 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3890 [Whether krb5_keytab_entry has keyblock member])
3893 AC_CACHE_CHECK([for magic in krb5_address],
3894 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3895 AC_TRY_COMPILE([#include <krb5.h>],
3896 [krb5_address addr; addr.magic = 0;],
3897 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3898 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3900 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3901 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3902 [Whether the krb5_address struct has a magic property])
3905 AC_CACHE_CHECK([for WRFILE: keytab support],
3906 samba_cv_HAVE_WRFILE_KEYTAB,[
3911 krb5_context context;
3914 krb5_init_context(&context);
3915 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3917 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3918 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3920 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3921 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3922 [Whether the WRFILE:-keytab is supported])
3925 AC_CACHE_CHECK([for krb5_realm type],
3926 samba_cv_HAVE_KRB5_REALM_TYPE,[
3927 AC_TRY_COMPILE([#include <krb5.h>],
3928 [krb5_realm realm;],
3929 samba_cv_HAVE_KRB5_REALM_TYPE=yes,
3930 samba_cv_HAVE_KRB5_REALM_TYPE=no)])
3932 if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
3933 AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
3934 [Whether the type krb5_realm exists])
3937 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3938 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3939 AC_TRY_COMPILE([#include <krb5.h>],
3941 krb5_context context;
3942 krb5_principal principal;
3943 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3944 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3945 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3947 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3948 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3949 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3952 AC_CACHE_CHECK([for krb5_addresses type],
3953 samba_cv_HAVE_KRB5_ADDRESSES,[
3954 AC_TRY_COMPILE([#include <krb5.h>],
3955 [krb5_addresses addr;],
3956 samba_cv_HAVE_KRB5_ADDRESSES=yes,
3957 samba_cv_HAVE_KRB5_ADDRESSES=no)])
3959 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3960 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3961 [Whether the type krb5_addresses type exists])
3964 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3965 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3966 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3971 krb5_context context = NULL;
3973 krb5_enctype_to_string(context, 1, &str);
3974 if (str) free (str);
3977 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3978 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3979 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3981 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3982 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3983 [whether krb5_enctype_to_string takes krb5_context argument])
3986 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3987 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
3992 krb5_enctype_to_string(1, buf, 256);
3995 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3996 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
3997 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
3999 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4000 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4001 [whether krb5_enctype_to_string takes size_t argument])
4005 AC_CACHE_CHECK([for krb5_principal_get_realm],
4006 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4007 AC_TRY_LINK([#include <krb5.h>],
4008 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4009 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4010 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4012 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4013 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4014 [Whether the function krb5_principal_get_realm is defined])
4017 AC_CACHE_CHECK([for krb5_princ_realm],
4018 samba_cv_HAVE_KRB5_PRINC_REALM,[
4019 AC_TRY_LINK([#include <krb5.h>],
4020 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4021 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4022 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4024 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4025 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4026 [Whether the macro krb5_princ_realm is defined])
4029 AC_HAVE_DECL(KRB5_PDU_NONE,[#include <krb5.h>])
4031 AC_CACHE_CHECK([for flags in krb5_creds],
4032 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS,[
4033 AC_TRY_COMPILE([#include <krb5.h>],
4034 [krb5_creds creds; creds.flags.b.initial = 0;],
4035 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS=yes,
4036 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS=no)])
4038 if test x"$samba_cv_HAVE_FLAGS_IN_KRB5_CREDS" = x"yes"; then
4039 AC_DEFINE(HAVE_FLAGS_IN_KRB5_CREDS,1,
4040 [Whether the krb5_creds struct has a flags property])
4044 # Now the decisions whether we can support krb5
4046 # NOTE: all tests should be done before this block!
4049 if test x"$found_arcfour_hmac" != x"yes"; then
4050 AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4054 if test x"$ac_cv_func_ext_krb5_set_real_time" != x"yes"; then
4055 AC_MSG_WARN(krb5_set_real_time encryption type not found in -lkrb5)
4059 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4060 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4064 if test x"$ac_cv_func_ext_krb5_get_host_realm" != x"yes"
4066 AC_MSG_WARN(krb5_get_host_realm not found in -lkrb5)
4070 if test x"$ac_cv_func_ext_krb5_free_host_realm" != x"yes"
4072 AC_MSG_WARN(krb5_free_host_realm not found in -lkrb5)
4076 if test x"$ac_cv_func_ext_krb5_fwd_tgt_creds" != x"yes"
4078 AC_MSG_WARN(krb5_fwd_tgt_creds not found in -lkrb5)
4082 if test x"$ac_cv_func_ext_krb5_get_init_creds_opt_alloc" != x"yes"
4084 AC_MSG_WARN(krb5_get_init_creds_opt_alloc found in -lkrb5)
4088 if test x"$smb_krb5_cv_creds_opt_free_context" != x"yes"
4090 AC_MSG_WARN(krb5_get_init_creds_opt_free not found or was too old in -lkrb5)
4094 if test x"$ac_cv_func_ext_krb5_get_renewed_creds" != x"yes"
4096 AC_MSG_WARN(krb5_get_renewed_creds not found in -lkrb5)
4100 if test x"$ac_cv_func_ext_krb5_principal_compare_any_realm" != x"yes"
4102 AC_MSG_WARN(krb5_principal_compare_any_realm not found in -lkrb5)
4106 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -o \
4107 x"$ac_cv_func_ext_krb5_c_string_to_key" != x"yes"
4109 if test x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes" -o \
4110 x"$ac_cv_func_ext_krb5_string_to_key_salt" != x"yes"
4112 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4117 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4118 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4120 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4124 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4125 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4127 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4131 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes"
4133 AC_MSG_WARN(krb5_c_verify_checksum not found in -lkrb5)
4137 if test x"$ac_cv_func_ext_gss_wrap_iov" != x"yes" ; then
4138 AC_MSG_WARN(gss_wrap_iov not found in -lgssapi)
4142 if test x"$ac_cv_func_ext_gss_get_name_attribute" != x"yes" ; then
4143 if test x"$ac_cv_func_ext_gsskrb5_extract_authz_data_from_sec_context" != x"yes" -o \
4144 x"$ac_cv_func_ext_gss_inquire_sec_context_by_oid" != x"yes"
4146 AC_MSG_WARN(need either gss_get_name_attribute or gsskrb5_extract_authz_data_from_sec_context and gss_inquire_sec_context_by_oid in -lgssapi for PAC support)
4151 if test x"$use_ads" = x"yes"; then
4152 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4153 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4155 if test x"$with_ads_support" = x"yes"; then
4156 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4158 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4160 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4161 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4162 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4163 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4164 AC_REMOVE_DEFINE(HAVE_GSSAPI)
4168 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4169 AC_MSG_RESULT([$use_ads])
4171 LIBS="$ac_save_LIBS"
4174 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4175 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4178 ########################################################
4179 # Compile with DNS Updates support?
4181 with_dnsupdate_support=auto
4182 AC_MSG_CHECKING([whether to enable DNS Updates support])
4184 AC_ARG_WITH(dnsupdate,
4185 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4186 [ case "$withval" in
4188 with_dnsupdate_support=$withval
4192 AC_MSG_RESULT($with_dnsupdate_support)
4194 if test x"$with_dnsupdate_support" != x"no"; then
4196 ################################################################
4197 # first test for AD / GSSAPI support being enabled
4198 if test x"$have_gssapi" != xyes -o x"$use_ads" != xyes ; then
4199 if test x"$with_dnsupdate_support" = x"yes" ; then
4200 AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4202 AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4203 with_dnsupdate_support=no
4208 if test x"$with_dnsupdate_support" != x"no"; then
4209 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4212 # finally print out the result:
4213 AC_MSG_CHECKING(whether DNS Updates support is used)
4214 AC_MSG_RESULT([$with_dnsupdate_support])
4217 #################################################
4218 # check for automount support
4219 AC_MSG_CHECKING(whether to use automount)
4220 AC_ARG_WITH(automount,
4221 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4222 [ case "$withval" in
4225 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4234 #################################################
4235 # Check for a PAM clear-text auth, accounts, password
4236 # and session support. Most PAM implementations keep their
4237 # headers in /usr/include/security. Darwin keeps its in
4240 with_pam_for_crypt=no
4242 AC_MSG_CHECKING(whether to try PAM support)
4244 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4245 [ case "$withval" in
4251 AC_MSG_RESULT([$try_pam])
4254 create_pam_modules=no
4255 if test x"${try_pam}" != x"no";then
4257 create_pam_modules=yes
4259 # Most systems have PAM headers in /usr/include/security, but Darwin
4260 # has them in /usr/include/pam.
4261 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4262 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4263 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4264 if test x"${try_pam}" = x"yes";then
4265 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4268 create_pam_modules=no
4271 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4272 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4273 if test x"${try_pam}" = x"yes";then
4274 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4277 create_pam_modules=no
4280 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4281 #if HAVE_SECURITY_PAM_APPL_H
4282 #include <security/pam_appl.h>
4284 #if HAVE_PAM_PAM_APPL_H
4285 #include <pam/pam_appl.h>
4288 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4289 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4290 if test x"${try_pam}" = x"yes";then
4291 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4293 create_pam_modules=no
4296 if test x"$use_pam" = x"yes"; then
4297 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4298 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4299 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4300 with_pam_for_crypt=yes
4302 if test x"$create_pam_modules" = x"yes"; then
4303 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4304 # this checks are optional,
4305 # we don't care about the results here
4306 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4307 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4308 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4310 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4313 AC_MSG_CHECKING(whether to use PAM support)
4314 AC_MSG_RESULT([$use_pam])
4316 AC_MSG_CHECKING(whether to have PAM MODULES support)
4317 AC_MSG_RESULT([$create_pam_modules])
4320 #if defined(HAVE_SECURITY_PAM_APPL_H)
4321 #include <security/pam_appl.h>
4322 #elif defined(HAVE_PAM_PAM_APPL_H)
4323 #include <pam/pam_appl.h>
4325 pam_set_item(0, PAM_RHOST, 0);
4327 AC_DEFINE(HAVE_PAM_RHOST, 1,
4328 [Define to 1 if PAM_RHOST is available]),[])
4331 #if defined(HAVE_SECURITY_PAM_APPL_H)
4332 #include <security/pam_appl.h>
4333 #elif defined(HAVE_PAM_PAM_APPL_H)
4334 #include <pam/pam_appl.h>
4336 pam_set_item(0, PAM_TTY, 0);
4338 AC_DEFINE(HAVE_PAM_TTY, 1,
4339 [Define to 1 if PAM_TTY is available]),[])
4343 #################################################
4344 # check for PAM_RADIO_TYPE
4346 #if (!defined(LINUX))
4348 #define PAM_EXTERN extern
4349 #if defined(HAVE_SECURITY_PAM_APPL_H)
4350 #include <security/pam_appl.h>
4351 #elif defined(HAVE_PAM_PAM_APPL_H)
4352 #include <pam/pam_appl.h>
4357 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4358 #include <security/pam_modules.h>
4359 #elif defined(HAVE_PAM_PAM_MODULES_H)
4360 #include <pam/pam_modules.h>
4363 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4364 #include <security/_pam_macros.h>
4365 #elif defined(HAVE_PAM__PAM_MACROS_H)
4366 #include <pam/_pam_macros.h>
4369 #ifdef HAVE_SECURITY_PAM_EXT_H
4370 #include <security/pam_ext.h>
4373 [int i; i = PAM_RADIO_TYPE; ],
4374 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4376 #################################################
4377 # check for pam_smbpass support
4379 INSTALL_PAM_MODULES=""
4380 UNINSTALL_PAM_MODULES=""
4382 try_pam_smbpass=auto
4383 AC_MSG_CHECKING(whether to use pam_smbpass)
4384 AC_ARG_WITH(pam_smbpass,
4385 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4386 [ case "$withval" in
4388 try_pam_smbpass=$withval
4391 AC_MSG_ERROR([valid options are yes,no,auto])
4396 if test x"${try_pam_smbpass}" = xno ; then
4400 # Conditions under which pam_smbpass can't be built.
4401 if test x"$BLDSHARED" != xtrue ; then
4402 if test x"${try_pam_smbpass}" = xyes ; then
4403 AC_MSG_ERROR([No support for shared modules])
4406 elif test x"$create_pam_modules" != xyes ; then
4407 if test x"${try_pam_smbpass}" = xyes ; then
4408 AC_MSG_ERROR([No support for PAM MODULES])
4413 if test x"${use_pam_smbpass}" = xyes ; then
4414 PAM_MODULES="pam_smbpass"
4415 INSTALL_PAM_MODULES="installpammodules"
4416 UNINSTALL_PAM_MODULES="uninstallpammodules"
4419 AC_MSG_RESULT([$use_pam_smbpass])
4423 ## moved after the check for -lcrypt in order to
4424 ## ensure that the necessary libraries are included
4425 ## check checking for truncated salt. Wrapped by the
4426 ## $with_pam_for_crypt variable as above --jerry
4428 if test $with_pam_for_crypt = no; then
4429 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4431 LIBS="$AUTH_LIBS $LIBS"
4432 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4433 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4434 LIBS="$crypt_LIBS"])
4435 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4436 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4440 #################################################
4441 # check for a NISPLUS_HOME support
4442 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4443 AC_ARG_WITH(nisplus-home,
4444 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4445 [ case "$withval" in
4448 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4457 #################################################
4458 # check for syslog logging
4459 AC_MSG_CHECKING(whether to use syslog logging)
4461 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4462 [ case "$withval" in
4465 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4474 #################################################
4475 # check for custom syslog facility
4476 AC_MSG_CHECKING(whether to use a custom syslog facility)
4477 AC_ARG_WITH(syslog-facility,
4478 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4480 if test "$withval" = "no" ; then
4481 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4483 if test "$withval" != "yes" ; then
4484 syslog_facility="$withval"
4485 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4490 #################################################
4491 # check for experimental disk-quotas support
4493 samba_cv_WITH_QUOTAS=auto
4494 samba_cv_SYSQUOTA_FOUND=no
4496 AC_MSG_CHECKING(whether to try disk-quotas support)
4498 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4499 [ case "$withval" in
4502 samba_cv_WITH_QUOTAS=yes
4506 samba_cv_WITH_QUOTAS=auto
4510 samba_cv_WITH_QUOTAS=no
4513 AC_MSG_RESULT(${samba_cv_WITH_QUOTAS})
4516 AC_MSG_RESULT(${samba_cv_WITH_QUOTAS})
4519 #############################################
4520 # only check for quota stuff if --with-quotas
4521 if test x"$samba_cv_WITH_QUOTAS" != x"no"; then
4524 # on linux we didn't need to test we have builtin support
4526 samba_cv_SYSQUOTA_FOUND=yes
4527 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4528 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4531 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4535 # need to set this define when using static linking (BUG 1473)
4536 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4542 # some broken header files need this
4543 AC_CHECK_HEADER(asm/types.h,[
4544 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4545 AC_ADD_INCLUDE(<asm/types.h>)
4548 # For quotas on Veritas VxFS filesystems
4549 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4551 # For quotas on XFS filesystems, Linux style
4552 AC_CHECK_HEADERS(xfs/xqm.h,[
4553 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4556 # For sys/quota.h and linux/quota.h
4557 AC_CHECK_HEADERS(sys/quota.h)
4559 # For quotas on BSD systems
4560 AC_CHECK_HEADERS(ufs/ufs/quota.h)
4563 if test x"$ac_cv_header_xfs_xqm_h" != x"yes"; then
4564 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4565 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4567 #include "confdefs.h"
4568 #ifdef HAVE_SYS_TYPES_H
4569 #include <sys/types.h>
4571 #ifdef HAVE_ASM_TYPES_H
4572 #include <asm/types.h>
4574 #include <sys/quota.h>
4575 ],[int i = Q_XGETQUOTA;],
4576 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4577 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4578 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4582 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4583 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4585 #include "confdefs.h"
4586 #ifdef HAVE_SYS_QUOTA_H
4587 #include <sys/quota.h>
4591 D.dqb_fsoftlimit = 0;],
4592 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4593 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4594 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4598 # look for a working quota system
4600 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4601 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4603 #define HAVE_QUOTACTL_4A 1
4604 #define AUTOCONF_TEST 1
4605 #include "confdefs.h"
4606 #include "${srcdir-.}/../../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4607 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4608 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4609 samba_cv_SYSQUOTA_FOUND=yes;
4610 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4614 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4615 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4617 #define HAVE_QUOTACTL_4B 1
4618 #define AUTOCONF_TEST 1
4619 #include "confdefs.h"
4620 #include "${srcdir-.}/../../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4621 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4622 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4623 samba_cv_SYSQUOTA_FOUND=yes;
4624 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4625 AC_CHECK_MEMBERS([struct dqblk.dqb_curbytes], # Darwin bytecount style
4626 [ AC_DEFINE([HAVE_STRUCT_DQBLK_DQB_CURBYTES],[1],[darwin style quota bytecount])],,
4627 [#include <sys/types.h>
4628 #include <sys/quota.h>])
4633 AC_CACHE_CHECK([for NFS QUOTAS],samba_cv_HAVE_NFS_QUOTAS,[
4635 #include <rpc/rpc.h>
4636 #include <rpc/types.h>
4637 #include <rpcsvc/rquota.h>
4638 #ifdef HAVE_RPC_NETTYPE_H
4639 #include <rpc/nettype.h>
4641 #include <rpc/xdr.h>
4642 ],[clnt_create("", RQUOTAPROG, RQUOTAVERS, "udp");],
4643 samba_cv_HAVE_NFS_QUOTAS=yes, samba_cv_HAVE_NFS_QUOTAS=no)])
4645 if test x"$samba_cv_HAVE_NFS_QUOTAS" = x"yes"; then
4646 AC_DEFINE(HAVE_NFS_QUOTAS,1,[NFS quota support is available])
4647 AC_CHECK_MEMBER(struct getquota_rslt.getquota_rslt_u,
4648 AC_DEFINE(HAVE_GETQUOTA_RSLT_GETQUOTA_RSLT_U, 1, [Defined if struct getquota_rslt has getquota_rslt_u]),,
4649 [#include <rpcsvc/rquota.h>])
4652 #################################################
4653 # check for mntent.h and struct mntent
4654 AC_CHECK_HEADERS(mntent.h)
4655 #################################################
4656 # check for setmntent,getmntent,endmntent
4657 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4659 #################################################
4660 # check for devnm.h and struct mntent
4661 AC_CHECK_HEADERS(devnm.h)
4662 #################################################
4664 AC_CHECK_FUNCS(devnm)
4666 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4667 if test x"$samba_cv_SYSQUOTA_FOUND" = x"yes"; then
4669 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4670 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4673 AC_MSG_CHECKING(whether to use the old quota support)
4674 if test x"$samba_cv_WITH_QUOTAS" = x"yes"; then
4675 AC_DEFINE(WITH_QUOTAS,1,[Whether to use old quota support])
4682 ####################
4683 # End of quota check samba_cv_WITH_QUOTAS
4686 #################################################
4687 # check for experimental utmp accounting
4689 AC_MSG_CHECKING(whether to support utmp accounting)
4692 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4693 [ case "$withval" in
4703 # utmp requires utmp.h
4704 # Note similar check earlier, when checking utmp details.
4706 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4707 utmp_no_reason=", no utmp.h on $host_os"
4711 if test x"$WITH_UTMP" = x"yes" -a x"$samba_cv_HAVE_UX_UT_LINE" != x"yes"; then
4712 utmp_no_reason=", sizeof ut_line not ok"
4716 # Display test results
4718 if test x"$WITH_UTMP" = x"yes"; then
4720 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4722 AC_MSG_RESULT(no$utmp_no_reason)
4726 #################################################
4727 # these tests are taken from the GNU fileutils package
4728 AC_CHECKING(how to get filesystem space usage)
4731 # Perform only the link test since it seems there are no variants of the
4732 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4733 # because that got a false positive on SCO OSR5. Adding the declaration
4734 # of a `struct statvfs' causes this test to fail (as it should) on such
4735 # systems. That system is reported to work fine with STAT_STATFS4 which
4736 # is what it gets when this test fails.
4737 if test $space = no; then
4739 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4740 [AC_TRY_LINK([#include <sys/types.h>
4741 #include <sys/statvfs.h>],
4742 [struct statvfs fsd; statvfs (0, &fsd);],
4743 fu_cv_sys_stat_statvfs=yes,
4744 fu_cv_sys_stat_statvfs=no)])
4745 if test $fu_cv_sys_stat_statvfs = yes; then
4747 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4751 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4752 # This is not the case on ancient Linux systems.
4754 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4755 AC_TRY_COMPILE([#include <sys/types.h>
4756 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4757 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4758 if test x"$samba_cv_fsid_int" = x"yes"; then
4759 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4762 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4763 # systems use f_bsize.
4764 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4765 AC_TRY_COMPILE([#include <sys/types.h>
4766 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4767 samba_cv_frsize=yes,samba_cv_frsize=no)])
4768 if test x"$samba_cv_frsize" = x"yes"; then
4769 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4772 # Some systems use f_flag in struct statvfs while others use f_flags
4773 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
4774 AC_TRY_COMPILE([#include <sys/types.h>
4775 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
4776 samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
4777 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
4778 AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
4781 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
4782 AC_TRY_COMPILE([#include <sys/types.h>
4783 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
4784 samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
4785 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
4786 AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
4789 if test $space = no; then
4790 # DEC Alpha running OSF/1
4791 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4792 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4794 #include <sys/param.h>
4795 #include <sys/types.h>
4796 #include <sys/mount.h>
4801 return (statfs (".", &fsd, sizeof (struct statfs)));
4803 fu_cv_sys_stat_statfs3_osf1=yes,
4804 fu_cv_sys_stat_statfs3_osf1=no,
4805 fu_cv_sys_stat_statfs3_osf1=no)])
4806 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4807 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4809 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4813 if test $space = no; then
4815 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4816 member (AIX, 4.3BSD)])
4817 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4819 #ifdef HAVE_SYS_PARAM_H
4820 #include <sys/param.h>
4822 #ifdef HAVE_SYS_MOUNT_H
4823 #include <sys/mount.h>
4825 #ifdef HAVE_SYS_VFS_H
4826 #include <sys/vfs.h>
4832 return (statfs (".", &fsd));
4834 fu_cv_sys_stat_statfs2_bsize=yes,
4835 fu_cv_sys_stat_statfs2_bsize=no,
4836 fu_cv_sys_stat_statfs2_bsize=no)])
4837 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4838 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4840 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4844 if test $space = no; then
4846 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4847 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4848 [AC_TRY_RUN([#include <sys/types.h>
4849 #include <sys/statfs.h>
4853 return (statfs (".", &fsd, sizeof fsd, 0));
4855 fu_cv_sys_stat_statfs4=yes,
4856 fu_cv_sys_stat_statfs4=no,
4857 fu_cv_sys_stat_statfs4=no)])
4858 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4859 if test $fu_cv_sys_stat_statfs4 = yes; then
4861 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4865 if test $space = no; then
4867 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4868 member (4.4BSD and NetBSD)])
4869 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4870 [AC_TRY_RUN([#include <sys/types.h>
4871 #ifdef HAVE_SYS_PARAM_H
4872 #include <sys/param.h>
4874 #ifdef HAVE_SYS_MOUNT_H
4875 #include <sys/mount.h>
4881 return (statfs (".", &fsd));
4883 fu_cv_sys_stat_statfs2_fsize=yes,
4884 fu_cv_sys_stat_statfs2_fsize=no,
4885 fu_cv_sys_stat_statfs2_fsize=no)])
4886 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4887 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4889 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4893 if test $space = no; then
4895 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4896 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4897 [AC_TRY_RUN([#include <sys/types.h>
4898 #ifdef HAVE_SYS_PARAM_H
4899 #include <sys/param.h>
4901 #ifdef HAVE_SYS_MOUNT_H
4902 #include <sys/mount.h>
4904 #ifdef HAVE_SYS_FS_TYPES_H
4905 #include <sys/fs_types.h>
4910 /* Ultrix's statfs returns 1 for success,
4911 0 for not mounted, -1 for failure. */
4912 return (statfs (".", &fsd) != 1);
4914 fu_cv_sys_stat_fs_data=yes,
4915 fu_cv_sys_stat_fs_data=no,
4916 fu_cv_sys_stat_fs_data=no)])
4917 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4918 if test $fu_cv_sys_stat_fs_data = yes; then
4920 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4924 #################################################
4925 # check for cluster extensions
4927 AC_MSG_CHECKING(cluster support)
4928 AC_ARG_WITH(cluster-support,
4929 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
4931 if test x"$with_cluster_support" = x ; then
4932 with_cluster_support="auto"
4935 AC_MSG_RESULT($with_cluster_support)
4938 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
4939 [ case "$withval" in
4941 AC_MSG_WARN([--with-ctdb called without argument])
4944 CTDB_CPPFLAGS="-I$withval/include"
4948 AC_ARG_ENABLE(old-ctdb,
4949 [AS_HELP_STRING([--enable-old-ctdb],
4950 [Enable build against (too) old ctdb version (default=no)])],,
4951 [enable_old_ctdb=no])
4954 if test "$with_cluster_support" != "no" ; then
4956 AC_MSG_NOTICE(checking whether cluster support is available)
4958 have_cluster_support="yes"
4961 SAVED_CPPFLAGS="$CPPFLAGS"
4962 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
4964 AC_CHECK_HEADERS(ctdb.h ctdb_private.h ctdb_protocol.h ,,,[
4965 #include "confdefs.h"
4967 #include "replace.h"
4968 #include "system/wait.h"
4969 #include "system/network.h"
4970 #define private #error __USED_RESERVED_WORD_private__
4976 if test "x$have_cluster_support" = "xyes" -a \
4977 "x$ac_cv_header_ctdb_h" != "xyes"
4979 have_cluster_support=no
4980 ctdb_broken="ctdb.h is required for cluster support"
4983 if test "x$have_cluster_support" = "xyes" -a \
4984 "x$ac_cv_header_ctdb_private_h" != "xyes"
4986 have_cluster_support=no
4987 ctdb_broken="ctdb_private.h is required for cluster support"
4991 if test "x$have_cluster_support" = "xyes" ; then
4992 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
4993 #include "confdefs.h"
4995 #include "replace.h"
4996 #include "system/wait.h"
4997 #include "system/network.h"
5001 #include <ctdb_private.h>
5003 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" != x"yes"; then
5004 ctdb_broken="ctdb transaction support missing or too old"
5005 have_cluster_support=no
5009 if test "x$have_cluster_support" = "xyes" ; then
5010 AC_HAVE_DECL(CTDB_CONTROL_SCHEDULE_FOR_DELETION,[
5011 #include "confdefs.h"
5013 #include "replace.h"
5014 #include "system/wait.h"
5015 #include "system/network.h"
5019 #include <ctdb_private.h>
5021 if test x"$ac_cv_have_CTDB_CONTROL_SCHEDULE_FOR_DELETION_decl" != x"yes"
5023 if test "x$enable_old_ctdb" = "xyes" ; then
5024 AC_MSG_WARN([ignoring missing SCHEDULE_FOR_DELETION (--enable-old-ctdb)])
5026 ctdb_broken="support for SCHEDULE_FOR_DELETION control missing"
5027 have_cluster_support=no
5032 if test "x$have_cluster_support" = "xyes" ; then
5033 AC_HAVE_DECL(CTDB_CONTROL_CHECK_SRVIDS,[
5034 #include "confdefs.h"
5036 #include "replace.h"
5037 #include "system/wait.h"
5038 #include "system/network.h"
5042 #include <ctdb_private.h>
5044 if test x"$ac_cv_have_CTDB_CONTROL_CHECK_SRVIDS_decl" != x"yes"
5046 if test "x$enable_old_ctdb" = "xyes" ; then
5047 AC_MSG_WARN([ignoring missing CHECK_SRVIDS (--enable-old-ctdb)])
5049 ctdb_broken="support for CHECK_SRVIDS control missing"
5050 have_cluster_support=no
5055 AC_ARG_ENABLE([ctdb-readonly-records],
5056 AS_HELP_STRING([--enable-ctdb-readonly-records],
5057 [Turn on CTDB readonly records support (default=yes)]),
5058 [want_ctdb_readonly=$enableval],
5059 [want_ctdb_readonly=yes])
5061 if test "x$have_cluster_support" = "xyes" -a "x$want_ctdb_readonly" = "xyes" ; then
5062 AC_HAVE_DECL(CTDB_WANT_READONLY,[
5063 #include "confdefs.h"
5065 #include "replace.h"
5066 #include "system/wait.h"
5067 #include "system/network.h"
5073 if test "x$ac_cv_have_CTDB_WANT_READONLY_decl" != "xyes" ; then
5074 if test "x$enable_old_ctdb" = "xyes" ; then
5075 AC_MSG_WARN([ignoring missing READONLY support (--enable-old-ctdb)])
5077 ctdb_broken="support for CTDB readonly records missing"
5078 have_cluster_support=no
5083 if test "x$have_cluster_support" = "xyes" ; then
5084 # In ctdb 1.0.57, ctdb_control_tcp was temporarily renamed
5085 # to ctdb_tcp_client.
5086 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5087 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5089 #include "confdefs.h"
5091 #include "replace.h"
5092 #include "system/wait.h"
5093 #include "system/network.h"
5097 #include <ctdb_private.h>
5101 if test "x$have_cluster_support" = "xyes" ; then
5102 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5103 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5105 ctdb_broken="missing struct ctdb_control_tcp"
5106 have_cluster_support=no
5108 #include "confdefs.h"
5110 #include "replace.h"
5111 #include "system/wait.h"
5112 #include "system/network.h"
5116 #include <ctdb_private.h>
5120 # test for optional ipv6 support in ctdb:
5121 if test "x$have_cluster_support" = "xyes" ; then
5122 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5123 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5125 #include "confdefs.h"
5127 #include "replace.h"
5128 #include "system/wait.h"
5129 #include "system/network.h"
5133 #include <ctdb_private.h>
5137 CPPFLAGS="$SAVED_CPPFLAGS"
5139 fi # (if test "$with_cluster_support" != "no")
5141 if test x"$have_cluster_support" = "xno" ; then
5142 case "$with_cluster_support" in
5144 AC_MSG_ERROR(["cluster support not available: $ctdb_broken"])
5147 AC_MSG_WARN(["cluster support not available: $ctdb_broken"])
5150 with_cluster_support=no
5153 if test "x$with_cluster_support" != "xno"; then
5154 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5155 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5156 AC_MSG_NOTICE(Building with cluster support)
5158 AC_MSG_NOTICE(Building without cluster support)
5162 #################################################
5163 # check for rtnetlink
5165 AC_CHECK_HEADERS([linux/netlink.h],
5166 AC_CHECK_HEADERS([linux/rtnetlink.h],[],[],
5167 [#include <bits/sockaddr.h>
5168 #include <linux/netlink.h>]),
5169 [],[#include <bits/sockaddr.h>])
5171 #################################################
5172 # check for ACL support
5174 AC_MSG_CHECKING(whether to support ACLs)
5175 AC_ARG_WITH(acl-support,
5176 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5177 [ case "$withval" in
5179 with_acl_support="$withval"
5183 if test x"$with_acl_support" = x ; then
5184 with_acl_support="auto"
5187 AC_MSG_RESULT($with_acl_support)
5189 if test x"$with_acl_support" = x"no"; then
5190 AC_MSG_RESULT(Disabling ACL support)
5192 AC_MSG_NOTICE(checking whether ACL support is available:)
5195 AC_MSG_NOTICE(Using UnixWare ACLs)
5196 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5197 default_static_modules="$default_static_modules vfs_solarisacl"
5200 AC_MSG_NOTICE(Using solaris ACLs)
5201 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5202 ACL_LIBS="$ACL_LIBS -lsec"
5203 default_static_modules="$default_static_modules vfs_solarisacl"
5206 AC_MSG_NOTICE(Using HPUX ACLs)
5207 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5208 default_static_modules="$default_static_modules vfs_hpuxacl"
5211 AC_MSG_NOTICE(Using AIX ACLs)
5212 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5213 default_static_modules="$default_static_modules vfs_aixacl"
5216 AC_MSG_NOTICE(Using Tru64 ACLs)
5217 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5218 ACL_LIBS="$ACL_LIBS -lpacl"
5219 default_static_modules="$default_static_modules vfs_tru64acl"
5222 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5225 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5228 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5231 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5233 LIBS="$LIBS $ACL_LIBS"
5235 #include <sys/types.h>
5236 #include <sys/acl.h>
5240 acl_entry_t *entry_p;
5241 return acl_get_entry(acl, entry_id, entry_p);
5243 [samba_cv_HAVE_POSIX_ACLS=yes],
5244 [samba_cv_HAVE_POSIX_ACLS=no])
5247 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5248 AC_MSG_NOTICE(Using posix ACLs)
5249 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5250 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5252 LIBS="$LIBS $ACL_LIBS"
5254 #include <sys/types.h>
5255 #include <sys/acl.h>
5257 acl_permset_t permset_d;
5259 return acl_get_perm_np(permset_d, perm);
5261 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5262 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5265 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5266 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5268 default_static_modules="$default_static_modules vfs_posixacl"
5270 AC_MSG_NOTICE(ACL support is not avaliable)
5274 fi # with_acl_support
5276 #################################################
5277 # check if we have FreeBSD sunacl
5280 AC_CHECK_HEADER(sunacl.h)
5281 if test x"$ac_cv_header_sunacl_h" = xyes ; then
5282 AC_DEFINE(HAVE_FREEBSD_SUNACL_H,1,[Whether we have FreeBSD sunacl around])
5283 ZFSACL_LIBS=-lsunacl
5284 AC_SUBST(ZFSACL_LIBS)
5285 default_shared_modules="$default_shared_modules vfs_zfsacl"
5290 #################################################
5291 # check for AIO support
5294 AC_MSG_CHECKING(whether to support asynchronous io)
5295 AC_ARG_WITH(aio-support,
5296 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=auto)])],
5297 [ case "$withval" in
5303 AC_MSG_RESULT($with_aio)
5305 if test x"$with_aio" = x"no"; then
5306 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5310 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5312 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5313 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5316 AC_TRY_LINK([#include <sys/types.h>
5318 [ struct aiocb a; return aio_read(&a);],
5319 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5321 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5322 AC_DEFINE(HAVE_AIO, 1, [Using asynchronous io])
5324 AC_MSG_CHECKING(for aio_read)
5325 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5326 int main() { struct aiocb a; return aio_read(&a); }])],
5327 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5328 [AC_MSG_RESULT(no)])
5330 AC_MSG_CHECKING(for aio_write)
5331 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5332 int main() { struct aiocb a; return aio_write(&a); }])],
5333 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5334 [AC_MSG_RESULT(no)])
5336 AC_MSG_CHECKING(for aio_fsync)
5337 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5338 int main() { struct aiocb a; return aio_fsync(1, &a); }])],
5339 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5340 [AC_MSG_RESULT(no)])
5342 AC_MSG_CHECKING(for aio_return)
5343 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5344 int main() { struct aiocb a; return aio_return(&a); }])],
5345 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5346 [AC_MSG_RESULT(no)])
5348 AC_MSG_CHECKING(for aio_error)
5349 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5350 int main() { struct aiocb a; return aio_error(&a); }])],
5351 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5352 [AC_MSG_RESULT(no)])
5354 AC_MSG_CHECKING(for aio_cancel)
5355 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5356 int main() { struct aiocb a; return aio_cancel(1, &a); }])],
5357 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5358 [AC_MSG_RESULT(no)])
5360 AC_MSG_CHECKING(for aio_suspend)
5361 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5362 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }])],
5363 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5364 [AC_MSG_RESULT(no)])
5366 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5371 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5372 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5373 default_shared_modules="$default_shared_modules vfs_aio_fork"
5376 # Check for Linux kernel aio support.
5379 AC_CHECK_LIB(aio,io_submit,[AIO_LIBS="$LIBS -laio"])
5380 AC_CACHE_CHECK([for Linux kernel asynchronous io support],samba_cv_HAVE_LINUX_KERNEL_AIO,[
5383 AC_TRY_LINK([#include <unistd.h>
5385 #include <sys/types.h>
5387 #include <sys/eventfd.h>
5388 #include <libaio.h>],
5389 [ struct io_event ioev;
5395 fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
5396 io_queue_init(128,&ctx);
5397 io_prep_pwrite(ioc, 1, buf, 1, 0);
5398 io_prep_pread(ioc, 1, buf, 1, 0);
5399 io_set_eventfd(ioc, fd);
5400 io_set_callback(ioc, (io_callback_t)(0));
5401 io_submit(ctx, 1, &ioc);
5402 io_getevents(ctx, 1, 1, &ioev, &ts);],
5403 samba_cv_HAVE_LINUX_KERNEL_AIO=yes,samba_cv_HAVE_LINUX_KERNEL_AIO=no)
5405 if test x"$samba_cv_HAVE_LINUX_KERNEL_AIO" = x"yes"; then
5406 default_shared_modules="$default_shared_modules vfs_aio_linux"
5411 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5412 default_shared_modules="$default_shared_modules vfs_aio_posix"
5415 #################################################
5416 # check for sendfile support
5418 AC_MSG_CHECKING(whether sendfile support should be built in)
5419 AC_ARG_WITH(sendfile-support,
5420 [AS_HELP_STRING([--with-sendfile-support], [Whether sendfile support should be built in (default=auto)])],
5421 [ case "$withval" in
5423 AC_MSG_RESULT($withval);
5424 with_sendfile_support=$withval
5428 with_sendfile_support=auto
5433 if test x$with_sendfile_support != xno ; then
5435 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5436 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5437 AC_TRY_LINK([#include <sys/sendfile.h>],
5442 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5444 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5446 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5447 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5448 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5449 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5455 *freebsd* | *dragonfly* )
5456 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5458 #include <sys/types.h>
5460 #include <sys/socket.h>
5461 #include <sys/uio.h>],
5463 int fromfd, tofd, ret, total=0;
5464 off_t offset, nwritten;
5467 hdr.headers = &hdtrl;
5469 hdr.trailers = NULL;
5471 hdtrl.iov_base = NULL;
5473 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5475 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5477 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5478 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5479 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5480 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5486 AC_CACHE_CHECK([for Darwin sendfile support],
5487 samba_cv_HAVE_SENDFILE,
5490 #include <sys/types.h>
5491 #include <sys/socket.h>
5492 #include <sys/uio.h>
5495 int fromfd, tofd, ret;
5496 off_t offset, nwritten;
5499 hdr.headers = &hdtrl;
5501 hdr.trailers = (void *)0;
5503 hdtrl.iov_base = (void *)0;
5505 ret = sendfile(fromfd, tofd, offset, &nwritten, &hdr, 0);
5507 samba_cv_HAVE_SENDFILE=yes,
5508 samba_cv_HAVE_SENDFILE=no)])
5510 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5511 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5512 AC_DEFINE(DARWIN_SENDFILE_API,1,[Whether the Darwin sendfile() API is available])
5513 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5519 AC_CACHE_CHECK([for osf/hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5521 #include <sys/socket.h>
5522 #include <sys/uio.h>],
5526 struct iovec hdtrl[2];
5530 hdtrl[0].iov_base = 0;
5531 hdtrl[0].iov_len = 0;
5533 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5535 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5536 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5537 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5538 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the osf/hpux sendfile() API is available])
5539 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5546 AC_CHECK_LIB(sendfile,sendfilev)
5547 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5549 #include <sys/sendfile.h>],
5553 struct sendfilevec vec[2];
5559 vec[0].sfv_fd = SFV_FD_SELF;
5560 vec[0].sfv_flag = 0;
5565 vec[1].sfv_flag = 0;
5568 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5570 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5572 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5573 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5574 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5575 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5581 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5583 #include <sys/socket.h>],
5587 struct sf_parms hdtrl;
5590 hdtrl.header_data = 0;
5591 hdtrl.header_length = 0;
5592 hdtrl.file_descriptor = fromfd;
5593 hdtrl.file_offset = 0;
5594 hdtrl.file_bytes = 0;
5595 hdtrl.trailer_data = 0;
5596 hdtrl.trailer_length = 0;
5598 nwritten = send_file(&tofd, &hdtrl, 0);
5600 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5601 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5602 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5603 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5604 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5614 if test x$with_sendfile_support = xyes -a x"$samba_cv_HAVE_SENDFILE" != xyes ; then
5615 AC_MSG_ERROR(sendfile support requested but sendfile not available )
5618 ############################################
5619 # See if we have the Linux readahead syscall.
5621 AC_CACHE_CHECK([for Linux readahead],
5622 samba_cv_HAVE_LINUX_READAHEAD,[
5624 #if defined(HAVE_UNISTD_H)
5627 #include <fcntl.h>],
5628 [ssize_t err = readahead(0,0,0x80000);],
5629 samba_cv_HAVE_LINUX_READAHEAD=yes,
5630 samba_cv_HAVE_LINUX_READAHEAD=no)])
5632 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5633 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5634 [Whether Linux readahead is available])
5637 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5639 ############################################
5640 # See if we have the posix_fadvise syscall.
5642 AC_CACHE_CHECK([for posix_fadvise],
5643 samba_cv_HAVE_POSIX_FADVISE,[
5645 #if defined(HAVE_UNISTD_H)
5648 #include <fcntl.h>],
5649 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5650 samba_cv_HAVE_POSIX_FADVISE=yes,
5651 samba_cv_HAVE_POSIX_FADVISE=no)])
5653 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5654 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5655 [Whether posix_fadvise is available])
5658 ############################################
5659 # See if we have the openat syscall.
5661 AC_CACHE_CHECK([for openat],
5662 samba_cv_HAVE_OPENAT,[
5664 #if defined(HAVE_UNISTD_H)
5667 #include <fcntl.h>],
5668 [int fd = openat(AT_FDCWD, ".", O_RDONLY);],
5669 samba_cv_HAVE_OPENAT=yes,
5670 samba_cv_HAVE_OPENAT=no)])
5672 if test x"$samba_cv_HAVE_OPENAT" = x"yes"; then
5673 AC_DEFINE(HAVE_OPENAT,1, [Whether openat is available])
5676 ############################################
5677 # See if we have the Linux splice syscall.
5681 AC_CACHE_CHECK([for Linux splice],
5682 samba_cv_HAVE_LINUX_SPLICE,[
5684 #if defined(HAVE_UNISTD_H)
5687 #include <fcntl.h>],
5688 [long ret = splice(0,0,1,0,400,SPLICE_F_MOVE);],
5689 samba_cv_HAVE_LINUX_SPLICE=yes,
5690 samba_cv_HAVE_LINUX_SPLICE=no)])
5693 samba_cv_HAVE_LINUX_SPLICE=no
5697 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5698 AC_DEFINE(HAVE_LINUX_SPLICE,1,
5699 [Whether Linux splice is available])
5702 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5704 ############################################
5705 # See if we have the a broken readlink syscall.
5707 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5708 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5709 samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5711 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5712 AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5715 #################################################
5716 # Check whether winbind is supported on this platform. If so we need to
5717 # build and install client programs, sbin programs and shared libraries
5719 AC_MSG_CHECKING(whether to build winbind)
5721 # Initially, the value of $host_os decides whether winbind is supported
5726 # Define external wbclient library to link against. This disables winbind.
5727 # We define this here so --with-winbind can override it.
5728 AC_ARG_WITH(wbclient,
5729 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5742 WBCLIENT_INCLUDES="-I$withval/include"
5743 WBCLIENT_LDFLAGS="-L$withval/lib"
5748 AC_SUBST(WBCLIENT_INCLUDES)
5749 AC_SUBST(WBCLIENT_LDFLAGS)
5750 AC_SUBST(WBCLIENT_LIBS)
5753 # Define the winbind shared library name and any specific linker flags
5754 # it needs to be built with.
5756 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5757 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5758 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5759 NSSSONAMEVERSIONSUFFIX=""
5762 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5763 NSSSONAMEVERSIONSUFFIX=".2"
5764 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5766 *freebsd[[5-9]]* | *freebsd1[[0-9]]*)
5767 # FreeBSD winbind client is implemented as a wrapper around
5768 # the Linux version.
5769 NSSSONAMEVERSIONSUFFIX=".1"
5770 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5771 ../nsswitch/winbind_nss_linux.o"
5772 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5773 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5776 *netbsd*[[3-9]]* | *netbsd1[[0-9]]*)
5777 # NetBSD winbind client is implemented as a wrapper
5778 # around the Linux version. It needs getpwent_r() to
5779 # indicate libc's use of the correct nsdispatch API.
5781 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5782 WINBIND_NSS_EXTRA_OBJS="\
5783 ../nsswitch/winbind_nss_netbsd.o \
5784 ../nsswitch/winbind_nss_linux.o"
5785 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5786 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5789 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5793 # IRIX has differently named shared libraries
5794 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5795 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5796 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5799 # Solaris winbind client is implemented as a wrapper around
5800 # the Linux version.
5801 NSSSONAMEVERSIONSUFFIX=".1"
5802 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5803 ../nsswitch/winbind_nss_linux.o"
5806 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5809 # AIX has even differently named shared libraries. No
5810 # WINS support has been implemented yet.
5811 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5812 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5813 WINBIND_NSS="../nsswitch/WINBIND"
5820 winbind_no_reason=", unsupported on $host_os"
5824 # Check the setting of --with-winbind
5826 AC_ARG_WITH(winbind,
5827 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5841 # We need unix domain sockets for winbind
5843 if test x"$HAVE_WINBIND" = x"yes"; then
5844 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5845 winbind_no_reason=", no unix domain socket support on $host_os"
5850 # Display test results
5852 if test x"$HAVE_WINBIND" = x"no"; then
5856 if test x"$HAVE_WBCLIENT" = x"yes"; then
5857 AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
5858 [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
5859 LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
5861 AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
5862 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo"
5864 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5865 BUILD_LIBWBCLIENT_SHARED=no
5867 BUILD_LIBWBCLIENT_SHARED=yes
5870 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5871 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5873 LIBWBCLIENT_FULLVER=0
5874 LIBWBCLIENT_SHARED_TARGET_SOVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_SOVER
5875 LIBWBCLIENT_SHARED_TARGET_FULLVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_FULLVER
5876 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5877 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5878 ## Only worry about libwbclient if we have shared
5880 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5881 LIBWBCLIENT=libwbclient
5882 INSTALL_LIBWBCLIENT=installlibwbclient
5883 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5884 LIBWBCLIENT_LIBS="-lwbclient"
5886 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5887 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
5891 if test x"$HAVE_WINBIND" = x"yes"; then
5893 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5895 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo"
5896 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd"
5897 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5898 PAM_MODULES="$PAM_MODULES pam_winbind"
5899 INSTALL_PAM_MODULES="installpammodules"
5900 UNINSTALL_PAM_MODULES="uninstallpammodules"
5903 # we use winbind, check for krb5 locate_plugin support:
5904 AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
5905 [[#ifdef HAVE_KRB5_H
5909 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
5910 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
5911 if test x"$BLDSHARED" = x"true" ; then
5912 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
5915 # end of krb5 locate_plugin check
5917 AC_MSG_RESULT(no$winbind_no_reason)
5920 AC_SUBST(WINBIND_NSS)
5921 AC_SUBST(WINBIND_WINS_NSS)
5922 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5923 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5924 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5926 AC_SUBST(WINBIND_KRB5_LOCATOR)
5928 # Solaris 10 does have new member in nss_XbyY_key
5929 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5930 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5931 [#include <nss_dbdefs.h>])
5933 # Solaris has some extra fields in struct passwd that need to be
5934 # initialised otherwise nscd crashes.
5936 AC_CHECK_MEMBER(struct passwd.pw_comment,
5937 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5940 AC_CHECK_MEMBER(struct passwd.pw_age,
5941 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5944 # AIX 4.3.x and 5.1 do not have as many members in
5945 # struct secmethod_table as AIX 5.2
5946 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5947 [#include <usersec.h>])
5948 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5949 [#include <usersec.h>])
5951 #################################################
5952 # Check to see if we should use the included popt
5954 AC_ARG_WITH(included-popt,
5955 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5966 if test x"$INCLUDED_POPT" != x"yes"; then
5967 AC_CHECK_LIB(popt, poptGetContext,
5968 INCLUDED_POPT=no, INCLUDED_POPT=yes)
5971 AC_MSG_CHECKING(whether to use included popt)
5972 if test x"$INCLUDED_POPT" = x"yes"; then
5974 BUILD_POPT='$(POPT_OBJ)'
5975 POPTLIBS='$(POPT_OBJ)'
5976 FLAGS1="-I\$(srcdir)/../lib/popt"
5982 AC_SUBST(BUILD_POPT)
5986 #################################################
5987 # Check if user wants DNS service discovery support
5989 AC_ARG_ENABLE(dnssd,
5990 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
5992 AC_SUBST(DNSSD_LIBS)
5993 if test x"$enable_dnssd" = x"yes"; then
5994 have_dnssd_support=yes
5996 AC_CHECK_HEADERS(dns_sd.h)
5997 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5998 have_dnssd_support=no
6001 # On Darwin the DNSSD API is in libc, but on other platforms it's
6002 # probably in -ldns_sd
6003 AC_CHECK_FUNCS(DNSServiceRegister)
6004 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6005 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6006 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6007 have_dnssd_support=no
6010 if test x"$have_dnssd_support" = x"yes"; then
6011 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6012 [Whether to enable DNS service discovery support])
6014 if test x"$enable_dnssd" = x"yes"; then
6015 AC_MSG_ERROR(DNS service discovery support not available)
6021 #################################################
6022 # Check if user wants avahi support
6024 AC_ARG_ENABLE(avahi,
6025 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6027 if test x"$enable_avahi" != x"no"; then
6028 have_avahi_support=yes
6030 AC_CHECK_HEADERS(avahi-common/watch.h)
6031 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6032 have_avahi_support=no
6035 AC_CHECK_HEADERS(avahi-client/client.h)
6036 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6037 have_avahi_support=no
6041 AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6042 AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6045 if test x"$have_avahi_client_new" != x"yes" -o \
6046 x"$have_avahi_strerror" != x"yes" ; then
6047 have_avahi_support=no
6050 if test x"$have_avahi_support" = x"yes"; then
6051 AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6052 AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6053 [Whether to enable avahi support])
6054 AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6056 if test x"$enable_avahi" = x"yes"; then
6057 AC_MSG_ERROR(avahi support not available)
6063 #################################################
6066 PTHREAD_CFLAGS=error
6067 PTHREAD_LDFLAGS=error
6069 # If it's error, then the user didn't
6071 if test "x$PTHREAD_LDFLAGS" = xerror; then
6072 AC_CHECK_LIB(pthread, pthread_attr_init, [
6073 PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6074 PTHREAD_LDFLAGS="-lpthread" ])
6077 if test "x$PTHREAD_LDFLAGS" = xerror; then
6078 AC_CHECK_LIB(pthreads, pthread_attr_init, [
6079 PTHREAD_CFLAGS="-D_THREAD_SAFE"
6080 PTHREAD_LDFLAGS="-lpthreads" ])
6083 if test "x$PTHREAD_LDFLAGS" = xerror; then
6084 AC_CHECK_LIB(c_r, pthread_attr_init, [
6085 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6086 PTHREAD_LDFLAGS="-pthread" ])
6089 if test "x$PTHREAD_LDFLAGS" = xerror; then
6090 AC_CHECK_FUNC(pthread_attr_init, [
6091 PTHREAD_CFLAGS="-D_REENTRANT"
6092 PTHREAD_LDFLAGS="-lpthread" ])
6095 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6096 # pthread_attr_init. On pthread_mutex_lock it works there...
6097 if test "x$PTHREAD_LDFLAGS" = xerror; then
6098 AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6099 PTHREAD_CFLAGS="-D_REENTRANT"
6100 PTHREAD_LDFLAGS="-lpthread" ])
6103 AC_SUBST(PTHREAD_CFLAGS)
6104 AC_SUBST(PTHREAD_LDFLAGS)
6106 samba_cv_HAVE_PTHREAD=no
6107 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6108 samba_cv_HAVE_PTHREAD=yes
6109 # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6110 ac_save_CFLAGS=$CFLAGS
6111 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6112 ac_save_LDFLAGS=$LDFLAGS
6113 LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6114 AC_CHECK_HEADERS(pthread.h)
6115 CFLAGS=$ac_save_CFLAGS
6116 LDFLAGS=$ac_save_LDFLAGS
6117 AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6120 #################################################
6121 # Check if user wants pthreadpool support
6123 AC_ARG_ENABLE(pthreadpool,
6124 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=yes)])])
6126 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6127 AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6130 if test x"$enable_pthreadpool" != x"no" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6131 LIBS="$LIBS $PTHREAD_LDFLAGS"
6132 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6133 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool.o")
6134 default_shared_modules="$default_shared_modules vfs_aio_pthread"
6136 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool_sync.o")
6139 PTHREADPOOLTEST="bin/pthreadpooltest"
6140 AC_SUBST(PTHREADPOOLTEST)
6143 #################################################
6144 # Check to see if we should use the included iniparser
6146 AC_ARG_WITH(included-iniparser,
6147 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6151 INCLUDED_INIPARSER=yes
6154 INCLUDED_INIPARSER=no
6158 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6159 AC_CHECK_LIB(iniparser, iniparser_load,
6160 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6163 AC_MSG_CHECKING(whether to use included iniparser)
6164 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6166 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6168 FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6172 INIPARSERLIBS="-liniparser"
6174 AC_SUBST(BUILD_INIPARSER)
6175 AC_SUBST(INIPARSERLIBS)
6178 AC_ARG_ENABLE(fault-handler,[AS_HELP_STRING([--disable-fault-handler], [Disable the default handler])])
6180 if test x"$enable_fault_handler" = x"no"; then
6181 AC_DEFINE(HAVE_DISABLE_FAULT_HANDLER, 1, [Disable the default signal handler])
6184 ###################################################
6185 # Check for different/missing (set|get|end)netgrent prototypes
6187 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
6188 CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6190 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6191 AC_TRY_COMPILE([#include<netdb.h>
6192 #ifdef HAVE_NETGROUP_H
6193 #include<netgroup.h>
6194 #endif],[setnetgrent("foo")],
6195 samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6196 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6197 AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6199 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6200 AC_TRY_COMPILE([#include<netdb.h>
6201 #ifdef HAVE_NETGROUP_H
6202 #include<netgroup.h>
6203 #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6204 samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6205 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6206 AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6208 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6209 AC_TRY_COMPILE([#include<netdb.h>
6210 #ifdef HAVE_NETGROUP_H
6211 #include<netgroup.h>
6212 #endif],[endnetgrent()],
6213 samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6214 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6215 AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6220 # Checks for POSIX ignorant BSD style statvfs() function
6222 AC_CHECK_HEADERS(sys/param.h sys/mount.h)
6224 AC_MSG_CHECKING([checking for posix ignorant *bsd style statfs struct])
6225 AC_CACHE_VAL(bsdstatvfs_cv_statfs,[
6227 #ifdef HAVE_SYS_PARAM_H
6228 #include <sys/param.h>
6230 #ifdef HAVE_SYS_MOUNT_H
6231 #include <sys/mount.h>
6238 return (statfs (".", &fsd));
6240 bsdstatvfs_cv_statfs=yes,
6241 bsdstatvfs_cv_statfs=no,
6242 bsdstatvfs_cv_statfs=no)])
6243 AC_MSG_RESULT($bsdstatvfs_cv_statfs)
6245 if test $bsdstatvfs_cv_statfs = yes; then
6246 AC_DEFINE(BSD_STYLE_STATVFS,1,[Whether statfs struct is *bsd style])
6248 # End of checks POSIX ignorant BSD style statvfs() function
6250 # Checks for the vfs_fileid module
6252 AC_CHECK_FUNC(getmntent)
6254 AC_CHECK_HEADERS(sys/statfs.h)
6256 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid])
6257 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6259 #include <sys/types.h>
6260 #include <sys/statfs.h>
6264 fsid_t fsid = fsd.f_fsid;
6265 return statfs (".", &fsd);
6267 vfsfileid_cv_statfs=yes,
6268 vfsfileid_cv_statfs=no,
6269 vfsfileid_cv_statfs=cross)
6271 AC_MSG_RESULT($vfsfileid_cv_statfs)
6273 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6274 x"$vfsfileid_cv_statfs" = x"yes"; then
6275 default_shared_modules="$default_shared_modules vfs_fileid"
6278 # Checks for the vfs_fileid module
6281 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6283 eval MODULE_DEFAULT_$i=STATIC
6286 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6288 dnl Fall back to static if we cannot build shared libraries
6289 eval MODULE_DEFAULT_$i=STATIC
6291 if test $BLDSHARED = true; then
6292 eval MODULE_DEFAULT_$i=SHARED
6296 dnl Always build these modules static
6297 MODULE_rpc_spoolss=STATIC
6298 MODULE_rpc_srvsvc=STATIC
6299 MODULE_idmap_tdb=STATIC
6300 MODULE_idmap_passdb=STATIC
6301 MODULE_idmap_nss=STATIC
6303 MODULE_nss_info_template=STATIC
6305 AC_ARG_WITH(static-modules,
6306 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6307 [ if test $withval; then
6308 for i in `echo $withval | sed -e 's/,/ /g'`
6310 eval MODULE_$i=STATIC
6314 AC_ARG_WITH(shared-modules,
6315 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6316 [ if test $withval; then
6317 for i in `echo $withval | sed -e 's/,/ /g'`
6319 eval MODULE_$i=SHARED
6323 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6324 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6325 SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6326 AC_SUBST(SMBD_FAM_LIBS)
6329 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o,
6330 "bin/ldapsam.$SHLIBEXT", PDB,
6331 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6332 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6333 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6334 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6335 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6337 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6338 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6339 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6340 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6341 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6342 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6343 SMB_MODULE(idmap_autorid, winbindd/idmap_autorid.o, "bin/autorid.$SHLIBEXT", IDMAP)
6344 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6345 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6346 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6348 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6349 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6351 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6352 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6353 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6354 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6355 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6356 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6357 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6358 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6360 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6361 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6362 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6363 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6364 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6365 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6366 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6367 SMB_MODULE(vfs_fake_acls, \$(VFS_FAKE_ACLS_OBJ), "bin/fake_acls.$SHLIBEXT", VFS)
6368 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6369 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6370 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6371 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6372 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6373 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6374 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6375 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6376 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6377 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6378 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6379 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6380 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6381 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6382 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6383 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6384 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6385 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6386 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6387 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6388 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6389 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6390 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6391 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6392 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6393 SMB_MODULE(vfs_aio_pthread, \$(VFS_AIO_PTHREAD_OBJ), "bin/aio_pthread.$SHLIBEXT", VFS)
6394 SMB_MODULE(vfs_aio_posix, \$(VFS_AIO_POSIX_OBJ), "bin/aio_posix.$SHLIBEXT", VFS)
6395 SMB_MODULE(vfs_aio_linux, \$(VFS_AIO_LINUX_OBJ), "bin/aio_linux.$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_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6404 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6405 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6406 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6407 SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
6408 SMB_MODULE(vfs_media_harmony, \$(VFS_MEDIA_HARMONY_OBJ), "bin/media_harmony.$SHLIBEXT", VFS)
6410 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6412 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6413 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6415 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6416 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6417 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6418 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6420 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6422 #################################################
6423 # do extra things if we are running insure
6425 if test "${ac_cv_prog_CC}" = "insure"; then
6426 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6429 #################################################
6430 # If run from the build farm, enable NASTY hacks
6431 #################################################
6432 AC_MSG_CHECKING(whether to enable features for selftest)
6433 if test x"$selftest" = x"yes"; then
6435 AC_DEFINE(ENABLE_SELFTEST, 1, [Support features needed for selftest])
6436 if test x"$selftest_possible" != xyes; then
6437 AC_MSG_ERROR(selftest support only possible with python, including development headers, and perl installed)
6443 #################################################
6444 # check for bad librt/libpthread interactions
6446 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6447 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6448 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6449 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6451 SMB_IF_RTSIGNAL_BUG(
6453 # Have RT_SIGNAL bug, need to check whether the problem will
6454 # affect anything we have configured.
6457 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6458 if test x"$rt_signal_lease_ok" = x"no" ; then
6463 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6464 if test x"$rt_signal_notify_ok" = x"no" ; then
6469 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6470 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6471 if test x"$rt_signal_aio_ok" = x"no" ; then
6476 if test x"$rt_do_error" = x"yes" ; then
6477 SMB_IS_LIBPTHREAD_LINKED(
6481 *** On this platforms, linking Samba against pthreads causes problems
6482 *** with the oplock and change notification mechanisms. You may be
6483 *** using pthreads as a side-effect of using the --with-aio-support
6484 *** or --with-profiling-data options. Please remove these and try again.
6491 *** On this platform, the oplock and change notification mechanisms do not
6492 *** appear to work. Please report this problem to samba-technical@samba.org
6493 *** and attach the config.log file from this directory.
6497 AC_MSG_ERROR(unable to use realtime signals on this platform)
6501 # no RT_SIGNAL bug, we are golden
6502 SMB_IS_LIBPTHREAD_LINKED(
6504 AC_MSG_WARN(using libpthreads - this may degrade performance)
6509 # cross compiling, I hope you know what you are doing
6515 m4_include(../lib/zlib/zlib.m4)
6519 AC_ZLIB([ZLIB_OBJS=""], [
6521 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6522 deflate.o trees.o zutil.o inflate.o infback.o \
6523 inftrees.o inffast.o
6525 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6527 CFLAGS="-I../lib/zlib $CFLAGS"
6530 AC_DEFINE(STATIC_gensec_MODULES, [gensec_spnego_init,gensec_ntlmssp_init,NULL],[gensec modules])
6531 AC_DEFINE(STATIC_gensec_MODULES_PROTO, [_MODULE_PROTO(gensec_spnego_init)_MODULE_PROTO(gensec_ntlmssp_init)],[gensec protos])
6533 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6535 if test "x$enable_dmalloc" = xyes
6537 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6538 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6539 [Define to check invariants around some common functions])
6540 LIBS="$LIBS -ldmalloc"
6543 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6544 LIB_REMOVE_USR_LIB(LDFLAGS)
6545 LIB_REMOVE_USR_LIB(LIBS)
6547 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6548 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6549 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6551 #################################################
6552 # Display summary of libraries detected
6554 AC_MSG_RESULT([Using libraries:])
6555 AC_MSG_RESULT([ LIBS = $LIBS])
6556 if test x"$with_ads_support" != x"no"; then
6557 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6559 if test x"$with_ldap_support" != x"no"; then
6560 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6562 if test x"$have_dnssd_support" != x"no"; then
6563 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6565 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6567 #################################################
6568 # final configure stuff
6570 AC_MSG_CHECKING([configure summary])
6571 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6573 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6574 AC_MSG_WARN([cannot run when cross-compiling]))
6576 dnl Merge in developer cflags from now on
6577 AC_SUBST(DEVELOPER_CFLAGS)
6578 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6579 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS) ${CFLAGS_APPEND}"
6582 # Stuff the smbd-only libraries at the end of the smbd link
6583 # path (if we have them).
6584 SMBD_LIBS="$samba_dmapi_libs"
6587 CFLAGS="${CFLAGS} \$(FLAGS)"
6588 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6590 # If we had to expand the includes, make tsure the output file is moved back
6591 AC_OUTPUT_COMMANDS([
6592 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
6593 ln -s Makefile-noincludes Makefile
6598 script/findsmb smbadduser script/installbin.sh script/uninstallbin.sh
6599 lib/netapi/examples/Makefile
6600 lib/netapi/tests/Makefile
6601 pkgconfig/smbclient.pc
6602 pkgconfig/wbclient.pc
6604 pkgconfig/smbsharemodes.pc
6605 ../examples/libsmbclient/Makefile.internal
6608 #################################################
6609 # Print very concise instructions on building/use
6610 if test "x$enable_dmalloc" = xyes
6612 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6613 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])