1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
25 AC_LIBREPLACE_CC_CHECKS
27 m4_include(../lib/tevent/libtevent.m4)
30 for obj in ${TEVENT_OBJ}; do
31 LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
33 AC_SUBST(LIBTEVENT_OBJ0)
34 LIBS="${LIBS} ${TEVENT_LIBS}"
36 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
37 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
43 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
45 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
46 if test "x${srcdir-.}" != "x."; then
47 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
50 dnl Unique-to-Samba variables we'll be playing with.
51 AC_SUBST(SAMBA_CPPFLAGS)
56 AC_SUBST(MODULE_EXPORTS)
62 AC_SUBST(RELRO_LDFLAGS)
64 AC_SUBST(INSTALLLIBCMD_SH)
65 AC_SUBST(INSTALLLIBCMD_A)
66 AC_SUBST(UNINSTALLLIBCMD_SH)
67 AC_SUBST(UNINSTALLLIBCMD_A)
69 AC_SUBST(INSTALL_LIBWBCLIENT)
70 AC_SUBST(UNINSTALL_LIBWBCLIENT)
71 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
72 AC_SUBST(LIBWBCLIENT_SHARED)
73 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
74 AC_SUBST(LIBWBCLIENT_STATIC)
75 AC_SUBST(LIBWBCLIENT_SOVER)
77 AC_SUBST(LIBWBCLIENT_LIBS)
79 AC_SUBST(LIBSAMBAUTIL_SHARED)
91 AC_SUBST(INSTALL_PAM_MODULES)
92 AC_SUBST(UNINSTALL_PAM_MODULES)
94 AC_SUBST(EXTRA_BIN_PROGS)
95 AC_SUBST(CIFSMOUNT_PROGS)
96 AC_SUBST(INSTALL_CIFSMOUNT)
97 AC_SUBST(UNINSTALL_CIFSMOUNT)
98 AC_SUBST(CIFSUMOUNT_PROGS)
99 AC_SUBST(INSTALL_CIFSUMOUNT)
100 AC_SUBST(UNINSTALL_CIFSUMOUNT)
101 AC_SUBST(CIFSUPCALL_PROGS)
102 AC_SUBST(INSTALL_CIFSUPCALL)
103 AC_SUBST(UNINSTALL_CIFSUPCALL)
104 AC_SUBST(EXTRA_SBIN_PROGS)
105 AC_SUBST(EXTRA_ALL_TARGETS)
106 AC_SUBST(CONFIG_LIBS)
109 # compile with optimization and without debugging by default, but
110 # allow people to set their own preference.
111 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
112 # if it has no value. This prevent *very* large debug binaries from occurring
114 if test "x$debug" = "xyes" ; then
115 CFLAGS="${CFLAGS} -g"
117 if test "x$CFLAGS" = x; then
121 m4_include(../lib/socket_wrapper/config.m4)
122 m4_include(../lib/nss_wrapper/config.m4)
124 m4_include(m4/swat.m4)
126 # Probe the gcc version for extra CFLAGS. We always stash these in
127 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
128 # Makefile edit, avoiding the need to re-run configure.
129 if test x"$ac_cv_prog_gcc" = x"yes" ; then
130 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
131 # Add -Wdeclaration-after-statement if compiler supports it
133 [that the C compiler understands -Wdeclaration-after-statement],
134 samba_cv_HAVE_Wdeclaration_after_statement, [
139 }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
140 samba_cv_HAVE_Wdeclaration_after_statement=yes,
141 samba_cv_HAVE_Wdeclaration_after_statement=no,
142 samba_cv_HAVE_Wdeclaration_after_statement=cross)
145 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
146 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
149 #-Werror-implicit-function-declaration
151 [that the C compiler understands -Werror-implicit-function-declaration],
152 samba_cv_HAVE_Werror_implicit_function_declaration, [
157 }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
158 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
159 samba_cv_HAVE_Werror_implicit_function_declaration=no,
160 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
162 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
163 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
166 # krb5developer is like developer, except we don't get
167 # -Wstrict-prototypes.
168 if test x"$krb5_developer" != x"$yes" ; then
169 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
172 if test x"$picky_developer" = x"yes"; then
173 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
177 #################################################
178 # check for a shared memory profiling support
179 AC_MSG_CHECKING(whether to use profiling)
180 AC_ARG_WITH(profiling-data,
181 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
185 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
186 samba_cv_WITH_PROFILE=yes
190 samba_cv_WITH_PROFILE=no
196 dnl Checks for programs.
197 merged_build_possible=yes
202 m4_include(../m4/check_make.m4)
203 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
206 m4_include(../m4/check_perl.m4)
207 AC_SAMBA_PERL([true], [merged_build_possible=no])
209 AC_CHECK_TOOL(AR, ar)
211 dnl Check if we use GNU ld
215 dnl Certain versions of GNU ld the default is not to have the
216 dnl --allow-shlib-undefined flag defined. This causes a stackload of
217 dnl warnings when building modules.
218 if test "$ac_cv_prog_gnu_ld" = "yes"; then
219 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
220 AC_MSG_CHECKING(GNU ld release date)
222 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'`
224 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
225 if test -n "$ac_cv_gnu_ld_date"; then
226 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
227 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
229 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
230 ac_cv_gnu_ld_version_script=yes
233 AC_MSG_CHECKING(GNU ld release version)
235 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^[^0-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
236 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
237 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
239 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
240 AC_MSG_CHECKING(GNU ld release version major)
241 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
242 AC_MSG_CHECKING(GNU ld release version minor)
243 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
244 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
245 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
247 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
248 ac_cv_gnu_ld_version_script=yes
253 dnl look for executable suffix
256 dnl Check if C compiler understands -c and -o at the same time
258 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
265 dnl Check if the C compiler understands -Werror
266 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
271 }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
272 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
273 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
274 Werror_FLAGS="-Werror"
276 dnl Check if the C compiler understands -w2
277 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
282 }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
283 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
284 if test x"$samba_cv_HAVE_w2" = x"yes"; then
287 dnl Check if the C compiler understands -errwarn
288 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
293 }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
294 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
295 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
296 Werror_FLAGS="-errwarn=%all"
301 ############################################
302 # check if the compiler can handle negative enum values
303 # and don't truncate the values to INT_MAX
304 # a runtime test is needed here
306 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
310 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
312 enum negative_values v1 = NEGATIVE_VALUE;
313 unsigned v2 = NEGATIVE_VALUE;
315 if (v1 != 0xFFFFFFFF) {
316 printf("%u != 0xFFFFFFFF\n", v1);
319 if (v2 != 0xFFFFFFFF) {
320 printf("%u != 0xFFFFFFFF\n", v2);
327 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
328 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
329 AC_MSG_WARN([using --uint-enums for pidl])
330 PIDL_ARGS="$PIDL_ARGS --uint-enums"
333 dnl Figure out the flags to support named structure initializers
335 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
337 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
338 AC_MSG_CHECKING(uname -s)
339 AC_MSG_RESULT(${UNAME_S})
341 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
342 AC_MSG_CHECKING(uname -r)
343 AC_MSG_RESULT(${UNAME_R})
345 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
346 AC_MSG_CHECKING(uname -m)
347 AC_MSG_RESULT(${UNAME_M})
349 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
350 AC_MSG_CHECKING(uname -p)
351 AC_MSG_RESULT(${UNAME_P})
353 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
354 AC_MSG_CHECKING(uname -i)
355 AC_MSG_RESULT(${UNAME_I})
357 dnl Add #include for broken IRIX header files
360 #TODO add to libreplace
361 if test x"$ac_cv_prog_gcc" != x"yes" ; then
362 dnl Fix sensible defaults for MIPSPro compilers. The
363 dnl error numbers are valid for the 7.3 compilers,
364 dnl hopefully also valid for the 7.4 series.
366 dnl Bugzilla 3801. Force an error on warning 1035
367 dnl so we don't incorrectly detect stdint.h. This
368 dnl warning is emitted for #error directives.
369 CFLAGS="$CFLAGS -diag_error 1035"
370 dnl 1209: Controlling expression is constant
371 dnl 1174: Function foo declared but never referenced
372 dnl 3201: Parameter foo was never referenced
373 CFLAGS="$CFLAGS -woff 1209,1174,3201"
381 dnl Add modules that have to be built by default here
382 dnl These have to be built static:
383 default_static_modules=""
384 default_static_modules="$default_static_modules pdb_smbpasswd"
385 default_static_modules="$default_static_modules pdb_tdbsam"
386 default_static_modules="$default_static_modules pdb_wbc_sam"
387 default_static_modules="$default_static_modules rpc_lsarpc"
388 default_static_modules="$default_static_modules rpc_samr"
389 default_static_modules="$default_static_modules rpc_winreg"
390 default_static_modules="$default_static_modules rpc_initshutdown"
391 default_static_modules="$default_static_modules rpc_dssetup"
392 default_static_modules="$default_static_modules rpc_wkssvc"
393 default_static_modules="$default_static_modules rpc_svcctl"
394 default_static_modules="$default_static_modules rpc_ntsvcs"
395 default_static_modules="$default_static_modules rpc_netlogon"
396 default_static_modules="$default_static_modules rpc_netdfs"
397 default_static_modules="$default_static_modules rpc_srvsvc"
398 default_static_modules="$default_static_modules rpc_spoolss"
399 default_static_modules="$default_static_modules rpc_eventlog"
400 default_static_modules="$default_static_modules auth_sam"
401 default_static_modules="$default_static_modules auth_unix"
402 default_static_modules="$default_static_modules auth_winbind"
403 default_static_modules="$default_static_modules auth_wbc"
404 default_static_modules="$default_static_modules auth_server"
405 default_static_modules="$default_static_modules auth_domain"
406 default_static_modules="$default_static_modules auth_builtin"
407 default_static_modules="$default_static_modules auth_netlogond"
408 default_static_modules="$default_static_modules vfs_default"
409 default_static_modules="$default_static_modules nss_info_template"
411 dnl These are preferably build shared, and static if dlopen() is not available
412 default_shared_modules=""
413 default_shared_modules="$default_shared_modules vfs_recycle"
414 default_shared_modules="$default_shared_modules vfs_audit"
415 default_shared_modules="$default_shared_modules vfs_extd_audit"
416 default_shared_modules="$default_shared_modules vfs_full_audit"
417 default_shared_modules="$default_shared_modules vfs_netatalk"
418 default_shared_modules="$default_shared_modules vfs_fake_perms"
419 default_shared_modules="$default_shared_modules vfs_default_quota"
420 default_shared_modules="$default_shared_modules vfs_readonly"
421 default_shared_modules="$default_shared_modules vfs_cap"
422 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
423 default_shared_modules="$default_shared_modules vfs_shadow_copy"
424 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
425 default_shared_modules="$default_shared_modules charset_CP850"
426 default_shared_modules="$default_shared_modules charset_CP437"
427 default_shared_modules="$default_shared_modules auth_script"
428 default_shared_modules="$default_shared_modules vfs_readahead"
429 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
430 default_shared_modules="$default_shared_modules vfs_streams_xattr"
431 default_shared_modules="$default_shared_modules vfs_streams_depot"
432 default_shared_modules="$default_shared_modules vfs_acl_xattr"
433 default_shared_modules="$default_shared_modules vfs_acl_tdb"
434 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
435 default_shared_modules="$default_shared_modules vfs_preopen"
436 default_shared_modules="$default_shared_modules vfs_catia"
438 if test "x$developer" = xyes; then
439 default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
440 default_shared_modules="$default_shared_modules charset_weird perfcount_test"
444 # Config CPPFLAG settings for strange OS's that must be set
445 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
446 # case statement; its first reference must be unconditional.
451 # Defines needed for HPUX support.
452 # HPUX has bigcrypt but (sometimes?) doesn't use it for
453 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
457 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
463 # CRAY Unicos has broken const handling
465 AC_MSG_RESULT([disabling const])
466 CPPFLAGS="$CPPFLAGS -Dconst="
470 # AIX4.x doesn't even admit to having large
471 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
474 AC_MSG_RESULT([enabling large file support])
475 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
476 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
479 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
480 # to the existance of large files..
481 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
482 # recommendations on large file support, however it makes the
483 # compile work using gcc 2.7 and 2.8, whereas using the Sun
484 # recommendation makes the compile fail on gcc2.7. JRA.
486 # Solaris uses SYSV printing. Make sure to set that here. --jerry
489 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
491 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
492 AC_MSG_RESULT([no large file support])
495 AC_MSG_RESULT([enabling large file support])
496 if test "$ac_cv_prog_gcc" = yes; then
497 ${CC-cc} -v >conftest.c 2>&1
498 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
500 case "$ac_cv_gcc_compiler_version_number" in
501 *"gcc version 2.6"*|*"gcc version 2.7"*)
502 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
503 LDFLAGS="$LDFLAGS -lthread"
504 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
507 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
508 LDFLAGS="$LDFLAGS -lthread"
509 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
510 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
514 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
515 LDFLAGS="$LDFLAGS -lthread"
516 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
517 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
523 # IRIX uses SYSV printing. Make sure to set that here
526 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
528 *freebsd*|*dragonfly*)
529 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
532 # VOS may need to have POSIX support and System V compatibility enabled.
539 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
540 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
544 *-D_SYSV*|*-D_SVID_SOURCE*)
547 CPPFLAGS="$CPPFLAGS -D_SYSV"
548 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
552 # Tests needed for SINIX large file support.
555 if test $host = mips-sni-sysv4 ; then
556 AC_MSG_CHECKING([for LFS support])
557 old_CPPFLAGS="$CPPFLAGS"
558 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
562 #if _LFS64_LARGEFILE == 1
567 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
568 CPPFLAGS="$old_CPPFLAGS"
569 if test x$SINIX_LFS_SUPPORT = xyes ; then
570 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
571 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
572 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
573 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
574 LIBS="`getconf LFS64_LIBS` $LIBS"
576 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
580 # Systems with LFS support.
582 gnu* | k*bsd*-gnu | kopensolaris*-gnu)
583 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
584 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
585 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
586 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
589 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
592 AC_MSG_CHECKING([for LFS support])
593 old_CPPFLAGS="$CPPFLAGS"
594 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
597 #include <sys/utsname.h>
601 #if _LFS64_LARGEFILE == 1
606 /* Ensure this is glibc 2.2 or higher */
607 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
608 int libc_major = __GLIBC__;
609 int libc_minor = __GLIBC_MINOR__;
617 /* Ensure this is kernel 2.4 or higher */
620 release = strdup(uts.release);
621 major = atoi(strsep(&release, "."));
622 minor = atoi(strsep(&release, "."));
624 if (major > 2 || (major == 2 && minor > 3))
631 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
632 CPPFLAGS="$old_CPPFLAGS"
633 if test x$LINUX_LFS_SUPPORT = xyes ; then
634 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
635 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
636 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
637 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
639 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
643 # MacOS X is the *only* system that uses compose character in utf8. This
644 # is so horribly broken....
647 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
649 # Add a system specific charset module.
650 default_shared_modules="$default_shared_modules charset_macosxfs"
654 AC_MSG_CHECKING([for LFS support])
655 old_CPPFLAGS="$CPPFLAGS"
656 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
660 #if _LFS64_LARGEFILE == 1
665 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
666 CPPFLAGS="$old_CPPFLAGS"
667 if test x$GLIBC_LFS_SUPPORT = xyes ; then
668 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
669 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
670 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
672 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
675 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
676 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
681 SAVE_CPPFLAGS="${CPPFLAGS}"
682 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
684 AC_LIBREPLACE_BROKEN_CHECKS
685 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
686 AC_LIBREPLACE_NETWORK_CHECKS
688 CPPFLAGS="${SAVE_CPPFLAGS}"
690 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
692 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
693 AC_SUBST(LIBREPLACE_OBJS)
695 # add -ldl to the global LIBS
696 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
697 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
700 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
701 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
702 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
703 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
704 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)
705 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
706 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
707 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
708 AC_CHECK_HEADERS(sys/sysmacros.h)
709 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
710 AC_CHECK_HEADERS(langinfo.h locale.h)
711 AC_CHECK_HEADERS(xfs/libxfs.h)
712 AC_CHECK_HEADERS(netgroup.h)
714 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
720 ## These fail to compile on IRIX so just check for their presence
721 AC_CHECK_HEADERS(sys/mode.h,,,)
723 # Look for Darwin headers
724 old_CPPFLAGS="$CPPFLAGS"
725 CPPFLAGS="-Iinclude $CPPFLAGS"
726 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
727 CPPFLAGS="$old_CPPFLAGS"
729 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
730 # subdirectory of headers.
731 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
734 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
735 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
739 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
740 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
741 if test x"$ac_cv_header_shadow_h" = x"yes"; then
742 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
746 AC_CHECK_HEADERS(shadow.h)
747 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
748 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
750 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
751 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
753 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
755 # For experimental utmp support (lastlog on some BSD-like systems)
756 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
758 AC_CHECK_SIZEOF(int,cross)
759 AC_CHECK_SIZEOF(long,cross)
760 AC_CHECK_SIZEOF(long long,cross)
761 AC_CHECK_SIZEOF(short,cross)
776 AC_CHECK_TYPE(ssize_t, int)
777 AC_CHECK_TYPE(wchar_t, unsigned short)
779 ############################################
780 # for cups support we need libcups, and a handful of header files
783 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
785 if test x$enable_cups != xno; then
786 AC_PATH_PROG(CUPS_CONFIG, cups-config)
788 if test "x$CUPS_CONFIG" != x; then
790 ac_save_CFLAGS=$CFLAGS
791 ac_save_LDFLAGS=$LDFLAGS
792 ac_save_PRINT_LIBS=$PRINT_LIBS
793 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
794 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
795 PRINT_LIBS="$PRINT_LIBS -lcups"
796 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
797 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
798 x"$ac_cv_header_cups_language_h" = xyes; then
799 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
800 samba_cv_HAVE_CUPS=yes
801 AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
803 AC_MSG_WARN([cups-config around but cups-devel not installed])
804 CFLAGS=$ac_save_CFLAGS
805 LDFLAGS=$ac_save_LDFLAGS
806 PRINT_LIBS=$ac_save_PRINT_LIBS
809 elif test x"$enable_cups" = x"yes"; then
810 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
814 AC_ARG_ENABLE(iprint,
815 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
817 if test x$enable_iprint != xno; then
818 if test x"$samba_cv_HAVE_CUPS" = xyes; then
819 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
820 elif test x"$enable_iprint" = x"yes"; then
821 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
825 ############################################
826 # check if the compiler will optimize out function calls
827 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
832 this_function_does_not_exist();
838 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
839 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
840 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
843 #############################################
844 # check for fd passing struct via msg_control
845 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
847 #include <sys/types.h>
850 #include <sys/socket.h>
851 #include <sys/un.h>],
856 char control[CMSG_SPACE(sizeof(int))];
858 msg.msg_control = control_un.control;
859 msg.msg_controllen = sizeof(control_un.control);
861 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
862 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
863 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
864 [If we can use msg_control for passing file descriptors])
867 #############################################
868 # check for fd passing struct via msg_acctrights
869 AC_CACHE_CHECK([for fd passing via msg_acctrights],
870 samba_cv_msghdr_msg_acctrights, [
872 #include <sys/types.h>
875 #include <sys/socket.h>
876 #include <sys/un.h>],
880 msg.msg_acctrights = (caddr_t) &fd;
881 msg.msg_acctrightslen = sizeof(fd);
883 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
884 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
885 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
886 [If we can use msg_acctrights for passing file descriptors])
889 AC_CHECK_FUNCS(dirfd)
890 if test x"$ac_cv_func_dirfd" = x"yes"; then
891 default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
894 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
896 #include <sys/types.h>
901 #include <signal.h>],[struct sigevent s;],
902 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
903 if test x"$samba_cv_struct_sigevent" = x"yes"; then
904 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
905 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
906 [#include <signal.h>])
909 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
911 #include <sys/types.h>
916 #if TIME_WITH_SYS_TIME
917 # include <sys/time.h>
921 # include <sys/time.h>
926 ],[struct timespec ts;],
927 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
928 if test x"$samba_cv_struct_timespec" = x"yes"; then
929 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
932 # and glibc has setresuid under linux but the function does
933 # nothing until kernel 2.1.44! very dumb.
934 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
935 AC_TRY_RUN([#include <errno.h>
936 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
937 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
938 if test x"$samba_cv_have_setresuid" = x"yes"; then
939 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
942 # Do the same check for setresguid...
944 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
945 AC_TRY_RUN([#include <unistd.h>
947 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
948 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
949 if test x"$samba_cv_have_setresgid" = x"yes"; then
950 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
955 ###############################################
956 # Readline included by default unless explicitly asked not to
957 test "${with_readline+set}" != "set" && with_readline=yes
959 # test for where we get readline() from
960 AC_MSG_CHECKING(whether to use readline)
961 AC_ARG_WITH(readline,
962 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
963 [ case "$with_readline" in
967 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
968 AC_CHECK_HEADERS(readline/history.h)
970 AC_CHECK_HEADERS(readline.h readline/readline.h,[
971 for termlib in ncurses curses termcap terminfo termlib tinfo; do
972 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
974 AC_CHECK_LIB(readline, rl_callback_handler_install,
975 [TERMLIBS="-lreadline $TERMLIBS"
976 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
977 break], [TERMLIBS=], $TERMLIBS)])
985 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
986 # alternate readline path
988 _cppflags=${CPPFLAGS}
990 # Add additional search path
991 LDFLAGS="-L$with_readline/lib $LDFLAGS"
992 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
994 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
995 AC_CHECK_HEADERS(readline/history.h)
997 AC_CHECK_HEADERS(readline.h readline/readline.h,[
998 for termlib in ncurses curses termcap terminfo termlib; do
999 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1001 AC_CHECK_LIB(readline, rl_callback_handler_install,
1002 [TERMLDFLAGS="-L$with_readline/lib"
1003 TERMCPPFLAGS="-I$with_readline/include"
1004 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1005 TERMLIBS="-lreadline $TERMLIBS"
1006 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1007 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1015 AC_SUBST(TERMLDFLAGS)
1017 # The readline API changed slightly from readline3 to readline4, so
1018 # code will generate warnings on one of them unless we have a few
1020 AC_CHECK_LIB(readline, rl_completion_matches,
1021 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1022 [Do we have rl_completion_matches?])],
1026 # not all readline libs have rl_event_hook or history_list
1027 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1028 AC_CHECK_LIB(readline, history_list,
1029 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1033 ###############################################
1034 # test for where we get yp_get_default_domain() from
1035 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1036 AC_CHECK_FUNCS(yp_get_default_domain)
1038 # Check if we have execl, if not we need to compile smbrun.
1039 AC_CHECK_FUNCS(execl)
1040 if test x"$ac_cv_func_execl" = x"no"; then
1041 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1044 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1045 AC_CHECK_FUNCS(strtol)
1046 AC_CHECK_FUNCS(strchr chflags)
1047 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1048 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1049 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1050 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1051 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1052 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1053 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1054 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1055 AC_CHECK_FUNCS(getpwent_r)
1056 AC_CHECK_FUNCS(getdents64)
1057 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1058 AC_CHECK_FUNCS(syslog vsyslog timegm)
1059 AC_CHECK_FUNCS(setlocale nl_langinfo)
1060 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1061 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1062 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1063 AC_CHECK_HEADERS(sys/mman.h)
1064 # setbuffer, shmget, shm_open are needed for smbtorture
1065 AC_CHECK_FUNCS(shmget shm_open)
1066 AC_CHECK_FUNCS(gettext dgettext)
1067 AC_CHECK_FUNCS(bindtextdomain textdomain)
1068 AC_CHECK_FUNCS(strupr)
1070 # Find a method of generating a stack trace
1071 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1072 # libexecinfo provides backtrace_symbols on FreeBSD
1073 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1074 AC_CHECK_FUNCS(backtrace_symbols)
1075 AC_CHECK_LIB(exc, trace_back_stack)
1077 # check for sysctlbyname for BSD systems
1078 AC_CHECK_FUNCS(sysctlbyname)
1080 printf "%s" "checking for GPFS GPL libs... "
1082 LIBS="$LIBS -lgpfs_gpl"
1083 AC_TRY_LINK([#include <gpfs_gpl.h>],
1084 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1085 samba_cv_HAVE_GPFS=yes,
1086 samba_cv_HAVE_GPFS=no)
1087 echo $samba_cv_HAVE_GPFS
1088 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1089 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1090 default_shared_modules="$default_shared_modules vfs_gpfs"
1094 printf "%s" "checking for GPFS libs (with 3.2.1 PTF8 available as GPL)... "
1097 AC_TRY_LINK([#include <gpfs.h>],
1098 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1099 samba_cv_HAVE_GPFS=yes,
1100 samba_cv_HAVE_GPFS=no)
1101 echo $samba_cv_HAVE_GPFS
1102 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1103 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1104 default_shared_modules="$default_shared_modules vfs_gpfs"
1108 #############################################
1109 # check if building on Isilon OneFS
1110 printf "%s" "checking for Isilon OneFS... "
1112 LIBS="$LIBS -lisi_version"
1113 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1114 [get_isilon_copyright()],
1115 samba_cv_HAVE_ONEFS=yes,
1116 samba_cv_HAVE_ONEFS=no)
1117 echo $samba_cv_HAVE_ONEFS
1118 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1119 AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1120 default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1121 default_static_modules="$default_static_modules"
1122 ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1123 # Need to also add general libs for oplocks support
1124 save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1126 AC_SUBST(ONEFS_LIBS)
1129 # Note that all the libunwind symbols in the API are defined to internal
1130 # platform-specific version, so we must include libunwind.h before checking
1132 AC_MSG_CHECKING([for libunwind])
1135 UNWIND_ARCH="unknown"
1136 if test x"$UNAME_I" != x"unknown"; then
1137 UNWIND_ARCH="$UNAME_I"
1138 elif test x"$UNAME_M" != x"unknown"; then
1139 UNWIND_ARCH="$UNAME_M"
1140 elif test x"$UNAME_P" != x"unknown"; then
1141 UNWIND_ARCH="$UNAME_P"
1144 case "$UNWIND_ARCH" in
1146 # This probably won't link without
1147 # the platform-specific libunwind.
1148 LIBS="$LIBS -lunwind"
1151 # Add the platform-specific libunwind module.
1152 LIBS="$LIBS -lunwind -lunwind-x86"
1155 # Add the platform-specific libunwind module.
1156 # based on uname -i, uname -m or uname -p
1157 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1163 #ifdef HAVE_LIBUNWIND_H
1164 #include <libunwind.h>
1168 unw_context_t ctx; unw_cursor_t cur;
1169 char buf[256]; unw_word_t off;
1170 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1171 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1175 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1177 # If we have libunwind, test whether we also have libunwind-ptrace
1178 # which would let us unwind arbitrary processes.
1180 AC_CHECK_HEADERS(libunwind-ptrace.h)
1181 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1183 LIBUNWIND_PTRACE="-lunwind-ptrace";
1184 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1185 [Whether libunwind-ptrace.a is available.])
1187 [ LIBUNWIND_PTRACE="" ])
1196 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1197 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1198 AC_CHECK_HEADERS(sys/ptrace.h)
1199 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1202 #if HAVE_SYS_TYPES_H
1203 #include <sys/types.h>
1205 #if HAVE_SYS_PTRACE_H
1206 #include <sys/ptrace.h>
1210 pid_t me = (pid_t)-1;
1211 ptrace(PTRACE_ATTACH, me, 0, 0);
1212 ptrace(PTRACE_DETACH, me, 0, 0);
1217 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1218 [Whether the Linux ptrace(2) interface is available.])
1226 AC_SUBST(LIBUNWIND_PTRACE)
1228 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1229 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1230 AC_CHECK_FUNCS(__getcwd _getcwd)
1231 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1232 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1233 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1234 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1235 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1236 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1237 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1238 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1239 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1240 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1241 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1242 AC_CHECK_FUNCS(prctl)
1245 #ifdef HAVE_SYS_PRCTL_H
1246 #include <sys/prctl.h>
1249 [int i; i = prtcl(0); ],
1250 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1256 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1257 # glibc <= 2.3.2 has a broken getgrouplist
1260 #include <sys/utsname.h>
1262 /* glibc up to 2.3 has a broken getgrouplist */
1263 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1264 int libc_major = __GLIBC__;
1265 int libc_minor = __GLIBC_MINOR__;
1269 if ((libc_major == 2) && (libc_minor <= 3))
1274 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1275 if test x"$linux_getgrouplist_ok" = x"yes"; then
1276 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1280 AC_CHECK_FUNCS(getgrouplist)
1285 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1288 if test x$ac_cv_func_stat64 = xno ; then
1289 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1291 #if defined(HAVE_UNISTD_H)
1294 #include <sys/stat.h>
1295 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1296 AC_MSG_RESULT([$ac_cv_func_stat64])
1297 if test x$ac_cv_func_stat64 = xyes ; then
1298 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1302 if test x$ac_cv_func_lstat64 = xno ; then
1303 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1305 #if defined(HAVE_UNISTD_H)
1308 #include <sys/stat.h>
1309 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1310 AC_MSG_RESULT([$ac_cv_func_lstat64])
1311 if test x$ac_cv_func_lstat64 = xyes ; then
1312 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1316 if test x$ac_cv_func_fstat64 = xno ; then
1317 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1319 #if defined(HAVE_UNISTD_H)
1322 #include <sys/stat.h>
1323 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1324 AC_MSG_RESULT([$ac_cv_func_fstat64])
1325 if test x$ac_cv_func_fstat64 = xyes ; then
1326 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1330 #################################################
1331 # Check whether struct stat has timestamps with sub-second resolution.
1334 samba_cv_stat_hires=no
1335 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1336 [samba_cv_stat_hires=yes])
1337 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1338 [samba_cv_stat_hires=yes])
1339 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1340 [samba_cv_stat_hires=yes])
1341 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1342 [samba_cv_stat_hires=yes])
1343 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1344 [samba_cv_stat_hires=yes])
1346 if test x"$samba_cv_stat_hires" = x"yes" ; then
1347 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1348 [whether struct stat has sub-second timestamps])
1351 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1352 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1353 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1356 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1359 [#include <sys/stat.h>],
1361 int a = UF_DOS_ARCHIVE;
1362 int h = UF_DOS_HIDDEN;
1364 int s = UF_DOS_SYSTEM;
1365 int i = UF_DOS_NOINDEX;
1366 int f = UF_DOS_FLAGS;
1368 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1371 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1372 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1375 #####################################
1376 # needed for SRV lookups
1377 AC_CHECK_LIB(resolv, dn_expand)
1378 AC_CHECK_LIB(resolv, _dn_expand)
1379 AC_CHECK_LIB(resolv, __dn_expand)
1382 # Check for the functions putprpwnam, set_auth_parameters,
1383 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1384 # Needed for OSF1 and HPUX.
1387 AC_LIBTESTFUNC(security, putprpwnam)
1388 AC_LIBTESTFUNC(sec, putprpwnam)
1390 AC_LIBTESTFUNC(security, set_auth_parameters)
1391 AC_LIBTESTFUNC(sec, set_auth_parameters)
1393 # UnixWare 7.x has its getspnam in -lgen
1394 AC_LIBTESTFUNC(gen, getspnam)
1396 AC_LIBTESTFUNC(security, getspnam)
1397 AC_LIBTESTFUNC(sec, getspnam)
1399 AC_LIBTESTFUNC(security, bigcrypt)
1400 AC_LIBTESTFUNC(sec, bigcrypt)
1402 AC_LIBTESTFUNC(security, getprpwnam)
1403 AC_LIBTESTFUNC(sec, getprpwnam)
1405 AC_CHECK_FUNCS(strsignal)
1407 ############################################
1408 # Check if we have libattr
1411 AC_SEARCH_LIBS(getproplist, [proplist])
1412 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1413 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1414 AC_CHECK_FUNCS(sizeof_proplist_entry)
1417 AC_SEARCH_LIBS(getxattr, [attr])
1418 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1419 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1420 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1421 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1422 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1423 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1424 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1428 ########################################################
1429 # Check if attropen() is present if this is Solaris
1432 AC_CHECK_FUNCS(attropen)
1436 ########################################################
1437 # Do xattr functions take additional options like on Darwin?
1438 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1439 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1441 LIBS="$LIBS $ACL_LIBS"
1443 #include <sys/types.h>
1444 #if HAVE_ATTR_XATTR_H
1445 #include <attr/xattr.h>
1446 #elif HAVE_SYS_XATTR_H
1447 #include <sys/xattr.h>
1450 getxattr(0, 0, 0, 0, 0, 0);
1452 [smb_attr_cv_xattr_add_opt=yes],
1453 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1455 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1456 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1460 # Check if we have extattr
1462 *freebsd4* | *dragonfly* )
1463 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1466 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1467 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1468 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1469 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1479 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1481 if test "x$enable_pie" != xno
1483 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1485 cat > conftest.c <<EOF
1487 main () { return 0;}
1489 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1497 if test x"${samba_cv_fpie}" = x"yes"
1506 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1508 if test "x$enable_relro" != xno
1510 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1512 cat > conftest.c <<EOF
1514 main () { return 0;}
1516 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1524 if test x"${samba_cv_relro}" = x"yes"
1526 RELRO_LDFLAGS="-Wl,-z,relro"
1534 # Assume non-shared by default and override below
1537 # these are the defaults, good for lots of systems
1542 SHLD="\${CC} \${CFLAGS}"
1543 PICFLAG="${PIE_CFLAGS}"
1547 # this bit needs to be modified for each OS that supports share libs
1548 # You need to specify how to create a shared library and
1549 # how to compile C code to produce PIC object files
1551 AC_MSG_CHECKING([ability to build shared libraries])
1553 # and these are for particular systems
1555 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1556 case "$host_os" in *linux*)
1557 AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1560 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1561 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1563 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1565 DYNEXP="-Wl,--export-dynamic"
1567 SONAMEFLAG="-Wl,-soname="
1568 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1570 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1574 if test "${GCC}" = "yes"; then
1576 SONAMEFLAG="-Wl,-soname="
1577 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1582 ## ${CFLAGS} added for building 64-bit shared
1583 ## libs using Sun's Compiler
1584 LDSHFLAGS="-G \${CFLAGS}"
1586 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1587 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1589 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1592 SONAMEFLAG="-Wl,-h,"
1593 PICFLAG="-KPIC" # Is this correct for SunOS
1594 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1595 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1597 *netbsd* | *freebsd* | *dragonfly* )
1600 DYNEXP="-Wl,--export-dynamic"
1601 SONAMEFLAG="-Wl,-soname,"
1602 PICFLAG="-fPIC -DPIC"
1603 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1604 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1606 *openbsd*) BLDSHARED="true"
1608 DYNEXP="-Wl,-Bdynamic"
1609 SONAMEFLAG="-Wl,-soname,"
1611 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1612 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1614 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1616 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1620 LDSHFLAGS="-set_version sgi1.0 -shared"
1621 SONAMEFLAG="-soname "
1623 if test "${GCC}" = "yes"; then
1628 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1630 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1632 # use expfull to export underscored symbols
1633 # add rtl to remove /lib/crt0.o warning
1634 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1635 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1637 # as AIX code is always position independent...
1638 # .po will just create compile warnings, use po.o:
1639 if test "${GCC}" != "yes"; then
1640 ## for funky AIX compiler using strncpy()
1641 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1644 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1645 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1646 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1648 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1649 # Use special PIC flags for the native HP-UX compiler.
1652 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1653 SONAMEFLAG="-Wl,+h "
1655 if test "${GCC}" = "yes"; then
1658 PICFLAG="+z +ESnolit"
1660 if test "$host_cpu" = "ia64"; then
1663 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1666 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1668 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1669 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1671 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1672 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1674 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1677 SONAMEFLAG="-Wl,-soname,"
1679 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1680 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1682 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1683 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1685 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1688 SONAMEFLAG="-Wl,-soname,"
1690 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1692 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1693 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1695 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1696 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1698 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1700 *-univel-*) if [ test "$GCC" != yes ]; then
1701 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1706 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1708 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1711 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1712 if [ test "$GCC" != yes ]; then
1713 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1716 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1718 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1723 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1725 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1726 CFLAGS="$CFLAGS -fno-common"
1729 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1731 # Since gcc doesn't fail on unrecognised options, the
1732 # PIE test incorrectly succeeds. Darwin gcc does not
1733 # actually support the PIE stuff.
1736 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1740 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1744 if test "$enable_shared" != "yes"; then
1748 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1749 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1752 if test x"$BLDSHARED" = x"true" ; then
1753 LDFLAGS="$LDFLAGS -L./bin"
1756 AC_MSG_RESULT($BLDSHARED)
1758 if test x"${ac_cv_prog_gnu_ld}" = x"yes"; then
1759 saved_ldflags="$LDFLAGS"
1760 AC_MSG_CHECKING([if --as-needed works])
1761 LDFLAGS="--as-needed $saved_ldflags"
1763 [AC_MSG_RESULT([yes])
1764 LD_AS_NEEDED_FLAG=--as-needed],
1765 AC_MSG_RESULT([no]))
1766 AC_MSG_CHECKING([if -Wl,--as-needed works])
1767 LDFLAGS="-Wl,--as-needed $saved_ldflags"
1769 [AC_MSG_RESULT([yes])
1770 LD_AS_NEEDED_FLAG=-Wl,--as-needed],
1771 AC_MSG_RESULT([no]))
1772 LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1775 AC_MSG_CHECKING([LDFLAGS])
1776 AC_MSG_RESULT([$LDFLAGS])
1777 AC_MSG_CHECKING([DYNEXP])
1778 AC_MSG_RESULT([$DYNEXP])
1780 #######################################################
1781 # test whether building a shared library actually works
1782 if test $BLDSHARED = true; then
1784 AC_MSG_CHECKING([SHLD])
1785 AC_MSG_RESULT([$SHLD])
1786 AC_MSG_CHECKING([LDSHFLAGS])
1787 AC_MSG_RESULT([$LDSHFLAGS])
1789 AC_MSG_CHECKING([SHLIBEXT])
1790 AC_MSG_RESULT([$SHLIBEXT])
1791 AC_MSG_CHECKING([SONAMEFLAG])
1792 AC_MSG_RESULT([$SONAMEFLAG])
1794 AC_MSG_CHECKING([PICFLAG])
1795 AC_MSG_RESULT([$PICFLAG])
1797 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1798 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1800 AC_CACHE_CHECK([whether building shared libraries actually works],
1801 [ac_cv_shlib_works],[
1802 # try building a trivial shared library
1803 ac_cv_shlib_works=no
1804 # The $SHLD and $LDSHFLAGS variables may contain references to other
1805 # variables so they need to be eval'ed.
1806 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1807 shlib.o ${srcdir-.}/../tests/shlib.c && \
1808 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1809 shlib.o && ac_cv_shlib_works=yes
1810 rm -f "shlib.$SHLIBEXT" shlib.o
1813 if test $ac_cv_shlib_works = no; then
1818 if test x"$BLDSHARED" != x"true"; then
1819 LDSHFLAGS="shared-libraries-disabled"
1820 SONAMEFLAG="shared-libraries-disabled"
1821 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1822 SHLD="shared-libraries-disabled"
1823 PICFLAG="${PIE_CFLAGS}"
1824 SHLIBEXT="shared_libraries_disabled"
1825 merged_build_possible=no
1828 AC_MSG_CHECKING([used PICFLAG])
1829 AC_MSG_RESULT([$PICFLAG])
1831 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1833 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1837 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1838 AC_TRY_RUN([#include <stdio.h>
1839 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1840 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1841 if test x"$samba_cv_have_longlong" = x"yes"; then
1842 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1843 AC_CHECK_TYPE(intptr_t, unsigned long long)
1845 AC_CHECK_TYPE(intptr_t, unsigned long)
1849 # Check if the compiler supports the LL prefix on long long integers.
1852 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1853 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1854 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1855 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1856 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1860 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1861 AC_TRY_RUN([#include <time.h>
1862 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1863 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1864 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1865 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1868 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1869 AC_TRY_RUN([#include <stdio.h>
1870 #include <sys/stat.h>
1871 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1872 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1873 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1874 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1877 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1879 #if defined(HAVE_UNISTD_H)
1883 #include <sys/stat.h>
1884 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1885 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1886 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1887 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1890 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1892 #if defined(HAVE_UNISTD_H)
1896 #include <sys/stat.h>
1897 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1898 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1899 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1900 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1903 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1905 #if defined(HAVE_UNISTD_H)
1909 #include <sys/stat.h>
1910 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1911 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1912 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1913 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1916 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1918 #if defined(HAVE_UNISTD_H)
1922 #include <sys/stat.h>
1923 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1924 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1925 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1926 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1929 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1931 #if defined(HAVE_UNISTD_H)
1935 #include <sys/stat.h>
1936 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1937 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1938 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1939 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1942 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1944 #if defined(HAVE_UNISTD_H)
1947 #include <sys/types.h>
1948 #include <dirent.h>],
1950 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1951 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1952 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1955 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1957 #if defined(HAVE_UNISTD_H)
1960 #include <sys/types.h>
1961 #include <dirent.h>],
1962 [struct dirent64 de;],
1963 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1964 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1965 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1968 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1970 #if defined(HAVE_UNISTD_H)
1973 #include <sys/types.h>
1974 main() { dev_t dev; int i = major(dev); return 0; }],
1975 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1976 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1977 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1980 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1982 #if defined(HAVE_UNISTD_H)
1985 #include <sys/types.h>
1986 main() { dev_t dev; int i = minor(dev); return 0; }],
1987 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1988 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1989 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1992 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1994 #if defined(HAVE_UNISTD_H)
1997 #include <sys/types.h>
1998 main() { dev_t dev = makedev(1,2); return 0; }],
1999 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2000 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2001 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2004 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2005 AC_TRY_RUN([#include <stdio.h>
2006 main() { char c; c=250; exit((c > 0)?0:1); }],
2007 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2008 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2009 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2012 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2013 AC_TRY_COMPILE([#include <sys/types.h>
2015 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2016 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2017 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2018 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2021 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2022 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2023 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2024 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2025 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2028 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2030 #include <sys/time.h>
2031 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2032 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2033 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2034 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2035 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2038 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2040 # On some systems (eg. Linux) librt can pull in libpthread. We
2041 # don't want this to happen because libpthreads changes signal delivery
2042 # semantics in ways we are not prepared for. This breaks Linux oplocks
2043 # which rely on signals.
2045 AC_LIBTESTFUNC(rt, clock_gettime,
2047 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2048 [Whether clock_gettime is available])
2049 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2050 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2051 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2056 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2057 AC_TRY_RUN([#include <sys/types.h>
2059 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2060 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2061 di->d_name[0] == 0) exit(0); exit(1);} ],
2062 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2063 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2064 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2067 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2068 AC_TRY_COMPILE([#include <sys/types.h>
2069 #include <utime.h>],
2070 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2071 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2072 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2073 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2077 # Check utmp details, but only if our OS offers utmp.h
2078 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2079 dnl utmp and utmpx come in many flavours
2080 dnl We need to check for many of them
2081 dnl But we don't need to do each and every one, because our code uses
2082 dnl mostly just the utmp (not utmpx) fields.
2084 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2086 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2087 AC_TRY_COMPILE([#include <sys/types.h>
2089 [struct utmp ut; ut.ut_name[0] = 'a';],
2090 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2091 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2092 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2095 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2096 AC_TRY_COMPILE([#include <sys/types.h>
2098 [struct utmp ut; ut.ut_user[0] = 'a';],
2099 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2100 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2101 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2104 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2105 AC_TRY_COMPILE([#include <sys/types.h>
2107 [struct utmp ut; ut.ut_id[0] = 'a';],
2108 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2109 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2110 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2113 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2114 AC_TRY_COMPILE([#include <sys/types.h>
2116 [struct utmp ut; ut.ut_host[0] = 'a';],
2117 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2118 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2119 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2122 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2123 AC_TRY_COMPILE([#include <sys/types.h>
2125 [struct utmp ut; time_t t; ut.ut_time = t;],
2126 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2127 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2128 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2131 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2132 AC_TRY_COMPILE([#include <sys/types.h>
2134 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2135 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2136 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2137 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2140 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2141 AC_TRY_COMPILE([#include <sys/types.h>
2143 [struct utmp ut; ut.ut_type = 0;],
2144 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2145 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2146 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2149 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2150 AC_TRY_COMPILE([#include <sys/types.h>
2152 [struct utmp ut; ut.ut_pid = 0;],
2153 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2154 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2155 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2158 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2159 AC_TRY_COMPILE([#include <sys/types.h>
2161 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2162 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2163 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2164 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2167 dnl Look for the IPv6 varient by preference. Many systems have both.
2168 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2169 AC_TRY_COMPILE([#include <sys/types.h>
2171 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2172 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2173 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2174 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2177 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2178 AC_TRY_COMPILE([#include <sys/types.h>
2180 [struct utmp ut; ut.ut_addr = 0;],
2181 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2182 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2183 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2186 if test x$ac_cv_func_pututline = xyes ; then
2187 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2188 AC_TRY_COMPILE([#include <sys/types.h>
2190 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2191 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2192 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2193 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2197 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2198 AC_TRY_COMPILE([#include <sys/types.h>
2199 #include <utmpx.h>],
2200 [struct utmpx ux; ux.ut_syslen = 0;],
2201 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2202 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2203 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2210 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2211 AC_ARG_WITH(libiconv,
2212 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2214 if test "$withval" = "no" ; then
2215 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2217 if test "$withval" != "yes" ; then
2219 ICONV_LOOK_DIRS="$withval"
2224 for i in $ICONV_LOOK_DIRS ; do
2227 save_LDFLAGS="$LDFLAGS"
2228 save_CPPFLAGS="$CPPFLAGS"
2230 iconv_current_LIBS=""
2231 iconv_current_LDFLAGS=""
2232 iconv_current_CPPFLAGS=""
2237 # This is here to handle -withval stuff for --with-libiconv
2238 # Perhaps we should always add a -L
2239 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2241 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2242 # installation paths. This gets a little tricky since we might have iconv
2243 # in both libiconv and in libc. In this case the jm_ICONV test will always
2244 # succeed when the header is found. To counter this, make sure the
2245 # library directory is there and check the ABI directory first (which
2246 # should be harmless on other systems, but causes tons of linker warnings on
2247 # 64bit Ubuntu systems).
2248 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2249 # installed, I've decided to fix the linker warnings.
2251 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2252 for l in "lib" "lib32" "lib/hpux32"; do
2253 if test -d "$i/$l" ; then
2254 LDFLAGS="$save_LDFLAGS -L$i/$l"
2256 export LDFLAGS LIBS CPPFLAGS
2257 # Try to find iconv(3)
2259 if test x"$ICONV_FOUND" = "xyes" ; then
2266 if test x"$ICONV_FOUND" = "xyes" ; then
2267 iconv_current_LDFLAGS="-L$i/$libext"
2268 iconv_current_CPPFLAGS="-I$i/include"
2270 if test x"$jm_cv_lib_iconv" != x; then
2271 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2273 # We found iconv in libc.
2274 iconv_current_LIBS=""
2279 if test x"$ICONV_FOUND" = "xyes" ; then
2281 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2282 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2283 LIBS="$save_LIBS $iconv_current_LIBS"
2284 export LDFLAGS LIBS CPPFLAGS
2286 default_dos_charset=no
2287 default_display_charset=no
2288 default_unix_charset=no
2290 # check for default dos charset name
2291 for j in CP850 IBM850 ; do
2293 default_dos_charset="$ICONV_CHARSET"
2294 if test x"$default_dos_charset" = x"$j"; then
2299 # check for default display charset name
2300 for j in ASCII 646 ; do
2302 default_display_charset="$ICONV_CHARSET"
2303 if test x"$default_display_charset" = x"$j"; then
2308 # check for default unix charset name
2309 for j in UTF-8 UTF8 ; do
2311 default_unix_charset="$ICONV_CHARSET"
2312 if test x"$default_unix_charset" = x"$j"; then
2317 if test "$default_dos_charset" != "no" -a \
2318 "$default_dos_charset" != "cross" -a \
2319 "$default_display_charset" != "no" -a \
2320 "$default_display_charset" != "cross" -a \
2321 "$default_unix_charset" != "no" -a \
2322 "$default_unix_charset" != "cross"
2324 samba_cv_HAVE_NATIVE_ICONV=yes
2326 if test "$default_dos_charset" = "cross" -o \
2327 "$default_display_charset" = "cross" -o \
2328 "$default_unix_charset" = "cross"
2330 samba_cv_HAVE_NATIVE_ICONV=cross
2332 samba_cv_HAVE_NATIVE_ICONV=no
2336 # At this point, we have a libiconv candidate. We know that
2337 # we have the right headers and libraries, but we don't know
2338 # whether it does the conversions we want. We can't test this
2339 # because we are cross-compiling. This is not necessarily a big
2340 # deal, since we can't guarantee that the results we get now will
2341 # match the results we get at runtime anyway.
2342 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2343 default_dos_charset="CP850"
2344 default_display_charset="ASCII"
2345 default_unix_charset="UTF-8"
2346 samba_cv_HAVE_NATIVE_ICONV=yes
2347 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2348 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2351 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2353 CPPFLAGS=$save_CPPFLAGS
2354 LDFLAGS=$save_LDFLAGS
2357 if test x"$iconv_current_LIBS" != x; then
2358 LIBS="$LIBS $iconv_current_LIBS"
2361 # Add the flags we need to CPPFLAGS and LDFLAGS
2362 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2363 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2365 # Turn the #defines into string literals
2366 default_dos_charset="\"$default_dos_charset\""
2367 default_display_charset="\"$default_display_charset\""
2368 default_unix_charset="\"$default_unix_charset\""
2370 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2371 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2372 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2373 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2378 # We didn't find a working iconv, so keep going
2381 # We only need to clean these up here for the next pass through the loop
2382 CPPFLAGS=$save_CPPFLAGS
2383 LDFLAGS=$save_LDFLAGS
2385 export LDFLAGS LIBS CPPFLAGS
2390 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2391 AC_MSG_WARN([Sufficient support for iconv function was not found.
2392 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2393 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2394 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2395 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2399 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2401 #include <sys/types.h>
2404 #define F_GETLEASE 1025
2407 int fd = open("/dev/null", O_RDONLY);
2408 return fcntl(fd, F_GETLEASE, 0) == -1;
2411 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2412 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2413 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2416 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2418 #include <sys/types.h>
2422 #define F_NOTIFY 1026
2425 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2428 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2429 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2430 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2433 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2434 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2435 AC_CHECK_FUNCS(inotify_init)
2436 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2438 samba_cv_HAVE_INOTIFY=yes,
2439 samba_cv_HAVE_INOTIFY=no,
2440 samba_cv_HAVE_INOTIFY=cross)
2442 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2443 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2446 #################################################
2447 # Check if FAM notifications are available. For FAM info, see
2448 # http://oss.sgi.com/projects/fam/
2449 # http://savannah.nongnu.org/projects/fam/
2451 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2453 if test x$enable_fam != xno; then
2454 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2455 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2456 # On IRIX, libfam requires libC, but other FAM implementations
2457 # might not need it.
2458 AC_CHECK_LIB(fam, FAMOpen2,
2459 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2460 [samba_cv_HAVE_LIBFAM=no])
2462 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2464 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2465 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2466 [samba_cv_HAVE_LIBFAM=no])
2467 unset samba_fam_xtra
2471 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2472 default_shared_modules="$default_shared_modules vfs_notify_fam"
2473 AC_TRY_COMPILE([#include <fam.h>],
2474 [enum FAMCodes code = FAMChanged;],
2475 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2476 [Whether fam.h contains a typedef for enum FAMCodes]),
2480 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2481 AC_MSG_ERROR(FAM support requested but FAM library not available )
2485 AC_SUBST(SMB_FAM_LIBS)
2487 #################################################
2488 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2490 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2492 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2493 # Theoretically it should work with AIX JFS2 too but this needs testing
2494 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2495 default_shared_modules="$default_shared_modules vfs_tsmsm"
2498 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2500 #include <sys/types.h>
2503 #include <sys/file.h>
2505 #define LOCK_MAND 32
2506 #define LOCK_READ 64
2509 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2512 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2513 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2514 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2518 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2519 AC_TRY_COMPILE([#include <sys/types.h>
2520 #include <fcntl.h>],
2521 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2522 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2523 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2524 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2527 #################################################
2528 # Check for POSIX capability support
2530 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2531 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2534 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2537 AC_LIBTESTFUNC(cap, cap_get_proc)
2539 AC_CACHE_CHECK([for POSIX capabilities],
2540 samba_cv_HAVE_POSIX_CAPABILITIES,
2543 #include <sys/types.h>
2544 #include <sys/capability.h>
2547 cap_value_t vals[1];
2548 if (!(cap = cap_get_proc()))
2550 vals[0] = CAP_CHOWN;
2551 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2555 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2556 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2557 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2560 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2561 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2562 [Whether POSIX capabilities are available])
2570 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2571 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2574 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2575 AC_TRY_COMPILE([#include <sys/types.h>
2576 #if defined(HAVE_RPC_RPC_H)
2577 #include <rpc/rpc.h>
2580 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2581 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2582 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2585 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2586 AC_TRY_COMPILE([#include <sys/types.h>
2587 #if defined(HAVE_RPC_RPC_H)
2588 #include <rpc/rpc.h>
2591 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2592 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2593 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2596 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2597 AC_TRY_COMPILE([#include <sys/types.h>
2598 #if defined(HAVE_RPC_RPC_H)
2599 #include <rpc/rpc.h>
2602 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2603 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2604 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2607 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2608 AC_TRY_COMPILE([#include <sys/types.h>
2609 #if defined(HAVE_RPC_RPC_H)
2610 #include <rpc/rpc.h>
2613 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2614 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2615 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2619 dnl Some systems (SCO) have a problem including
2620 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2621 dnl as a #define in <prot.h> and as part of an enum
2625 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2626 AC_TRY_COMPILE([#include <sys/types.h>
2627 #ifdef HAVE_SYS_SECURITY_H
2628 #include <sys/security.h>
2630 #endif /* HAVE_SYS_SECURITY_H */
2631 #if defined(HAVE_RPC_RPC_H)
2632 #include <rpc/rpc.h>
2635 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2636 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2637 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2640 AC_MSG_CHECKING([for test routines])
2641 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2643 AC_MSG_ERROR([cant find test code. Aborting config]),
2644 AC_MSG_WARN([cannot run when cross-compiling]))
2646 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2647 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2648 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2649 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2650 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2653 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2654 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2655 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2656 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2657 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2660 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2661 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2662 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2663 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2664 AC_CHECK_FUNCS(getpagesize)
2666 ################################################
2667 # look for a method of setting the effective uid
2670 if test $seteuid = no; then
2671 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2673 #define AUTOCONF_TEST 1
2674 #define USE_SETREUID 1
2675 #include "confdefs.h"
2676 #include "${srcdir-.}/lib/util_sec.c"],
2677 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2678 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2679 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2683 # we check for setresuid second as it conflicts with AIO on Linux.
2684 # see http://samba.org/~tridge/junkcode/aio_uid.c
2685 if test $seteuid = no; then
2686 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2688 #define AUTOCONF_TEST 1
2689 #define USE_SETRESUID 1
2690 #include "confdefs.h"
2691 #include "${srcdir-.}/lib/util_sec.c"],
2692 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2693 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2694 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2698 if test $seteuid = no; then
2699 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2701 #define AUTOCONF_TEST 1
2702 #define USE_SETEUID 1
2703 #include "confdefs.h"
2704 #include "${srcdir-.}/lib/util_sec.c"],
2705 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2706 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2707 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2711 if test $seteuid = no; then
2712 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2714 #define AUTOCONF_TEST 1
2715 #define USE_SETUIDX 1
2716 #include "confdefs.h"
2717 #include "${srcdir-.}/lib/util_sec.c"],
2718 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2719 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2720 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2724 AC_CACHE_CHECK([for the Darwin initgroups system call],
2725 samba_cv_DARWIN_INITGROUPS,
2727 #include <sys/syscall.h>
2730 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2731 samba_cv_DARWIN_INITGROUPS=yes,
2732 samba_cv_DARWIN_INITGROUPS=no)
2735 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2736 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2737 [Whether to use the Darwin-specific initgroups system call])
2740 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2741 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2742 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2743 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2744 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2747 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2748 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2749 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2750 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2751 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2756 dnl Don't check for 64 bit fcntl locking if we know that the
2757 dnl glibc2.1 broken check has succeeded.
2760 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2762 #if defined(HAVE_UNISTD_H)
2772 #ifdef HAVE_SYS_FCNTL_H
2773 #include <sys/fcntl.h>
2775 main() { struct flock64 fl64;
2776 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2782 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2784 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2785 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2789 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2790 AC_TRY_COMPILE([#include <sys/types.h>
2791 #include <sys/stat.h>
2792 #include <unistd.h>],
2793 [struct stat st; st.st_blocks = 0;],
2794 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2795 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2796 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2799 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
2801 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2802 AC_TRY_COMPILE([#include <sys/types.h>
2803 #include <sys/stat.h>
2804 #include <unistd.h>],
2805 [struct stat st; st.st_blksize = 0;],
2806 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2807 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2808 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2811 AC_CACHE_CHECK([for st_flags in struct stat],
2812 samba_cv_HAVE_STAT_ST_FLAGS,
2814 AC_TRY_COMPILE([#include <sys/types.h>
2815 #include <sys/stat.h>
2816 #include <unistd.h>],
2817 [struct stat st; st.st_flags = 0;],
2818 samba_cv_HAVE_STAT_ST_FLAGS=yes,
2819 samba_cv_HAVE_STAT_ST_FLAGS=no,
2820 samba_cv_HAVE_STAT_ST_FLAGS=cross)
2823 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2824 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2825 [Whether the stat struct has a st_flags member])
2828 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2830 #include <sys/types.h>
2831 #include <sys/acl.h>
2832 #if defined(HAVE_RPCSVC_NIS_H)
2833 #include <rpcsvc/nis.h>
2836 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2837 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2838 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2841 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2847 void exit_on_core(int ignored) {
2853 signal(SIGSEGV, exit_on_core);
2854 newpath = realpath("/tmp", NULL);
2855 exit((newpath != NULL) ? 0 : 1);
2858 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2859 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2860 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2863 #################################################
2864 # check for AFS clear-text auth support
2865 samba_cv_WITH_AFS=no
2866 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2868 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2869 [ case "$withval" in
2871 AC_MSG_RESULT($withval)
2872 samba_cv_WITH_AFS=$withval
2881 ####################################################
2882 # check for Linux-specific AFS fake-kaserver support
2883 samba_cv_WITH_FAKE_KASERVER=no
2884 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2885 AC_ARG_WITH(fake-kaserver,
2886 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2887 [ case "$withval" in
2889 AC_MSG_RESULT($withval)
2890 samba_cv_WITH_FAKE_KASERVER=$withval
2899 #################################################
2900 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2901 if test x"$samba_cv_WITH_AFS" != x"no" ||
2902 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2904 # see if this box has the OpenSSL DES libraries
2905 AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
2907 # see if this box has the afs-headers in /usr/include/afs
2908 AC_MSG_CHECKING(for /usr/include/afs)
2909 if test -d /usr/include/afs; then
2917 AC_CHECK_HEADERS(afs.h afs/afs.h)
2918 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2919 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2920 test x"$samba_cv_WITH_AFS" = x"auto"; then
2921 AC_MSG_WARN([AFS cannot be supported without afs.h])
2923 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2926 have_afs_headers=yes
2930 FAKE_KASERVER_OBJ=""
2931 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2932 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2933 FAKE_KASERVER_OBJ="utils/net_afs.o"
2935 AC_SUBST(FAKE_KASERVER_OBJ)
2937 #################################################
2938 # check whether to compile AFS/NT ACL mapping module
2939 samba_cv_WITH_VFS_AFSACL=no
2940 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2941 AC_ARG_WITH(vfs-afsacl,
2942 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2943 [ case "$withval" in
2945 AC_MSG_RESULT($withval)
2946 samba_cv_WITH_VFS_AFSACL=yes
2955 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2956 default_shared_modules="$default_shared_modules vfs_afsacl"
2959 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2960 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2963 #################################################
2964 # check for the DFS clear-text auth system
2965 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2967 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2968 [ case "$withval" in
2971 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2980 ########################################################
2981 # Compile with LDAP support?
2983 with_ldap_support=auto
2984 AC_MSG_CHECKING([for LDAP support])
2987 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2988 [ case "$withval" in
2990 with_ldap_support=$withval
2994 AC_MSG_RESULT($with_ldap_support)
2999 AC_SUBST(SMBLDAPUTIL)
3003 if test x"$with_ldap_support" != x"no"; then
3005 ##################################################################
3006 # first test for ldap.h and lber.h
3007 # (ldap.h is required for this test)
3008 AC_CHECK_HEADERS(ldap.h lber.h)
3010 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3011 if test x"$with_ldap_support" = x"yes"; then
3012 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3014 AC_MSG_WARN(ldap.h is needed for LDAP support)
3017 with_ldap_support=no
3020 ##################################################################
3021 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3022 # unsigned int in include/includes.h
3025 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3026 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3027 with_ldap_support=yes
3030 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3031 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3032 if test x"$with_ldap_support" = x"yes"; then
3033 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3035 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3037 with_ldap_support=no
3043 if test x"$with_ldap_support" != x"no"; then
3046 ##################################################################
3047 # we might need the lber lib on some systems. To avoid link errors
3048 # this test must be before the libldap test
3049 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3051 ########################################################
3052 # If ber_sockbuf_add_io() is available we can add
3053 # SASL wrapping hooks
3054 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3056 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3057 AC_TRY_COMPILE([#include <ldap.h>],
3058 [int val = LDAP_OPT_SOCKBUF;],
3059 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3060 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3062 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3063 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3064 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3067 #######################################################
3068 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3069 # ldap logging and print it out in the samba logs
3070 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3071 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3072 [AC_TRY_COMPILE([#include <lber.h>],
3073 [int val = LBER_OPT_LOG_PRINT_FN;],
3074 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3075 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3077 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3078 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3079 [Support for LDAP/LBER logging interception])
3082 ########################################################
3083 # now see if we can find the ldap libs in standard paths
3084 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3086 ########################################################
3087 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3088 # Check found in pam_ldap 145.
3089 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3091 LIBS="$LIBS $LDAP_LIBS"
3092 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3096 [ldap_set_rebind_proc(0, 0, 0);],
3097 [smb_ldap_cv_ldap_set_rebind_proc=3],
3098 [smb_ldap_cv_ldap_set_rebind_proc=2]
3102 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3104 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3106 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3107 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3108 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3109 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3110 default_shared_modules="$default_shared_modules";
3111 SMBLDAP="lib/smbldap.o"
3112 SMBLDAPUTIL="lib/smbldap_util.o"
3113 with_ldap_support=yes
3114 AC_MSG_CHECKING(whether LDAP support is used)
3117 if test x"$with_ldap_support" = x"yes"; then
3118 AC_MSG_ERROR(libldap is needed for LDAP support)
3120 AC_MSG_WARN(libldap is needed for LDAP support)
3124 with_ldap_support=no
3130 #################################################
3131 # active directory support
3133 with_ads_support=auto
3134 AC_MSG_CHECKING([for Active Directory and krb5 support])
3137 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3138 [ case "$withval" in
3140 with_ads_support="$withval"
3144 AC_MSG_RESULT($with_ads_support)
3149 if test x"$with_ldap_support" != x"yes"; then
3151 if test x"$with_ads_support" = x"yes"; then
3152 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3153 elif test x"$with_ads_support" = x"auto"; then
3154 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3160 # Check to see whether there is enough LDAP functionality to be able
3161 # to build AD support.
3163 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3166 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3168 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3169 if test x"$with_ads_support" = x"yes"; then
3170 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3171 elif test x"$with_ads_support" = x"auto"; then
3172 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3178 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3180 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3181 if test x"$with_ads_support" = x"yes"; then
3182 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3183 elif test x"$with_ads_support" = x"auto"; then
3184 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3192 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3194 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3195 if test x"$with_ads_support" = x"yes"; then
3196 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3197 elif test x"$with_ads_support" = x"auto"; then
3198 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3205 if test x"$with_ads_support" != x"no"; then
3207 # Do no harm to the values of CFLAGS and LIBS while testing for
3210 if test x$FOUND_KRB5 = x"no"; then
3211 #################################################
3212 # check for location of Kerberos 5 install
3213 AC_MSG_CHECKING(for kerberos 5 install path)
3215 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3216 [ case "$withval" in
3218 AC_MSG_RESULT(no krb5-path given)
3225 AC_MSG_RESULT($withval)
3226 KRB5_CFLAGS="-I$withval/include"
3227 KRB5_CPPFLAGS="-I$withval/include"
3228 KRB5_LDFLAGS="-L$withval/lib"
3230 if test -x "$withval/bin/krb5-config"; then
3231 KRB5CONFIG=$withval/bin/krb5-config
3235 AC_MSG_RESULT(no krb5-path given)
3239 #################################################
3240 # check for krb5-config from recent MIT and Heimdal kerberos 5
3241 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3242 AC_MSG_CHECKING(for working krb5-config)
3243 if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3244 ac_save_CFLAGS=$CFLAGS
3245 CFLAGS="";export CFLAGS
3246 ac_save_LDFLAGS=$LDFLAGS
3247 LDFLAGS="";export LDFLAGS
3248 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3249 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3250 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3251 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3252 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3253 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3257 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3260 if test x$FOUND_KRB5 = x"no"; then
3261 #################################################
3262 # see if this box has the SuSE location for the heimdal krb implementation
3263 AC_MSG_CHECKING(for /usr/include/heimdal)
3264 if test -d /usr/include/heimdal; then
3265 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3266 KRB5_CFLAGS="-I/usr/include/heimdal"
3267 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3268 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3272 KRB5_CFLAGS="-I/usr/include/heimdal"
3273 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3282 if test x$FOUND_KRB5 = x"no"; then
3283 #################################################
3284 # see if this box has the RedHat location for kerberos
3285 AC_MSG_CHECKING(for /usr/kerberos)
3286 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3287 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3288 KRB5_CFLAGS="-I/usr/kerberos/include"
3289 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3297 if test x$FOUND_KRB5 = x"no"; then
3298 #################################################
3299 # see if this box has the OpenBSD location for heimdal krb5
3300 AC_MSG_CHECKING(for /usr/include/kerberosV)
3301 if test -d /usr/include/kerberosV; then
3302 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3303 KRB5_LIBS="-lcrypto"
3311 ac_save_CFLAGS=$CFLAGS
3312 ac_save_CPPFLAGS=$CPPFLAGS
3313 ac_save_LDFLAGS=$LDFLAGS
3315 # remove needless evil rpath stuff as early as possible:
3316 LIB_REMOVE_USR_LIB(KRB5_LIBS)
3317 LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3318 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3319 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3320 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3322 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3324 # now check for krb5.h. Some systems have the libraries without the headers!
3325 # note that this check is done here to allow for different kerberos
3327 AC_CHECK_HEADERS(krb5.h)
3329 if test x"$ac_cv_header_krb5_h" = x"no"; then
3331 # Give a warning if AD support was not explicitly requested,
3332 # i.e with_ads_support = auto, otherwise die with an error.
3334 if test x"$with_ads_support" = x"yes"; then
3335 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3337 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3340 # Turn off AD support and restore CFLAGS and LIBS variables
3342 with_ads_support="no"
3344 CFLAGS=$ac_save_CFLAGS
3345 CPPFLAGS=$ac_save_CPPFLAGS
3346 LDFLAGS=$ac_save_LDFLAGS
3348 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3349 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3350 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3351 if test x"$BLDSHARED" = x"true" ; then
3352 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3357 # Now we have determined whether we really want ADS support
3359 if test x"$with_ads_support" != x"no"; then
3364 # now check for gssapi headers. This is also done here to allow for
3365 # different kerberos include paths
3366 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3368 ##################################################################
3369 # we might need the k5crypto and com_err libraries on some systems
3370 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3371 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3374 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3375 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3376 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3378 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3379 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3381 ########################################################
3382 # now see if we can find the krb5 libs in standard paths
3383 # or as specified above
3384 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3385 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3387 ########################################################
3388 # now see if we can find the gssapi libs in standard paths
3389 if test x"$have_gssapi" != x"yes"; then
3390 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3393 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3394 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3395 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3396 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3397 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3398 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3399 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3400 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3401 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3402 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3403 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3404 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3405 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3406 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3407 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3408 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3409 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3410 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3411 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3412 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3413 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3414 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3415 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3416 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3417 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3418 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3419 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3420 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3421 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3422 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3423 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3424 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3425 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3426 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3427 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3428 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3429 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3430 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3431 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3432 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3433 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3434 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3435 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3437 # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3438 # but does have the symbol
3439 AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3441 LIBS="$KRB5_LIBS $LIBS"
3443 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3444 smb_krb5_cv_ticket_has_keyinfo,
3453 krb5_enctype enctype;
3455 enctype = ticket.enc_part.enctype;
3456 kvno = ticket.enc_part.kvno;
3458 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3459 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3462 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3463 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3464 [Whether the krb5_ticket structure contains the kvno and enctype])
3467 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3468 smb_krb5_cv_creds_opt_free_context,
3474 krb5_get_init_creds_opt *opt = NULL;
3475 krb5_get_init_creds_opt_free(ctx, opt);
3477 [smb_krb5_cv_creds_opt_free_context=yes],
3478 [smb_krb5_cv_creds_opt_free_context=no]
3482 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3483 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3484 [Whether krb5_get_init_creds_opt_free takes a context argument])
3487 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3490 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3491 [smb_krb5_cv_verify_checksum=7],
3492 [smb_krb5_cv_verify_checksum=6],
3495 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3497 AC_CACHE_CHECK([for checksum in krb5_checksum],
3498 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3499 AC_TRY_COMPILE([#include <krb5.h>],
3500 [krb5_checksum cksum; cksum.checksum.length = 0;],
3501 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3502 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3504 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3505 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3506 [Whether the krb5_checksum struct has a checksum property])
3509 AC_CACHE_CHECK([for etype in EncryptedData],
3510 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3511 AC_TRY_COMPILE([#include <krb5.h>],
3512 [EncryptedData edata; edata.etype = 0;],
3513 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3514 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3516 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3517 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3518 [Whether the EncryptedData struct has a etype property])
3521 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3522 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3523 AC_TRY_COMPILE([#include <krb5.h>],
3524 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3525 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3526 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3528 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3529 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3530 [Whether the krb5_ap_req struct has a ticket pointer])
3533 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3534 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3535 AC_TRY_COMPILE([#include <krb5.h>],
3536 [krb5_error err; err.e_data = NULL;],
3537 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3538 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3540 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3541 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3542 [Whether the krb5_error struct has a e_data pointer])
3545 AC_CACHE_CHECK([for krb5_crypto type],
3546 samba_cv_HAVE_KRB5_CRYPTO,[
3547 AC_TRY_COMPILE([#include <krb5.h>],
3548 [krb5_crypto crypto;],
3549 samba_cv_HAVE_KRB5_CRYPTO=yes,
3550 samba_cv_HAVE_KRB5_CRYPTO=no)])
3552 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3553 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3554 [Whether the type krb5_crypto exists])
3557 AC_CACHE_CHECK([for krb5_encrypt_block type],
3558 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3559 AC_TRY_COMPILE([#include <krb5.h>],
3560 [krb5_encrypt_block block;],
3561 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3562 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3564 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3565 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3566 [Whether the type krb5_encrypt_block exists])
3569 AC_CACHE_CHECK([for addrtype in krb5_address],
3570 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3571 AC_TRY_COMPILE([#include <krb5.h>],
3572 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3573 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3574 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3576 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3577 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3578 [Whether the krb5_address struct has a addrtype property])
3581 AC_CACHE_CHECK([for addr_type in krb5_address],
3582 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3583 AC_TRY_COMPILE([#include <krb5.h>],
3584 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3585 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3586 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3588 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3589 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3590 [Whether the krb5_address struct has a addr_type property])
3593 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3594 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3595 [AC_TRY_COMPILE([#include <krb5.h>],
3596 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3597 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])