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> /dev/null < /dev/null | grep "GNU ld"`
231 # we need to make a 2nd (separate!) check on the output of stderr, see bug #7825:
232 if test -z "$ac_cv_gnu_ld_version" ; then
233 ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>&1 > /dev/null < /dev/null | grep "GNU ld"`
235 AC_MSG_CHECKING(GNU ld release date)
237 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'`
239 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
240 if test -n "$ac_cv_gnu_ld_date"; then
241 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
242 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
244 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
245 ac_cv_gnu_ld_version_script=yes
248 AC_MSG_CHECKING(GNU ld release version)
250 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'`
251 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
252 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
254 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
255 AC_MSG_CHECKING(GNU ld release version major)
256 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
257 AC_MSG_CHECKING(GNU ld release version minor)
258 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
259 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
260 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
262 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
263 ac_cv_gnu_ld_version_script=yes
268 dnl Check if C compiler understands -c and -o at the same time
270 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
277 dnl Check if the C compiler understands -Werror (GNU)
278 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
283 }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
284 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
285 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
286 Werror_FLAGS="-Werror"
288 dnl Check if the C compiler understands -w2
289 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
294 }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
295 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
296 if test x"$samba_cv_HAVE_w2" = x"yes"; then
299 dnl Check if the C compiler understands -errwarn (Sun)
300 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
305 }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
306 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
307 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
308 Werror_FLAGS="-errwarn=%all"
310 dnl Check if the C compiler understands -qhalt (IBM)
311 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
316 }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
317 samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
318 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
319 Werror_FLAGS="-qhalt=w"
325 ############################################
326 # check if the compiler can handle negative enum values
327 # and don't truncate the values to INT_MAX
328 # a runtime test is needed here
330 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
334 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
336 enum negative_values v1 = NEGATIVE_VALUE;
337 unsigned v2 = NEGATIVE_VALUE;
339 if (v1 != 0xFFFFFFFF) {
340 printf("%u != 0xFFFFFFFF\n", v1);
343 if (v2 != 0xFFFFFFFF) {
344 printf("%u != 0xFFFFFFFF\n", v2);
351 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv_CC_NEGATIVE_ENUM_VALUES=no)])
352 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
353 AC_MSG_WARN([using --uint-enums for pidl])
354 PIDL_ARGS="$PIDL_ARGS --uint-enums"
357 dnl Figure out the flags to support named structure initializers
359 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
361 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
362 AC_MSG_CHECKING(uname -s)
363 AC_MSG_RESULT(${UNAME_S})
365 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
366 AC_MSG_CHECKING(uname -r)
367 AC_MSG_RESULT(${UNAME_R})
369 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
370 AC_MSG_CHECKING(uname -m)
371 AC_MSG_RESULT(${UNAME_M})
373 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
374 AC_MSG_CHECKING(uname -p)
375 AC_MSG_RESULT(${UNAME_P})
377 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
378 AC_MSG_CHECKING(uname -i)
379 AC_MSG_RESULT(${UNAME_I})
381 dnl Add #include for broken IRIX header files
384 #TODO add to libreplace
385 if test x"$ac_cv_prog_gcc" != x"yes" ; then
386 dnl Fix sensible defaults for MIPSPro compilers. The
387 dnl error numbers are valid for the 7.3 compilers,
388 dnl hopefully also valid for the 7.4 series.
390 dnl Bugzilla 3801. Force an error on warning 1035
391 dnl so we don't incorrectly detect stdint.h. This
392 dnl warning is emitted for #error directives.
393 CFLAGS="$CFLAGS -diag_error 1035"
394 dnl 1209: Controlling expression is constant
395 dnl 1174: Function foo declared but never referenced
396 dnl 3201: Parameter foo was never referenced
397 CFLAGS="$CFLAGS -woff 1209,1174,3201"
405 AC_SUBST(LDSHFLAGS_Z_DEFS)
407 AC_SUBST(LDSHFLAGS_Z_NODEFS)
409 dnl Add modules that have to be built by default here
410 dnl These have to be built static:
411 default_static_modules=""
412 default_static_modules="$default_static_modules pdb_smbpasswd"
413 default_static_modules="$default_static_modules pdb_tdbsam"
414 default_static_modules="$default_static_modules pdb_wbc_sam"
415 default_static_modules="$default_static_modules rpc_lsarpc"
416 default_static_modules="$default_static_modules rpc_samr"
417 default_static_modules="$default_static_modules rpc_winreg"
418 default_static_modules="$default_static_modules rpc_initshutdown"
419 default_static_modules="$default_static_modules rpc_dssetup"
420 default_static_modules="$default_static_modules rpc_wkssvc"
421 default_static_modules="$default_static_modules rpc_svcctl"
422 default_static_modules="$default_static_modules rpc_ntsvcs"
423 default_static_modules="$default_static_modules rpc_netlogon"
424 default_static_modules="$default_static_modules rpc_netdfs"
425 default_static_modules="$default_static_modules rpc_srvsvc"
426 default_static_modules="$default_static_modules rpc_spoolss"
427 default_static_modules="$default_static_modules rpc_eventlog"
428 default_static_modules="$default_static_modules auth_sam"
429 default_static_modules="$default_static_modules auth_unix"
430 default_static_modules="$default_static_modules auth_winbind"
431 default_static_modules="$default_static_modules auth_wbc"
432 default_static_modules="$default_static_modules auth_domain"
433 default_static_modules="$default_static_modules auth_builtin"
434 default_static_modules="$default_static_modules vfs_default"
435 default_static_modules="$default_static_modules nss_info_template"
437 dnl These are preferably build shared, and static if dlopen() is not available
438 default_shared_modules=""
439 default_shared_modules="$default_shared_modules vfs_recycle"
440 default_shared_modules="$default_shared_modules vfs_audit"
441 default_shared_modules="$default_shared_modules vfs_extd_audit"
442 default_shared_modules="$default_shared_modules vfs_full_audit"
443 default_shared_modules="$default_shared_modules vfs_netatalk"
444 default_shared_modules="$default_shared_modules vfs_fake_perms"
445 default_shared_modules="$default_shared_modules vfs_default_quota"
446 default_shared_modules="$default_shared_modules vfs_readonly"
447 default_shared_modules="$default_shared_modules vfs_cap"
448 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
449 default_shared_modules="$default_shared_modules vfs_shadow_copy"
450 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
451 default_shared_modules="$default_shared_modules auth_script"
452 default_shared_modules="$default_shared_modules vfs_readahead"
453 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
454 default_shared_modules="$default_shared_modules vfs_streams_xattr"
455 default_shared_modules="$default_shared_modules vfs_streams_depot"
456 default_shared_modules="$default_shared_modules vfs_acl_xattr"
457 default_shared_modules="$default_shared_modules vfs_acl_tdb"
458 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
459 default_shared_modules="$default_shared_modules vfs_preopen"
460 default_shared_modules="$default_shared_modules vfs_catia"
461 default_shared_modules="$default_shared_modules vfs_scannedonly"
462 default_shared_modules="$default_shared_modules vfs_crossrename"
463 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
464 default_shared_modules="$default_shared_modules vfs_time_audit"
465 default_shared_modules="$default_shared_modules vfs_media_harmony"
466 default_shared_modules="$default_shared_modules vfs_commit"
467 default_shared_modules="$default_shared_modules idmap_autorid"
468 default_shared_modules="$default_shared_modules idmap_tdb2"
469 default_shared_modules="$default_shared_modules idmap_rid"
470 default_shared_modules="$default_shared_modules idmap_hash"
472 if test "x$developer" = xyes; then
473 default_shared_modules="$default_shared_modules perfcount_test"
476 if test x"$selftest" = x"yes" -o "x$developer" = xyes; then
477 default_shared_modules="$default_shared_modules vfs_fake_acls vfs_nfs4acl_xattr"
481 # Config CPPFLAG settings for strange OS's that must be set
482 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
483 # case statement; its first reference must be unconditional.
488 # Defines needed for HPUX support.
489 # HPUX has bigcrypt but (sometimes?) doesn't use it for
490 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
494 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
500 # AIX4.x doesn't even admit to having large
501 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
504 AC_MSG_RESULT([enabling large file support])
505 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
506 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
509 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
510 # to the existance of large files..
512 # Solaris uses SYSV printing. Make sure to set that here. --jerry
515 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
516 LDFLAGS="$LDFLAGS -lthread"
517 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
520 # IRIX uses SYSV printing. Make sure to set that here
523 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
525 *freebsd*|*dragonfly*)
526 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
529 # VOS may need to have POSIX support and System V compatibility enabled.
536 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
537 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
541 *-D_SYSV*|*-D_SVID_SOURCE*)
544 CPPFLAGS="$CPPFLAGS -D_SYSV"
545 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
550 *linux* | *hurd* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
551 CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
552 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
556 # MacOS X is the *only* system that uses compose character in utf8. This
557 # is so horribly broken....
560 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
562 # Add a system specific charset module.
563 default_shared_modules="$default_shared_modules"
571 SAVE_CPPFLAGS="${CPPFLAGS}"
572 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
574 AC_LIBREPLACE_BROKEN_CHECKS
575 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
576 AC_LIBREPLACE_NETWORK_CHECKS
578 CPPFLAGS="${SAVE_CPPFLAGS}"
580 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
582 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
583 AC_SUBST(LIBREPLACE_OBJS)
585 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS} ${LIBREPLACE_FILESYS_LIBS}"
586 AC_SUBST(LIBREPLACE_LIBS)
589 # add -ldl to the global LIBS
590 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
591 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
594 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
595 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
596 AC_CHECK_HEADERS(limits.h float.h libintl.h)
597 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
598 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)
599 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
600 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
601 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
602 AC_CHECK_HEADERS(sys/sysmacros.h)
603 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
604 AC_CHECK_HEADERS(langinfo.h locale.h)
605 AC_CHECK_HEADERS(xfs/libxfs.h)
606 AC_CHECK_HEADERS(netgroup.h)
607 AC_CHECK_HEADERS(linux/falloc.h)
608 AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h)
609 AC_CHECK_HEADERS(linux/ioctl.h)
611 dnl check for OS implementation of md5 conformant to rfc1321
614 AC_CHECK_LIB(c, MD5Update, [samba_cv_md5lib=""])
616 if test x"$samba_cv_md5lib" = x"none" ; then
617 AC_CHECK_LIB(md, MD5Update, [samba_cv_md5lib=md])
620 if test x"$samba_cv_md5lib" = x"none" ; then
621 AC_CHECK_LIB(md5, MD5Update, [samba_cv_md5lib=md5])
624 if test x"$samba_cv_md5lib" != x"none" ; then
625 AC_CHECK_HEADERS(md5.h)
628 CRYPTO_MD5_OBJ="../lib/crypto/md5.o"
629 if test x"$ac_cv_header_md5_h" = x"yes" -a \
630 x"$samba_cv_md5lib" != x"none" ; then
631 if test x"$samba_cv_md5lib" != x ; then
632 LIBS="${LIBS} -l${samba_cv_md5lib}"
633 AC_DEFINE(HAVE_LIBMD5, 1,
634 [Whether libmd5 conformant to rfc1321 is available.])
639 if test "x$ac_cv_header_CommonCrypto_CommonDigest_h" == "xyes"; then
643 AC_SUBST(CRYPTO_MD5_OBJ)
645 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
650 ## These fail to compile on IRIX so just check for their presence
651 AC_CHECK_HEADERS(sys/mode.h,,,)
653 # Look for Darwin headers
654 old_CPPFLAGS="$CPPFLAGS"
655 CPPFLAGS="-Iinclude $CPPFLAGS"
656 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
657 CPPFLAGS="$old_CPPFLAGS"
659 # To link lib/util/charset/charset_macosxfs.c, we need to tell the linker
660 # about CoreFoundation, at least on os X 10.4..10.7 resp. darwin8..12
663 LDFLAGS="$LDFLAGS -framework CoreFoundation"
667 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
668 # subdirectory of headers.
669 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
671 if test x"$enable_developer" = x"yes" ; then
672 if test x"$ac_cv_header_valgrind_h" = xyes -o \
673 x"$ac_cv_header_valgrind_valgrind_h" = xyes ; then
674 AC_DEFINE(VALGRIND,1,[Whether we have valgrind headers])
679 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
680 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
684 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
685 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
686 if test x"$ac_cv_header_shadow_h" = x"yes"; then
687 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
691 AC_CHECK_HEADERS(shadow.h)
692 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
693 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
695 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
697 # For experimental utmp support (lastlog on some BSD-like systems)
698 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
700 AC_CHECK_SIZEOF(int,cross)
701 AC_CHECK_SIZEOF(long,cross)
702 AC_CHECK_SIZEOF(long long,cross)
703 AC_CHECK_SIZEOF(short,cross)
718 AC_CHECK_TYPE(ssize_t, int)
719 AC_CHECK_TYPE(wchar_t, unsigned short)
721 ############################################
722 # for cups support we need libcups, and a handful of header files
725 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
727 if test x$enable_cups != xno; then
728 AC_PATH_PROG(CUPS_CONFIG, cups-config)
730 if test "x$CUPS_CONFIG" != x; then
732 ac_save_LDFLAGS=$LDFLAGS
733 ac_save_PRINT_LIBS=$PRINT_LIBS
734 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
736 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
737 x"$ac_cv_header_cups_language_h" = xyes; then
738 # try linking with -lcups alone first. That should work unless libcups is
739 # underlinked. With cups-config --libs we pull in unwanted and unneeded
740 # dendencies including thread libraries - use cups-config only if really
742 AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
743 [PRINT_LIBS="$ac_save_PRINT_LIBS -lcups"],
744 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
745 PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
747 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
748 samba_cv_HAVE_CUPS=yes
749 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
751 AC_MSG_WARN([cups-config around but cups-devel not installed])
752 CFLAGS=$ac_save_CFLAGS
753 LDFLAGS=$ac_save_LDFLAGS
754 PRINT_LIBS=$ac_save_PRINT_LIBS
757 elif test x"$enable_cups" = x"yes"; then
758 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
762 AC_ARG_ENABLE(iprint,
763 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
765 if test x$enable_iprint != xno; then
766 if test x"$samba_cv_HAVE_CUPS" = xyes; then
767 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
768 elif test x"$enable_iprint" = x"yes"; then
769 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
773 ############################################
774 # check if the compiler will optimize out function calls
775 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
780 this_function_does_not_exist();
786 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
787 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
788 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
791 #############################################
792 # check for fd passing struct via msg_control
793 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
795 #include <sys/types.h>
798 #include <sys/socket.h>
799 #include <sys/un.h>],
804 char control[CMSG_SPACE(sizeof(int))];
806 msg.msg_control = control_un.control;
807 msg.msg_controllen = sizeof(control_un.control);
809 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
810 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
811 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
812 [If we can use msg_control for passing file descriptors])
815 #############################################
816 # check for fd passing struct via msg_acctrights
817 AC_CACHE_CHECK([for fd passing via msg_acctrights],
818 samba_cv_msghdr_msg_acctrights, [
820 #include <sys/types.h>
823 #include <sys/socket.h>
824 #include <sys/un.h>],
828 msg.msg_acctrights = (caddr_t) &fd;
829 msg.msg_acctrightslen = sizeof(fd);
831 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
832 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
833 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
834 [If we can use msg_acctrights for passing file descriptors])
837 AC_CHECK_FUNCS(dirfd)
838 if test x"$ac_cv_func_dirfd" = x"yes"; then
839 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
842 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
844 #include <sys/types.h>
849 #include <signal.h>],[struct sigevent s;],
850 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
851 if test x"$samba_cv_struct_sigevent" = x"yes"; then
852 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
853 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
854 [#include <signal.h>])
857 # and glibc has setresuid under linux but the function does
858 # nothing until kernel 2.1.44! very dumb.
859 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
860 AC_TRY_RUN([#include <errno.h>
861 main() { setresuid(1,1,1); setresuid(2,2,2); return(errno==EPERM?0:1);}],
862 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
863 if test x"$samba_cv_have_setresuid" = x"yes"; then
864 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
867 # Do the same check for setresguid...
869 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
870 AC_TRY_RUN([#include <unistd.h>
872 main() { errno = 0; setresgid(1,1,1); return(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
873 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
874 if test x"$samba_cv_have_setresgid" = x"yes"; then
875 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
880 ###############################################
881 # Readline included by default unless explicitly asked not to
882 test "${with_readline+set}" != "set" && with_readline=yes
884 # test for where we get readline() from
885 AC_MSG_CHECKING(whether to use readline)
886 AC_ARG_WITH(readline,
887 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
888 [ case "$with_readline" in
892 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
893 AC_CHECK_HEADERS(readline/history.h)
895 AC_CHECK_HEADERS(readline.h readline/readline.h,[
896 for termlib in ncurses curses termcap terminfo termlib tinfo; do
897 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
899 AC_CHECK_LIB(readline, rl_callback_handler_install,
900 [TERMLIBS="-lreadline $TERMLIBS"
901 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
902 break], [TERMLIBS=], $TERMLIBS)])
910 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
911 # alternate readline path
913 _cppflags=${CPPFLAGS}
915 # Add additional search path
916 LDFLAGS="-L$with_readline/lib $LDFLAGS"
917 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
919 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
920 AC_CHECK_HEADERS(readline/history.h)
922 AC_CHECK_HEADERS(readline.h readline/readline.h,[
923 for termlib in ncurses curses termcap terminfo termlib; do
924 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
926 AC_CHECK_LIB(readline, rl_callback_handler_install,
927 [TERMLDFLAGS="-L$with_readline/lib"
928 TERMCPPFLAGS="-I$with_readline/include"
929 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
930 TERMLIBS="-lreadline $TERMLIBS"
931 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
932 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
940 AC_SUBST(TERMLDFLAGS)
942 # The readline API changed slightly from readline3 to readline4, so
943 # code will generate warnings on one of them unless we have a few
945 AC_CHECK_LIB(readline, rl_completion_matches,
946 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
947 [Do we have rl_completion_matches?])],
951 # not all readline libs have rl_event_hook or history_list
952 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
953 AC_CHECK_LIB(readline, history_list,
954 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
958 ###############################################
959 # test for where we get yp_get_default_domain() from
960 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
961 AC_CHECK_FUNCS(yp_get_default_domain)
963 # Check if we have execl, if not we need to compile smbrun.
964 AC_CHECK_FUNCS(execl)
965 if test x"$ac_cv_func_execl" = x"no"; then
966 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun"
969 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
970 AC_CHECK_FUNCS(strtol)
971 AC_CHECK_FUNCS(strchr chflags)
972 AC_CHECK_FUNCS(getrlimit fsync setpgid)
973 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
974 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
975 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
976 AC_CHECK_FUNCS(initgroups select rdchk getgrnam getgrent pathconf)
977 AC_CHECK_FUNCS(getgrset)
978 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups syscall sysconf)
979 AC_CHECK_FUNCS(atexit grantpt posix_openpt posix_fallocate)
980 AC_CHECK_FUNCS(fallocate)
981 AC_CHECK_FUNCS(fseeko setluid getpwanam)
982 AC_CHECK_FUNCS(fdopendir)
983 AC_CHECK_FUNCS(getpwent_r)
984 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
985 AC_CHECK_FUNCS(syslog vsyslog timegm)
986 AC_CHECK_FUNCS(setlocale)
987 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
988 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
989 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
990 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
991 AC_CHECK_HEADERS(sys/mman.h)
992 # setbuffer, shmget, shm_open are needed for smbtorture
993 AC_CHECK_FUNCS(shmget shm_open)
994 AC_CHECK_FUNCS(gettext dgettext)
995 AC_CHECK_FUNCS(bindtextdomain textdomain bind_textdomain_codeset)
996 AC_CHECK_FUNCS(strupr)
998 # Find a method of generating a stack trace
999 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1000 # libexecinfo provides backtrace_symbols on FreeBSD
1001 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1002 AC_CHECK_FUNCS(backtrace_symbols)
1003 AC_CHECK_LIB(exc, trace_back_stack)
1005 # check for sysctlbyname and sysctl for BSD systems
1006 AC_CHECK_FUNCS(sysctlbyname)
1007 AC_CHECK_FUNCS(sysctl)
1009 #################################################
1010 # Check to see if core dump directory is defined in linux
1011 # with /proc/sys/kernel/core_pattern
1013 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
1014 AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
1015 [Whether Linux kernel uses core_pattern for core files]),
1018 #############################
1019 # check if building with gpfs
1020 AC_CHECK_HEADERS(gpfs_gpl.h)
1021 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1022 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1023 default_shared_modules="$default_shared_modules vfs_gpfs"
1026 #############################
1027 # check if building with libcephfs
1028 # fail if --with-libcephfs specified but no headers found
1029 printf "%s" "checking for CephFS... "
1030 AC_CHECK_HEADERS(cephfs/libcephfs.h)
1033 LIBS="$LIBS -lcephfs"
1034 AC_TRY_LINK([#include <cephfs/libcephfs.h>],
1035 [ceph_version(0, 0, 0)],
1036 samba_cv_HAVE_CEPHFS=yes,
1037 samba_cv_HAVE_CEPHFS=no
1040 if test x"$ac_cv_header_cephfs_libcephfs_h" = x"yes" && test x"$samba_cv_HAVE_CEPHFS" = x"yes"; then
1041 AC_DEFINE(HAVE_CEPH, 1, [Whether CEPH headers are available])
1042 default_shared_modules="$default_shared_modules vfs_ceph"
1043 save_CFLAGS="$CFLAGS"
1044 save_LDFLAGS="$LDFLAGS"
1045 save_LIBS="$save_LIBS -lcephfs"
1047 if test x"$CEPHFS_PATH_SPEC" = x"yes"; then
1048 AC_MSG_ERROR([No valid libcephfs found in ${CEPHFS_PATH}])
1052 CFLAGS="$save_CFLAGS"
1053 LDFLAGS="$save_LDFLAGS"
1056 # Note that all the libunwind symbols in the API are defined to internal
1057 # platform-specific version, so we must include libunwind.h before checking
1059 AC_MSG_CHECKING([for libunwind])
1062 UNWIND_ARCH="unknown"
1063 if test x"$UNAME_I" != x"unknown"; then
1064 UNWIND_ARCH="$UNAME_I"
1065 elif test x"$UNAME_M" != x"unknown"; then
1066 UNWIND_ARCH="$UNAME_M"
1067 elif test x"$UNAME_P" != x"unknown"; then
1068 UNWIND_ARCH="$UNAME_P"
1071 case "$UNWIND_ARCH" in
1073 # This probably won't link without
1074 # the platform-specific libunwind.
1075 LIBS="$LIBS -lunwind"
1078 # Add the platform-specific libunwind module.
1079 LIBS="$LIBS -lunwind -lunwind-x86"
1082 # Add the platform-specific libunwind module.
1083 # based on uname -i, uname -m or uname -p
1084 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1090 #ifdef HAVE_LIBUNWIND_H
1091 #include <libunwind.h>
1095 unw_context_t ctx; unw_cursor_t cur;
1096 char buf[256]; unw_word_t off;
1097 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1098 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1102 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1104 # If we have libunwind, test whether we also have libunwind-ptrace
1105 # which would let us unwind arbitrary processes.
1107 AC_CHECK_HEADERS(libunwind-ptrace.h)
1108 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1110 LIBUNWIND_PTRACE="-lunwind-ptrace";
1111 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1112 [Whether libunwind-ptrace.a is available.])
1114 [ LIBUNWIND_PTRACE="" ])
1123 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1124 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1125 AC_CHECK_HEADERS(sys/ptrace.h)
1126 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1129 #if HAVE_SYS_TYPES_H
1130 #include <sys/types.h>
1132 #if HAVE_SYS_PTRACE_H
1133 #include <sys/ptrace.h>
1137 pid_t me = (pid_t)-1;
1138 ptrace(PTRACE_ATTACH, me, 0, 0);
1139 ptrace(PTRACE_DETACH, me, 0, 0);
1144 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1145 [Whether the Linux ptrace(2) interface is available.])
1153 AC_SUBST(LIBUNWIND_PTRACE)
1155 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1156 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1157 AC_CHECK_FUNCS(__getcwd _getcwd)
1158 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1159 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1160 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1161 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1162 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1163 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1164 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek)
1165 AC_CHECK_FUNCS(pread _pread __pread)
1166 AC_CHECK_FUNCS(pwrite _pwrite __pwrite)
1167 AC_CHECK_FUNCS(prctl)
1170 #ifdef HAVE_SYS_PRCTL_H
1171 #include <sys/prctl.h>
1174 [int i; i = prtcl(0); ],
1175 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1181 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1182 # glibc <= 2.3.2 has a broken getgrouplist
1183 AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1185 #include <sys/utsname.h>
1187 /* glibc up to 2.3 has a broken getgrouplist */
1188 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1189 int libc_major = __GLIBC__;
1190 int libc_minor = __GLIBC_MINOR__;
1194 if ((libc_major == 2) && (libc_minor <= 3))
1199 ], [samba_cv_linux_getgrouplist_ok=yes],
1200 [samba_cv_linux_getgrouplist_ok=no],
1201 [samba_cv_linux_getgrouplist_ok=cross])])
1202 if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1203 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1207 AC_CHECK_FUNCS(getgrouplist)
1211 #################################################
1212 # Check whether struct stat has timestamps with sub-second resolution.
1215 samba_cv_stat_hires=no
1216 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1217 [samba_cv_stat_hires=yes])
1218 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1219 [samba_cv_stat_hires=yes])
1220 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1221 [samba_cv_stat_hires=yes])
1222 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1223 [samba_cv_stat_hires=yes])
1224 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1225 [samba_cv_stat_hires=yes])
1227 if test x"$samba_cv_stat_hires" = x"yes" ; then
1228 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1229 [whether struct stat has sub-second timestamps])
1232 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1233 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1234 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1237 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1240 [#include <sys/stat.h>],
1242 int a = UF_DOS_ARCHIVE;
1243 int h = UF_DOS_HIDDEN;
1245 int s = UF_DOS_SYSTEM;
1246 int i = UF_DOS_NOINDEX;
1247 int f = UF_DOS_FLAGS;
1249 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1252 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1253 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1256 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1257 samba_cv_function_attribute_destructor,
1259 AC_COMPILE_IFELSE([AC_LANG_SOURCE(
1261 __attribute__((destructor))
1262 static void cleanup(void) { }
1264 samba_cv_function_attribute_destructor=yes)
1267 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1268 AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1269 [whether we can compile with __attribute__((destructor))])
1272 #####################################
1273 # needed for SRV lookups
1274 AC_CHECK_LIB(resolv, dn_expand)
1275 AC_CHECK_LIB(resolv, _dn_expand)
1276 AC_CHECK_LIB(resolv, __dn_expand)
1277 AC_CHECK_LIB(inet, dn_expand)
1280 # Check for the functions putprpwnam, set_auth_parameters,
1281 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1282 # Needed for OSF1 and HPUX.
1285 AC_LIBTESTFUNC(security, putprpwnam)
1286 AC_LIBTESTFUNC(sec, putprpwnam)
1288 AC_LIBTESTFUNC(security, set_auth_parameters)
1289 AC_LIBTESTFUNC(sec, set_auth_parameters)
1291 # UnixWare 7.x has its getspnam in -lgen
1292 AC_LIBTESTFUNC(gen, getspnam)
1294 AC_LIBTESTFUNC(security, getspnam)
1295 AC_LIBTESTFUNC(sec, getspnam)
1297 AC_LIBTESTFUNC(security, bigcrypt)
1298 AC_LIBTESTFUNC(sec, bigcrypt)
1300 AC_LIBTESTFUNC(security, getprpwnam)
1301 AC_LIBTESTFUNC(sec, getprpwnam)
1303 AC_CHECK_FUNCS(strsignal)
1311 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1313 if test "x$enable_pie" != xno
1315 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1317 cat > conftest.c <<EOF
1319 int main () { return 0;}
1321 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1329 if test x"${samba_cv_fpie}" = x"yes"
1338 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1340 if test "x$enable_relro" != xno
1342 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1344 cat > conftest.c <<EOF
1346 main () { return 0;}
1348 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1356 if test x"${samba_cv_relro}" = x"yes"
1358 RELRO_LDFLAGS="-Wl,-z,relro"
1366 # Assume non-shared by default and override below
1369 # these are the defaults, good for lots of systems
1374 SHLD="\${CC} \${CFLAGS}"
1375 PICFLAG="${PIE_CFLAGS}"
1379 # this bit needs to be modified for each OS that supports share libs
1380 # You need to specify how to create a shared library and
1381 # how to compile C code to produce PIC object files
1383 AC_MSG_CHECKING([ability to build shared libraries])
1385 # and these are for particular systems
1387 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1389 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1390 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1393 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1394 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1395 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1397 DYNEXP="-Wl,--export-dynamic"
1399 SONAMEFLAG="-Wl,-soname="
1400 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1402 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1404 if test "${GCC}" = "yes"; then
1406 SONAMEFLAG="-Wl,-soname="
1407 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1415 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1416 SONAMEFLAG="-Wl,-soname="
1418 SONAMEFLAG="-Wl,-h,"
1420 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1422 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1425 SONAMEFLAG="-Wl,-h,"
1426 PICFLAG="-KPIC" # Is this correct for SunOS
1427 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1429 *netbsd* | *freebsd* | *dragonfly* )
1432 DYNEXP="-Wl,--export-dynamic"
1433 SONAMEFLAG="-Wl,-soname,"
1434 PICFLAG="-fPIC -DPIC"
1435 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1437 *openbsd*) BLDSHARED="true"
1439 DYNEXP="-Wl,-Bdynamic"
1440 SONAMEFLAG="-Wl,-soname,"
1442 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1444 *irix*) BLDSHARED="true"
1445 LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1446 SONAMEFLAG="-Wl,-soname,"
1447 if test "${GCC}" = "yes"; then
1452 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1454 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1456 # use expfull to export underscored symbols
1457 # add rtl to remove /lib/crt0.o warning
1458 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1459 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1461 # as AIX code is always position independent...
1462 # .po will just create compile warnings, use po.o:
1463 if test "${GCC}" != "yes"; then
1464 ## for funky AIX compiler using strncpy()
1465 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1468 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1469 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1470 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1472 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1473 # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1474 # 64bit build using HP's cc with CFLAGS="+DD64"
1475 # hppa: 64bit build unsupported by gcc
1476 # 64bit build using HP's cc with CFLAGS="+DA2.0w"
1477 # HP-UX 11.00 ld needs PHSS_33034
1479 if test "${GCC}" = "yes"; then
1485 # "Uses depth-first symbol resolution"
1486 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1487 if test "$host_cpu" != "ia64"; then
1488 # "don't store literals in read-only memory" (?):
1489 PICFLAG="$PICFLAG +ESnolit"
1492 if test "$host_cpu" = "ia64"; then
1494 # TODO: does the linker find the right 32/64 bit version of the libs? :
1495 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1498 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1500 if test "$ac_cv_prog_gnu_ld" = "yes"; then
1501 SONAMEFLAG="-Wl,-soname="
1503 SONAMEFLAG="-Wl,+h,"
1505 # PIE/PIC flags at link time are required on HP-UX because
1506 # linking requires a temporary source file, which is being
1507 # compiled with the indicated flags - which need to contain
1508 # PIC flags when we don't support PIE flags:
1509 if test "$PIE_LDFLAGS" = "" ; then
1510 PIE_LDFLAGS=\${PICFLAG}
1512 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1513 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1515 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1518 SONAMEFLAG="-Wl,-soname,"
1519 if test "${GCC}" = "yes"; then
1522 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1523 for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1524 saved_ldflags="$LDFLAGS"
1525 AC_MSG_CHECKING([if $flags works])
1526 LDFLAGS="$flags $saved_ldflags"
1528 [AC_MSG_RESULT([yes])
1529 LDSHFLAGS_Z_NODEFS=$flags],
1530 AC_MSG_RESULT([no]))
1531 LDFLAGS="$saved_ldflags"
1532 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1535 *sco*) AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1537 *unixware*) BLDSHARED="true"
1539 SONAMEFLAG="-Wl,-soname,"
1541 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1543 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1544 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1546 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1547 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1549 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1551 *-univel-*) if [ test "$GCC" != yes ]; then
1552 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1557 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1559 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1562 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1563 if [ test "$GCC" != yes ]; then
1564 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1567 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1569 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1574 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1576 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1577 CFLAGS="$CFLAGS -fno-common"
1580 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1582 # Since gcc doesn't fail on unrecognised options, the
1583 # PIE test incorrectly succeeds. Darwin gcc does not
1584 # actually support the PIE stuff.
1587 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1591 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1595 if test "$enable_shared" != "yes"; then
1599 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1600 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1603 if test x"$BLDSHARED" = x"true" ; then
1604 LDFLAGS="$LDFLAGS -L./bin"
1607 AC_MSG_RESULT($BLDSHARED)
1609 if test x"$enable_developer" = x"yes" ; then
1610 default_as_needed=auto
1612 default_as_needed=no
1614 AC_ARG_ENABLE(as-needed,
1615 AS_HELP_STRING([--enable-as-needed],
1616 [Turn on as-needed support if available (default=no)]),
1617 [enable_as_needed=$enableval],
1618 [enable_as_needed=$default_as_needed])
1619 if test "x$enable_as_needed" != xno; then
1620 saved_before_as_needed_ldflags="$LDFLAGS"
1621 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1622 saved_ldflags="$LDFLAGS"
1623 AC_MSG_CHECKING([if $flags works])
1624 LDFLAGS="$flags $saved_ldflags"
1626 [AC_MSG_RESULT([yes])
1627 LD_AS_NEEDED_FLAG=$flags
1628 ld_as_needed_flag_found=yes],
1629 AC_MSG_RESULT([no]))
1630 LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1631 test x"$ld_as_needed_flag_found" = xyes && break
1635 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1636 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1637 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1638 cat > conftest_shb.c <<END
1641 cat > conftest_sha.c <<END
1647 cat > conftest.c <<END
1656 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1657 AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1658 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1659 AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1660 AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1661 AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1662 if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1666 ld_as_needed_flag_found=no
1667 LDFLAGS="$saved_before_as_needed_ldflags"
1668 AC_MSG_RESULT([yes])
1670 rm conftest* libconftest*
1673 # check if we have to disable LD_AS_NEEDED_FLAG:
1674 # On some systems for a veriety of reasons linking with
1675 # -Wl,--as-needed -lreadline -lncurses fails
1676 # we have to retest, if these combination is detected before.
1679 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1680 if test x$ld_as_needed_flag_found = xyes ; then
1681 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1682 # try if check no fails
1684 LIBS="$LIBS $TERMLIBS"
1685 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1692 # for historical reasons almost all linkers don't complain about unresolved
1693 # symbols in shared libs. Except for the internal samba modules we want to get
1694 # errors when we produce a shared lib with unresolved symbols. On some
1695 # platforms unresolved symbols might be intended, so we might have to add
1696 # platform specific exceptions here.
1698 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1699 saved_ldflags="$LDFLAGS"
1700 AC_MSG_CHECKING([if $flags works])
1701 LDFLAGS="$flags $saved_ldflags"
1703 [AC_MSG_RESULT([yes])
1704 LDSHFLAGS_Z_DEFS=$flags
1705 ldshflags_z_defs_found=yes],
1706 AC_MSG_RESULT([no]))
1707 LDFLAGS=$saved_ldflags
1708 test x"$ldshflags_z_defs_found" = xyes && break
1711 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1712 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1713 AC_MSG_CHECKING([LDFLAGS])
1714 AC_MSG_RESULT([$LDFLAGS])
1715 AC_MSG_CHECKING([DYNEXP])
1716 AC_MSG_RESULT([$DYNEXP])
1718 #######################################################
1719 # test whether building a shared library actually works
1720 if test $BLDSHARED = true; then
1722 AC_MSG_CHECKING([SHLD])
1723 AC_MSG_RESULT([$SHLD])
1724 AC_MSG_CHECKING([LDSHFLAGS])
1725 AC_MSG_RESULT([$LDSHFLAGS])
1727 AC_MSG_CHECKING([SHLIBEXT])
1728 AC_MSG_RESULT([$SHLIBEXT])
1729 AC_MSG_CHECKING([SONAMEFLAG])
1730 AC_MSG_RESULT([$SONAMEFLAG])
1732 AC_MSG_CHECKING([PICFLAG])
1733 AC_MSG_RESULT([$PICFLAG])
1735 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1736 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1738 AC_CACHE_CHECK([whether building shared libraries actually works],
1739 [ac_cv_shlib_works],[
1740 # try building a trivial shared library
1741 ac_cv_shlib_works=no
1742 # The $SHLD and $LDSHFLAGS variables may contain references to other
1743 # variables so they need to be eval'ed.
1744 if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1746 TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1747 TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1748 if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1750 ac_cv_shlib_works=yes
1753 rm -f "shlib.$SHLIBEXT" shlib.o
1756 if test $ac_cv_shlib_works = no; then
1761 if test x"$BLDSHARED" != x"true"; then
1762 LDSHFLAGS="shared-libraries-disabled"
1763 SONAMEFLAG="shared-libraries-disabled"
1764 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1765 SHLD="shared-libraries-disabled"
1766 PICFLAG="${PIE_CFLAGS}"
1767 SHLIBEXT="shared_libraries_disabled"
1768 smbtorture_possible=no
1771 AC_MSG_CHECKING([used PICFLAG])
1772 AC_MSG_RESULT([$PICFLAG])
1774 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1778 ###########################################################
1780 # Configuration of subsystems / libraries
1782 ###########################################################
1786 UNINSTALLLIBCMD_SH=:
1789 if test $BLDSHARED = true; then
1790 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1791 UNINSTALLLIBCMD_SH="rm -f"
1793 if test $enable_static = yes; then
1794 INSTALLLIBCMD_A="\$(INSTALLCMD)"
1795 UNINSTALLLIBCMD_A="rm -f"
1798 #################################################
1799 # --disable-shared-libs
1800 # can be used to disable the internal use of shared libs altogether
1801 # (this only has an effect when building shared libs is enabled)
1806 AC_MSG_CHECKING(whether to use shared libraries internally)
1807 AC_ARG_ENABLE([shared-libs],
1808 AS_HELP_STRING([--enable-shared-libs],
1809 [Use shared libraries internally (default=yes)]),
1810 [enable_shared_libs=$enableval],
1811 [enable_shared_libs=yes])
1813 if test x"$enable_shared_libs" != x"no" ; then
1814 USESHARED=$BLDSHARED
1817 AC_MSG_RESULT([$USESHARED])
1819 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1820 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1823 #################################################
1824 # --with-static-libs=LIBS:
1825 # link (internal) libs dynamically or statically?
1827 # If a subsystem is built as a library then this controls whether they are
1828 # linked into Samba targets statically or dynamically:
1830 # * If we build the shared library at all, we link dynamically by default.
1832 # * We only link statically if we don't build shared or if the library
1833 # appears in the --with-static-libs configure option.
1836 # --with-static-libs=libtalloc makes use of libtalloc.a instead
1837 # of linking the dynamic variant with -ltalloc.
1839 # NOTE: This option only affects libraries that we do not only build
1840 # but that samba also links against as libraries (as opposed to linking
1841 # the plain object files. - This has to be configured in Makefile.in.
1842 # So in particular it does not harm to give invalid or unknown names here.
1845 AC_ARG_WITH([static-libs],
1846 [AS_HELP_STRING([--with-static-libs=LIBS],
1847 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1848 [AS_IF([test $withval],
1849 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1850 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1851 eval LINK_$lib=STATIC
1857 # until we have organized other internal subsystems (as util, registry
1858 # and smbconf) into shared libraries, we CAN NOT link libnetapi
1859 # dynamically to samba programs.
1861 LINK_LIBNETAPI=STATIC
1863 LINK_LIBSMBCLIENT=STATIC
1866 # The library versions are hardcoded here
1867 # and filled into the LIBFOO_SOVER variable.
1869 # TODO: for talloc and tdb (at least), these should
1870 # be extracted from their respective source directories
1872 AC_ARG_ENABLE(external_libtalloc,
1873 [AS_HELP_STRING([--enable-external-libtalloc],
1874 [Enable external talloc [default=auto]])],
1875 [ enable_external_libtalloc=$enableval ],
1876 [ enable_external_libtalloc=auto ])
1878 if test "x$enable_external_libtalloc" != xno
1880 PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1881 [ enable_external_libtalloc=yes ],
1882 [ if test x$enable_external_libtalloc = xyes; then
1883 AC_MSG_ERROR([Unable to find libtalloc])
1885 enable_external_libtalloc=no
1890 if test "x$enable_external_libtalloc" = xno
1892 m4_include(../lib/talloc/libtalloc.m4)
1893 LINK_LIBTALLOC=STATIC
1894 LIBTALLOCVERSION=`grep ^VERSION ${tallocdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1895 SMB_LIBRARY(talloc, 2, ${LIBTALLOCVERSION})
1897 for obj in ${TALLOC_OBJ}; do
1898 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1900 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1901 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1902 AC_SUBST(LIBTALLOC_OBJ0)
1904 TALLOCTORT="bin/talloctort"
1905 AC_SUBST(TALLOCTORT)
1909 AC_ARG_ENABLE(external_libtdb,
1910 [AS_HELP_STRING([--enable-external-libtdb],
1911 [Enable external tdb [default=auto]])],
1912 [ enable_external_libtdb=$enableval ],
1913 [ enable_external_libtdb=auto ])
1915 if test "x$enable_external_libtdb" != xno
1917 PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.6,
1918 [ enable_external_libtdb=yes ],
1920 if test x$enable_external_libtdb = xyes; then
1921 AC_MSG_ERROR([Unable to find libtdb])
1923 enable_external_libtdb=no
1928 AC_SUBST(LIBTDB_OBJ0)
1929 if test "x$enable_external_libtdb" = xno
1931 m4_include(../lib/tdb/libtdb.m4)
1933 LIBTDBVERSION=`grep ^VERSION ${tdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1934 SMB_LIBRARY(tdb, 1, ${LIBTDBVERSION})
1936 LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
1937 for obj in ${TDB_OBJ}; do
1938 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
1940 AC_SUBST(LIBTDB_OBJ0)
1941 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
1942 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
1944 TDBBACKUP="bin/tdbbackup"
1946 TDBDUMP="bin/tdbdump"
1948 TDBRESTORE="bin/tdbrestore"
1949 AC_SUBST(TDBRESTORE)
1950 TDBTOOL="bin/tdbtool"
1952 TDBTORTURE="bin/tdbtorture"
1953 AC_SUBST(TDBTORTURE)
1956 AC_ARG_ENABLE(external_libntdb,
1957 [AS_HELP_STRING([--enable-external-libntdb],
1958 [Enable external ntdb [default=auto]])],
1959 [ enable_external_libntdb=$enableval ],
1960 [ enable_external_libntdb=auto ])
1962 if test "x$enable_external_libntdb" != xno
1964 PKG_CHECK_MODULES(LIBNTDB, ntdb >= 1.0,
1965 [ enable_external_libntdb=yes ],
1967 if test x$enable_external_libntdb = xyes; then
1968 AC_MSG_ERROR([Unable to find libntdb])
1970 enable_external_libntdb=no
1975 AC_SUBST(LIBNTDB_OBJ0)
1976 if test "x$enable_external_libntdb" = xno
1978 m4_include(../lib/ntdb/libntdb.m4)
1980 LIBNTDBVERSION=`grep ^VERSION ${ntdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1981 SMB_LIBRARY(ntdb, 1, ${LIBNTDBVERSION})
1983 LIBNTDB_LIBS="$LIBNTDB_LIBS $NTDB_DEPS"
1984 for obj in ${NTDB_OBJ}; do
1985 LIBNTDB_OBJ0="${LIBNTDB_OBJ0} ${ntdbdir}/${obj}"
1987 AC_SUBST(LIBNTDB_OBJ0)
1988 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${NTDB_CFLAGS}"
1989 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${NTDB_CFLAGS}"
1991 NTDBBACKUP="bin/ntdbbackup"
1992 AC_SUBST(NTDBBACKUP)
1993 NTDBDUMP="bin/ntdbdump"
1995 NTDBRESTORE="bin/ntdbrestore"
1996 AC_SUBST(NTDBRESTORE)
1997 NTDBTOOL="bin/ntdbtool"
1999 NTDBTORTURE="bin/ntdbtorture"
2000 AC_SUBST(NTDBTORTURE)
2003 SMB_LIBRARY(netapi, 0)
2004 SMB_LIBRARY(smbclient, 0)
2005 SMB_LIBRARY(smbsharemodes, 0)
2010 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2011 AC_TRY_RUN([#include <stdio.h>
2012 main() { long long x = 1000000; x *= x; return(((x/1000000) == 1000000)? 0: 1); }],
2013 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2014 if test x"$samba_cv_have_longlong" = x"yes"; then
2015 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2016 AC_CHECK_TYPE(intptr_t, unsigned long long)
2018 AC_CHECK_TYPE(intptr_t, unsigned long)
2022 # Check if the compiler supports the LL prefix on long long integers.
2025 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2026 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2027 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2028 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2029 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2033 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2034 AC_TRY_RUN([#include <time.h>
2035 main() { return((sizeof(time_t) == 8) ? 0 : 1); }],
2036 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2037 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2038 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2041 AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
2042 AC_TRY_RUN([#include <time.h>
2045 if (sizeof(time_t) == 8) {
2046 time_t max_time = 0x7fffffffffffffffll;
2047 tm = gmtime(&max_time);
2048 /* This should fail with 32-bit tm_year. */
2050 /* Max time_t that works with 32-bit int tm_year in struct tm. */
2051 max_time = 67768036191676799ll;
2052 tm = gmtime(&max_time);
2060 samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
2061 if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
2062 AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
2067 # As a gating factor for large file support, in order to
2068 # use >4GB files we must have the following minimal support
2069 # available: a 64 bit off_t
2070 # If we don't have all of these then fail the build
2073 AC_MSG_CHECKING([if large file support can be enabled])
2074 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2075 AC_TRY_RUN([#include <stdio.h>
2076 #include <sys/stat.h>
2077 main() { return((sizeof(off_t) == 8) ? 0 : 1); }],
2078 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2079 if test x"$samba_cv_SIZEOF_OFF_T" = x"no"; then
2080 AC_MSG_ERROR(["large file support support not available: sizeof(off_t) != 8"])
2083 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2085 #if defined(HAVE_UNISTD_H)
2089 #include <sys/stat.h>
2090 main() { return((sizeof(ino_t) == 8) ? 0 : 1); }],
2091 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2092 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2093 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2096 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2098 #if defined(HAVE_UNISTD_H)
2102 #include <sys/stat.h>
2103 main() { return((sizeof(dev_t) == 8) ? 0 : 1); }],
2104 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2105 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2106 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2109 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2111 #if defined(HAVE_UNISTD_H)
2114 #include <sys/types.h>
2115 main() { dev_t dev; int i = major(dev); return 0; }],
2116 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2117 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2118 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2121 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2123 #if defined(HAVE_UNISTD_H)
2126 #include <sys/types.h>
2127 main() { dev_t dev; int i = minor(dev); return 0; }],
2128 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2129 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2130 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2133 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2135 #if defined(HAVE_UNISTD_H)
2138 #include <sys/types.h>
2139 main() { dev_t dev = makedev(1,2); return 0; }],
2140 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2141 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2142 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2145 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2146 AC_TRY_COMPILE([#include <sys/types.h>
2148 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2149 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2150 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2151 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2154 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2155 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2156 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2157 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2158 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2161 if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then
2165 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2166 AC_TRY_RUN([#include <sys/types.h>
2168 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2169 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2170 di->d_name[0] == 0) return(0); return(1);} ],
2171 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2172 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2173 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2176 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2177 AC_TRY_COMPILE([#include <sys/types.h>
2178 #include <utime.h>],
2179 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return(utime("foo.c",&tbuf));],
2180 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2181 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2182 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2186 # Check utmp details, but only if our OS offers utmp.h
2187 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2188 dnl utmp and utmpx come in many flavours
2189 dnl We need to check for many of them
2190 dnl But we don't need to do each and every one, because our code uses
2191 dnl mostly just the utmp (not utmpx) fields.
2193 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2195 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2196 AC_TRY_COMPILE([#include <sys/types.h>
2198 [struct utmp ut; ut.ut_name[0] = 'a';],
2199 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2200 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2201 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2204 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2205 AC_TRY_COMPILE([#include <sys/types.h>
2207 [struct utmp ut; ut.ut_user[0] = 'a';],
2208 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2209 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2210 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2213 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2214 AC_TRY_COMPILE([#include <sys/types.h>
2216 [struct utmp ut; ut.ut_id[0] = 'a';],
2217 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2218 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2219 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2222 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2223 AC_TRY_COMPILE([#include <sys/types.h>
2225 [struct utmp ut; ut.ut_host[0] = 'a';],
2226 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2227 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2228 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2231 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2232 AC_TRY_COMPILE([#include <sys/types.h>
2234 [struct utmp ut; time_t t; ut.ut_time = t;],
2235 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2236 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2237 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2240 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2241 AC_TRY_COMPILE([#include <sys/types.h>
2243 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2244 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2245 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2246 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2249 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2250 AC_TRY_COMPILE([#include <sys/types.h>
2252 [struct utmp ut; ut.ut_type = 0;],
2253 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2254 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2255 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2258 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2259 AC_TRY_COMPILE([#include <sys/types.h>
2261 [struct utmp ut; ut.ut_pid = 0;],
2262 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2263 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2264 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2267 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2268 AC_TRY_COMPILE([#include <sys/types.h>
2270 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2271 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2272 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2273 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2276 if test x$ac_cv_func_pututline = xyes ; then
2277 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2278 AC_TRY_COMPILE([#include <sys/types.h>
2280 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2281 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2282 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2283 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2287 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2288 AC_TRY_COMPILE([#include <sys/types.h>
2289 #include <utmpx.h>],
2290 [struct utmpx ux; ux.ut_syslen = 0;],
2291 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2292 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2293 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2296 AC_CACHE_CHECK([whether sizeof ut_line in utmp is ok],samba_cv_HAVE_UX_UT_LINE,[
2297 AC_TRY_RUN([#include <stdio.h>
2298 #include <sys/types.h>
2301 if (sizeof(((struct utmp *)NULL)->ut_line) < 15) {
2307 samba_cv_HAVE_UX_UT_LINE=yes,samba_cv_HAVE_UX_UT_LINE=no,samba_cv_HAVE_UX_UT_LINE=cross)])
2312 AC_CACHE_CHECK([for linux fallocate],samba_cv_HAVE_LINUX_FALLOCATE,[
2314 #if defined(HAVE_UNISTD_H)
2317 #include <sys/types.h>
2320 #if defined(HAVE_LINUX_FALLOC_H)
2321 #include <linux/falloc.h>
2323 [int ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2324 samba_cv_HAVE_LINUX_FALLOCATE=yes,samba_cv_HAVE_LINUX_FALLOCATE=no)])
2325 if test x"$samba_cv_HAVE_LINUX_FALLOCATE" = x"yes" && test x"$ac_cv_func_fallocate" = x"yes"; then
2326 AC_DEFINE(HAVE_LINUX_FALLOCATE,1,[Whether the Linux 'fallocate' function is available])
2329 AC_CACHE_CHECK([for getcwd takes NULL],samba_cv_GETCWD_TAKES_NULL,[
2331 #if defined(HAVE_UNISTD_H)
2334 main() { char *s = getcwd(NULL,0); if (s) return(0); return(1); }],
2335 samba_cv_GETCWD_TAKES_NULL=yes,samba_cv_GETCWD_TAKES_NULL=no,samba_cv_GETCWD_TAKES_NULL=cross)])
2336 if test x"$samba_cv_GETCWD_TAKES_NULL" = x"yes"; then
2337 AC_DEFINE(GETCWD_TAKES_NULL,1,[Whether the getcwd function takes NULL as an argument])
2340 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2341 AC_ARG_WITH(libiconv,
2342 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2344 if test "$withval" = "no" ; then
2345 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2347 if test "$withval" != "yes" ; then
2349 ICONV_LOOK_DIRS="$withval"
2354 for i in $ICONV_LOOK_DIRS ; do
2357 save_LDFLAGS="$LDFLAGS"
2358 save_CPPFLAGS="$CPPFLAGS"
2360 iconv_current_LIBS=""
2361 iconv_current_LDFLAGS=""
2362 iconv_current_CPPFLAGS=""
2367 # This is here to handle -withval stuff for --with-libiconv
2368 # Perhaps we should always add a -L
2369 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2371 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2372 # installation paths. This gets a little tricky since we might have iconv
2373 # in both libiconv and in libc. In this case the jm_ICONV test will always
2374 # succeed when the header is found. To counter this, make sure the
2375 # library directory is there and check the ABI directory first (which
2376 # should be harmless on other systems, but causes tons of linker warnings on
2377 # 64bit Ubuntu systems).
2378 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2379 # installed, I've decided to fix the linker warnings.
2381 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2382 for l in "lib" "lib32" "lib/hpux32"; do
2383 if test -d "$i/$l" ; then
2384 LDFLAGS="$save_LDFLAGS -L$i/$l"
2386 export LDFLAGS LIBS CPPFLAGS
2387 # Try to find iconv(3)
2389 if test x"$ICONV_FOUND" = "xyes" ; then
2396 if test x"$ICONV_FOUND" = "xyes" ; then
2397 iconv_current_LDFLAGS="-L$i/$libext"
2398 iconv_current_CPPFLAGS="-I$i/include"
2400 if test x"$jm_cv_lib_iconv" != x; then
2401 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2403 # We found iconv in libc.
2404 iconv_current_LIBS=""
2409 if test x"$ICONV_FOUND" = "xyes" ; then
2411 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2412 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2413 LIBS="$save_LIBS $iconv_current_LIBS"
2414 export LDFLAGS LIBS CPPFLAGS
2416 default_dos_charset=no
2417 default_unix_charset=no
2419 # check for default dos charset name
2420 for j in CP850 IBM850 ; do
2422 default_dos_charset="$ICONV_CHARSET"
2423 if test x"$default_dos_charset" = x"$j"; then
2428 # check for default unix charset name
2429 for j in UTF-8 UTF8 ; do
2431 default_unix_charset="$ICONV_CHARSET"
2432 if test x"$default_unix_charset" = x"$j"; then
2437 if test "$default_dos_charset" != "no" -a \
2438 "$default_dos_charset" != "cross" -a \
2439 "$default_unix_charset" != "no" -a \
2440 "$default_unix_charset" != "cross"
2442 samba_cv_HAVE_NATIVE_ICONV=yes
2444 if test "$default_dos_charset" = "cross" -o \
2445 "$default_unix_charset" = "cross"
2447 samba_cv_HAVE_NATIVE_ICONV=cross
2449 samba_cv_HAVE_NATIVE_ICONV=no
2453 # At this point, we have a libiconv candidate. We know that
2454 # we have the right headers and libraries, but we don't know
2455 # whether it does the conversions we want. We can't test this
2456 # because we are cross-compiling. This is not necessarily a big
2457 # deal, since we can't guarantee that the results we get now will
2458 # match the results we get at runtime anyway.
2459 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2460 default_dos_charset="CP850"
2461 default_unix_charset="UTF-8"
2462 samba_cv_HAVE_NATIVE_ICONV=yes
2463 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2464 AC_MSG_WARN([$default_dos_charset and $default_unix_charset to UCS-16LE])
2467 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2469 CPPFLAGS=$save_CPPFLAGS
2470 LDFLAGS=$save_LDFLAGS
2473 if test x"$iconv_current_LIBS" != x; then
2474 LIBS="$LIBS $iconv_current_LIBS"
2477 # Add the flags we need to CPPFLAGS and LDFLAGS
2478 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2479 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2481 # Turn the #defines into string literals
2482 default_dos_charset="\"$default_dos_charset\""
2483 default_unix_charset="\"$default_unix_charset\""
2485 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2486 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2487 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2492 # We didn't find a working iconv, so keep going
2495 # We only need to clean these up here for the next pass through the loop
2496 CPPFLAGS=$save_CPPFLAGS
2497 LDFLAGS=$save_LDFLAGS
2499 export LDFLAGS LIBS CPPFLAGS
2504 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2505 AC_MSG_WARN([Sufficient support for iconv function was not found.
2506 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2507 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2508 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2512 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2514 #include <sys/types.h>
2517 #define F_GETLEASE 1025
2520 int fd = open("/dev/null", O_RDONLY);
2521 return fcntl(fd, F_GETLEASE, 0) == -1;
2524 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2525 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2526 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2529 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2531 #include <sys/types.h>
2535 #define F_NOTIFY 1026
2538 return(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2541 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2542 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2543 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2546 AC_CHECK_HEADER(sys/inotify.h)
2548 if test x"$ac_cv_header_sys_inotify_h" = x"yes"; then
2549 AC_DEFINE(HAVE_INOTIFY,1,[For inotify support])
2552 #################################################
2553 # Check if FAM notifications are available. For FAM info, see
2554 # http://oss.sgi.com/projects/fam/
2555 # http://savannah.nongnu.org/projects/fam/
2557 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2559 if test x$enable_fam != xno; then
2560 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2561 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2562 # On IRIX, libfam requires libC, but other FAM implementations
2563 # might not need it.
2564 AC_CHECK_LIB(fam, FAMOpen2,
2565 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2566 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2567 [samba_cv_HAVE_LIBFAM=no])
2569 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2571 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2572 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2573 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2574 [samba_cv_HAVE_LIBFAM=no])
2575 unset samba_fam_xtra
2578 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2579 default_shared_modules="$default_shared_modules vfs_notify_fam"
2580 AC_TRY_COMPILE([#include <fam.h>],
2581 [enum FAMCodes code = FAMChanged;],
2582 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2583 [Whether fam.h contains a typedef for enum FAMCodes]),
2587 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2588 AC_CHECK_LIB(fam, FAMNoExists,
2589 [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2592 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2593 AC_MSG_ERROR(FAM support requested but FAM library not available )
2597 AC_SUBST(SMB_FAM_LIBS)
2599 #################################################
2600 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2603 with_dmapi_support=auto
2604 AC_MSG_CHECKING(whether to use DMAPI support)
2606 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2607 [ case "$withval" in
2609 with_dmapi_support=$withval
2613 AC_MSG_RESULT([$with_dmapi_support])
2615 if test x"$with_dmapi_support" != xno ; then
2616 SMB_CHECK_DMAPI([], [
2617 AC_MSG_NOTICE(DMAPI support not present)
2618 if test x"$with_dmapi_support" = xyes ; then
2619 AC_MSG_ERROR(no DMAPI support found but requested!)
2625 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2626 # Theoretically it should work with AIX JFS2 too but this needs testing
2627 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2628 default_shared_modules="$default_shared_modules vfs_tsmsm"
2631 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2633 #include <sys/types.h>
2636 #include <sys/file.h>
2638 #define LOCK_MAND 32
2639 #define LOCK_READ 64
2642 return(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2645 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2646 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2647 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2651 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2652 AC_TRY_COMPILE([#include <sys/types.h>
2653 #include <fcntl.h>],
2654 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2655 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2656 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2657 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2660 #################################################
2661 # Check for POSIX capability support
2663 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2664 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2667 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2670 AC_LIBTESTFUNC(cap, cap_get_proc)
2672 AC_CACHE_CHECK([for POSIX capabilities],
2673 samba_cv_HAVE_POSIX_CAPABILITIES,
2676 #include <sys/types.h>
2677 #include <sys/capability.h>
2680 cap_value_t vals[1];
2681 if (!(cap = cap_get_proc()))
2683 vals[0] = CAP_CHOWN;
2684 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2688 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2689 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2690 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2693 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2694 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2695 [Whether POSIX capabilities are available])
2703 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2704 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2707 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2708 AC_TRY_COMPILE([#include <sys/types.h>
2709 #if defined(HAVE_RPC_RPC_H)
2710 #include <rpc/rpc.h>
2713 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2714 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2715 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2718 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2719 AC_TRY_COMPILE([#include <sys/types.h>
2720 #if defined(HAVE_RPC_RPC_H)
2721 #include <rpc/rpc.h>
2724 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2725 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2726 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2729 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2730 AC_TRY_COMPILE([#include <sys/types.h>
2731 #if defined(HAVE_RPC_RPC_H)
2732 #include <rpc/rpc.h>
2735 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2736 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2737 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2740 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2741 AC_TRY_COMPILE([#include <sys/types.h>
2742 #if defined(HAVE_RPC_RPC_H)
2743 #include <rpc/rpc.h>
2746 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2747 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2748 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2752 dnl Some systems (SCO) have a problem including
2753 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2754 dnl as a #define in <prot.h> and as part of an enum
2758 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2759 AC_TRY_COMPILE([#include <sys/types.h>
2760 #ifdef HAVE_SYS_SECURITY_H
2761 #include <sys/security.h>
2763 #endif /* HAVE_SYS_SECURITY_H */
2764 #if defined(HAVE_RPC_RPC_H)
2765 #include <rpc/rpc.h>
2768 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2769 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2770 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2773 AC_MSG_CHECKING([for test routines])
2774 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2776 AC_MSG_ERROR([cant find test code. Aborting config]),
2777 AC_MSG_WARN([cannot run when cross-compiling]))
2779 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2780 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2781 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2782 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2783 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2786 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2787 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2788 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2789 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2790 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2793 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2794 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2795 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2796 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2797 AC_CHECK_FUNCS(getpagesize)
2799 ################################################
2800 # look for a method of setting the effective uid
2803 ################################################
2804 # Start by checking for 32-bit system call definitions on Linux.
2808 AC_CACHE_CHECK([for Linux 32-bit system calls],samba_cv_USE_LINUX_32BIT_SYSCALLS,[
2810 #if defined(HAVE_UNISTD_H)
2815 #include <sys/types.h>
2818 #ifdef HAVE_SYS_PRIV_H
2819 #include <sys/priv.h>
2821 #ifdef HAVE_SYS_ID_H
2825 #if defined(HAVE_SYSCALL_H)
2826 #include <syscall.h>
2829 #if defined(HAVE_SYS_SYSCALL_H)
2830 #include <sys/syscall.h>
2834 syscall(SYS_setresuid32, -1, -1, -1);
2835 syscall(SYS_setresgid32, -1, -1, -1);
2836 syscall(SYS_setreuid32, -1, -1);
2837 syscall(SYS_setregid32, -1, -1);
2838 syscall(SYS_setuid32, -1);
2839 syscall(SYS_setgid32, -1);
2840 syscall(SYS_setgroups32, 0, NULL);
2841 ], samba_cv_USE_LINUX_32BIT_SYSCALLS=yes,samba_cv_USE_LINUX_32BIT_SYSCALLS=no,samba_cv_USE_LINUX_32BIT_SYSCALLS=cross)])
2843 if test x"$samba_cv_USE_LINUX_32BIT_SYSCALLS" = x"yes"; then
2844 AC_DEFINE(USE_LINUX_32BIT_SYSCALLS,1,[Use Linux 32-bit system calls])
2845 AC_CACHE_CHECK([for Linux thread-specific credentials with 32-bit system calls],samba_cv_USE_LINUX_THREAD_CREDENTIALS,[
2847 #define AUTOCONF_TEST 1
2848 #define USE_LINUX_THREAD_CREDENTIALS 1
2849 #define USE_LINUX_32BIT_SYSCALLS 1
2850 #include "${srcdir-.}/../lib/util/setid.c"
2851 #include "${srcdir-.}/lib/util_sec.c"],
2852 samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
2853 if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
2855 AC_DEFINE(USE_LINUX_THREAD_CREDENTIALS,1,[Whether we can use Linux thread-specific credentials with 32-bit system calls])
2859 if test $seteuid = no; then
2860 AC_CACHE_CHECK([for Linux thread-specific credentials],samba_cv_USE_LINUX_THREAD_CREDENTIALS,[
2862 #define AUTOCONF_TEST 1
2863 #define USE_LINUX_THREAD_CREDENTIALS 1
2864 #include "${srcdir-.}/../lib/util/setid.c"
2865 #include "${srcdir-.}/lib/util_sec.c"],
2866 samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
2867 if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
2868 seteuid=yes;AC_DEFINE(USE_LINUX_THREAD_CREDENTIALS,1,[Whether we can use Linux thread-specific credentials])
2875 if test $seteuid = no; then
2876 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2878 #define AUTOCONF_TEST 1
2879 #define USE_SETREUID 1
2880 #include "confdefs.h"
2881 #include "${srcdir-.}/../lib/util/setid.c"
2882 #include "${srcdir-.}/lib/util_sec.c"],
2883 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2884 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2885 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2889 # we check for setresuid second as it conflicts with AIO on Linux.
2890 # see http://samba.org/~tridge/junkcode/aio_uid.c
2891 if test $seteuid = no; then
2892 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2894 #define AUTOCONF_TEST 1
2895 #define USE_SETRESUID 1
2896 #include "confdefs.h"
2897 #include "${srcdir-.}/../lib/util/setid.c"
2898 #include "${srcdir-.}/lib/util_sec.c"],
2899 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2900 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2901 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2905 if test $seteuid = no; then
2906 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2908 #define AUTOCONF_TEST 1
2909 #define USE_SETEUID 1
2910 #include "confdefs.h"
2911 #include "${srcdir-.}/../lib/util/setid.c"
2912 #include "${srcdir-.}/lib/util_sec.c"],
2913 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2914 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2915 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2919 if test $seteuid = no; then
2920 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2922 #define AUTOCONF_TEST 1
2923 #define USE_SETUIDX 1
2924 #include "confdefs.h"
2925 #include "${srcdir-.}/../lib/util/setid.c"
2926 #include "${srcdir-.}/lib/util_sec.c"],
2927 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2928 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2929 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2933 AC_CACHE_CHECK([for the Darwin initgroups system call],
2934 samba_cv_DARWIN_INITGROUPS,
2936 #include <sys/syscall.h>
2939 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2940 samba_cv_DARWIN_INITGROUPS=yes,
2941 samba_cv_DARWIN_INITGROUPS=no)
2944 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2945 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2946 [Whether to use the Darwin-specific initgroups system call])
2949 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2950 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2951 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2952 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2953 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2956 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
2957 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
2959 #define _XOPEN_SOURCE 600
2961 #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
2962 #error probably broken posix_fallocate
2966 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
2967 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
2968 AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE, 1, Whether we have a broken posix_fallocate)
2972 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2973 AC_TRY_COMPILE([#include <sys/types.h>
2974 #include <sys/stat.h>
2975 #include <unistd.h>],
2976 [struct stat st; st.st_blocks = 0;],
2977 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2978 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2979 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2982 AC_CACHE_CHECK([for 32 bit blkcnt_t],samba_cv_SIZEOF_BLKCNT_T_4,[
2984 #if defined(HAVE_UNISTD_H)
2988 #include <sys/types.h>
2989 #include <sys/stat.h>
2990 main() { return((sizeof(blkcnt_t) == 4) ? 0 : 1); }],
2991 samba_cv_SIZEOF_BLKCNT_T_4=yes,samba_cv_SIZEOF_BLKCNT_T_4=no,samba_cv_SIZEOF_BLKCNT_T_4=cross)])
2992 if test x"$samba_cv_SIZEOF_BLKCNT_T_4" = x"yes"; then
2993 AC_DEFINE(SIZEOF_BLKCNT_T_4,1,[The size of the 'blkcnt_t' type])
2996 AC_CACHE_CHECK([for 64 bit blkcnt_t],samba_cv_SIZEOF_BLKCNT_T_8,[
2998 #if defined(HAVE_UNISTD_H)
3002 #include <sys/types.h>
3003 #include <sys/stat.h>
3004 main() { return((sizeof(blkcnt_t) == 8) ? 0 : 1); }],
3005 samba_cv_SIZEOF_BLKCNT_T_8=yes,samba_cv_SIZEOF_BLKCNT_T_8=no,samba_cv_SIZEOF_BLKCNT_T_8=cross)])
3006 if test x"$samba_cv_SIZEOF_BLKCNT_T_8" = x"yes"; then
3007 AC_DEFINE(SIZEOF_BLKCNT_T_8,1,[The size of the 'blkcnt_t' type])
3010 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3011 AC_TRY_COMPILE([#include <sys/types.h>
3012 #include <sys/stat.h>
3013 #include <unistd.h>],
3014 [struct stat st; st.st_blksize = 0;],
3015 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3016 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3017 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3020 AC_CACHE_CHECK([for st_flags in struct stat],
3021 samba_cv_HAVE_STAT_ST_FLAGS,
3023 AC_TRY_COMPILE([#include <sys/types.h>
3024 #include <sys/stat.h>
3025 #include <unistd.h>],
3026 [struct stat st; st.st_flags = 0;],
3027 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3028 samba_cv_HAVE_STAT_ST_FLAGS=no,
3029 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3032 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3033 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3034 [Whether the stat struct has a st_flags member])
3037 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3039 #include <sys/types.h>
3040 #include <sys/acl.h>
3041 #if defined(HAVE_RPCSVC_NIS_H)
3042 #include <rpcsvc/nis.h>
3045 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3046 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3047 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3050 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3056 void exit_on_core(int ignored) {
3062 signal(SIGSEGV, exit_on_core);
3063 newpath = realpath("/tmp", NULL);
3064 return((newpath != NULL) ? 0 : 1);
3067 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3068 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3069 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3072 #################################################
3073 # check for AFS clear-text auth support
3074 samba_cv_WITH_AFS=no
3075 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3077 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3078 [ case "$withval" in
3080 AC_MSG_RESULT($withval)
3081 samba_cv_WITH_AFS=$withval
3090 ####################################################
3091 # check for Linux-specific AFS fake-kaserver support
3092 samba_cv_WITH_FAKE_KASERVER=no
3093 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3094 AC_ARG_WITH(fake-kaserver,
3095 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3096 [ case "$withval" in
3098 AC_MSG_RESULT($withval)
3099 samba_cv_WITH_FAKE_KASERVER=$withval
3108 #################################################
3109 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3110 if test x"$samba_cv_WITH_AFS" != x"no" ||
3111 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3113 # see if this box has the OpenSSL DES libraries
3114 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3116 # see if this box has the afs-headers in /usr/include/afs
3117 AC_MSG_CHECKING(for /usr/include/afs)
3118 if test -d /usr/include/afs; then
3126 AC_CHECK_HEADERS(afs.h afs/afs.h)
3127 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3128 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3129 test x"$samba_cv_WITH_AFS" = x"auto"; then
3130 AC_MSG_WARN([AFS cannot be supported without afs.h])
3132 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3135 have_afs_headers=yes
3139 FAKE_KASERVER_OBJ=""
3140 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3141 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3142 FAKE_KASERVER_OBJ="utils/net_afs.o"
3144 AC_SUBST(FAKE_KASERVER_OBJ)
3146 #################################################
3147 # check whether to compile AFS/NT ACL mapping module
3148 samba_cv_WITH_VFS_AFSACL=no
3149 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3150 AC_ARG_WITH(vfs-afsacl,
3151 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3152 [ case "$withval" in
3154 AC_MSG_RESULT($withval)
3155 samba_cv_WITH_VFS_AFSACL=yes
3164 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3165 default_shared_modules="$default_shared_modules vfs_afsacl"
3168 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3169 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3172 #################################################
3173 # check for the DFS clear-text auth system
3174 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3176 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3177 [ case "$withval" in
3180 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3189 ########################################################
3190 # Compile with LDAP support?
3192 with_ldap_support=auto
3193 AC_MSG_CHECKING([for LDAP support])
3196 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3197 [ case "$withval" in
3199 with_ldap_support=$withval
3203 AC_MSG_RESULT($with_ldap_support)
3208 if test x"$with_ldap_support" != x"no"; then
3210 ##################################################################
3211 # first test for ldap.h and lber.h
3212 # (ldap.h is required for this test)
3213 AC_CHECK_HEADERS(ldap.h lber.h)
3215 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3216 if test x"$with_ldap_support" = x"yes"; then
3217 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3219 AC_MSG_WARN(ldap.h is needed for LDAP support)
3222 with_ldap_support=no
3225 ##################################################################
3226 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3227 # unsigned int in include/includes.h
3230 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3231 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3232 with_ldap_support=yes
3235 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3236 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3237 if test x"$with_ldap_support" = x"yes"; then
3238 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3240 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3242 with_ldap_support=no
3248 if test x"$with_ldap_support" != x"no"; then
3251 ##################################################################
3252 # we might need the lber lib on some systems. To avoid link errors
3253 # this test must be before the libldap test
3254 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3256 ########################################################
3257 # If ber_sockbuf_add_io() is available we can add
3258 # SASL wrapping hooks
3259 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3261 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3262 AC_TRY_COMPILE([#include <ldap.h>],
3263 [int val = LDAP_OPT_SOCKBUF;],
3264 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3265 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3267 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3268 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3269 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3272 #######################################################
3273 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3274 # ldap logging and print it out in the samba logs
3275 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3276 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3277 [AC_TRY_COMPILE([#include <lber.h>],
3278 [int val = LBER_OPT_LOG_PRINT_FN;],
3279 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3280 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3282 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3283 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3284 [Support for LDAP/LBER logging interception])
3287 ########################################################
3288 # now see if we can find the ldap libs in standard paths
3289 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3291 ########################################################
3292 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3293 # Check found in pam_ldap 145.
3294 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3296 LIBS="$LIBS $LDAP_LIBS"
3297 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3301 [ldap_set_rebind_proc(0, 0, 0);],
3302 [smb_ldap_cv_ldap_set_rebind_proc=3],
3303 [smb_ldap_cv_ldap_set_rebind_proc=2]
3307 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3309 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3311 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3312 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3313 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3314 default_static_modules="$default_static_modules pdb_ldapsam idmap_ldap";
3315 default_shared_modules="$default_shared_modules";
3316 SMBLDAP="lib/smbldap.o"
3317 with_ldap_support=yes
3318 AC_MSG_CHECKING(whether LDAP support is used)
3321 if test x"$with_ldap_support" = x"yes"; then
3322 AC_MSG_ERROR(libldap is needed for LDAP support)
3324 AC_MSG_WARN(libldap is needed for LDAP support)
3328 with_ldap_support=no
3334 #################################################
3335 # active directory support
3337 with_ads_support=auto
3338 AC_MSG_CHECKING([for Active Directory and krb5 support])
3341 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3342 [ case "$withval" in
3344 with_ads_support="$withval"
3348 AC_MSG_RESULT($with_ads_support)
3353 if test x"$with_ldap_support" != x"yes"; then
3355 if test x"$with_ads_support" = x"yes"; then
3356 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3357 elif test x"$with_ads_support" = x"auto"; then
3358 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3364 # Check to see whether there is enough LDAP functionality to be able
3365 # to build AD support.
3367 # HPUX and Solaris only has ldap_init; ok, we take care of this in smbldap.c
3370 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3372 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3373 if test x"$with_ads_support" = x"yes"; then
3374 AC_MSG_ERROR(Active Directory support on HPUX or Solaris requires ldap_init)
3375 elif test x"$with_ads_support" = x"auto"; then
3376 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX or Solaris))
3382 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3384 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3385 if test x"$with_ads_support" = x"yes"; then
3386 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3387 elif test x"$with_ads_support" = x"auto"; then
3388 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3396 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3398 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3399 if test x"$with_ads_support" = x"yes"; then
3400 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3401 elif test x"$with_ads_support" = x"auto"; then
3402 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3409 if test x"$with_ads_support" != x"no"; then
3411 # Do no harm to the values of CFLAGS and LIBS while testing for
3414 if test x$FOUND_KRB5 = x"no"; then
3415 #################################################
3416 # check for location of Kerberos 5 install
3417 AC_MSG_CHECKING(for kerberos 5 install path)
3419 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3420 [ case "$withval" in
3422 AC_MSG_RESULT(no krb5-path given)
3428 AC_MSG_RESULT($withval)
3429 KRB5_CFLAGS="-I$withval/include"
3430 KRB5_CPPFLAGS="-I$withval/include"
3431 KRB5_LDFLAGS="-L$withval/lib"
3433 if test -x "$withval/bin/krb5-config"; then
3434 KRB5CONFIG=$withval/bin/krb5-config
3438 AC_MSG_RESULT(no krb5-path given)
3442 #################################################
3443 # check for krb5-config from recent MIT and Heimdal kerberos 5
3444 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3445 AC_MSG_CHECKING(for working krb5-config)
3446 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3447 ac_save_CFLAGS=$CFLAGS
3448 CFLAGS="";export CFLAGS
3449 ac_save_LDFLAGS=$LDFLAGS
3450 LDFLAGS="";export LDFLAGS
3451 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3452 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3453 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3454 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3455 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3456 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3460 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3463 if test x$FOUND_KRB5 = x"no"; then
3464 #################################################
3465 # see if this box has the SuSE location for the heimdal krb implementation
3466 AC_MSG_CHECKING(for /usr/include/heimdal)
3467 if test -d /usr/include/heimdal; then
3468 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3469 KRB5_CFLAGS="-I/usr/include/heimdal"
3470 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3471 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3475 KRB5_CFLAGS="-I/usr/include/heimdal"
3476 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3485 if test x$FOUND_KRB5 = x"no"; then
3486 #################################################
3487 # see if this box has the RedHat location for kerberos
3488 AC_MSG_CHECKING(for /usr/kerberos)
3489 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3490 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3491 KRB5_CFLAGS="-I/usr/kerberos/include"
3492 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3500 if test x$FOUND_KRB5 = x"no"; then
3501 #################################################
3502 # see if this box has the OpenBSD location for heimdal krb5
3503 AC_MSG_CHECKING(for /usr/include/kerberosV)
3504 if test -d /usr/include/kerberosV; then
3505 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3506 KRB5_LIBS="-lcrypto"
3514 if test x$FOUND_KRB5 = x"no"; then
3515 #################################################
3516 # see if this box has Solaris MIT kerberos implementation
3517 AC_MSG_CHECKING(for Solaris MIT kerberos)
3518 if test -x "$KRB5CONFIG" && $KRB5CONFIG --version | grep -s Solaris | grep -s MIT > /dev/null ; then
3520 KRB5_LIBS="-lgss -lkrb5"
3521 KRB5_CFLAGS="`$KRB5CONFIG --cflags`"
3522 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags`"
3529 ac_save_CFLAGS=$CFLAGS
3530 ac_save_CPPFLAGS=$CPPFLAGS
3531 ac_save_LDFLAGS=$LDFLAGS
3533 # remove needless evil rpath stuff as early as possible:
3534 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3535 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3536 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3537 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3538 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3540 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3542 # now check for krb5.h. Some systems have the libraries without the headers!
3543 # note that this check is done here to allow for different kerberos
3545 AC_CHECK_HEADERS(krb5.h)
3547 if test x"$ac_cv_header_krb5_h" = x"no"; then
3549 # Give a warning if AD support was not explicitly requested,
3550 # i.e with_ads_support = auto, otherwise die with an error.
3552 if test x"$with_ads_support" = x"yes"; then
3553 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3555 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3558 # Turn off AD support and restore CFLAGS and LIBS variables
3560 with_ads_support="no"
3562 CFLAGS=$ac_save_CFLAGS
3563 CPPFLAGS=$ac_save_CPPFLAGS
3564 LDFLAGS=$ac_save_LDFLAGS
3567 # check for new heimdal KRB5_DEPRECATED handling
3569 AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3570 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3572 [#define KRB5_DEPRECATED 1
3575 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3576 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3578 if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3579 AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3580 [Whether to use deprecated krb5 interfaces])
3584 # Now we have determined whether we really want ADS support
3586 if test x"$with_ads_support" != x"no"; then
3591 # now check for gssapi headers. This is also done here to allow for
3592 # different kerberos include paths
3593 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h gssapi/gssapi_krb5.h com_err.h)
3595 ##################################################################
3596 # we might need the k5crypto and com_err libraries on some systems
3597 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3598 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3601 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3602 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3603 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3605 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3606 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3608 ########################################################
3609 # now see if we can find the krb5 libs in standard paths
3610 # or as specified above
3611 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3612 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3614 ########################################################
3615 # now see if we can find the gssapi libs in standard paths
3616 if test x"$have_gssapi" != x"yes"; then
3617 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3618 AC_CHECK_LIB_EXT(gss, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3620 ################################################################
3621 # test for AD / GSSAPI support being enabled
3622 if test x"$have_gssapi" != xyes ; then
3623 AC_MSG_WARN([Samba cannot be supported without GSSAPI])
3626 AC_DEFINE(HAVE_GSSAPI, , [Whether the platform has GSSAPI support])
3629 # This is for FreeBSD (and possibly others). gss_mech_krb5 is a
3630 # #define to GSS_KRB5_MECHANISM, which is defined in -lgssapi_krb5
3631 # Also, gsskrb5_extract_authz_data_from_sec_context is in -lgssapi_krb5
3632 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS, GSS_KRB5_MECHANISM,
3633 [KRB5_LIBS="$KRB5_LIBS -lgssapi_krb5"])
3635 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3636 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3637 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3638 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3639 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3640 AC_CHECK_FUNC_EXT(krb5_c_string_to_key, $KRB5_LIBS)
3641 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3642 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3643 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3644 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3645 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3646 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3647 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3648 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3649 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3650 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3651 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3652 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3653 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3654 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3655 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3656 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3657 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3658 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3659 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3660 AC_CHECK_FUNC_EXT(krb5_make_principal, $KRB5_LIBS)
3661 AC_CHECK_FUNC_EXT(krb5_principal_get_num_comp, $KRB5_LIBS)
3662 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3663 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3664 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3665 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3666 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3667 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3668 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3669 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3670 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3671 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3672 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3673 AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3674 AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3675 AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3676 AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3677 AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3678 AC_CHECK_FUNC_EXT(krb5_get_init_creds_keytab, $KRB5_LIBS)
3679 AC_CHECK_FUNC_EXT(krb5_build_principal_alloc_va, $KRB5_LIBS)
3680 AC_CHECK_FUNC_EXT(krb5_cc_get_lifetime, $KRB5_LIBS)
3681 AC_CHECK_FUNC_EXT(krb5_cc_retrieve_cred, $KRB5_LIBS)
3682 AC_CHECK_FUNC_EXT(krb5_free_checksum_contents, $KRB5_LIBS)
3683 AC_CHECK_FUNC_EXT(krb5_create_checksum, $KRB5_LIBS)
3684 AC_CHECK_FUNC_EXT(krb5_c_make_checksum, $KRB5_LIBS)
3685 AC_CHECK_FUNC_EXT(gss_krb5_import_cred, $KRB5_LIBS)
3686 AC_CHECK_FUNC_EXT(gss_get_name_attribute, $KRB5_LIBS)
3687 AC_CHECK_FUNC_EXT(gsskrb5_extract_authz_data_from_sec_context, $KRB5_LIBS)
3688 AC_CHECK_FUNC_EXT(gss_mech_krb5, $KRB5_LIBS)
3689 AC_CHECK_FUNC_EXT(gss_oid_equal, $KRB5_LIBS)
3690 AC_CHECK_FUNC_EXT(gss_inquire_sec_context_by_oid, $KRB5_LIBS)
3691 AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3693 # MIT krb5 1.8 does not expose this call (yet)
3694 AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3696 # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3697 # but does have the symbol
3698 AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3700 LIBS="$KRB5_LIBS $LIBS"
3702 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3703 smb_krb5_cv_creds_opt_free_context,
3709 krb5_get_init_creds_opt *opt = NULL;
3710 krb5_get_init_creds_opt_free(ctx, opt);
3712 [smb_krb5_cv_creds_opt_free_context=yes],
3713 [smb_krb5_cv_creds_opt_free_context=no]
3717 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3718 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3719 [Whether krb5_get_init_creds_opt_free takes a context argument])
3722 AC_CACHE_CHECK([for checksum in krb5_checksum],
3723 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3724 AC_TRY_COMPILE([#include <krb5.h>],
3725 [krb5_checksum cksum; cksum.checksum.length = 0;],
3726 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3727 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3729 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3730 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3731 [Whether the krb5_checksum struct has a checksum property])
3734 AC_CACHE_CHECK([for etype in EncryptedData],
3735 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3736 AC_TRY_COMPILE([#include <krb5.h>],
3737 [EncryptedData edata; edata.etype = 0;],
3738 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3739 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3741 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3742 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3743 [Whether the EncryptedData struct has a etype property])
3746 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3747 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3748 AC_TRY_COMPILE([#include <krb5.h>],
3749 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3750 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3751 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3753 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3754 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3755 [Whether the krb5_ap_req struct has a ticket pointer])
3758 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3759 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3760 AC_TRY_COMPILE([#include <krb5.h>],
3761 [krb5_error err; err.e_data = NULL;],
3762 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3763 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3765 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3766 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3767 [Whether the krb5_error struct has a e_data pointer])
3770 AC_CACHE_CHECK([for krb5_crypto type],
3771 samba_cv_HAVE_KRB5_CRYPTO,[
3772 AC_TRY_COMPILE([#include <krb5.h>],
3773 [krb5_crypto crypto;],
3774 samba_cv_HAVE_KRB5_CRYPTO=yes,
3775 samba_cv_HAVE_KRB5_CRYPTO=no)])
3777 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3778 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3779 [Whether the type krb5_crypto exists])
3782 AC_CACHE_CHECK([for addrtype in krb5_address],
3783 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3784 AC_TRY_COMPILE([#include <krb5.h>],
3785 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3786 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3787 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3789 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3790 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3791 [Whether the krb5_address struct has a addrtype property])
3794 AC_CACHE_CHECK([for addr_type in krb5_address],
3795 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3796 AC_TRY_COMPILE([#include <krb5.h>],
3797 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3798 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3799 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3801 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3802 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3803 [Whether the krb5_address struct has a addr_type property])
3806 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3807 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3808 AC_TRY_COMPILE([#include <krb5.h>],
3809 [krb5_keyblock key; key.keyvalue.data = NULL;],
3810 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3811 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3813 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3814 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3815 [Whether the krb5_keyblock struct has a keyvalue property])
3818 found_arcfour_hmac=no
3819 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3820 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3821 AC_TRY_COMPILE([#include <krb5.h>],
3822 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3823 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3824 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3825 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3826 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3827 AC_TRY_COMPILE([#include <krb5.h>],
3828 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3829 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3830 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3831 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3832 # w.r.t. arcfour and windows, so we must not enable it here
3833 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3834 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3835 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3836 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
3837 found_arcfour_hmac=yes
3839 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
3840 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
3841 AC_TRY_COMPILE([#include <krb5.h>],
3842 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
3843 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
3844 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
3845 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
3846 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
3847 [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
3848 found_arcfour_hmac=yes
3851 AC_CACHE_CHECK([for ENCTYPE_AES128_CTS_HMAC_SHA1_96],
3852 samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,[
3853 AC_TRY_COMPILE([#include <krb5.h>],
3854 [krb5_enctype enctype; enctype = ENCTYPE_AES128_CTS_HMAC_SHA1_96;],
3855 samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=yes,
3856 samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=no)])
3857 if test x"$samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96" = x"yes"; then
3858 AC_DEFINE(HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,1,
3859 [Whether the ENCTYPE_AES128_CTS_HMAC_SHA1_96 key type definition is available])
3861 AC_CACHE_CHECK([for ENCTYPE_AES256_CTS_HMAC_SHA1_96],
3862 samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,[
3863 AC_TRY_COMPILE([#include <krb5.h>],
3864 [krb5_enctype enctype; enctype = ENCTYPE_AES256_CTS_HMAC_SHA1_96;],
3865 samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=yes,
3866 samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=no)])
3867 if test x"$samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96" = x"yes"; then
3868 AC_DEFINE(HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,1,
3869 [Whether the ENCTYPE_AES256_CTS_HMAC_SHA1_96 key type definition is available])
3872 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3873 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3874 AC_TRY_COMPILE([#include <krb5.h>],
3875 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3876 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3877 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3879 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3880 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3881 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3884 AC_CACHE_CHECK([for KV5M_KEYTAB],
3885 samba_cv_HAVE_KV5M_KEYTAB,[
3886 AC_TRY_COMPILE([#include <krb5.h>],
3887 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3888 samba_cv_HAVE_KV5M_KEYTAB=yes,
3889 samba_cv_HAVE_KV5M_KEYTAB=no)])
3891 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3892 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3893 [Whether the KV5M_KEYTAB option is available])
3896 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3897 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3898 AC_TRY_COMPILE([#include <krb5.h>],
3899 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3900 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3901 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3903 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3904 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3905 [Whether KRB5_KU_OTHER_CKSUM is available])
3908 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3909 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3910 AC_TRY_COMPILE([#include <krb5.h>],
3911 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3912 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3913 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3915 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3916 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3917 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3920 AC_CACHE_CHECK([for the krb5_princ_component macro],
3921 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3922 AC_TRY_LINK([#include <krb5.h>],
3923 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3924 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3925 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3927 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3928 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3929 [Whether krb5_princ_component is available])
3932 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3933 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3934 AC_TRY_COMPILE([#include <krb5.h>],
3935 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3936 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3937 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3939 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3940 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3941 [Whether krb5_keytab_entry has key member])
3944 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3945 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3946 AC_TRY_COMPILE([#include <krb5.h>],
3947 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3948 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3949 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3951 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3952 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3953 [Whether krb5_keytab_entry has keyblock member])
3956 AC_CACHE_CHECK([for magic in krb5_address],
3957 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3958 AC_TRY_COMPILE([#include <krb5.h>],
3959 [krb5_address addr; addr.magic = 0;],
3960 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3961 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3963 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3964 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3965 [Whether the krb5_address struct has a magic property])
3968 AC_CACHE_CHECK([for WRFILE: keytab support],
3969 samba_cv_HAVE_WRFILE_KEYTAB,[
3974 krb5_context context;
3977 krb5_init_context(&context);
3978 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3980 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3981 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3983 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3984 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3985 [Whether the WRFILE:-keytab is supported])
3988 AC_CACHE_CHECK([for krb5_realm type],
3989 samba_cv_HAVE_KRB5_REALM_TYPE,[
3990 AC_TRY_COMPILE([#include <krb5.h>],
3991 [krb5_realm realm;],
3992 samba_cv_HAVE_KRB5_REALM_TYPE=yes,
3993 samba_cv_HAVE_KRB5_REALM_TYPE=no)])
3995 if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
3996 AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
3997 [Whether the type krb5_realm exists])
4000 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4001 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4002 AC_TRY_COMPILE([#include <krb5.h>],
4004 krb5_context context;
4005 krb5_principal principal;
4006 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4007 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4008 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4010 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4011 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4012 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4015 AC_CACHE_CHECK([for krb5_addresses type],
4016 samba_cv_HAVE_KRB5_ADDRESSES,[
4017 AC_TRY_COMPILE([#include <krb5.h>],
4018 [krb5_addresses addr;],
4019 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4020 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4022 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4023 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4024 [Whether the type krb5_addresses type exists])
4027 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4028 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4029 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4034 krb5_context context = NULL;
4036 krb5_enctype_to_string(context, 1, &str);
4037 if (str) free (str);
4040 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4041 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4042 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4044 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4045 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4046 [whether krb5_enctype_to_string takes krb5_context argument])
4049 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4050 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4055 krb5_enctype_to_string(1, buf, 256);
4058 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4059 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4060 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4062 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4063 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4064 [whether krb5_enctype_to_string takes size_t argument])
4068 AC_CACHE_CHECK([for krb5_principal_get_realm],
4069 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4070 AC_TRY_LINK([#include <krb5.h>],
4071 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4072 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4073 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4075 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4076 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4077 [Whether the function krb5_principal_get_realm is defined])
4080 AC_CACHE_CHECK([for krb5_princ_realm],
4081 samba_cv_HAVE_KRB5_PRINC_REALM,[
4082 AC_TRY_LINK([#include <krb5.h>],
4083 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4084 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4085 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4087 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4088 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4089 [Whether the macro krb5_princ_realm is defined])
4092 AC_HAVE_DECL(KRB5_PDU_NONE,[#include <krb5.h>])
4094 AC_CACHE_CHECK([for flags in krb5_creds],
4095 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS,[
4096 AC_TRY_COMPILE([#include <krb5.h>],
4097 [krb5_creds creds; creds.flags.b.initial = 0;],
4098 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS=yes,
4099 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS=no)])
4101 if test x"$samba_cv_HAVE_FLAGS_IN_KRB5_CREDS" = x"yes"; then
4102 AC_DEFINE(HAVE_FLAGS_IN_KRB5_CREDS,1,
4103 [Whether the krb5_creds struct has a flags property])
4107 # Now the decisions whether we can support krb5
4109 # NOTE: all tests should be done before this block!
4112 if test x"$found_arcfour_hmac" != x"yes"; then
4113 AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4117 if test x"$ac_cv_func_ext_krb5_set_real_time" != x"yes"; then
4118 AC_MSG_WARN(krb5_set_real_time encryption type not found in -lkrb5)
4122 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4123 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4127 if test x"$ac_cv_func_ext_krb5_get_host_realm" != x"yes"
4129 AC_MSG_WARN(krb5_get_host_realm not found in -lkrb5)
4133 if test x"$ac_cv_func_ext_krb5_free_host_realm" != x"yes"
4135 AC_MSG_WARN(krb5_free_host_realm not found in -lkrb5)
4139 if test x"$ac_cv_func_ext_krb5_fwd_tgt_creds" != x"yes"
4141 AC_MSG_WARN(krb5_fwd_tgt_creds not found in -lkrb5)
4145 if test x"$ac_cv_func_ext_krb5_get_init_creds_opt_alloc" != x"yes"
4147 AC_MSG_WARN(krb5_get_init_creds_opt_alloc found in -lkrb5)
4151 if test x"$smb_krb5_cv_creds_opt_free_context" != x"yes"
4153 AC_MSG_WARN(krb5_get_init_creds_opt_free not found or was too old in -lkrb5)
4157 if test x"$ac_cv_func_ext_krb5_get_renewed_creds" != x"yes"
4159 AC_MSG_WARN(krb5_get_renewed_creds not found in -lkrb5)
4163 if test x"$ac_cv_func_ext_krb5_principal_compare_any_realm" != x"yes"
4165 AC_MSG_WARN(krb5_principal_compare_any_realm not found in -lkrb5)
4169 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -o \
4170 x"$ac_cv_func_ext_krb5_c_string_to_key" != x"yes"
4172 if test x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes" -o \
4173 x"$ac_cv_func_ext_krb5_string_to_key_salt" != x"yes"
4175 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4180 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4181 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4183 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4187 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4188 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4190 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4194 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes"
4196 AC_MSG_WARN(krb5_c_verify_checksum not found in -lkrb5)
4200 if test x"$ac_cv_func_ext_gss_wrap_iov" != x"yes" ; then
4201 AC_MSG_WARN(gss_wrap_iov not found in -lgssapi)
4205 if test x"$ac_cv_func_ext_gss_get_name_attribute" != x"yes" ; then
4206 if test x"$ac_cv_func_ext_gsskrb5_extract_authz_data_from_sec_context" != x"yes" -o \
4207 x"$ac_cv_func_ext_gss_inquire_sec_context_by_oid" != x"yes"
4209 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)
4214 if test x"$use_ads" = x"yes"; then
4215 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4216 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4218 if test x"$with_ads_support" = x"yes"; then
4219 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4221 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4223 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4224 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4225 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4226 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4227 AC_REMOVE_DEFINE(HAVE_GSSAPI)
4231 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4232 AC_MSG_RESULT([$use_ads])
4234 LIBS="$ac_save_LIBS"
4237 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4238 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4241 ########################################################
4242 # Compile with DNS Updates support?
4244 with_dnsupdate_support=auto
4245 AC_MSG_CHECKING([whether to enable DNS Updates support])
4247 AC_ARG_WITH(dnsupdate,
4248 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4249 [ case "$withval" in
4251 with_dnsupdate_support=$withval
4255 AC_MSG_RESULT($with_dnsupdate_support)
4257 if test x"$with_dnsupdate_support" != x"no"; then
4259 ################################################################
4260 # first test for AD / GSSAPI support being enabled
4261 if test x"$have_gssapi" != xyes -o x"$use_ads" != xyes ; then
4262 if test x"$with_dnsupdate_support" = x"yes" ; then
4263 AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4265 AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4266 with_dnsupdate_support=no
4271 if test x"$with_dnsupdate_support" != x"no"; then
4272 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4275 # finally print out the result:
4276 AC_MSG_CHECKING(whether DNS Updates support is used)
4277 AC_MSG_RESULT([$with_dnsupdate_support])
4280 #################################################
4281 # check for automount support
4282 AC_MSG_CHECKING(whether to use automount)
4283 AC_ARG_WITH(automount,
4284 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4285 [ case "$withval" in
4288 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4297 #################################################
4298 # Check for a PAM clear-text auth, accounts, password
4299 # and session support. Most PAM implementations keep their
4300 # headers in /usr/include/security. Darwin keeps its in
4303 with_pam_for_crypt=no
4305 AC_MSG_CHECKING(whether to try PAM support)
4307 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4308 [ case "$withval" in
4314 AC_MSG_RESULT([$try_pam])
4317 create_pam_modules=no
4318 if test x"${try_pam}" != x"no";then
4320 create_pam_modules=yes
4322 # Most systems have PAM headers in /usr/include/security, but Darwin
4323 # has them in /usr/include/pam.
4324 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4325 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4326 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4327 if test x"${try_pam}" = x"yes";then
4328 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4331 create_pam_modules=no
4334 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4335 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4336 if test x"${try_pam}" = x"yes";then
4337 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4340 create_pam_modules=no
4343 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4344 #if HAVE_SECURITY_PAM_APPL_H
4345 #include <security/pam_appl.h>
4347 #if HAVE_PAM_PAM_APPL_H
4348 #include <pam/pam_appl.h>
4351 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4352 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4353 if test x"${try_pam}" = x"yes";then
4354 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4356 create_pam_modules=no
4359 if test x"$use_pam" = x"yes"; then
4360 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4361 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4362 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4363 with_pam_for_crypt=yes
4365 if test x"$create_pam_modules" = x"yes"; then
4366 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4367 # this checks are optional,
4368 # we don't care about the results here
4369 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4370 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4371 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4373 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4376 AC_MSG_CHECKING(whether to use PAM support)
4377 AC_MSG_RESULT([$use_pam])
4379 AC_MSG_CHECKING(whether to have PAM MODULES support)
4380 AC_MSG_RESULT([$create_pam_modules])
4383 #if defined(HAVE_SECURITY_PAM_APPL_H)
4384 #include <security/pam_appl.h>
4385 #elif defined(HAVE_PAM_PAM_APPL_H)
4386 #include <pam/pam_appl.h>
4388 pam_set_item(0, PAM_RHOST, 0);
4390 AC_DEFINE(HAVE_PAM_RHOST, 1,
4391 [Define to 1 if PAM_RHOST is available]),[])
4394 #if defined(HAVE_SECURITY_PAM_APPL_H)
4395 #include <security/pam_appl.h>
4396 #elif defined(HAVE_PAM_PAM_APPL_H)
4397 #include <pam/pam_appl.h>
4399 pam_set_item(0, PAM_TTY, 0);
4401 AC_DEFINE(HAVE_PAM_TTY, 1,
4402 [Define to 1 if PAM_TTY is available]),[])
4406 #################################################
4407 # check for PAM_RADIO_TYPE
4409 #if (!defined(LINUX))
4411 #define PAM_EXTERN extern
4412 #if defined(HAVE_SECURITY_PAM_APPL_H)
4413 #include <security/pam_appl.h>
4414 #elif defined(HAVE_PAM_PAM_APPL_H)
4415 #include <pam/pam_appl.h>
4420 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4421 #include <security/pam_modules.h>
4422 #elif defined(HAVE_PAM_PAM_MODULES_H)
4423 #include <pam/pam_modules.h>
4426 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4427 #include <security/_pam_macros.h>
4428 #elif defined(HAVE_PAM__PAM_MACROS_H)
4429 #include <pam/_pam_macros.h>
4432 #ifdef HAVE_SECURITY_PAM_EXT_H
4433 #include <security/pam_ext.h>
4436 [int i; i = PAM_RADIO_TYPE; ],
4437 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4439 #################################################
4440 # check for pam_smbpass support
4442 INSTALL_PAM_MODULES=""
4443 UNINSTALL_PAM_MODULES=""
4445 try_pam_smbpass=auto
4446 AC_MSG_CHECKING(whether to use pam_smbpass)
4447 AC_ARG_WITH(pam_smbpass,
4448 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4449 [ case "$withval" in
4451 try_pam_smbpass=$withval
4454 AC_MSG_ERROR([valid options are yes,no,auto])
4459 if test x"${try_pam_smbpass}" = xno ; then
4463 # Conditions under which pam_smbpass can't be built.
4464 if test x"$BLDSHARED" != xtrue ; then
4465 if test x"${try_pam_smbpass}" = xyes ; then
4466 AC_MSG_ERROR([No support for shared modules])
4469 elif test x"$create_pam_modules" != xyes ; then
4470 if test x"${try_pam_smbpass}" = xyes ; then
4471 AC_MSG_ERROR([No support for PAM MODULES])
4476 if test x"${use_pam_smbpass}" = xyes ; then
4477 PAM_MODULES="pam_smbpass"
4478 INSTALL_PAM_MODULES="installpammodules"
4479 UNINSTALL_PAM_MODULES="uninstallpammodules"
4482 AC_MSG_RESULT([$use_pam_smbpass])
4486 ## moved after the check for -lcrypt in order to
4487 ## ensure that the necessary libraries are included
4488 ## check checking for truncated salt. Wrapped by the
4489 ## $with_pam_for_crypt variable as above --jerry
4491 if test $with_pam_for_crypt = no; then
4492 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4494 LIBS="$AUTH_LIBS $LIBS"
4495 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4496 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4497 LIBS="$crypt_LIBS"])
4498 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4499 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4503 #################################################
4504 # check for a NISPLUS_HOME support
4505 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4506 AC_ARG_WITH(nisplus-home,
4507 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4508 [ case "$withval" in
4511 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4520 #################################################
4521 # check for syslog logging
4522 AC_MSG_CHECKING(whether to use syslog logging)
4524 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4525 [ case "$withval" in
4528 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4537 #################################################
4538 # check for custom syslog facility
4539 AC_MSG_CHECKING(whether to use a custom syslog facility)
4540 AC_ARG_WITH(syslog-facility,
4541 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4543 if test "$withval" = "no" ; then
4544 AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4546 AC_MSG_RESULT([$withval])
4547 if test "$withval" != "yes" ; then
4548 syslog_facility="$withval"
4549 AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4556 #################################################
4557 # check for experimental disk-quotas support
4559 samba_cv_WITH_QUOTAS=auto
4560 samba_cv_SYSQUOTA_FOUND=no
4562 AC_MSG_CHECKING(whether to try disk-quotas support)
4564 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4565 [ case "$withval" in
4568 samba_cv_WITH_QUOTAS=yes
4572 samba_cv_WITH_QUOTAS=auto
4576 samba_cv_WITH_QUOTAS=no
4579 AC_MSG_RESULT(${samba_cv_WITH_QUOTAS})
4582 AC_MSG_RESULT(${samba_cv_WITH_QUOTAS})
4585 #############################################
4586 # only check for quota stuff if --with-quotas
4587 if test x"$samba_cv_WITH_QUOTAS" != x"no"; then
4590 # on linux we didn't need to test we have builtin support
4592 samba_cv_SYSQUOTA_FOUND=yes
4593 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4594 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4597 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4601 # need to set this define when using static linking (BUG 1473)
4602 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4608 # some broken header files need this
4609 AC_CHECK_HEADER(asm/types.h,[
4610 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4611 AC_ADD_INCLUDE(<asm/types.h>)
4614 # For quotas on Veritas VxFS filesystems
4615 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4617 # For quotas on XFS filesystems, Linux style
4618 AC_CHECK_HEADERS(xfs/xqm.h,[
4619 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4622 # For sys/quota.h and linux/quota.h
4623 AC_CHECK_HEADERS(sys/quota.h)
4625 # For quotas on BSD systems
4626 AC_CHECK_HEADERS(ufs/ufs/quota.h)
4629 if test x"$ac_cv_header_xfs_xqm_h" != x"yes"; then
4630 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4631 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4633 #include "confdefs.h"
4634 #ifdef HAVE_SYS_TYPES_H
4635 #include <sys/types.h>
4637 #ifdef HAVE_ASM_TYPES_H
4638 #include <asm/types.h>
4640 #include <sys/quota.h>
4641 ],[int i = Q_XGETQUOTA;],
4642 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4643 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4644 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4648 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4649 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4651 #include "confdefs.h"
4652 #ifdef HAVE_SYS_QUOTA_H
4653 #include <sys/quota.h>
4657 D.dqb_fsoftlimit = 0;],
4658 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4659 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4660 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4664 # look for a working quota system
4666 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4667 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4669 #define HAVE_QUOTACTL_4A 1
4670 #define AUTOCONF_TEST 1
4671 #include "confdefs.h"
4672 #include "${srcdir-.}/../../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4673 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4674 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4675 samba_cv_SYSQUOTA_FOUND=yes;
4676 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4680 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4681 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4683 #define HAVE_QUOTACTL_4B 1
4684 #define AUTOCONF_TEST 1
4685 #include "confdefs.h"
4686 #include "${srcdir-.}/../../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4687 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4688 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4689 samba_cv_SYSQUOTA_FOUND=yes;
4690 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4691 AC_CHECK_MEMBERS([struct dqblk.dqb_curbytes], # Darwin bytecount style
4692 [ AC_DEFINE([HAVE_STRUCT_DQBLK_DQB_CURBYTES],[1],[darwin style quota bytecount])],,
4693 [#include <sys/types.h>
4694 #include <sys/quota.h>])
4699 AC_CACHE_CHECK([for NFS QUOTAS],samba_cv_HAVE_NFS_QUOTAS,[
4701 #include <rpc/rpc.h>
4702 #include <rpc/types.h>
4703 #include <rpcsvc/rquota.h>
4704 #ifdef HAVE_RPC_NETTYPE_H
4705 #include <rpc/nettype.h>
4707 #include <rpc/xdr.h>
4708 ],[clnt_create("", RQUOTAPROG, RQUOTAVERS, "udp");],
4709 samba_cv_HAVE_NFS_QUOTAS=yes, samba_cv_HAVE_NFS_QUOTAS=no)])
4711 if test x"$samba_cv_HAVE_NFS_QUOTAS" = x"yes"; then
4712 AC_DEFINE(HAVE_NFS_QUOTAS,1,[NFS quota support is available])
4713 AC_CHECK_MEMBER(struct getquota_rslt.getquota_rslt_u,
4714 AC_DEFINE(HAVE_GETQUOTA_RSLT_GETQUOTA_RSLT_U, 1, [Defined if struct getquota_rslt has getquota_rslt_u]),,
4715 [#include <rpcsvc/rquota.h>])
4718 #################################################
4719 # check for mntent.h and struct mntent
4720 AC_CHECK_HEADERS(mntent.h)
4721 #################################################
4722 # check for setmntent,getmntent,endmntent
4723 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4725 #################################################
4726 # check for devnm.h and struct mntent
4727 AC_CHECK_HEADERS(devnm.h)
4728 #################################################
4730 AC_CHECK_FUNCS(devnm)
4732 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4733 if test x"$samba_cv_SYSQUOTA_FOUND" = x"yes"; then
4735 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4736 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4739 AC_MSG_CHECKING(whether to use the old quota support)
4740 if test x"$samba_cv_WITH_QUOTAS" = x"yes"; then
4741 AC_DEFINE(WITH_QUOTAS,1,[Whether to use old quota support])
4748 ####################
4749 # End of quota check samba_cv_WITH_QUOTAS
4752 #################################################
4753 # check for experimental utmp accounting
4755 AC_MSG_CHECKING(whether to support utmp accounting)
4758 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4759 [ case "$withval" in
4769 # utmp requires utmp.h
4770 # Note similar check earlier, when checking utmp details.
4772 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4773 utmp_no_reason=", no utmp.h on $host_os"
4777 if test x"$WITH_UTMP" = x"yes" -a x"$samba_cv_HAVE_UX_UT_LINE" != x"yes"; then
4778 utmp_no_reason=", sizeof ut_line not ok"
4782 # Display test results
4784 if test x"$WITH_UTMP" = x"yes"; then
4786 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4788 AC_MSG_RESULT(no$utmp_no_reason)
4792 #################################################
4793 # these tests are taken from the GNU fileutils package
4794 AC_CHECKING(how to get filesystem space usage)
4797 # Perform only the link test since it seems there are no variants of the
4798 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4799 # because that got a false positive on SCO OSR5. Adding the declaration
4800 # of a `struct statvfs' causes this test to fail (as it should) on such
4801 # systems. That system is reported to work fine with STAT_STATFS4 which
4802 # is what it gets when this test fails.
4803 if test $space = no; then
4805 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4806 [AC_TRY_LINK([#include <sys/types.h>
4807 #include <sys/statvfs.h>],
4808 [struct statvfs fsd; statvfs (0, &fsd);],
4809 fu_cv_sys_stat_statvfs=yes,
4810 fu_cv_sys_stat_statvfs=no)])
4811 if test $fu_cv_sys_stat_statvfs = yes; then
4813 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4817 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4818 # This is not the case on ancient Linux systems.
4820 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4821 AC_TRY_COMPILE([#include <sys/types.h>
4822 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4823 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4824 if test x"$samba_cv_fsid_int" = x"yes"; then
4825 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4828 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4829 # systems use f_bsize.
4830 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4831 AC_TRY_COMPILE([#include <sys/types.h>
4832 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4833 samba_cv_frsize=yes,samba_cv_frsize=no)])
4834 if test x"$samba_cv_frsize" = x"yes"; then
4835 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4838 # Some systems use f_flag in struct statvfs while others use f_flags
4839 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
4840 AC_TRY_COMPILE([#include <sys/types.h>
4841 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
4842 samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
4843 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
4844 AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
4847 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
4848 AC_TRY_COMPILE([#include <sys/types.h>
4849 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
4850 samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
4851 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
4852 AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
4855 if test $space = no; then
4856 # DEC Alpha running OSF/1
4857 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4858 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4860 #include <sys/param.h>
4861 #include <sys/types.h>
4862 #include <sys/mount.h>
4867 return (statfs (".", &fsd, sizeof (struct statfs)));
4869 fu_cv_sys_stat_statfs3_osf1=yes,
4870 fu_cv_sys_stat_statfs3_osf1=no,
4871 fu_cv_sys_stat_statfs3_osf1=no)])
4872 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4873 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4875 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4879 if test $space = no; then
4881 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4882 member (AIX, 4.3BSD)])
4883 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4885 #ifdef HAVE_SYS_PARAM_H
4886 #include <sys/param.h>
4888 #ifdef HAVE_SYS_MOUNT_H
4889 #include <sys/mount.h>
4891 #ifdef HAVE_SYS_VFS_H
4892 #include <sys/vfs.h>
4898 return (statfs (".", &fsd));
4900 fu_cv_sys_stat_statfs2_bsize=yes,
4901 fu_cv_sys_stat_statfs2_bsize=no,
4902 fu_cv_sys_stat_statfs2_bsize=no)])
4903 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4904 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4906 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4910 if test $space = no; then
4912 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4913 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4914 [AC_TRY_RUN([#include <sys/types.h>
4915 #include <sys/statfs.h>
4919 return (statfs (".", &fsd, sizeof fsd, 0));
4921 fu_cv_sys_stat_statfs4=yes,
4922 fu_cv_sys_stat_statfs4=no,
4923 fu_cv_sys_stat_statfs4=no)])
4924 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4925 if test $fu_cv_sys_stat_statfs4 = yes; then
4927 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4931 if test $space = no; then
4933 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4934 member (4.4BSD and NetBSD)])
4935 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4936 [AC_TRY_RUN([#include <sys/types.h>
4937 #ifdef HAVE_SYS_PARAM_H
4938 #include <sys/param.h>
4940 #ifdef HAVE_SYS_MOUNT_H
4941 #include <sys/mount.h>
4947 return (statfs (".", &fsd));
4949 fu_cv_sys_stat_statfs2_fsize=yes,
4950 fu_cv_sys_stat_statfs2_fsize=no,
4951 fu_cv_sys_stat_statfs2_fsize=no)])
4952 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4953 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4955 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4959 if test $space = no; then
4961 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4962 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4963 [AC_TRY_RUN([#include <sys/types.h>
4964 #ifdef HAVE_SYS_PARAM_H
4965 #include <sys/param.h>
4967 #ifdef HAVE_SYS_MOUNT_H
4968 #include <sys/mount.h>
4970 #ifdef HAVE_SYS_FS_TYPES_H
4971 #include <sys/fs_types.h>
4976 /* Ultrix's statfs returns 1 for success,
4977 0 for not mounted, -1 for failure. */
4978 return (statfs (".", &fsd) != 1);
4980 fu_cv_sys_stat_fs_data=yes,
4981 fu_cv_sys_stat_fs_data=no,
4982 fu_cv_sys_stat_fs_data=no)])
4983 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4984 if test $fu_cv_sys_stat_fs_data = yes; then
4986 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4990 #################################################
4991 # check for cluster extensions
4993 AC_MSG_CHECKING(cluster support)
4994 AC_ARG_WITH(cluster-support,
4995 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
4997 if test x"$with_cluster_support" = x ; then
4998 with_cluster_support="auto"
5001 AC_MSG_RESULT($with_cluster_support)
5004 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5005 [ case "$withval" in
5007 AC_MSG_WARN([--with-ctdb called without argument])
5010 CTDB_CPPFLAGS="-I$withval/include"
5014 AC_ARG_ENABLE(old-ctdb,
5015 [AS_HELP_STRING([--enable-old-ctdb],
5016 [Enable build against (too) old ctdb version (default=no)])],,
5017 [enable_old_ctdb=no])
5020 if test "$with_cluster_support" != "no" ; then
5022 AC_MSG_NOTICE(checking whether cluster support is available)
5024 have_cluster_support="yes"
5027 SAVED_CPPFLAGS="$CPPFLAGS"
5028 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5030 AC_CHECK_HEADERS(ctdb.h ctdb_private.h ctdb_protocol.h ,,,[
5031 #include "confdefs.h"
5033 #include "replace.h"
5034 #include "system/wait.h"
5035 #include "system/network.h"
5036 #define private #error __USED_RESERVED_WORD_private__
5042 if test "x$have_cluster_support" = "xyes" -a \
5043 "x$ac_cv_header_ctdb_h" != "xyes"
5045 have_cluster_support=no
5046 ctdb_broken="ctdb.h is required for cluster support"
5049 if test "x$have_cluster_support" = "xyes" -a \
5050 "x$ac_cv_header_ctdb_private_h" != "xyes"
5052 have_cluster_support=no
5053 ctdb_broken="ctdb_private.h is required for cluster support"
5057 if test "x$have_cluster_support" = "xyes" ; then
5058 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5059 #include "confdefs.h"
5061 #include "replace.h"
5062 #include "system/wait.h"
5063 #include "system/network.h"
5067 #include <ctdb_private.h>
5069 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" != x"yes"; then
5070 ctdb_broken="ctdb transaction support missing or too old"
5071 have_cluster_support=no
5075 if test "x$have_cluster_support" = "xyes" ; then
5076 AC_HAVE_DECL(CTDB_CONTROL_SCHEDULE_FOR_DELETION,[
5077 #include "confdefs.h"
5079 #include "replace.h"
5080 #include "system/wait.h"
5081 #include "system/network.h"
5085 #include <ctdb_private.h>
5087 if test x"$ac_cv_have_CTDB_CONTROL_SCHEDULE_FOR_DELETION_decl" != x"yes"
5089 if test "x$enable_old_ctdb" = "xyes" ; then
5090 AC_MSG_WARN([ignoring missing SCHEDULE_FOR_DELETION (--enable-old-ctdb)])
5092 ctdb_broken="support for SCHEDULE_FOR_DELETION control missing"
5093 have_cluster_support=no
5098 if test "x$have_cluster_support" = "xyes" ; then
5099 AC_HAVE_DECL(CTDB_CONTROL_CHECK_SRVIDS,[
5100 #include "confdefs.h"
5102 #include "replace.h"
5103 #include "system/wait.h"
5104 #include "system/network.h"
5108 #include <ctdb_private.h>
5110 if test x"$ac_cv_have_CTDB_CONTROL_CHECK_SRVIDS_decl" != x"yes"
5112 if test "x$enable_old_ctdb" = "xyes" ; then
5113 AC_MSG_WARN([ignoring missing CHECK_SRVIDS (--enable-old-ctdb)])
5115 ctdb_broken="support for CHECK_SRVIDS control missing"
5116 have_cluster_support=no
5121 AC_ARG_ENABLE([ctdb-readonly-records],
5122 AS_HELP_STRING([--enable-ctdb-readonly-records],
5123 [Turn on CTDB readonly records support (default=yes)]),
5124 [want_ctdb_readonly=$enableval],
5125 [want_ctdb_readonly=yes])
5127 if test "x$have_cluster_support" = "xyes" -a "x$want_ctdb_readonly" = "xyes" ; then
5128 AC_HAVE_DECL(CTDB_WANT_READONLY,[
5129 #include "confdefs.h"
5131 #include "replace.h"
5132 #include "system/wait.h"
5133 #include "system/network.h"
5139 if test "x$ac_cv_have_CTDB_WANT_READONLY_decl" != "xyes" ; then
5140 if test "x$enable_old_ctdb" = "xyes" ; then
5141 AC_MSG_WARN([ignoring missing READONLY support (--enable-old-ctdb)])
5143 ctdb_broken="support for CTDB readonly records missing"
5144 have_cluster_support=no
5149 if test "x$have_cluster_support" = "xyes" ; then
5150 # In ctdb 1.0.57, ctdb_control_tcp was temporarily renamed
5151 # to ctdb_tcp_client.
5152 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5153 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5155 #include "confdefs.h"
5157 #include "replace.h"
5158 #include "system/wait.h"
5159 #include "system/network.h"
5163 #include <ctdb_private.h>
5167 if test "x$have_cluster_support" = "xyes" ; then
5168 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5169 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5171 ctdb_broken="missing struct ctdb_control_tcp"
5172 have_cluster_support=no
5174 #include "confdefs.h"
5176 #include "replace.h"
5177 #include "system/wait.h"
5178 #include "system/network.h"
5182 #include <ctdb_private.h>
5186 # test for optional ipv6 support in ctdb:
5187 if test "x$have_cluster_support" = "xyes" ; then
5188 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5189 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5191 #include "confdefs.h"
5193 #include "replace.h"
5194 #include "system/wait.h"
5195 #include "system/network.h"
5199 #include <ctdb_private.h>
5203 CPPFLAGS="$SAVED_CPPFLAGS"
5205 fi # (if test "$with_cluster_support" != "no")
5207 if test x"$have_cluster_support" = "xno" ; then
5208 case "$with_cluster_support" in
5210 AC_MSG_ERROR(["cluster support not available: $ctdb_broken"])
5213 AC_MSG_WARN(["cluster support not available: $ctdb_broken"])
5216 with_cluster_support=no
5219 if test "x$with_cluster_support" != "xno"; then
5220 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5221 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5222 AC_MSG_NOTICE(Building with cluster support)
5224 AC_MSG_NOTICE(Building without cluster support)
5228 #################################################
5229 # check for rtnetlink
5231 AC_CHECK_HEADERS([linux/netlink.h],
5232 AC_CHECK_HEADERS([linux/rtnetlink.h],[],[],
5233 [#include <bits/sockaddr.h>
5234 #include <linux/netlink.h>]),
5235 [],[#include <bits/sockaddr.h>])
5237 #################################################
5238 # check for ACL support
5240 AC_MSG_CHECKING(whether to support ACLs)
5241 AC_ARG_WITH(acl-support,
5242 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5243 [ case "$withval" in
5245 with_acl_support="$withval"
5249 if test x"$with_acl_support" = x ; then
5250 with_acl_support="auto"
5253 AC_MSG_RESULT($with_acl_support)
5255 if test x"$with_acl_support" = x"no"; then
5256 AC_MSG_RESULT(Disabling ACL support)
5258 AC_MSG_NOTICE(checking whether ACL support is available:)
5261 AC_MSG_NOTICE(Using UnixWare ACLs)
5262 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5263 default_static_modules="$default_static_modules vfs_solarisacl"
5266 AC_MSG_NOTICE(Using solaris ACLs)
5267 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5268 ACL_LIBS="$ACL_LIBS -lsec"
5269 default_static_modules="$default_static_modules vfs_solarisacl"
5272 AC_MSG_NOTICE(Using HPUX ACLs)
5273 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5274 default_static_modules="$default_static_modules vfs_hpuxacl"
5277 AC_MSG_NOTICE(Using AIX ACLs)
5278 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5279 default_static_modules="$default_static_modules vfs_aixacl"
5282 AC_MSG_NOTICE(Using Tru64 ACLs)
5283 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5284 ACL_LIBS="$ACL_LIBS -lpacl"
5285 default_static_modules="$default_static_modules vfs_tru64acl"
5288 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5291 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5294 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5297 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5299 LIBS="$LIBS $ACL_LIBS"
5301 #include <sys/types.h>
5302 #include <sys/acl.h>
5306 acl_entry_t *entry_p;
5307 return acl_get_entry(acl, entry_id, entry_p);
5309 [samba_cv_HAVE_POSIX_ACLS=yes],
5310 [samba_cv_HAVE_POSIX_ACLS=no])
5313 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5314 AC_MSG_NOTICE(Using posix ACLs)
5315 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5316 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5318 LIBS="$LIBS $ACL_LIBS"
5320 #include <sys/types.h>
5321 #include <sys/acl.h>
5323 acl_permset_t permset_d;
5325 return acl_get_perm_np(permset_d, perm);
5327 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5328 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5331 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5332 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5334 default_static_modules="$default_static_modules vfs_posixacl"
5336 AC_MSG_NOTICE(ACL support is not avaliable)
5340 fi # with_acl_support
5342 #################################################
5343 # check if we have FreeBSD sunacl
5346 AC_CHECK_HEADER(sunacl.h)
5347 if test x"$ac_cv_header_sunacl_h" = xyes ; then
5348 AC_DEFINE(HAVE_FREEBSD_SUNACL_H,1,[Whether we have FreeBSD sunacl around])
5349 ZFSACL_LIBS=-lsunacl
5350 AC_SUBST(ZFSACL_LIBS)
5351 default_shared_modules="$default_shared_modules vfs_zfsacl"
5356 #################################################
5357 # check for AIO support
5360 AC_MSG_CHECKING(whether to support asynchronous io)
5361 AC_ARG_WITH(aio-support,
5362 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=auto)])],
5363 [ case "$withval" in
5369 AC_MSG_RESULT($with_aio)
5371 if test x"$with_aio" = x"no"; then
5372 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5376 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5378 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5379 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5382 AC_TRY_LINK([#include <sys/types.h>
5384 [ struct aiocb a; return aio_read(&a);],
5385 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5387 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5388 AC_DEFINE(HAVE_AIO, 1, [Using asynchronous io])
5390 AC_MSG_CHECKING(for aio_read)
5391 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5392 int main() { struct aiocb a; return aio_read(&a); }])],
5393 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5394 [AC_MSG_RESULT(no)])
5396 AC_MSG_CHECKING(for aio_write)
5397 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5398 int main() { struct aiocb a; return aio_write(&a); }])],
5399 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5400 [AC_MSG_RESULT(no)])
5402 AC_MSG_CHECKING(for aio_fsync)
5403 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5404 int main() { struct aiocb a; return aio_fsync(1, &a); }])],
5405 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5406 [AC_MSG_RESULT(no)])
5408 AC_MSG_CHECKING(for aio_return)
5409 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5410 int main() { struct aiocb a; return aio_return(&a); }])],
5411 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5412 [AC_MSG_RESULT(no)])
5414 AC_MSG_CHECKING(for aio_error)
5415 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5416 int main() { struct aiocb a; return aio_error(&a); }])],
5417 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5418 [AC_MSG_RESULT(no)])
5420 AC_MSG_CHECKING(for aio_cancel)
5421 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5422 int main() { struct aiocb a; return aio_cancel(1, &a); }])],
5423 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5424 [AC_MSG_RESULT(no)])
5426 AC_MSG_CHECKING(for aio_suspend)
5427 AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5428 int main() { const struct aiocb * const [a[1]]; struct timespec t; return aio_suspend(a, 1, &t); }])],
5429 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5430 [AC_MSG_RESULT(no)])
5432 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5437 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5438 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5439 default_shared_modules="$default_shared_modules vfs_aio_fork"
5442 # Check for Linux kernel aio support.
5445 AC_CHECK_LIB(aio,io_submit,[AIO_LIBS="$LIBS -laio"])
5446 AC_CACHE_CHECK([for Linux kernel asynchronous io support],samba_cv_HAVE_LINUX_KERNEL_AIO,[
5449 AC_TRY_LINK([#include <unistd.h>
5451 #include <sys/types.h>
5453 #include <sys/eventfd.h>
5454 #include <libaio.h>],
5455 [ struct io_event ioev;
5461 fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
5462 io_queue_init(128,&ctx);
5463 io_prep_pwrite(ioc, 1, buf, 1, 0);
5464 io_prep_pread(ioc, 1, buf, 1, 0);
5465 io_set_eventfd(ioc, fd);
5466 io_set_callback(ioc, (io_callback_t)(0));
5467 io_submit(ctx, 1, &ioc);
5468 io_getevents(ctx, 1, 1, &ioev, &ts);],
5469 samba_cv_HAVE_LINUX_KERNEL_AIO=yes,samba_cv_HAVE_LINUX_KERNEL_AIO=no)
5471 if test x"$samba_cv_HAVE_LINUX_KERNEL_AIO" = x"yes"; then
5472 default_shared_modules="$default_shared_modules vfs_aio_linux"
5477 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5478 default_shared_modules="$default_shared_modules vfs_aio_posix"
5481 #################################################
5482 # check for sendfile support
5484 AC_MSG_CHECKING(whether sendfile support should be built in)
5485 AC_ARG_WITH(sendfile-support,
5486 [AS_HELP_STRING([--with-sendfile-support], [Whether sendfile support should be built in (default=auto)])],
5487 [ case "$withval" in
5489 AC_MSG_RESULT($withval);
5490 with_sendfile_support=$withval
5494 with_sendfile_support=auto
5499 if test x$with_sendfile_support != xno ; then
5501 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5502 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5503 AC_TRY_LINK([#include <sys/sendfile.h>],
5508 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5510 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5512 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5513 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5514 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5515 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5521 *freebsd* | *dragonfly* )
5522 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5524 #include <sys/types.h>
5526 #include <sys/socket.h>
5527 #include <sys/uio.h>],
5529 int fromfd, tofd, ret, total=0;
5530 off_t offset, nwritten;
5533 hdr.headers = &hdtrl;
5535 hdr.trailers = NULL;
5537 hdtrl.iov_base = NULL;
5539 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5541 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5543 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5544 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5545 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5546 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5552 AC_CACHE_CHECK([for Darwin sendfile support],
5553 samba_cv_HAVE_SENDFILE,
5556 #include <sys/types.h>
5557 #include <sys/socket.h>
5558 #include <sys/uio.h>
5561 int fromfd, tofd, ret;
5562 off_t offset, nwritten;
5565 hdr.headers = &hdtrl;
5567 hdr.trailers = (void *)0;
5569 hdtrl.iov_base = (void *)0;
5571 ret = sendfile(fromfd, tofd, offset, &nwritten, &hdr, 0);
5573 samba_cv_HAVE_SENDFILE=yes,
5574 samba_cv_HAVE_SENDFILE=no)])
5576 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5577 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5578 AC_DEFINE(DARWIN_SENDFILE_API,1,[Whether the Darwin sendfile() API is available])
5579 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5585 AC_CACHE_CHECK([for osf/hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5587 #include <sys/socket.h>
5588 #include <sys/uio.h>],
5592 struct iovec hdtrl[2];
5596 hdtrl[0].iov_base = 0;
5597 hdtrl[0].iov_len = 0;
5599 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5601 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5602 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5603 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5604 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the osf/hpux sendfile() API is available])
5605 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5612 AC_CHECK_LIB(sendfile,sendfilev)
5613 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5615 #include <sys/sendfile.h>],
5619 struct sendfilevec vec[2];
5625 vec[0].sfv_fd = SFV_FD_SELF;
5626 vec[0].sfv_flag = 0;
5631 vec[1].sfv_flag = 0;
5634 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5636 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5638 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5639 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5640 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5641 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5647 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5649 #include <sys/socket.h>],
5653 struct sf_parms hdtrl;
5656 hdtrl.header_data = 0;
5657 hdtrl.header_length = 0;
5658 hdtrl.file_descriptor = fromfd;
5659 hdtrl.file_offset = 0;
5660 hdtrl.file_bytes = 0;
5661 hdtrl.trailer_data = 0;
5662 hdtrl.trailer_length = 0;
5664 nwritten = send_file(&tofd, &hdtrl, 0);
5666 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5667 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5668 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5669 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5670 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5680 if test x$with_sendfile_support = xyes -a x"$samba_cv_HAVE_SENDFILE" != xyes ; then
5681 AC_MSG_ERROR(sendfile support requested but sendfile not available )
5684 ############################################
5685 # See if we have the Linux readahead syscall.
5687 AC_CACHE_CHECK([for Linux readahead],
5688 samba_cv_HAVE_LINUX_READAHEAD,[
5690 #if defined(HAVE_UNISTD_H)
5693 #include <fcntl.h>],
5694 [ssize_t err = readahead(0,0,0x80000);],
5695 samba_cv_HAVE_LINUX_READAHEAD=yes,
5696 samba_cv_HAVE_LINUX_READAHEAD=no)])
5698 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5699 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5700 [Whether Linux readahead is available])
5703 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5705 ############################################
5706 # See if we have the posix_fadvise syscall.
5708 AC_CACHE_CHECK([for posix_fadvise],
5709 samba_cv_HAVE_POSIX_FADVISE,[
5711 #if defined(HAVE_UNISTD_H)
5714 #include <fcntl.h>],
5715 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5716 samba_cv_HAVE_POSIX_FADVISE=yes,
5717 samba_cv_HAVE_POSIX_FADVISE=no)])
5719 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5720 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5721 [Whether posix_fadvise is available])
5724 ############################################
5725 # See if we have the openat syscall.
5727 AC_CACHE_CHECK([for openat],
5728 samba_cv_HAVE_OPENAT,[
5730 #if defined(HAVE_UNISTD_H)
5733 #include <fcntl.h>],
5734 [int fd = openat(AT_FDCWD, ".", O_RDONLY);],
5735 samba_cv_HAVE_OPENAT=yes,
5736 samba_cv_HAVE_OPENAT=no)])
5738 if test x"$samba_cv_HAVE_OPENAT" = x"yes"; then
5739 AC_DEFINE(HAVE_OPENAT,1, [Whether openat is available])
5742 ############################################
5743 # See if we have the Linux splice syscall.
5747 AC_CACHE_CHECK([for Linux splice],
5748 samba_cv_HAVE_LINUX_SPLICE,[
5750 #if defined(HAVE_UNISTD_H)
5753 #include <fcntl.h>],
5754 [long ret = splice(0,0,1,0,400,SPLICE_F_MOVE);],
5755 samba_cv_HAVE_LINUX_SPLICE=yes,
5756 samba_cv_HAVE_LINUX_SPLICE=no)])
5759 samba_cv_HAVE_LINUX_SPLICE=no
5763 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5764 AC_DEFINE(HAVE_LINUX_SPLICE,1,
5765 [Whether Linux splice is available])
5768 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5770 ############################################
5771 # See if we have the a broken readlink syscall.
5773 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5774 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5775 samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5777 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5778 AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5781 #################################################
5782 # Check whether winbind is supported on this platform. If so we need to
5783 # build and install client programs, sbin programs and shared libraries
5785 AC_MSG_CHECKING(whether to build winbind)
5787 # Initially, the value of $host_os decides whether winbind is supported
5792 # Define external wbclient library to link against. This disables winbind.
5793 # We define this here so --with-winbind can override it.
5794 AC_ARG_WITH(wbclient,
5795 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5808 WBCLIENT_INCLUDES="-I$withval/include"
5809 WBCLIENT_LDFLAGS="-L$withval/lib"
5814 AC_SUBST(WBCLIENT_INCLUDES)
5815 AC_SUBST(WBCLIENT_LDFLAGS)
5816 AC_SUBST(WBCLIENT_LIBS)
5819 # Define the winbind shared library name and any specific linker flags
5820 # it needs to be built with.
5822 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5823 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5824 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5825 NSSSONAMEVERSIONSUFFIX=""
5828 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5829 NSSSONAMEVERSIONSUFFIX=".2"
5830 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5832 *freebsd[[5-9]]* | *freebsd1[[0-9]]*)
5833 # FreeBSD winbind client is implemented as a wrapper around
5834 # the Linux version.
5835 NSSSONAMEVERSIONSUFFIX=".1"
5836 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5837 ../nsswitch/winbind_nss_linux.o"
5838 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5839 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5842 *netbsd*[[3-9]]* | *netbsd1[[0-9]]*)
5843 # NetBSD winbind client is implemented as a wrapper
5844 # around the Linux version. It needs getpwent_r() to
5845 # indicate libc's use of the correct nsdispatch API.
5847 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5848 WINBIND_NSS_EXTRA_OBJS="\
5849 ../nsswitch/winbind_nss_netbsd.o \
5850 ../nsswitch/winbind_nss_linux.o"
5851 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5852 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5855 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5859 # IRIX has differently named shared libraries
5860 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5861 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5862 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5865 # Solaris winbind client is implemented as a wrapper around
5866 # the Linux version.
5867 NSSSONAMEVERSIONSUFFIX=".1"
5868 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5869 ../nsswitch/winbind_nss_linux.o"
5872 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5875 # AIX has even differently named shared libraries. No
5876 # WINS support has been implemented yet.
5877 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5878 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5879 WINBIND_NSS="../nsswitch/WINBIND"
5886 winbind_no_reason=", unsupported on $host_os"
5890 # Check the setting of --with-winbind
5892 AC_ARG_WITH(winbind,
5893 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5907 # We need unix domain sockets for winbind
5909 if test x"$HAVE_WINBIND" = x"yes"; then
5910 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5911 winbind_no_reason=", no unix domain socket support on $host_os"
5916 # Display test results
5918 if test x"$HAVE_WINBIND" = x"no"; then
5922 if test x"$HAVE_WBCLIENT" = x"yes"; then
5923 AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
5924 [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
5925 LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
5927 AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
5928 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo"
5930 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5931 BUILD_LIBWBCLIENT_SHARED=no
5933 BUILD_LIBWBCLIENT_SHARED=yes
5936 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5937 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5939 LIBWBCLIENT_FULLVER=0
5940 LIBWBCLIENT_SHARED_TARGET_SOVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_SOVER
5941 LIBWBCLIENT_SHARED_TARGET_FULLVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_FULLVER
5942 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5943 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5944 ## Only worry about libwbclient if we have shared
5946 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5947 LIBWBCLIENT=libwbclient
5948 INSTALL_LIBWBCLIENT=installlibwbclient
5949 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5950 LIBWBCLIENT_LIBS="-lwbclient"
5952 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5953 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
5957 if test x"$HAVE_WINBIND" = x"yes"; then
5959 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5961 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo"
5962 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd"
5963 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5964 PAM_MODULES="$PAM_MODULES pam_winbind"
5965 INSTALL_PAM_MODULES="installpammodules"
5966 UNINSTALL_PAM_MODULES="uninstallpammodules"
5969 # we use winbind, check for krb5 locate_plugin support:
5970 AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
5971 [[#ifdef HAVE_KRB5_H
5975 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
5976 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
5977 if test x"$BLDSHARED" = x"true" ; then
5978 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
5981 # end of krb5 locate_plugin check
5983 AC_MSG_RESULT(no$winbind_no_reason)
5986 AC_SUBST(WINBIND_NSS)
5987 AC_SUBST(WINBIND_WINS_NSS)
5988 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5989 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5990 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5992 AC_SUBST(WINBIND_KRB5_LOCATOR)
5994 # Solaris 10 does have new member in nss_XbyY_key
5995 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5996 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5997 [#include <nss_dbdefs.h>])
5999 # Solaris has some extra fields in struct passwd that need to be
6000 # initialised otherwise nscd crashes.
6002 AC_CHECK_MEMBER(struct passwd.pw_comment,
6003 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6006 AC_CHECK_MEMBER(struct passwd.pw_age,
6007 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6010 # AIX 4.3.x and 5.1 do not have as many members in
6011 # struct secmethod_table as AIX 5.2
6012 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6013 [#include <usersec.h>])
6014 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6015 [#include <usersec.h>])
6017 #################################################
6018 # Check to see if we should use the included popt
6020 AC_ARG_WITH(included-popt,
6021 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6032 if test x"$INCLUDED_POPT" != x"yes"; then
6033 AC_CHECK_LIB(popt, poptGetContext,
6034 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6037 AC_MSG_CHECKING(whether to use included popt)
6038 if test x"$INCLUDED_POPT" = x"yes"; then
6040 BUILD_POPT='$(POPT_OBJ)'
6041 POPTLIBS='$(POPT_OBJ)'
6042 FLAGS1="-I\$(srcdir)/../lib/popt"
6048 AC_SUBST(BUILD_POPT)
6052 #################################################
6053 # Check if user wants DNS service discovery support
6055 AC_ARG_ENABLE(dnssd,
6056 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6058 AC_SUBST(DNSSD_LIBS)
6059 if test x"$enable_dnssd" = x"yes"; then
6060 have_dnssd_support=yes
6062 AC_CHECK_HEADERS(dns_sd.h)
6063 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6064 have_dnssd_support=no
6067 # On Darwin the DNSSD API is in libc, but on other platforms it's
6068 # probably in -ldns_sd
6069 AC_CHECK_FUNCS(DNSServiceRegister)
6070 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6071 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6072 x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6073 have_dnssd_support=no
6076 if test x"$have_dnssd_support" = x"yes"; then
6077 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6078 [Whether to enable DNS service discovery support])
6080 if test x"$enable_dnssd" = x"yes"; then
6081 AC_MSG_ERROR(DNS service discovery support not available)
6087 #################################################
6088 # Check if user wants avahi support
6090 AC_ARG_ENABLE(avahi,
6091 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6093 if test x"$enable_avahi" != x"no"; then
6094 have_avahi_support=yes
6096 AC_CHECK_HEADERS(avahi-common/watch.h)
6097 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6098 have_avahi_support=no
6101 AC_CHECK_HEADERS(avahi-client/client.h)
6102 if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6103 have_avahi_support=no
6107 AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6108 AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6111 if test x"$have_avahi_client_new" != x"yes" -o \
6112 x"$have_avahi_strerror" != x"yes" ; then
6113 have_avahi_support=no
6116 if test x"$have_avahi_support" = x"yes"; then
6117 AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6118 AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6119 [Whether to enable avahi support])
6120 AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6122 if test x"$enable_avahi" = x"yes"; then
6123 AC_MSG_ERROR(avahi support not available)
6129 #################################################
6132 PTHREAD_CFLAGS=error
6133 PTHREAD_LDFLAGS=error
6135 # If it's error, then the user didn't
6137 if test "x$PTHREAD_LDFLAGS" = xerror; then
6138 AC_CHECK_LIB(pthread, pthread_attr_init, [
6139 PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6140 PTHREAD_LDFLAGS="-lpthread" ])
6143 if test "x$PTHREAD_LDFLAGS" = xerror; then
6144 AC_CHECK_LIB(pthreads, pthread_attr_init, [
6145 PTHREAD_CFLAGS="-D_THREAD_SAFE"
6146 PTHREAD_LDFLAGS="-lpthreads" ])
6149 if test "x$PTHREAD_LDFLAGS" = xerror; then
6150 AC_CHECK_LIB(c_r, pthread_attr_init, [
6151 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6152 PTHREAD_LDFLAGS="-pthread" ])
6155 if test "x$PTHREAD_LDFLAGS" = xerror; then
6156 AC_CHECK_FUNC(pthread_attr_init, [
6157 PTHREAD_CFLAGS="-D_REENTRANT"
6158 PTHREAD_LDFLAGS="-lpthread" ])
6161 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6162 # pthread_attr_init. On pthread_mutex_lock it works there...
6163 if test "x$PTHREAD_LDFLAGS" = xerror; then
6164 AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6165 PTHREAD_CFLAGS="-D_REENTRANT"
6166 PTHREAD_LDFLAGS="-lpthread" ])
6169 AC_SUBST(PTHREAD_CFLAGS)
6170 AC_SUBST(PTHREAD_LDFLAGS)
6172 samba_cv_HAVE_PTHREAD=no
6173 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6174 samba_cv_HAVE_PTHREAD=yes
6175 # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6176 ac_save_CFLAGS=$CFLAGS
6177 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6178 ac_save_LDFLAGS=$LDFLAGS
6179 LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6180 AC_CHECK_HEADERS(pthread.h)
6181 CFLAGS=$ac_save_CFLAGS
6182 LDFLAGS=$ac_save_LDFLAGS
6183 AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6186 #################################################
6187 # Check if user wants pthreadpool support
6189 AC_ARG_ENABLE(pthreadpool,
6190 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=yes)])])
6192 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6193 AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6196 if test x"$enable_pthreadpool" != x"no" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6197 LIBS="$LIBS $PTHREAD_LDFLAGS"
6198 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6199 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool.o")
6200 default_shared_modules="$default_shared_modules vfs_aio_pthread"
6202 AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool_sync.o")
6205 PTHREADPOOLTEST="bin/pthreadpooltest"
6206 AC_SUBST(PTHREADPOOLTEST)
6209 #################################################
6210 # Check to see if we should use the included iniparser
6212 AC_ARG_WITH(included-iniparser,
6213 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6217 INCLUDED_INIPARSER=yes
6220 INCLUDED_INIPARSER=no
6224 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6225 AC_CHECK_LIB(iniparser, iniparser_load,
6226 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6229 AC_MSG_CHECKING(whether to use included iniparser)
6230 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6232 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6234 FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6238 INIPARSERLIBS="-liniparser"
6240 AC_SUBST(BUILD_INIPARSER)
6241 AC_SUBST(INIPARSERLIBS)
6244 AC_ARG_ENABLE(fault-handler,[AS_HELP_STRING([--disable-fault-handler], [Disable the default handler])])
6246 if test x"$enable_fault_handler" = x"no"; then
6247 AC_DEFINE(HAVE_DISABLE_FAULT_HANDLER, 1, [Disable the default signal handler])
6250 ###################################################
6251 # Check for different/missing (set|get|end)netgrent prototypes
6253 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
6254 CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6256 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6257 AC_TRY_COMPILE([#include<netdb.h>
6258 #ifdef HAVE_NETGROUP_H
6259 #include<netgroup.h>
6260 #endif],[setnetgrent("foo")],
6261 samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6262 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6263 AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6265 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6266 AC_TRY_COMPILE([#include<netdb.h>
6267 #ifdef HAVE_NETGROUP_H
6268 #include<netgroup.h>
6269 #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6270 samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6271 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6272 AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6274 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6275 AC_TRY_COMPILE([#include<netdb.h>
6276 #ifdef HAVE_NETGROUP_H
6277 #include<netgroup.h>
6278 #endif],[endnetgrent()],
6279 samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6280 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6281 AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6286 # Checks for POSIX ignorant BSD style statvfs() function
6288 AC_CHECK_HEADERS(sys/param.h sys/mount.h)
6290 AC_MSG_CHECKING([checking for posix ignorant *bsd style statfs struct])
6291 AC_CACHE_VAL(bsdstatvfs_cv_statfs,[
6293 #ifdef HAVE_SYS_PARAM_H
6294 #include <sys/param.h>
6296 #ifdef HAVE_SYS_MOUNT_H
6297 #include <sys/mount.h>
6304 return (statfs (".", &fsd));
6306 bsdstatvfs_cv_statfs=yes,
6307 bsdstatvfs_cv_statfs=no,
6308 bsdstatvfs_cv_statfs=no)])
6309 AC_MSG_RESULT($bsdstatvfs_cv_statfs)
6311 if test $bsdstatvfs_cv_statfs = yes; then
6312 AC_DEFINE(BSD_STYLE_STATVFS,1,[Whether statfs struct is *bsd style])
6314 # End of checks POSIX ignorant BSD style statvfs() function
6316 # Checks for the vfs_fileid module
6318 AC_CHECK_FUNC(getmntent)
6320 AC_CHECK_HEADERS(sys/statfs.h)
6322 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid])
6323 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6325 #include <sys/types.h>
6326 #include <sys/statfs.h>
6330 fsid_t fsid = fsd.f_fsid;
6331 return statfs (".", &fsd);
6333 vfsfileid_cv_statfs=yes,
6334 vfsfileid_cv_statfs=no,
6335 vfsfileid_cv_statfs=cross)
6337 AC_MSG_RESULT($vfsfileid_cv_statfs)
6339 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6340 x"$vfsfileid_cv_statfs" = x"yes"; then
6341 default_shared_modules="$default_shared_modules vfs_fileid"
6344 # Checks for the vfs_fileid module
6346 # btrfs features are dependent on Linux ioctl headers
6347 if test x"$ac_cv_header_sys_ioctl_h" = xyes -a \
6348 x"$ac_cv_header_linux_ioctl_h" = xyes; then
6349 default_shared_modules="$default_shared_modules vfs_btrfs"
6353 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6355 eval MODULE_DEFAULT_$i=STATIC
6358 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6360 dnl Fall back to static if we cannot build shared libraries
6361 eval MODULE_DEFAULT_$i=STATIC
6363 if test $BLDSHARED = true; then
6364 eval MODULE_DEFAULT_$i=SHARED
6368 dnl Always build these modules static
6369 MODULE_rpc_spoolss=STATIC
6370 MODULE_rpc_srvsvc=STATIC
6371 MODULE_idmap_tdb=STATIC
6372 MODULE_idmap_passdb=STATIC
6373 MODULE_idmap_nss=STATIC
6375 MODULE_nss_info_template=STATIC
6377 AC_ARG_WITH(static-modules,
6378 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6379 [ if test $withval; then
6380 for i in `echo $withval | sed -e 's/,/ /g'`
6382 eval MODULE_$i=STATIC
6386 AC_ARG_WITH(shared-modules,
6387 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6388 [ if test $withval; then
6389 for i in `echo $withval | sed -e 's/,/ /g'`
6391 eval MODULE_$i=SHARED
6395 # additionally, support pdb_ldap -> pdb_ldapsam replacement
6396 if test x"$MODULE_pdb_ldap" != x ; then
6397 MODULE_pdb_ldapsam="$MODULE_pdb_ldap"
6400 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6401 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6402 SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6403 AC_SUBST(SMBD_FAM_LIBS)
6406 SMB_MODULE(pdb_ldapsam, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o,
6407 "bin/ldapsam.$SHLIBEXT", PDB,
6408 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6409 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6410 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6411 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6412 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6414 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6415 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6416 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6417 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6418 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6419 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6420 SMB_MODULE(idmap_autorid, winbindd/idmap_autorid.o, "bin/autorid.$SHLIBEXT", IDMAP)
6421 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6422 SMB_MODULE(idmap_rfc2307, winbindd/idmap_rfc2307.o, "bin/rfc2307.$SHLIBEXT", IDMAP)
6423 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6424 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6426 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6427 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6429 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6430 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6431 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6432 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6433 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6434 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6435 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6436 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6438 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6439 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6440 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6441 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6442 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6443 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6444 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6445 SMB_MODULE(vfs_fake_acls, \$(VFS_FAKE_ACLS_OBJ), "bin/fake_acls.$SHLIBEXT", VFS)
6446 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6447 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6448 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6449 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6450 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6451 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6452 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6453 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6454 SMB_MODULE(vfs_nfs4acl_xattr, \$(VFS_XATTR_TDB_OBJ), "bin/nfs4acl_xattr.$SHLIBEXT", VFS)
6455 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6456 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6457 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6458 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6459 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6460 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6461 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6462 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6463 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6464 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6465 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6466 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6467 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6468 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6469 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6470 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6471 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6472 SMB_MODULE(vfs_aio_pthread, \$(VFS_AIO_PTHREAD_OBJ), "bin/aio_pthread.$SHLIBEXT", VFS)
6473 SMB_MODULE(vfs_aio_posix, \$(VFS_AIO_POSIX_OBJ), "bin/aio_posix.$SHLIBEXT", VFS)
6474 SMB_MODULE(vfs_aio_linux, \$(VFS_AIO_LINUX_OBJ), "bin/aio_linux.$SHLIBEXT", VFS)
6475 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6476 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6477 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6478 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6479 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6480 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6481 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6482 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6483 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6484 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_media_harmony, \$(VFS_MEDIA_HARMONY_OBJ), "bin/media_harmony.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_btrfs, \$(VFS_BTRFS_OBJ), "bin/btrfs.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_ceph, \$(VFS_CEPH_OBJ), "bin/ceph.$SHLIBEXT", VFS)
6491 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6493 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6494 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6496 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6497 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6498 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6499 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6501 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6503 #################################################
6504 # do extra things if we are running insure
6506 if test "${ac_cv_prog_CC}" = "insure"; then
6507 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6510 #################################################
6511 # If run from the build farm, enable NASTY hacks
6512 #################################################
6513 AC_MSG_CHECKING(whether to enable features for selftest)
6514 if test x"$selftest" = x"yes"; then
6516 AC_DEFINE(ENABLE_SELFTEST, 1, [Support features needed for selftest])
6517 if test x"$selftest_possible" != xyes; then
6518 AC_MSG_ERROR(selftest support only possible with python, including development headers, and perl installed)
6524 #################################################
6525 # check for bad librt/libpthread interactions
6527 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6528 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6529 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6530 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6532 SMB_IF_RTSIGNAL_BUG(
6534 # Have RT_SIGNAL bug, need to check whether the problem will
6535 # affect anything we have configured.
6538 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6539 if test x"$rt_signal_lease_ok" = x"no" ; then
6544 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6545 if test x"$rt_signal_notify_ok" = x"no" ; then
6550 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6551 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6552 if test x"$rt_signal_aio_ok" = x"no" ; then
6557 if test x"$rt_do_error" = x"yes" ; then
6558 SMB_IS_LIBPTHREAD_LINKED(
6562 *** On this platforms, linking Samba against pthreads causes problems
6563 *** with the oplock and change notification mechanisms. You may be
6564 *** using pthreads as a side-effect of using the --with-aio-support
6565 *** or --with-profiling-data options. Please remove these and try again.
6572 *** On this platform, the oplock and change notification mechanisms do not
6573 *** appear to work. Please report this problem to samba-technical@samba.org
6574 *** and attach the config.log file from this directory.
6578 AC_MSG_ERROR(unable to use realtime signals on this platform)
6582 # no RT_SIGNAL bug, we are golden
6583 SMB_IS_LIBPTHREAD_LINKED(
6585 AC_MSG_WARN(using libpthreads - this may degrade performance)
6590 # cross compiling, I hope you know what you are doing
6596 m4_include(../lib/zlib/zlib.m4)
6600 AC_ZLIB([ZLIB_OBJS=""], [
6602 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6603 deflate.o trees.o zutil.o inflate.o infback.o \
6604 inftrees.o inffast.o
6606 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6608 CFLAGS="-I../lib/zlib $CFLAGS"
6611 AC_DEFINE(STATIC_gensec_MODULES, [gensec_spnego_init,gensec_ntlmssp_init,NULL],[gensec modules])
6612 AC_DEFINE(STATIC_gensec_MODULES_PROTO, [_MODULE_PROTO(gensec_spnego_init)_MODULE_PROTO(gensec_ntlmssp_init)],[gensec protos])
6614 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6616 if test "x$enable_dmalloc" = xyes
6618 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6619 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6620 [Define to check invariants around some common functions])
6621 LIBS="$LIBS -ldmalloc"
6624 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6625 LIB_REMOVE_USR_LIB(LDFLAGS)
6626 LIB_REMOVE_USR_LIB(LIBS)
6628 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6629 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6630 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6632 #################################################
6633 # Display summary of libraries detected
6635 AC_MSG_RESULT([Using libraries:])
6636 AC_MSG_RESULT([ LIBS = $LIBS])
6637 if test x"$with_ads_support" != x"no"; then
6638 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6640 if test x"$with_ldap_support" != x"no"; then
6641 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6643 if test x"$have_dnssd_support" != x"no"; then
6644 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6646 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6648 #################################################
6649 # final configure stuff
6651 AC_MSG_CHECKING([configure summary])
6652 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6654 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6655 AC_MSG_WARN([cannot run when cross-compiling]))
6657 dnl Merge in developer cflags from now on
6658 AC_SUBST(DEVELOPER_CFLAGS)
6659 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6660 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS) ${CFLAGS_APPEND}"
6663 # Stuff the smbd-only libraries at the end of the smbd link
6664 # path (if we have them).
6665 SMBD_LIBS="$samba_dmapi_libs"
6668 CFLAGS="${CFLAGS} \$(FLAGS)"
6669 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6671 # If we had to expand the includes, make tsure the output file is moved back
6672 AC_OUTPUT_COMMANDS([
6673 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
6674 ln -s Makefile-noincludes Makefile
6679 script/findsmb smbadduser script/installbin.sh script/uninstallbin.sh
6680 lib/netapi/examples/Makefile
6681 lib/netapi/tests/Makefile
6682 pkgconfig/smbclient.pc
6683 pkgconfig/wbclient.pc
6685 pkgconfig/smbsharemodes.pc
6686 ../examples/libsmbclient/Makefile.internal
6689 #################################################
6690 # Print very concise instructions on building/use
6691 if test "x$enable_dmalloc" = xyes
6693 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6694 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])