Zero out the out policy handler in lsa_Close
[Samba/gebeck_regimport.git] / source3 / configure.in
blobf481a30b3bd58fe1d44415dc26aa89ffd363c8c0
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
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])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(lib/talloc/libtalloc.m4)
28 TALLOC_OBJS=""
29 for obj in ${TALLOC_OBJ}; do
30         TALLOC_OBJS="${TALLOC_OBJS} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(TALLOC_OBJS)
34 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35 # but currently this fails: things have to get merged from s4.
36 tdbdir="lib/tdb"
37 AC_SUBST(tdbdir)
38 TDB_CFLAGS="-I$tdbdir/include"
39 AC_SUBST(TDB_CFLAGS)
40 TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
41 TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o"
42 AC_SUBST(TDB_OBJ)
44 TDB_OBJS=""
45 for obj in ${TDB_OBJ}; do
46         TDB_OBJS="${TDB_OBJS} ${tdbdir}/${obj}"
47 done
48 AC_SUBST(TDB_OBJS)
50 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
51 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
52 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
57 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
59 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60 if test "x${srcdir-.}" != "x."; then
61         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
64 dnl Unique-to-Samba variables we'll be playing with.
65 AC_SUBST(SAMBA_CPPFLAGS)
66 AC_SUBST(SHELL)
67 AC_SUBST(LDSHFLAGS)
68 AC_SUBST(SONAMEFLAG)
69 AC_SUBST(SHLD)
70 AC_SUBST(MODULE_EXPORTS)
71 AC_SUBST(DSO_EXPORTS)
72 AC_SUBST(HOST_OS)
73 AC_SUBST(PICFLAG)
74 AC_SUBST(PIE_CFLAGS)
75 AC_SUBST(PIE_LDFLAGS)
76 AC_SUBST(SHLIBEXT)
77 AC_SUBST(INSTALLLIBCMD_SH)
78 AC_SUBST(INSTALLLIBCMD_A)
79 AC_SUBST(UNINSTALLLIBCMD_SH)
80 AC_SUBST(UNINSTALLLIBCMD_A)
81 AC_SUBST(INSTALL_LIBADDNS)
82 AC_SUBST(UNINSTALL_LIBADDNS)
83 AC_SUBST(LIBADDNS_SHARED)
84 AC_SUBST(LIBADDNS)
86 AC_SUBST(INSTALL_LIBWBCLIENT)
87 AC_SUBST(UNINSTALL_LIBWBCLIENT)
88 AC_SUBST(LIBWBCLIENT_SHARED)
89 AC_SUBST(LIBWBCLIENT_STATIC)
90 AC_SUBST(LIBWBCLIENT)
91 AC_SUBST(WINBIND_LIBS)
93 AC_SUBST(LIBSAMBAUTIL_SHARED)
95 AC_SUBST(INSTALL_LIBSMBCLIENT)
96 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
97 AC_SUBST(LIBSMBCLIENT_SHARED)
98 AC_SUBST(LIBSMBCLIENT)
99 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
100 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
101 AC_SUBST(LIBSMBSHAREMODES_SHARED)
102 AC_SUBST(LIBSMBSHAREMODES)
104 AC_SUBST(PRINT_LIBS)
105 AC_SUBST(AUTH_LIBS)
106 AC_SUBST(ACL_LIBS)
107 AC_SUBST(PASSDB_LIBS)
108 AC_SUBST(IDMAP_LIBS)
109 AC_SUBST(KRB5_LIBS)
110 AC_SUBST(UUID_LIBS)
111 AC_SUBST(LDAP_LIBS)
112 AC_SUBST(PAM_MODULES)
113 AC_SUBST(INSTALL_PAM_MODULES)
114 AC_SUBST(UNINSTALL_PAM_MODULES)
115 AC_SUBST(NSS_MODULES)
116 AC_SUBST(EXTRA_BIN_PROGS)
117 AC_SUBST(CIFSMOUNT_PROGS)
118 AC_SUBST(INSTALL_CIFSMOUNT)
119 AC_SUBST(UNINSTALL_CIFSMOUNT)
120 AC_SUBST(CIFSSPNEGO_PROGS)
121 AC_SUBST(INSTALL_CIFSSPNEGO)
122 AC_SUBST(UNINSTALL_CIFSSPNEGO)
123 AC_SUBST(EXTRA_SBIN_PROGS)
124 AC_SUBST(EXTRA_ALL_TARGETS)
125 AC_SUBST(CONFIG_LIBS)
126 AC_SUBST(NSCD_LIBS)
128 # compile with optimization and without debugging by default, but
129 # allow people to set their own preference.
130 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
131 # if it has no value.  This prevent *very* large debug binaries from occurring
132 # by default.
133 if test "x$CFLAGS" = x; then
134   CFLAGS="-O"
136 if test "x$debug" = "xyes" ; then
137         CFLAGS="${CFLAGS} -g"
138 else
139         CFLAGS="-O"
142 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
144 m4_include(lib/socket_wrapper/config.m4)
145 m4_include(lib/nss_wrapper/config.m4)
147 m4_include(m4/swat.m4)
149 # Probe the gcc version for extra CFLAGS. We always stash these in
150 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
151 # Makefile edit, avoiding the need to re-run configure.
152 if test x"$ac_cv_prog_gcc" = x"yes" ; then
153         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
154         # Add -Wdeclaration-after-statement if compiler supports it
155         AC_CACHE_CHECK(
156           [that the C compiler understands -Wdeclaration-after-statement],
157           samba_cv_HAVE_Wdeclaration_after_statement, [
158           AC_TRY_RUN_STRICT([
159             int main(void)
160             {
161                 return 0;
162             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
163             samba_cv_HAVE_Wdeclaration_after_statement=yes,
164             samba_cv_HAVE_Wdeclaration_after_statement=no,
165             samba_cv_HAVE_Wdeclaration_after_statement=cross)
166        ])
168         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
169             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
170         fi
172         #-Werror-implicit-function-declaration
173         AC_CACHE_CHECK(
174           [that the C compiler understands -Werror-implicit-function-declaration],
175           samba_cv_HAVE_Werror_implicit_function_declaration, [
176           AC_TRY_RUN_STRICT([
177             int main(void)
178             {
179                 return 0;
180             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
181             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
182             samba_cv_HAVE_Werror_implicit_function_declaration=no,
183             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
184        ])
185        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
186             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
187        fi
189         # krb5developer is like developer, except we don't get
190         # -Wstrict-prototypes.
191        if test x"$krb5_developer" != x"$yes" ; then
192             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
193        fi
196 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
198 if test "x$enable_dmalloc" = xyes
199 then
200         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
201         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
202                   [Define to check invariants around some common functions])
203         LIBS="$LIBS -ldmalloc"  
206 #################################################
207 # check for a shared memory profiling support
208 AC_MSG_CHECKING(whether to use profiling)
209 AC_ARG_WITH(profiling-data,
210 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
211 [ case "$withval" in
212   yes)
213     AC_MSG_RESULT(yes)
214     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
215     samba_cv_WITH_PROFILE=yes
216     ;;
217   *)
218     AC_MSG_RESULT(no)
219     samba_cv_WITH_PROFILE=no
220     ;;
221   esac ],
222   AC_MSG_RESULT(no)
225 dnl Checks for programs.
227 AC_PROG_INSTALL
228 AC_PROG_AWK
229 AC_PATH_PROG(PERL, perl)
231 AC_CHECK_TOOL(AR, ar)
233 dnl Check if we use GNU ld
234 LD=ld
235 AC_PROG_LD_GNU
237 dnl Certain versions of GNU ld the default is not to have the
238 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
239 dnl warnings when building modules.
240 if test "$ac_cv_prog_gnu_ld" = "yes"; then
241         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
242         AC_MSG_CHECKING(GNU ld release date)
243         changequote(,)dnl
244         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'`
245         changequote([,])dnl
246         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
247         if test -n "$ac_cv_gnu_ld_date"; then
248         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
249                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
250         fi
251         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
252                 ac_cv_gnu_ld_version_script=yes
253         fi
254         else
255            AC_MSG_CHECKING(GNU ld release version)
256            changequote(,)dnl
257            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
258            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
259            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
260            changequote([,])dnl
261            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
262            AC_MSG_CHECKING(GNU ld release version major)
263            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
264            AC_MSG_CHECKING(GNU ld release version minor)
265            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
266            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
267              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
268            fi
269            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
270              ac_cv_gnu_ld_version_script=yes
271            fi
272         fi
275 dnl look for executable suffix
276 AC_EXEEXT
278 dnl Check if C compiler understands -c and -o at the same time
279 AC_PROG_CC_C_O
280 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
281       BROKEN_CC=
282 else
283       BROKEN_CC=#
285 AC_SUBST(BROKEN_CC)
287 dnl Check if the C compiler understands -Werror
288 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
289  AC_TRY_RUN_STRICT([
290   int main(void)
291   {
292         return 0;
293   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
294   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
295 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
296    Werror_FLAGS="-Werror"
297 else
298 dnl Check if the C compiler understands -w2
299 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
300  AC_TRY_RUN_STRICT([
301   int main(void)
302   {
303         return 0;
304   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
305   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
306 if test x"$samba_cv_HAVE_w2" = x"yes"; then
307    Werror_FLAGS="-w2"
311 dnl Check if the C compiler understands volatile (it should, being ANSI).
312 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
313     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
314         samba_cv_volatile=yes,samba_cv_volatile=no)])
315 if test x"$samba_cv_volatile" = x"yes"; then
316    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
319 ############################################
320 # check if the compiler can handle negative enum values
321 # and don't truncate the values to INT_MAX
322 # a runtime test is needed here
323 AC_SUBST(PIDL_ARGS)
324 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
325     AC_TRY_RUN(
327         #include <stdio.h>
328         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
329         int main(void) {
330                 enum negative_values v1 = NEGATIVE_VALUE;
331                 unsigned v2 = NEGATIVE_VALUE;
333                 if (v1 != 0xFFFFFFFF) {
334                         printf("%u != 0xFFFFFFFF\n", v1);
335                         return 1;
336                 }
337                 if (v2 != 0xFFFFFFFF) {
338                         printf("%u != 0xFFFFFFFF\n", v2);
339                         return 1;
340                 }
342                 return 0;
343         }
345         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
346 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
347         AC_MSG_WARN([using --unit-enums for pidl])
348         PIDL_ARGS="$PIDL_ARGS --uint-enums"
351 dnl Figure out the flags to support named structure initializers
353 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
355 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
356 AC_MSG_CHECKING(uname -s)
357 AC_MSG_RESULT(${UNAME_S})
359 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
360 AC_MSG_CHECKING(uname -r)
361 AC_MSG_RESULT(${UNAME_R})
363 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
364 AC_MSG_CHECKING(uname -m)
365 AC_MSG_RESULT(${UNAME_M})
367 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
368 AC_MSG_CHECKING(uname -p)
369 AC_MSG_RESULT(${UNAME_P})
371 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
372 AC_MSG_CHECKING(uname -i)
373 AC_MSG_RESULT(${UNAME_I})
375 dnl Add #include for broken IRIX header files
376   case "$host_os" in
377         *irix6*)
378                 #TODO add to libreplace
379                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
380                         dnl Fix sensible defaults for MIPSPro compilers. The
381                         dnl error numbers are valid for the 7.3 compilers,
382                         dnl hopefully also valid for the 7.4 series.
383                         dnl
384                         dnl Bugzilla 3801. Force an error on warning 1035
385                         dnl so we don't incorrectly detect stdint.h. This
386                         dnl warning is emitted for #error directives.
387                         CFLAGS="$CFLAGS -diag_error 1035"
388                         dnl 1209: Controlling expression is constant
389                         dnl 1174: Function foo declared but never referenced
390                         dnl 3201: Parameter foo was never referenced
391                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
392                 fi
393         ;;
394 esac
396 DYNEXP=
397 AC_SUBST(DYNEXP)
399 dnl Add modules that have to be built by default here
400 dnl These have to be built static:
401 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
403 dnl These are preferably build shared, and static if dlopen() is not available
404 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr"
406 if test "x$developer" = xyes; then
407    default_static_modules="$default_static_modules rpc_rpcecho"
408    default_shared_modules="$default_shared_modules charset_weird"
412 # Config CPPFLAG settings for strange OS's that must be set
413 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
414 # case statement; its first reference must be unconditional.
416 case "$host_os" in
417     *hpux*)
419 # Defines needed for HPUX support.
420 # HPUX has bigcrypt but (sometimes?) doesn't use it for
421 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
423       case `uname -r` in
424                 *9*|*10*|*11)
425                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
426                 ;;
427       esac
428       ;;
431 # CRAY Unicos has broken const handling
432        *unicos*)
433           AC_MSG_RESULT([disabling const])
434           CPPFLAGS="$CPPFLAGS -Dconst="
435           ;;
436         
438 # AIX4.x doesn't even admit to having large
439 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
441     *aix4*)
442           AC_MSG_RESULT([enabling large file support])
443       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
444           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
445       ;;
447 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
448 # to the existance of large files..
449 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
450 # recommendations on large file support, however it makes the
451 # compile work using gcc 2.7 and 2.8, whereas using the Sun
452 # recommendation makes the compile fail on gcc2.7. JRA.
454 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
456         *solaris*)
457                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
458                 case `uname -r` in
459                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
460                                 AC_MSG_RESULT([no large file support])
461                                 ;;
462                         5.*)
463                         AC_MSG_RESULT([enabling large file support])
464                         if test "$ac_cv_prog_gcc" = yes; then
465                                 ${CC-cc} -v >conftest.c 2>&1
466                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
467                                 rm -fr conftest.c
468                                 case "$ac_cv_gcc_compiler_version_number" in
469                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
470                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
471                                                 LDFLAGS="$LDFLAGS -lthread"
472                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
473                                                 ;;
474                                         *)
475                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
476                                                 LDFLAGS="$LDFLAGS -lthread"
477                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
478                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
479                                                 ;;
480                                 esac
481                         else
482                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
483                                 LDFLAGS="$LDFLAGS -lthread"
484                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
485                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
486                         fi
487                         ;;
488                 esac
489                 ;;
491 # IRIX uses SYSV printing.  Make sure to set that here
493         *irix*)
494                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
495                 ;;
496         *freebsd*|*dragonfly*)
497                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
498                 ;;
500 # VOS may need to have POSIX support and System V compatibility enabled.
502     *vos*)
503     case "$CPPFLAGS" in
504           *-D_POSIX_C_SOURCE*)
505                 ;;
506           *)
507                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
508                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
509                 ;;
510     esac
511     case "$CPPFLAGS" in
512           *-D_SYSV*|*-D_SVID_SOURCE*)
513                 ;;
514           *)
515                 CPPFLAGS="$CPPFLAGS -D_SYSV"
516                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
517     esac
518     ;;
520 # Tests needed for SINIX large file support.
522     *sysv4*)
523       if test $host = mips-sni-sysv4 ; then
524         AC_MSG_CHECKING([for LFS support])
525         old_CPPFLAGS="$CPPFLAGS"
526         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
527         AC_TRY_RUN([
528 #include <unistd.h>
529 main () {
530 #if _LFS64_LARGEFILE == 1
531 exit(0);
532 #else
533 exit(1);
534 #endif
535 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
536         CPPFLAGS="$old_CPPFLAGS"
537         if test x$SINIX_LFS_SUPPORT = xyes ; then
538           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
539                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
540           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
541           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
542           LIBS="`getconf LFS64_LIBS` $LIBS"
543         fi
544       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
545       fi
546     ;;
548 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
550     *linux*)
551         AC_MSG_CHECKING([for LFS support])
552         old_CPPFLAGS="$CPPFLAGS"
553         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
554        AC_TRY_RUN([
555 #include <unistd.h>
556 #include <sys/utsname.h>
557 #include <string.h>
558 #include <stdlib.h>
559 main() {
560 #if _LFS64_LARGEFILE == 1
561        struct utsname uts;
562        char *release;
563        int major, minor;
565        /* Ensure this is glibc 2.2 or higher */
566 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
567        int libc_major = __GLIBC__;
568        int libc_minor = __GLIBC_MINOR__;
570        if (libc_major < 2)
571               exit(1);
572        if (libc_minor < 2)
573               exit(1);
574 #endif
576        /* Ensure this is kernel 2.4 or higher */
578        uname(&uts);
579        release = strdup(uts.release);
580        major = atoi(strsep(&release, "."));
581        minor = atoi(strsep(&release, "."));
583        if (major > 2 || (major == 2 && minor > 3))
584                exit(0);
585        exit(1);
586 #else
587        exit(1);
588 #endif
590 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
591         CPPFLAGS="$old_CPPFLAGS"
592         if test x$LINUX_LFS_SUPPORT = xyes ; then
593                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
594                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
595                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
596                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
597         fi
598         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
599         ;;
602 # MacOS X is the *only* system that uses compose character in utf8. This
603 # is so horribly broken....
605     *darwin*)
606         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
608 # Add a system specific charset module.
609         default_shared_modules="$default_shared_modules charset_macosxfs"
611         ;;
612     *hurd*)
613         AC_MSG_CHECKING([for LFS support])
614         old_CPPFLAGS="$CPPFLAGS"
615         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
616         AC_TRY_RUN([
617 #include <unistd.h>
618 main () {
619 #if _LFS64_LARGEFILE == 1
620 exit(0);
621 #else
622 exit(1);
623 #endif
624 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
625         CPPFLAGS="$old_CPPFLAGS"
626         if test x$GLIBC_LFS_SUPPORT = xyes ; then
627           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
628                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
629           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
630         fi
631       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
632     ;;
634 esac
636 SAVE_CPPFLAGS="${CPPFLAGS}"
637 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
639 AC_LIBREPLACE_BROKEN_CHECKS
641 CPPFLAGS="${SAVE_CPPFLAGS}"
643 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
645 LIBREPLACE_OBJS=""
646 for obj in ${LIBREPLACEOBJ}; do
647         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
648 done
649 AC_SUBST(LIBREPLACE_OBJS)
651 # add -ldl to the global LIBS
652 LIBS="${LIBS} ${LIBDL}"
654 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
655 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
656 AC_CHECK_HEADERS(limits.h float.h pthread.h)
657 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
658 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
659 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
660 AC_CHECK_HEADERS(sys/un.h ifaddrs.h)
661 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
662 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
663 AC_CHECK_HEADERS(sys/sysmacros.h)
664 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
665 AC_CHECK_HEADERS(langinfo.h locale.h)
666 AC_CHECK_HEADERS(xfs/libxfs.h)
667 AC_CHECK_HEADERS(netgroup.h)
669 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
670 #if HAVE_RPC_RPC_H
671 #include <rpc/rpc.h>
672 #endif
675 ## These fail to compile on IRIX so just check for their presence
676 AC_CHECK_HEADERS(sys/mode.h,,,)
678 # Look for Darwin headers
679 old_CPPFLAGS="$CPPFLAGS"
680 CPPFLAGS="-Iinclude $CPPFLAGS"
681 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
682 CPPFLAGS="$old_CPPFLAGS"
684 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
685 # subdirectory of headers.
686 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
688 # check for linux on amd64 since valgrind is not quite there yet
689 case "$host_os" in
690         *linux*)
691                 case "$UNAME_P" in
692                         *x86_64*)
693                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
694                                 ;;
695                 esac
696                 ;;
697 esac
701 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
702 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
704 case "$host_os" in
705     *hpux*)
706                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
707                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
708                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
709                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
710                 fi
711         ;;
712 esac
713 AC_CHECK_HEADERS(shadow.h)
714 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
715 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
717 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
718 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
720 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
722 # For experimental utmp support (lastlog on some BSD-like systems)
723 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
725 AC_CHECK_SIZEOF(int,cross)
726 AC_CHECK_SIZEOF(long,cross)
727 AC_CHECK_SIZEOF(long long,cross)
728 AC_CHECK_SIZEOF(short,cross)
730 AC_C_CONST
731 AC_C_INLINE
732 AC_C_BIGENDIAN
733 AC_C_CHAR_UNSIGNED
735 AC_TYPE_SIGNAL
736 AC_TYPE_UID_T
737 AC_TYPE_MODE_T
738 AC_TYPE_OFF_T
739 AC_TYPE_SIZE_T
740 AC_TYPE_PID_T
741 AC_STRUCT_ST_RDEV
742 AC_DIRENT_D_OFF
743 AC_CHECK_TYPE(ssize_t, int)
744 AC_CHECK_TYPE(wchar_t, unsigned short)
746 ############################################
747 # for cups support we need libcups, and a handful of header files
749 AC_ARG_ENABLE(cups,
750 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
752 if test x$enable_cups != xno; then
753         AC_PATH_PROG(CUPS_CONFIG, cups-config)
755         if test "x$CUPS_CONFIG" != x; then
756                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
757                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
758                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
759                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
760         elif test x"$enable_cups" = x"yes"; then
761                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
762         fi
765 AC_ARG_ENABLE(iprint,
766 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
768 if test x$enable_iprint != xno; then
769         if test "x$CUPS_CONFIG" != x; then
770                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
771         elif test x"$enable_iprint" = x"yes"; then
772                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
773         fi
776 ############################################
777 # check if the compiler will optimize out function calls
778 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
779     AC_TRY_LINK([
780 #include <stdio.h>],
782                 if (0) {
783                    this_function_does_not_exist();
784                 } else {
785                   return 1;
786                 }
789         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
790 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
791    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
794 ############################################
795 # check for unix domain sockets
796 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
797     AC_TRY_COMPILE([
798 #include <sys/types.h>
799 #include <stdlib.h>
800 #include <stddef.h>
801 #include <sys/socket.h>
802 #include <sys/un.h>],
804   struct sockaddr_un sunaddr;
805   sunaddr.sun_family = AF_UNIX;
807         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
808 if test x"$samba_cv_unixsocket" = x"yes"; then
809    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixsocket support])
812 #############################################
813 # check for fd passing struct via msg_control
814 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
815     AC_TRY_COMPILE([
816 #include <sys/types.h>
817 #include <stdlib.h>
818 #include <stddef.h>
819 #include <sys/socket.h>
820 #include <sys/un.h>],
822         struct msghdr msg;
823         union {
824               struct cmsghdr cm;
825               char control[CMSG_SPACE(sizeof(int))];
826         } control_un;
827         msg.msg_control = control_un.control;
828         msg.msg_controllen = sizeof(control_un.control);
830         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
831 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
832    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
833              [If we can use msg_control for passing file descriptors])
836 #############################################
837 # check for fd passing struct via msg_acctrights
838 AC_CACHE_CHECK([for fd passing via msg_acctrights],
839                 samba_cv_msghdr_msg_acctrights, [
840     AC_TRY_COMPILE([
841 #include <sys/types.h>
842 #include <stdlib.h>
843 #include <stddef.h>
844 #include <sys/socket.h>
845 #include <sys/un.h>],
847         struct msghdr msg;
848         int fd;
849         msg.msg_acctrights = (caddr_t) &fd;
850         msg.msg_acctrightslen = sizeof(fd);
852         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
853 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
854    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
855              [If we can use msg_acctrights for passing file descriptors])
858 AC_CHECK_FUNCS(dirfd)
859 if test x"$ac_cv_func_dirfd" = x"yes"; then
860         default_shared_modules="$default_shared_modules vfs_syncops"
863 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
864     AC_TRY_COMPILE([
865 #include <sys/types.h>
866 #if STDC_HEADERS
867 #include <stdlib.h>
868 #include <stddef.h>
869 #endif
870 #include <signal.h>],[sig_atomic_t i = 0],
871         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
872 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
873    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
876 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
877     AC_TRY_COMPILE([
878 #include <sys/types.h>
879 #if STDC_HEADERS
880 #include <stdlib.h>
881 #include <stddef.h>
882 #endif
883 #if TIME_WITH_SYS_TIME
884 # include <sys/time.h>
885 # include <time.h>
886 #else
887 # if HAVE_SYS_TIME_H
888 #  include <sys/time.h>
889 # else
890 #  include <time.h>
891 # endif
892 #endif
893 ],[struct timespec ts;],
894         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
895 if test x"$samba_cv_struct_timespec" = x"yes"; then
896    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
899 # stupid headers have the functions but no declaration. grrrr.
900 AC_HAVE_DECL(errno, [#include <errno.h>])
901 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
902 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
904 # and glibc has setresuid under linux but the function does
905 # nothing until kernel 2.1.44! very dumb.
906 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
907     AC_TRY_RUN([#include <errno.h>
908 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
909         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
910 if test x"$samba_cv_have_setresuid" = x"yes"; then
911     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
914 # Do the same check for setresguid...
916 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
917     AC_TRY_RUN([#include <unistd.h>
918 #include <errno.h>
919 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
920         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
921 if test x"$samba_cv_have_setresgid" = x"yes"; then
922     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
925 AC_FUNC_MEMCMP
927 ###############################################
928 # Readline included by default unless explicitly asked not to
929 test "${with_readline+set}" != "set" && with_readline=yes
931 # test for where we get readline() from
932 AC_MSG_CHECKING(whether to use readline)
933 AC_ARG_WITH(readline,
934 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
935 [  case "$with_readline" in
936   yes)
937     AC_MSG_RESULT(yes)
939     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
940     AC_CHECK_HEADERS(readline/history.h)
942     AC_CHECK_HEADERS(readline.h readline/readline.h,[
943       for termlib in ncurses curses termcap terminfo termlib tinfo; do
944        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
945       done
946       AC_CHECK_LIB(readline, rl_callback_handler_install,
947        [TERMLIBS="-lreadline $TERMLIBS"
948        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
949        break], [TERMLIBS=], $TERMLIBS)])
950     ;;
951   no)
952     AC_MSG_RESULT(no)
953     ;;
954   *)
955     AC_MSG_RESULT(yes)
957     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
958     # alternate readline path
959     _ldflags=${LDFLAGS}
960     _cppflags=${CPPFLAGS}
962     # Add additional search path
963     LDFLAGS="-L$with_readline/lib $LDFLAGS"
964     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
966     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
967     AC_CHECK_HEADERS(readline/history.h)
969     AC_CHECK_HEADERS(readline.h readline/readline.h,[
970       for termlib in ncurses curses termcap terminfo termlib; do
971        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
972       done
973       AC_CHECK_LIB(readline, rl_callback_handler_install,
974        [TERMLDFLAGS="-L$with_readline/lib"
975        TERMCPPFLAGS="-I$with_readline/include"
976        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
977        TERMLIBS="-lreadline $TERMLIBS"
978        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
979        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
981     LDFLAGS=$_ldflags
982     ;;
983   esac],
984   AC_MSG_RESULT(no)
986 AC_SUBST(TERMLIBS)
987 AC_SUBST(TERMLDFLAGS)
989 # The readline API changed slightly from readline3 to readline4, so
990 # code will generate warnings on one of them unless we have a few
991 # special cases.
992 AC_CHECK_LIB(readline, rl_completion_matches,
993              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
994                         [Do we have rl_completion_matches?])],
995              [],
996              [$TERMLIBS])
998 # not all readline libs have rl_event_hook or history_list
999 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1000 AC_CHECK_LIB(readline, history_list,
1001              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1002              [],
1003              [$TERMLIBS])
1005 # The following test taken from the cvs sources
1006 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1007 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1008 # libsocket.so which has a bad implementation of gethostbyname (it
1009 # only looks in /etc/hosts), so we only look for -lsocket if we need
1010 # it.
1011 AC_CHECK_FUNCS(connect)
1012 if test x"$ac_cv_func_connect" = x"no"; then
1013     case "$LIBS" in
1014     *-lnsl*) ;;
1015     *) AC_CHECK_LIB(nsl_s, connect) ;;
1016     esac
1017     case "$LIBS" in
1018     *-lnsl*) ;;
1019     *) AC_CHECK_LIB(nsl, connect) ;;
1020     esac
1021     case "$LIBS" in
1022     *-lsocket*) ;;
1023     *) AC_CHECK_LIB(socket, connect) ;;
1024     esac
1025     case "$LIBS" in
1026     *-linet*) ;;
1027     *) AC_CHECK_LIB(inet, connect) ;;
1028     esac
1029     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1030     dnl has been cached.
1031     if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1032        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1033         # ac_cv_func_connect=yes
1034         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1035         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1036     fi
1039 ###############################################
1040 # test for where we get yp_get_default_domain() from
1041 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1042 AC_CHECK_FUNCS(yp_get_default_domain)
1044 # Check if we have execl, if not we need to compile smbrun.
1045 AC_CHECK_FUNCS(execl)
1046 if test x"$ac_cv_func_execl" = x"no"; then
1047     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1050 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1051 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1052 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1053 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1054 AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1055 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1056 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1057 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1058 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1059 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1060 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1061 AC_CHECK_FUNCS(getpwent_r)
1062 AC_CHECK_FUNCS(getdents getdents64)
1063 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1064 AC_CHECK_FUNCS(syslog vsyslog timegm)
1065 AC_CHECK_FUNCS(setlocale nl_langinfo)
1066 AC_CHECK_FUNCS(nanosleep)
1067 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1068 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1069 AC_CHECK_HEADERS(sys/mman.h)
1070 # setbuffer, shmget, shm_open are needed for smbtorture
1071 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1073 # Find a method of generating a stack trace
1074 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1075 AC_CHECK_FUNCS(backtrace_symbols)
1076 AC_CHECK_LIB(exc, trace_back_stack)
1078 echo -n "checking for GPFS GPL libs... "
1079 save_LIBS="$LIBS"
1080 LIBS="$LIBS -lgpfs_gpl"
1081 AC_TRY_LINK([#include <gpfs_gpl.h>],
1082           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1083           samba_cv_HAVE_GPFS=yes,
1084           samba_cv_HAVE_GPFS=no)
1085 echo $samba_cv_HAVE_GPFS
1086 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1087     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1088     default_shared_modules="$default_shared_modules vfs_gpfs"
1090 LIBS="$save_LIBS"
1092 # Note that all the libunwind symbols in the API are defined to internal
1093 # platform-specific version, so we must include libunwind.h before checking
1094 # any of them.
1095 AC_MSG_CHECKING([for libunwind])
1096 save_LIBS=$LIBS
1098 UNWIND_ARCH="unknown"
1099 if test x"$UNAME_I" != x"unknown"; then
1100         UNWIND_ARCH="$UNAME_I"
1101 elif test x"$UNAME_M" != x"unknown"; then
1102         UNWIND_ARCH="$UNAME_M"
1103 elif test x"$UNAME_P" != x"unknown"; then
1104         UNWIND_ARCH="$UNAME_P"
1107 case "$UNWIND_ARCH" in
1108         unknown)
1109                 # This probably won't link without
1110                 # the platform-specific libunwind.
1111                 LIBS="$LIBS -lunwind"
1112                 ;;
1113         i386|i586|i686)
1114                 # Add the platform-specific libunwind module.
1115                 LIBS="$LIBS -lunwind -lunwind-x86"
1116                 ;;
1117         *)
1118                 # Add the platform-specific libunwind module.
1119                 # based on uname -i, uname -m or uname -p
1120                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1121                 ;;
1122 esac
1124 AC_TRY_LINK(
1125     [
1126 #ifdef HAVE_LIBUNWIND_H
1127 #include <libunwind.h>
1128 #endif
1129     ],
1130     [
1131         unw_context_t ctx; unw_cursor_t cur;
1132         char buf[256]; unw_word_t off;
1133         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1134         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1135     ],
1136     [
1137         AC_MSG_RESULT(yes)
1138         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1140         # If we have libunwind, test whether we also have libunwind-ptrace
1141         # which would let us unwind arbitrary processes.
1142         save_LIBS=$LIBS
1143         AC_CHECK_HEADERS(libunwind-ptrace.h)
1144         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1145             [
1146                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1147                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1148                     [Whether libunwind-ptrace.a is available.])
1149             ],
1150             [ LIBUNWIND_PTRACE="" ])
1152         LIBS=$save_LIBS
1153     ],
1154     [
1155         AC_MSG_RESULT(no)
1156         LIBS=$save_LIBS
1157     ])
1159 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1160 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1161     AC_CHECK_HEADERS(sys/ptrace.h)
1162     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1163     AC_TRY_LINK(
1164             [
1165 #if HAVE_SYS_TYPES_H
1166 #include <sys/types.h>
1167 #endif
1168 #if HAVE_SYS_PTRACE_H
1169 #include <sys/ptrace.h>
1170 #endif
1171             ],
1172             [
1173                 int main(int argc, const char ** argv)
1174                 {
1175                         pid_t me = (pid_t)-1;
1176                         ptrace(PTRACE_ATTACH, me, 0, 0);
1177                         ptrace(PTRACE_DETACH, me, 0, 0);
1178                         return 0;
1179                 }
1180             ],
1181             [
1182                 AC_MSG_RESULT(yes)
1183                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1184                     [Whether the Linux ptrace(2) interface is available.])
1185             ],
1186             [
1187                 AC_MSG_RESULT(no)
1188                 LIBUNWIND_PTRACE=""
1189             ])
1192 AC_SUBST(LIBUNWIND_PTRACE)
1194 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1195 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1196 AC_CHECK_FUNCS(__getcwd _getcwd)
1197 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1198 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1199 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1200 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1201 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1202 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1203 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1204 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1205 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1206 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1207 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1208 AC_CHECK_FUNCS(prctl)
1210 AC_TRY_COMPILE([
1211 #ifdef HAVE_SYS_PRCTL_H
1212 #include <sys/prctl.h>
1213 #endif
1215 [int i; i = prtcl(0); ],
1216 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1221 case "$host_os" in
1222     *linux*)
1223        # glibc <= 2.3.2 has a broken getgrouplist
1224        AC_TRY_RUN([
1225 #include <unistd.h>
1226 #include <sys/utsname.h>
1227 main() {
1228        /* glibc up to 2.3 has a broken getgrouplist */
1229 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1230        int libc_major = __GLIBC__;
1231        int libc_minor = __GLIBC_MINOR__;
1233        if (libc_major < 2)
1234               exit(1);
1235        if ((libc_major == 2) && (libc_minor <= 3))
1236               exit(1);
1237 #endif
1238        exit(0);
1240 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1241        if test x"$linux_getgrouplist_ok" = x"yes"; then
1242           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1243        fi
1244        ;;
1245     *)
1246        AC_CHECK_FUNCS(getgrouplist)
1247        ;;
1248 esac
1251 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1254 if test x$ac_cv_func_stat64 = xno ; then
1255   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1256   AC_TRY_LINK([
1257 #if defined(HAVE_UNISTD_H)
1258 #include <unistd.h>
1259 #endif
1260 #include <sys/stat.h>
1261 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1262   AC_MSG_RESULT([$ac_cv_func_stat64])
1263   if test x$ac_cv_func_stat64 = xyes ; then
1264     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1265   fi
1268 if test x$ac_cv_func_lstat64 = xno ; then
1269   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1270   AC_TRY_LINK([
1271 #if defined(HAVE_UNISTD_H)
1272 #include <unistd.h>
1273 #endif
1274 #include <sys/stat.h>
1275 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1276   AC_MSG_RESULT([$ac_cv_func_lstat64])
1277   if test x$ac_cv_func_lstat64 = xyes ; then
1278     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1279   fi
1282 if test x$ac_cv_func_fstat64 = xno ; then
1283   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1284   AC_TRY_LINK([
1285 #if defined(HAVE_UNISTD_H)
1286 #include <unistd.h>
1287 #endif
1288 #include <sys/stat.h>
1289 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1290   AC_MSG_RESULT([$ac_cv_func_fstat64])
1291   if test x$ac_cv_func_fstat64 = xyes ; then
1292     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1293   fi
1296 #################################################
1297 # Check whether struct stat has timestamps with sub-second resolution.
1298 # At least IRIX and Solaris have these.
1300 # We check that
1301 #       all of st_mtim, st_atim and st_ctim exist
1302 #       all of the members are in fact of type struct timespec
1304 # There is some conflicting standards weirdness about whether we should use
1305 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1306 # prefer struct timespec.
1308 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1309     [
1310         AC_TRY_COMPILE(
1311             [
1312 #if TIME_WITH_SYS_TIME
1313 # include <sys/time.h>
1314 # include <time.h>
1315 #else
1316 # if HAVE_SYS_TIME_H
1317 #  include <sys/time.h>
1318 # else
1319 #  include <time.h>
1320 # endif
1321 #endif
1322 #ifdef HAVE_SYS_STAT_H
1323 #include <sys/stat.h>
1324 #endif
1325             ],
1326             [
1327                 struct timespec t;
1328                 struct stat s = {0};
1329                 t.tv_sec = s.st_mtim.tv_sec;
1330                 t.tv_nsec = s.st_mtim.tv_nsec;
1331                 t.tv_sec = s.st_ctim.tv_sec;
1332                 t.tv_nsec = s.st_ctim.tv_nsec;
1333                 t.tv_sec = s.st_atim.tv_sec;
1334                 t.tv_nsec = s.st_atim.tv_nsec;
1335             ],
1336             samba_stat_hires=yes, samba_stat_hires=no)
1337     ])
1339 if test x"$samba_stat_hires" = x"yes" ; then
1340     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1341     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1342     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1343     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1344             [whether struct stat has sub-second timestamps])
1347 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1348     [
1349         AC_TRY_COMPILE(
1350             [
1351 #if TIME_WITH_SYS_TIME
1352 # include <sys/time.h>
1353 # include <time.h>
1354 #else
1355 # if HAVE_SYS_TIME_H
1356 #  include <sys/time.h>
1357 # else
1358 #  include <time.h>
1359 # endif
1360 #endif
1361 #ifdef HAVE_SYS_STAT_H
1362 #include <sys/stat.h>
1363 #endif
1364             ],
1365             [
1366                 struct timespec t;
1367                 struct stat s = {0};
1368                 t.tv_sec = s.st_mtime;
1369                 t.tv_nsec = s.st_mtimensec;
1370                 t.tv_sec = s.st_ctime;
1371                 t.tv_nsec = s.st_ctimensec;
1372                 t.tv_sec = s.st_atime;
1373                 t.tv_nsec = s.st_atimensec;
1374             ],
1375             samba_stat_hires=yes, samba_stat_hires=no)
1376     ])
1378 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1379     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1380     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1381     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1382     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1383             [whether struct stat has sub-second timestamps without struct timespec])
1386 #####################################
1387 # needed for SRV lookups
1388 AC_CHECK_LIB(resolv, dn_expand)
1389 AC_CHECK_LIB(resolv, _dn_expand)
1390 AC_CHECK_LIB(resolv, __dn_expand)
1393 # Check for the functions putprpwnam, set_auth_parameters,
1394 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1395 # Needed for OSF1 and HPUX.
1398 AC_LIBTESTFUNC(security, putprpwnam)
1399 AC_LIBTESTFUNC(sec, putprpwnam)
1401 AC_LIBTESTFUNC(security, set_auth_parameters)
1402 AC_LIBTESTFUNC(sec, set_auth_parameters)
1404 # UnixWare 7.x has its getspnam in -lgen
1405 AC_LIBTESTFUNC(gen, getspnam)
1407 AC_LIBTESTFUNC(security, getspnam)
1408 AC_LIBTESTFUNC(sec, getspnam)
1410 AC_LIBTESTFUNC(security, bigcrypt)
1411 AC_LIBTESTFUNC(sec, bigcrypt)
1413 AC_LIBTESTFUNC(security, getprpwnam)
1414 AC_LIBTESTFUNC(sec, getprpwnam)
1416 AC_CHECK_FUNCS(strsignal)
1418 ############################################
1419 # Check if we have libattr
1420 case "$host_os" in
1421   *osf*)
1422         AC_SEARCH_LIBS(getproplist, [proplist])
1423         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1424         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1425         AC_CHECK_FUNCS(sizeof_proplist_entry)
1426   ;;
1427   *)
1428         AC_SEARCH_LIBS(getxattr, [attr])
1429         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1430         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1431         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1432         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1433         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1434         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1435         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1436   ;;
1437 esac
1439 ########################################################
1440 # Check if attropen() is present if this is Solaris
1441 case "$host_os" in
1442   *solaris*)
1443         AC_CHECK_FUNCS(attropen)
1444   ;;
1445 esac
1447 ########################################################
1448 # Do xattr functions take additional options like on Darwin?
1449 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1450         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1451                 old_LIBS=$LIBS
1452                 LIBS="$LIBS $ACL_LIBS"
1453                 AC_TRY_COMPILE([
1454                         #include <sys/types.h>
1455                         #if HAVE_ATTR_XATTR_H
1456                         #include <attr/xattr.h>
1457                         #elif HAVE_SYS_XATTR_H
1458                         #include <sys/xattr.h>
1459                         #endif
1460                 ],[
1461                         getxattr(0, 0, 0, 0, 0, 0);
1462                 ],
1463                 [smb_attr_cv_xattr_add_opt=yes],
1464                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1465         ])
1466         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1467                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1468         fi
1471 # Check if we have extattr
1472 case "$host_os" in
1473   *freebsd4* | *dragonfly* )
1474     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1475     ;;
1476   *)
1477     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1478     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1479     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1480     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1481     ;;
1482 esac
1484 AC_DISABLE_STATIC
1485 AC_ENABLE_SHARED
1487 # Set defaults
1488 PIE_CFLAGS=""
1489 PIE_LDFLAGS=""
1490 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1492 if test "x$enable_pie" != xno
1493 then
1494         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1495         [
1496                 cat > conftest.c <<EOF
1497 int foo;
1498 main () { return 0;}
1500                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1501                 then
1502                         samba_cv_fpie=yes
1503                 else
1504                         samba_cv_fpie=no
1505                 fi
1506                 rm -f conftest*
1507         ])
1508         if test x"${samba_cv_fpie}" = x"yes"
1509         then
1510                 PIE_CFLAGS="-fPIE"
1511                 PIE_LDFLAGS="-pie"
1512         fi
1515 # Assume non-shared by default and override below
1516 BLDSHARED="false"
1518 # these are the defaults, good for lots of systems
1519 HOST_OS="$host_os"
1520 LDSHFLAGS="-shared"
1521 MODULE_EXPORTS=""
1522 SONAMEFLAG="#"
1523 SHLD="\${CC} \${CFLAGS}"
1524 PICFLAG="${PIE_CFLAGS}"
1525 SHLIBEXT="so"
1526 DSO_EXPORTS=""
1528 # this bit needs to be modified for each OS that supports share libs
1529 # You need to specify how to create a shared library and
1530   # how to compile C code to produce PIC object files
1532   AC_MSG_CHECKING([ability to build shared libraries])
1534   # and these are for particular systems
1535   case "$host_os" in
1536                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1537                         BLDSHARED="true"
1538                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1539                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1540                         else
1541                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1542                         fi
1543                         DYNEXP="-Wl,--export-dynamic"
1544                         PICFLAG="-fPIC"
1545                         SONAMEFLAG="-Wl,-soname="
1546                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1547                         ;;
1548                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1549                         BLDSHARED="true"
1550                         LDSHFLAGS="-G"
1551                         SONAMEFLAG="-h "
1552                         if test "${GCC}" = "yes"; then
1553                                 PICFLAG="-fPIC"
1554                                 SONAMEFLAG="-Wl,-soname="
1555                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1556                                         DYNEXP="-Wl,-E"
1557                                 fi
1558                         else
1559                                 PICFLAG="-KPIC"
1560                                 ## ${CFLAGS} added for building 64-bit shared
1561                                 ## libs using Sun's Compiler
1562                                 LDSHFLAGS="-G \${CFLAGS}"
1563                         fi
1564                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1565                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1566                         ;;
1567                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1568                         BLDSHARED="true"
1569                         LDSHFLAGS="-G"
1570                         SONAMEFLAG="-Wl,-h,"
1571                         PICFLAG="-KPIC"   # Is this correct for SunOS
1572                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1573                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1574                         ;;
1575                 *netbsd* | *freebsd* | *dragonfly* )
1576                         BLDSHARED="true"
1577                         LDSHFLAGS="-shared"
1578                         DYNEXP="-Wl,--export-dynamic"
1579                         SONAMEFLAG="-Wl,-soname,"
1580                         PICFLAG="-fPIC -DPIC"
1581                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1582                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1583                         ;;
1584                 *openbsd*)  BLDSHARED="true"
1585                         LDSHFLAGS="-shared"
1586                         DYNEXP="-Wl,-Bdynamic"
1587                         SONAMEFLAG="-Wl,-soname,"
1588                         PICFLAG="-fPIC"
1589                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1590                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1591                         ;;
1592                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1593                         case "$host_os" in
1594                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1595                         ;;
1596                         esac
1597                         BLDSHARED="true"
1598                         LDSHFLAGS="-set_version sgi1.0 -shared"
1599                         SONAMEFLAG="-soname "
1600                         SHLD="\${LD}"
1601                         if test "${GCC}" = "yes"; then
1602                                 PICFLAG="-fPIC"
1603                         else
1604                                 PICFLAG="-KPIC"
1605                         fi
1606                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1607                         ;;
1608                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1609                         BLDSHARED="true"
1610                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc"
1611                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1612                         PICFLAG="-O2"
1613                         # as AIX code is always position independent...
1614                         # .po will just create compile warnings, use po.o:
1615                         if test "${GCC}" != "yes"; then
1616                                 ## for funky AIX compiler using strncpy()
1617                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1618                         fi
1620                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1621                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1622                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1623                         ;;
1624                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1625                         # Use special PIC flags for the native HP-UX compiler.
1626                                 BLDSHARED="true"
1627                                 SHLD="cc"
1628                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1629                                 SONAMEFLAG="-Wl,+h "
1630                                 PICFLAG="+z"
1631                         if test "${GCC}" = "yes"; then
1632                                 PICFLAG="-fPIC"
1633                         else
1634                                 PICFLAG="+z +ESnolit"
1635                         fi
1636                         if test "$host_cpu" = "ia64"; then
1637                                 SHLIBEXT="so"
1638                               PICFLAG="+z"
1639                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1640                         else
1641                                 SHLIBEXT="sl"
1642                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1643                         fi
1644                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1645                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1646                         ;;
1647                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1648                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1649                         ;;
1650                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1651                         BLDSHARED="true"
1652                         LDSHFLAGS="-shared"
1653                         SONAMEFLAG="-Wl,-soname,"
1654                         PICFLAG="-fPIC"
1655                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1656                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1657                         ;;
1658                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1659                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1660                         ;;
1661                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1662                         BLDSHARED="true"
1663                         LDSHFLAGS="-shared"
1664                         SONAMEFLAG="-Wl,-soname,"
1665                         PICFLAG="-KPIC"
1666                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1667                         ;;
1668                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1669                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1670                         ;;
1671                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1672                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1673                         ;;
1674                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1675                         case "$host" in
1676                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1677                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1678                                         fi
1679                                         LDSHFLAGS="-G"
1680                                         DYNEXP="-Bexport"
1681                                 ;;
1682                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1683                         esac
1684                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1685                         ;;
1687                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1688                         if [ test "$GCC" != yes ]; then
1689                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1690                         fi
1691                         LDSHFLAGS="-G"
1692                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1693                         ;;
1694                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1695                         BLDSHARED="false"
1696                         LDSHFLAGS=""
1697                         ;;
1699                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1700                         BLDSHARED="true"
1701                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1702                         CFLAGS="$CFLAGS -fno-common"
1703                         SHLD="\${CC}"
1704                         SHLIBEXT="dylib"
1705                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1706                         SHLIBEXT="dylib"
1707                         # Since gcc doesn't fail on unrecognised options, the
1708                         # PIE test incorrectly succeeds. Darwin gcc does not
1709                         # actually support the PIE stuff.
1710                         PIE_LDFLAGS=
1711                         PIE_CFLAGS=
1712                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1713                         ;;
1715                 *)
1716                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1717                         ;;
1718   esac
1720 if test "$enable_shared" != "yes"; then
1721         BLDSHARED=false
1724 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1725         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1728 if test x"$BLDSHARED" = x"true" ; then
1729         LDFLAGS="$LDFLAGS -L./bin"
1732 AC_MSG_RESULT($BLDSHARED)
1734 AC_MSG_CHECKING([LDFLAGS])
1735 AC_MSG_RESULT([$LDFLAGS])
1736 AC_MSG_CHECKING([DYNEXP])
1737 AC_MSG_RESULT([$DYNEXP])
1739 #######################################################
1740 # test whether building a shared library actually works
1741 if test $BLDSHARED = true; then
1743 AC_MSG_CHECKING([SHLD])
1744 AC_MSG_RESULT([$SHLD])
1745 AC_MSG_CHECKING([LDSHFLAGS])
1746 AC_MSG_RESULT([$LDSHFLAGS])
1748 AC_MSG_CHECKING([SHLIBEXT])
1749 AC_MSG_RESULT([$SHLIBEXT])
1750 AC_MSG_CHECKING([SONAMEFLAG])
1751 AC_MSG_RESULT([$SONAMEFLAG])
1753 AC_MSG_CHECKING([PICFLAG])
1754 AC_MSG_RESULT([$PICFLAG])
1756 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1757 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1759 AC_CACHE_CHECK([whether building shared libraries actually works],
1760                [ac_cv_shlib_works],[
1761    # try building a trivial shared library
1762    ac_cv_shlib_works=no
1763    # The $SHLD and $LDSHFLAGS variables may contain references to other
1764    # variables so they need to be eval'ed.
1765    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1766         shlib.o ${srcdir-.}/tests/shlib.c && \
1767    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1768         shlib.o && ac_cv_shlib_works=yes
1769    rm -f "shlib.$SHLIBEXT" shlib.o
1772 if test $ac_cv_shlib_works = no; then
1773    BLDSHARED=false
1777 if test x"$BLDSHARED" != x"true"; then
1778         LDSHFLAGS="shared-libraries-disabled"
1779         SONAMEFLAG="shared-libraries-disabled"
1780         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1781         SHLD="shared-libraries-disabled"
1782         PICFLAG="${PIE_CFLAGS}"
1783         SHLIBEXT="shared_libraries_disabled"
1786 AC_MSG_CHECKING([used PICFLAG])
1787 AC_MSG_RESULT([$PICFLAG])
1789 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1791 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1793 ################
1795 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1796 AC_TRY_RUN([#include <stdio.h>
1797 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1798 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1799 if test x"$samba_cv_have_longlong" = x"yes"; then
1800     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1801     AC_CHECK_TYPE(intptr_t, unsigned long long)
1802 else
1803     AC_CHECK_TYPE(intptr_t, unsigned long)
1807 # Check if the compiler supports the LL prefix on long long integers.
1808 # AIX needs this.
1810 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1811     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1812         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1813 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1814    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1818 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1819 AC_TRY_RUN([#include <time.h>
1820 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1821 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1822 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1823     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1826 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1827 AC_TRY_RUN([#include <stdio.h>
1828 #include <sys/stat.h>
1829 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1830 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1831 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1832     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1835 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1836 AC_TRY_RUN([
1837 #if defined(HAVE_UNISTD_H)
1838 #include <unistd.h>
1839 #endif
1840 #include <stdio.h>
1841 #include <sys/stat.h>
1842 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1843 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1844 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1845     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1848 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1849 AC_TRY_RUN([
1850 #if defined(HAVE_UNISTD_H)
1851 #include <unistd.h>
1852 #endif
1853 #include <stdio.h>
1854 #include <sys/stat.h>
1855 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1856 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1857 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1858     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1861 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1862 AC_TRY_RUN([
1863 #if defined(HAVE_UNISTD_H)
1864 #include <unistd.h>
1865 #endif
1866 #include <stdio.h>
1867 #include <sys/stat.h>
1868 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1869 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1870 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1871     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1874 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1875 AC_TRY_RUN([
1876 #if defined(HAVE_UNISTD_H)
1877 #include <unistd.h>
1878 #endif
1879 #include <stdio.h>
1880 #include <sys/stat.h>
1881 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1882 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1883 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1884     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1887 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1888 AC_TRY_RUN([
1889 #if defined(HAVE_UNISTD_H)
1890 #include <unistd.h>
1891 #endif
1892 #include <stdio.h>
1893 #include <sys/stat.h>
1894 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1895 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1896 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1897     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1900 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1901 AC_TRY_COMPILE([
1902 #if defined(HAVE_UNISTD_H)
1903 #include <unistd.h>
1904 #endif
1905 #include <sys/types.h>
1906 #include <dirent.h>],
1907 [DIR64 de;],
1908 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1909 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1910     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1913 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1914 AC_TRY_COMPILE([
1915 #if defined(HAVE_UNISTD_H)
1916 #include <unistd.h>
1917 #endif
1918 #include <sys/types.h>
1919 #include <dirent.h>],
1920 [struct dirent64 de;],
1921 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1922 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1923     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1926 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1927 AC_TRY_RUN([
1928 #if defined(HAVE_UNISTD_H)
1929 #include <unistd.h>
1930 #endif
1931 #include <sys/types.h>
1932 main() { dev_t dev; int i = major(dev); return 0; }],
1933 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1934 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1935     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1938 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1939 AC_TRY_RUN([
1940 #if defined(HAVE_UNISTD_H)
1941 #include <unistd.h>
1942 #endif
1943 #include <sys/types.h>
1944 main() { dev_t dev; int i = minor(dev); return 0; }],
1945 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1946 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1947     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1950 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1951 AC_TRY_RUN([
1952 #if defined(HAVE_UNISTD_H)
1953 #include <unistd.h>
1954 #endif
1955 #include <sys/types.h>
1956 main() { dev_t dev = makedev(1,2); return 0; }],
1957 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1958 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1959     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1962 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1963 AC_TRY_RUN([#include <stdio.h>
1964 main() { char c; c=250; exit((c > 0)?0:1); }],
1965 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1966 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1967     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1970 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1971 AC_TRY_COMPILE([#include <sys/types.h>
1972 #include <sys/socket.h>
1973 #include <netinet/in.h>],
1974 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1975 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1976 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1977     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1980 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1981 AC_TRY_COMPILE([#include <sys/types.h>
1982 #include <dirent.h>
1983 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1984 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1985 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1986     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1989 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1990 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1991 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1992 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1993     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1996 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1997 AC_TRY_LINK([
1998 #include <sys/time.h>
1999 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2000            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2001            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2002 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2003     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2006 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2008     # On some systems (eg. Linux) librt can pull in libpthread. We
2009     # don't want this to happen because libpthreads changes signal delivery
2010     # semantics in ways we are not prepared for. This breaks Linux oplocks
2011     # which rely on signals.
2013     AC_LIBTESTFUNC(rt, clock_gettime,
2014             [
2015                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2016                                 [Whether clock_gettime is available])
2017                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2018                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2019                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2020                         ])
2024 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2025 AC_TRY_RUN([#include <sys/types.h>
2026 #include <dirent.h>
2027 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2028 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2029 di->d_name[0] == 0) exit(0); exit(1);} ],
2030 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2031 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2032     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2035 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2036 AC_TRY_COMPILE([#include <sys/types.h>
2037 #include <utime.h>],
2038 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2039 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2040 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2041     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2044 ##############
2045 # Check utmp details, but only if our OS offers utmp.h
2046 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2047 dnl  utmp and utmpx come in many flavours
2048 dnl  We need to check for many of them
2049 dnl  But we don't need to do each and every one, because our code uses
2050 dnl  mostly just the utmp (not utmpx) fields.
2052 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2054 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2055 AC_TRY_COMPILE([#include <sys/types.h>
2056 #include <utmp.h>],
2057 [struct utmp ut;  ut.ut_name[0] = 'a';],
2058 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2059 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2060     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2063 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2064 AC_TRY_COMPILE([#include <sys/types.h>
2065 #include <utmp.h>],
2066 [struct utmp ut;  ut.ut_user[0] = 'a';],
2067 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2068 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2069     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2072 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2073 AC_TRY_COMPILE([#include <sys/types.h>
2074 #include <utmp.h>],
2075 [struct utmp ut;  ut.ut_id[0] = 'a';],
2076 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2077 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2078     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2081 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2082 AC_TRY_COMPILE([#include <sys/types.h>
2083 #include <utmp.h>],
2084 [struct utmp ut;  ut.ut_host[0] = 'a';],
2085 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2086 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2087     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2090 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2091 AC_TRY_COMPILE([#include <sys/types.h>
2092 #include <utmp.h>],
2093 [struct utmp ut;  time_t t; ut.ut_time = t;],
2094 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2095 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2096     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2099 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2100 AC_TRY_COMPILE([#include <sys/types.h>
2101 #include <utmp.h>],
2102 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2103 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2104 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2105     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2108 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2109 AC_TRY_COMPILE([#include <sys/types.h>
2110 #include <utmp.h>],
2111 [struct utmp ut;  ut.ut_type = 0;],
2112 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2113 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2114     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2117 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2118 AC_TRY_COMPILE([#include <sys/types.h>
2119 #include <utmp.h>],
2120 [struct utmp ut;  ut.ut_pid = 0;],
2121 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2122 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2123     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2126 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2127 AC_TRY_COMPILE([#include <sys/types.h>
2128 #include <utmp.h>],
2129 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2130 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2131 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2132     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2135 dnl Look for the IPv6 varient by preference. Many systems have both.
2136 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2137 AC_TRY_COMPILE([#include <sys/types.h>
2138 #include <utmp.h>],
2139 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2140 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2141 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2142     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2145 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2146 AC_TRY_COMPILE([#include <sys/types.h>
2147 #include <utmp.h>],
2148 [struct utmp ut;  ut.ut_addr = 0;],
2149 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2150 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2151     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2154 if test x$ac_cv_func_pututline = xyes ; then
2155   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2156   AC_TRY_COMPILE([#include <sys/types.h>
2157 #include <utmp.h>],
2158   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2159   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2160   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2161       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2162   fi
2165 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2166 AC_TRY_COMPILE([#include <sys/types.h>
2167 #include <utmpx.h>],
2168 [struct utmpx ux;  ux.ut_syslen = 0;],
2169 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2170 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2171     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2175 # end utmp details
2178 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2179 AC_ARG_WITH(libiconv,
2180 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2182   if test "$withval" = "no" ; then
2183     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2184   else
2185      if test "$withval" != "yes" ; then
2186         ICONV_PATH_SPEC=yes
2187         ICONV_LOOK_DIRS="$withval"
2188      fi
2189   fi
2192 for i in $ICONV_LOOK_DIRS ; do
2194     save_LIBS="$LIBS"
2195     save_LDFLAGS="$LDFLAGS"
2196     save_CPPFLAGS="$CPPFLAGS"
2198     iconv_current_LIBS=""
2199     iconv_current_LDFLAGS=""
2200     iconv_current_CPPFLAGS=""
2202     ICONV_FOUND="no"
2203     unset libext
2205     #  This is here to handle -withval stuff for --with-libiconv
2206     #  Perhaps we should always add a -L
2207     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2209     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2210     # installation paths. This gets a little tricky since we might have iconv
2211     # in both libiconv and in libc. In this case the jm_ICONV test will always
2212     # succeed when the header is found. To counter this, make sure the
2213     # library directory is there and check the ABI directory first (which
2214     # should be harmless on other systems.
2215     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2216     for l in "lib32" "lib" "lib/hpux32"; do
2217         if test -d "$i/$l" ; then
2218                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2219                 LIBS=
2220                 export LDFLAGS LIBS CPPFLAGS
2221                 # Try to find iconv(3)
2222                 jm_ICONV($i/$l)
2223                 if test x"$ICONV_FOUND" = "xyes" ; then
2224                     libext="$l"
2225                     break
2226                 fi
2227         fi
2228     done
2230     if test x"$ICONV_FOUND" = "xyes" ; then
2231         iconv_current_LDFLAGS="-L$i/$libext"
2232         iconv_current_CPPFLAGS="-I$i/include"
2234         if test x"$jm_cv_lib_iconv" != x; then
2235             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2236         else
2237             # We found iconv in libc.
2238             iconv_current_LIBS=""
2239         fi
2241     fi
2243     if test x"$ICONV_FOUND" = "xyes" ; then
2245         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2246         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2247         LIBS="$save_LIBS $iconv_current_LIBS"
2248         export LDFLAGS LIBS CPPFLAGS
2250         default_dos_charset=no
2251         default_display_charset=no
2252         default_unix_charset=no
2254         # check for default dos charset name
2255         for j in CP850 IBM850 ; do
2256             rjs_CHARSET($j)
2257             default_dos_charset="$ICONV_CHARSET"
2258             if test x"$default_dos_charset" = x"$j"; then
2259                 break
2260             fi
2261         done
2263         # check for default display charset name
2264         for j in ASCII 646 ; do
2265             rjs_CHARSET($j)
2266             default_display_charset="$ICONV_CHARSET"
2267             if test x"$default_display_charset" = x"$j"; then
2268                 break
2269             fi
2270         done
2272         # check for default unix charset name
2273         for j in UTF-8 UTF8 ; do
2274             rjs_CHARSET($j)
2275             default_unix_charset="$ICONV_CHARSET"
2276             if test x"$default_unix_charset" = x"$j"; then
2277                 break
2278             fi
2279         done
2281         if test "$default_dos_charset" != "no" -a \
2282                 "$default_dos_charset" != "cross" -a \
2283                 "$default_display_charset" != "no" -a \
2284                 "$default_display_charset" != "cross" -a \
2285                 "$default_unix_charset" != "no" -a \
2286                 "$default_unix_charset" != "cross"
2287         then
2288                 samba_cv_HAVE_NATIVE_ICONV=yes
2289         else
2290             if test "$default_dos_charset" = "cross" -o \
2291                      "$default_display_charset" = "cross" -o \
2292                      "$default_unix_charset" = "cross"
2293             then
2294                     samba_cv_HAVE_NATIVE_ICONV=cross
2295             else
2296                     samba_cv_HAVE_NATIVE_ICONV=no
2297             fi
2298         fi
2300         # At this point, we have a libiconv candidate. We know that
2301         # we have the right headers and libraries, but we don't know
2302         # whether it does the conversions we want. We can't test this
2303         # because we are cross-compiling. This is not necessarily a big
2304         # deal, since we can't guarantee that the results we get now will
2305         # match the results we get at runtime anyway.
2306         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2307             default_dos_charset="CP850"
2308             default_display_charset="ASCII"
2309             default_unix_charset="UTF-8"
2310             samba_cv_HAVE_NATIVE_ICONV=yes
2311             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2312             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2313         fi
2315         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2317             CPPFLAGS=$save_CPPFLAGS
2318             LDFLAGS=$save_LDFLAGS
2319             LIBS=$save_LIBS
2321             if test x"$iconv_current_LIBS" != x; then
2322                 LIBS="$LIBS $iconv_current_LIBS"
2323             fi
2325             # Add the flags we need to CPPFLAGS and LDFLAGS
2326             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2327             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2329             # Turn the #defines into string literals
2330             default_dos_charset="\"$default_dos_charset\""
2331             default_display_charset="\"$default_display_charset\""
2332             default_unix_charset="\"$default_unix_charset\""
2334             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2335             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2336             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2337             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2339            break
2340         fi
2342     # We didn't find a working iconv, so keep going
2343     fi
2345     #  We only need to clean these up here for the next pass through the loop
2346     CPPFLAGS=$save_CPPFLAGS
2347     LDFLAGS=$save_LDFLAGS
2348     LIBS=$save_LIBS
2349     export LDFLAGS LIBS CPPFLAGS
2350 done
2351 unset libext
2354 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2355     AC_MSG_WARN([Sufficient support for iconv function was not found.
2356     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2357    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2358    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2359    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2363 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2364 AC_TRY_RUN([
2365 #include <sys/types.h>
2366 #include <fcntl.h>
2367 #ifndef F_GETLEASE
2368 #define F_GETLEASE      1025
2369 #endif
2370 main() {
2371        int fd = open("/dev/null", O_RDONLY);
2372        return fcntl(fd, F_GETLEASE, 0) == -1;
2375 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2376 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2377     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2380 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2381 AC_TRY_RUN([
2382 #include <sys/types.h>
2383 #include <fcntl.h>
2384 #include <signal.h>
2385 #ifndef F_NOTIFY
2386 #define F_NOTIFY 1026
2387 #endif
2388 main() {
2389         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2392 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2393 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2394     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2397 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2398 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2399 AC_CHECK_FUNCS(inotify_init)
2400 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2402 samba_cv_HAVE_INOTIFY=yes,
2403 samba_cv_HAVE_INOTIFY=no,
2404 samba_cv_HAVE_INOTIFY=cross)
2406 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2407     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2410 #################################################
2411 # Check if FAM notifications are available. For FAM info, see
2412 #       http://oss.sgi.com/projects/fam/
2413 #       http://savannah.nongnu.org/projects/fam/
2414 AC_ARG_ENABLE(fam,
2415 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2417 if test x$enable_fam != xno; then
2418     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2419     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2420         # On IRIX, libfam requires libC, but other FAM implementations
2421         # might not need it.
2422         AC_CHECK_LIB(fam, FAMOpen2,
2423             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2424             [samba_cv_HAVE_LIBFAM=no])
2426         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2427             samba_fam_xtra=-lC
2428             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2429                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2430                 [samba_cv_HAVE_LIBFAM=no])
2431             unset samba_fam_xtra
2432         fi
2433     fi
2435     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2436         default_shared_modules="$default_shared_modules vfs_notify_fam"
2437         AC_TRY_COMPILE([#include <fam.h>],
2438                     [FAMCodes code = FAMChanged;],
2439                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2440                         [Whether fam.h contains a typedef for enum FAMCodes]),
2441                     [])
2442     fi
2444     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2445         AC_MSG_ERROR(FAM support requested but FAM library not available )
2446     fi
2449 AC_SUBST(SMB_FAM_LIBS)
2451 #################################################
2452 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2454 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2456 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2457 # Theoretically it should work with AIX JFS2 too but this needs testing
2458 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2459     default_shared_modules="$default_shared_modules vfs_tsmsm"
2462 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2463 AC_TRY_RUN([
2464 #include <sys/types.h>
2465 #include <fcntl.h>
2466 #include <signal.h>
2467 #include <sys/file.h>
2468 #ifndef LOCK_MAND
2469 #define LOCK_MAND       32
2470 #define LOCK_READ       64
2471 #endif
2472 main() {
2473         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2476 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2477 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2478     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2482 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2483 AC_TRY_COMPILE([#include <sys/types.h>
2484 #include <fcntl.h>],
2485 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2486 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2487 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2488     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2491 #################################################
2492 # Check for POSIX capability support
2494 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2495     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2496     [], [])
2498 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2500     ac_save_LIBS=$LIBS
2501     AC_LIBTESTFUNC(cap, cap_get_proc)
2503     AC_CACHE_CHECK([for POSIX capabilities],
2504             samba_cv_HAVE_POSIX_CAPABILITIES,
2505             [
2506                 AC_TRY_RUN([
2507 #include <sys/types.h>
2508 #include <sys/capability.h>
2509 main() {
2510  cap_t cap;
2511  cap_value_t vals[1];
2512  if (!(cap = cap_get_proc()))
2513    exit(1);
2514  vals[0] = CAP_CHOWN;
2515  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2516  cap_set_proc(cap);
2517  exit(0);
2519                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2520                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2521                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2522             ])
2524 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2525     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2526             [Whether POSIX capabilities are available])
2527 else
2528     LIBS=$ac_save_LIBS
2534 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2535 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2538 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2539 AC_TRY_COMPILE([#include <sys/types.h>
2540 #if defined(HAVE_RPC_RPC_H)
2541 #include <rpc/rpc.h>
2542 #endif],
2543 [int16 testvar;],
2544 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2545 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2546     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2549 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2550 AC_TRY_COMPILE([#include <sys/types.h>
2551 #if defined(HAVE_RPC_RPC_H)
2552 #include <rpc/rpc.h>
2553 #endif],
2554 [uint16 testvar;],
2555 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2556 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2557     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2560 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2561 AC_TRY_COMPILE([#include <sys/types.h>
2562 #if defined(HAVE_RPC_RPC_H)
2563 #include <rpc/rpc.h>
2564 #endif],
2565 [int32 testvar;],
2566 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2567 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2568     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2571 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2572 AC_TRY_COMPILE([#include <sys/types.h>
2573 #if defined(HAVE_RPC_RPC_H)
2574 #include <rpc/rpc.h>
2575 #endif],
2576 [uint32 testvar;],
2577 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2578 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2579     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2583 dnl Some systems (SCO) have a problem including
2584 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2585 dnl as a #define in <prot.h> and as part of an enum
2586 dnl in <rpc/rpc.h>.
2589 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2590 AC_TRY_COMPILE([#include <sys/types.h>
2591 #ifdef HAVE_SYS_SECURITY_H
2592 #include <sys/security.h>
2593 #include <prot.h>
2594 #endif  /* HAVE_SYS_SECURITY_H */
2595 #if defined(HAVE_RPC_RPC_H)
2596 #include <rpc/rpc.h>
2597 #endif],
2598 [int testvar;],
2599 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2600 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2601     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2604 AC_MSG_CHECKING([for test routines])
2605 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2606            AC_MSG_RESULT(yes),
2607            AC_MSG_ERROR([cant find test code. Aborting config]),
2608            AC_MSG_WARN([cannot run when cross-compiling]))
2610 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2611 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2612            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2613 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2614     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2617 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2618 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2619            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2620            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2621            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2622 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2623 then
2624     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2627 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2628 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2629            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2630 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2631     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2634 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2635 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2636 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2637 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2638 AC_CHECK_FUNCS(getpagesize)
2640 dnl test for ipv6
2641 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
2642 AC_TRY_COMPILE([
2643 #include <stdlib.h> /* for NULL */
2644 #include <sys/socket.h>
2645 #include <sys/types.h>
2646 #include <netdb.h>],
2648 struct sockaddr_storage sa_store;
2649 struct addrinfo *ai = NULL;
2650 struct in6_addr in6addr;
2651 int s = socket(AF_INET6, SOCK_STREAM, 0);
2652 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
2653 if (ret != 0) {
2654         const char *es = gai_strerror(ret);
2656 freeaddrinfo(ai);
2658 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
2659 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
2660     AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
2663 ################################################
2664 # look for a method of setting the effective uid
2665 seteuid=no;
2666 if test $seteuid = no; then
2667 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2668 AC_TRY_RUN([
2669 #define AUTOCONF_TEST 1
2670 #define USE_SETRESUID 1
2671 #include "confdefs.h"
2672 #include "${srcdir-.}/lib/util_sec.c"],
2673            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2674 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2675     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2680 if test $seteuid = no; then
2681 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2682 AC_TRY_RUN([
2683 #define AUTOCONF_TEST 1
2684 #define USE_SETREUID 1
2685 #include "confdefs.h"
2686 #include "${srcdir-.}/lib/util_sec.c"],
2687            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2688 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2689     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2693 if test $seteuid = no; then
2694 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2695 AC_TRY_RUN([
2696 #define AUTOCONF_TEST 1
2697 #define USE_SETEUID 1
2698 #include "confdefs.h"
2699 #include "${srcdir-.}/lib/util_sec.c"],
2700            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2701 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2702     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2706 if test $seteuid = no; then
2707 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2708 AC_TRY_RUN([
2709 #define AUTOCONF_TEST 1
2710 #define USE_SETUIDX 1
2711 #include "confdefs.h"
2712 #include "${srcdir-.}/lib/util_sec.c"],
2713            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2714 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2715     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2719 AC_CACHE_CHECK([for the Darwin initgroups system call],
2720         samba_cv_DARWIN_INITGROUPS,
2721         AC_TRY_LINK([
2722 #include <sys/syscall.h>
2723 #include <unistd.h>
2724         ],
2725         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2726         samba_cv_DARWIN_INITGROUPS=yes,
2727         samba_cv_DARWIN_INITGROUPS=no)
2730 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2731     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2732         [Whether to use the Darwin-specific initgroups system call])
2735 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2736 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2737            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2738 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2739     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2742 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2743 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2744            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2745 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2746     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2748 else
2751 dnl Don't check for 64 bit fcntl locking if we know that the
2752 dnl glibc2.1 broken check has succeeded.
2755   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2756   AC_TRY_RUN([
2757 #if defined(HAVE_UNISTD_H)
2758 #include <unistd.h>
2759 #endif
2760 #include <stdio.h>
2761 #include <stdlib.h>
2763 #ifdef HAVE_FCNTL_H
2764 #include <fcntl.h>
2765 #endif
2767 #ifdef HAVE_SYS_FCNTL_H
2768 #include <sys/fcntl.h>
2769 #endif
2770 main() { struct flock64 fl64;
2771 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2772 exit(0);
2773 #else
2774 exit(1);
2775 #endif
2777        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2779   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2780       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2781   fi
2784 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2785 AC_TRY_COMPILE([#include <sys/types.h>
2786 #include <sys/stat.h>
2787 #include <unistd.h>],
2788 [struct stat st;  st.st_blocks = 0;],
2789 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2790 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2791     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2794 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2795 AC_TRY_COMPILE([#include <sys/types.h>
2796 #include <sys/stat.h>
2797 #include <unistd.h>],
2798 [struct stat st;  st.st_blksize = 0;],
2799 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2800 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2801     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2804 AC_CACHE_CHECK([for st_flags in struct stat],
2805         samba_cv_HAVE_STAT_ST_FLAGS,
2806         [
2807             AC_TRY_COMPILE([#include <sys/types.h>
2808 #include <sys/stat.h>
2809 #include <unistd.h>],
2810             [struct stat st;  st.st_flags = 0;],
2811             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2812             samba_cv_HAVE_STAT_ST_FLAGS=no,
2813             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2814         ])
2816 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2817     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2818                 [Whether the stat struct has a st_flags member])
2821 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2822 AC_TRY_COMPILE([
2823 #include <sys/types.h>
2824 #include <sys/acl.h>
2825 #if defined(HAVE_RPCSVC_NIS_H)
2826 #include <rpcsvc/nis.h>
2827 #endif],
2828 [int i;],
2829 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2830 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2831         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2834 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2835 AC_TRY_RUN([
2836 #include <stdio.h>
2837 #include <limits.h>
2838 main() {
2839         char *newpath = realpath("/tmp", NULL);
2840         exit ((newpath != NULL) ? 0 : 1);
2843 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2844 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2845     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2848 #################################################
2849 # check for AFS clear-text auth support
2850 samba_cv_WITH_AFS=no
2851 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2852 AC_ARG_WITH(afs,
2853 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2854 [ case "$withval" in
2855   yes|auto)
2856     AC_MSG_RESULT($withval)
2857     samba_cv_WITH_AFS=$withval
2858     ;;
2859   *)
2860     AC_MSG_RESULT(no)
2861     ;;
2862   esac ],
2863   AC_MSG_RESULT(no)
2866 ####################################################
2867 # check for Linux-specific AFS fake-kaserver support
2868 samba_cv_WITH_FAKE_KASERVER=no
2869 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2870 AC_ARG_WITH(fake-kaserver,
2871 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2872 [ case "$withval" in
2873   yes|auto)
2874     AC_MSG_RESULT($withval)
2875     samba_cv_WITH_FAKE_KASERVER=$withval
2876     ;;
2877   *)
2878     AC_MSG_RESULT(no)
2879     ;;
2880   esac ],
2881   AC_MSG_RESULT(no)
2884 #################################################
2885 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2886 if test x"$samba_cv_WITH_AFS" != x"no" ||
2887    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2889     # see if this box has the afs-headers in /usr/include/afs
2890     AC_MSG_CHECKING(for /usr/include/afs)
2891     if test -d /usr/include/afs; then
2892           CFLAGS="$CFLAGS -I/usr/include/afs"
2893           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2894           AC_MSG_RESULT(yes)
2895     else
2896       AC_MSG_RESULT(no)
2897     fi
2899     # check for afs.h
2900     have_afs_headers=no
2901     AC_CHECK_HEADERS(afs.h afs/afs.h)
2902     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2903         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2904            test x"$samba_cv_WITH_AFS" = x"auto"; then
2905                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2906         else
2907                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2908         fi
2909     else
2910         have_afs_headers=yes
2911     fi
2914 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2915     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2918 #################################################
2919 # check whether to compile AFS/NT ACL mapping module
2920 samba_cv_WITH_VFS_AFSACL=no
2921 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2922 AC_ARG_WITH(vfs-afsacl,
2923 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2924 [ case "$withval" in
2925   yes|auto)
2926     AC_MSG_RESULT($withval)
2927     samba_cv_WITH_VFS_AFSACL=yes
2928     ;;
2929   *)
2930     AC_MSG_RESULT(no)
2931     ;;
2932   esac ],
2933   AC_MSG_RESULT(no)
2936 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2937    default_shared_modules="$default_shared_modules vfs_afsacl"
2939         
2940 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2941     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2944 #################################################
2945 # check for the DFS clear-text auth system
2946 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2947 AC_ARG_WITH(dfs,
2948 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2949 [ case "$withval" in
2950   yes)
2951     AC_MSG_RESULT(yes)
2952     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2953     ;;
2954   *)
2955     AC_MSG_RESULT(no)
2956     ;;
2957   esac ],
2958   AC_MSG_RESULT(no)
2961 ########################################################
2962 # Compile with LDAP support?
2964 with_ldap_support=auto
2965 AC_MSG_CHECKING([for LDAP support])
2967 AC_ARG_WITH(ldap,
2968 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2969 [ case "$withval" in
2970     yes|no)
2971         with_ldap_support=$withval
2972         ;;
2973   esac ])
2975 AC_MSG_RESULT($with_ldap_support)
2977 SMBLDAP=""
2978 AC_SUBST(SMBLDAP)
2979 SMBLDAPUTIL=""
2980 AC_SUBST(SMBLDAPUTIL)
2981 LDBLDAP=""
2982 AC_SUBST(LDBLDAP)
2984 if test x"$with_ldap_support" != x"no"; then
2986   ##################################################################
2987   # first test for ldap.h and lber.h
2988   # (ldap.h is required for this test)
2989   AC_CHECK_HEADERS(ldap.h lber.h)
2991   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2992         if test x"$with_ldap_support" = x"yes"; then
2993          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2994         else
2995          AC_MSG_WARN(ldap.h is needed for LDAP support)
2996         fi
2997         
2998         with_ldap_support=no
2999   fi
3001   ##################################################################
3002   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3003   # unsigned int in include/includes.h
3004   case $host_os in
3005         *hpux*)
3006          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3007          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3008         with_ldap_support=yes
3009         ;;
3010         *)
3011         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3012         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3013                 if test x"$with_ldap_support" = x"yes"; then
3014                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3015                 else
3016                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3017                 fi
3018                 with_ldap_support=no
3019         fi
3020         ;;
3021   esac
3024 if test x"$with_ldap_support" != x"no"; then
3025   ac_save_LIBS=$LIBS
3027   ##################################################################
3028   # we might need the lber lib on some systems. To avoid link errors
3029   # this test must be before the libldap test
3030   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3032   ########################################################
3033   # If ber_sockbuf_add_io() is available we can add
3034   # SASL wrapping hooks
3035   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3037   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3038                  AC_TRY_COMPILE([#include <ldap.h>],
3039                                 [int val = LDAP_OPT_SOCKBUF;],
3040                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3041                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3043   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3044           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3045         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3046   fi
3048   #######################################################
3049   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3050   # ldap logging and print it out in the samba logs
3051   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3052                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3053                  [AC_TRY_COMPILE([#include <lber.h>],
3054                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3055                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3056                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3058   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3059         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3060                   [Support for LDAP/LBER logging interception])
3061   fi
3063   ########################################################
3064   # now see if we can find the ldap libs in standard paths
3065   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3067   ########################################################
3068   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3069   # Check found in pam_ldap 145.
3070   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3072   LIBS="$LIBS $LDAP_LIBS"
3073   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3074     AC_TRY_COMPILE([
3075         #include <lber.h>
3076         #include <ldap.h>],
3077         [ldap_set_rebind_proc(0, 0, 0);],
3078         [smb_ldap_cv_ldap_set_rebind_proc=3],
3079         [smb_ldap_cv_ldap_set_rebind_proc=2]
3080     )
3081   ])
3083   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3085   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3087   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3088     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3089     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3090     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3091     default_shared_modules="$default_shared_modules";
3092     SMBLDAP="lib/smbldap.o"
3093     SMBLDAPUTIL="lib/smbldap_util.o"
3094     with_ldap_support=yes
3095     AC_MSG_CHECKING(whether LDAP support is used)
3096     AC_MSG_RESULT(yes)
3097   else
3098     if test x"$with_ldap_support" = x"yes"; then
3099         AC_MSG_ERROR(libldap is needed for LDAP support)
3100     else
3101         AC_MSG_WARN(libldap is needed for LDAP support)
3102     fi
3104     LDAP_LIBS=""
3105     with_ldap_support=no
3106   fi
3107   LIBS=$ac_save_LIBS
3111 #################################################
3112 # active directory support
3114 with_ads_support=auto
3115 AC_MSG_CHECKING([for Active Directory and krb5 support])
3117 AC_ARG_WITH(ads,
3118 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3119 [ case "$withval" in
3120     yes|no)
3121         with_ads_support="$withval"
3122         ;;
3123   esac ])
3125 AC_MSG_RESULT($with_ads_support)
3127 FOUND_KRB5=no
3128 KRB5_LIBS=""
3130 if test x"$with_ldap_support" != x"yes"; then
3132     if test x"$with_ads_support" = x"yes"; then
3133         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3134     elif test x"$with_ads_support" = x"auto"; then
3135         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3136         with_ads_support=no
3137     fi
3139 else
3141     # Check to see whether there is enough LDAP functionality to be able
3142     # to build AD support.
3144 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3145 case "$host_os" in
3146         *hpux*)
3147     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3149     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3150         if test x"$with_ads_support" = x"yes"; then
3151             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3152         elif test x"$with_ads_support" = x"auto"; then
3153             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3154             with_ads_support=no
3155         fi
3156     fi
3157     ;;
3158         *)
3159     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3161     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3162         if test x"$with_ads_support" = x"yes"; then
3163             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3164         elif test x"$with_ads_support" = x"auto"; then
3165             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3166             with_ads_support=no
3167         fi
3168     fi
3169     ;;
3170 esac
3173     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3175     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3176         if test x"$with_ads_support" = x"yes"; then
3177             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3178         elif test x"$with_ads_support" = x"auto"; then
3179             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3180             with_ads_support=no
3181         fi
3182     fi
3186 if test x"$with_ads_support" != x"no"; then
3188   # Do no harm to the values of CFLAGS and LIBS while testing for
3189   # Kerberos support.
3191   if test x$FOUND_KRB5 = x"no"; then
3192     #################################################
3193     # check for location of Kerberos 5 install
3194     AC_MSG_CHECKING(for kerberos 5 install path)
3195     AC_ARG_WITH(krb5,
3196     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3197     [ case "$withval" in
3198       no)
3199         AC_MSG_RESULT(no krb5-path given)
3200         ;;
3201       yes)
3202         AC_MSG_RESULT(/usr)
3203         FOUND_KRB5=yes
3204         ;;
3205       *)
3206         AC_MSG_RESULT($withval)
3207         KRB5_CFLAGS="-I$withval/include"
3208         KRB5_CPPFLAGS="-I$withval/include"
3209         KRB5_LDFLAGS="-L$withval/lib"
3210         FOUND_KRB5=yes
3211         if test -x "$withval/bin/krb5-config"; then
3212                 KRB5CONFIG=$withval/bin/krb5-config
3213         fi
3214         ;;
3215       esac ],
3216       AC_MSG_RESULT(no krb5-path given)
3217     )
3218   fi
3220   #################################################
3221   # check for krb5-config from recent MIT and Heimdal kerberos 5
3222   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3223   AC_MSG_CHECKING(for working krb5-config)
3224   if test -x "$KRB5CONFIG"; then
3225     ac_save_CFLAGS=$CFLAGS
3226     CFLAGS="";export CFLAGS
3227     ac_save_LDFLAGS=$LDFLAGS
3228     LDFLAGS="";export LDFLAGS
3229     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3230     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3231     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3232     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3233     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3234     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3235     FOUND_KRB5=yes
3236     AC_MSG_RESULT(yes)
3237   else
3238     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3239   fi
3241   if test x$FOUND_KRB5 = x"no"; then
3242     #################################################
3243     # see if this box has the SuSE location for the heimdal krb implementation
3244     AC_MSG_CHECKING(for /usr/include/heimdal)
3245     if test -d /usr/include/heimdal; then
3246       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3247           KRB5_CFLAGS="-I/usr/include/heimdal"
3248           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3249           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3250           FOUND_KRB5=yes
3251           AC_MSG_RESULT(yes)
3252       else
3253           KRB5_CFLAGS="-I/usr/include/heimdal"
3254           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3255           FOUND_KRB5=yes
3256           AC_MSG_RESULT(yes)
3257       fi
3258     else
3259       AC_MSG_RESULT(no)
3260     fi
3261   fi
3263   if test x$FOUND_KRB5 = x"no"; then
3264     #################################################
3265     # see if this box has the RedHat location for kerberos
3266     AC_MSG_CHECKING(for /usr/kerberos)
3267     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3268       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3269       KRB5_CFLAGS="-I/usr/kerberos/include"
3270       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3271       FOUND_KRB5=yes
3272       AC_MSG_RESULT(yes)
3273     else
3274       AC_MSG_RESULT(no)
3275     fi
3276   fi
3278   if test x$FOUND_KRB5 = x"no"; then
3279     #################################################
3280     # see if this box has the OpenBSD location for heimdal krb5
3281     AC_MSG_CHECKING(for /usr/include/kerberosV)
3282     if test -d /usr/include/kerberosV; then
3283       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3284       KRB5_LIBS="-lcrypto"
3285       FOUND_KRB5=yes
3286       AC_MSG_RESULT(yes)
3287     else
3288       AC_MSG_RESULT(no)
3289     fi
3290   fi
3292   ac_save_CFLAGS=$CFLAGS
3293   ac_save_CPPFLAGS=$CPPFLAGS
3294   ac_save_LDFLAGS=$LDFLAGS
3296   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3297   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3298   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3300   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3302   # now check for krb5.h. Some systems have the libraries without the headers!
3303   # note that this check is done here to allow for different kerberos
3304   # include paths
3305   AC_CHECK_HEADERS(krb5.h)
3307   if test x"$ac_cv_header_krb5_h" = x"no"; then
3309     # Give a warning if AD support was not explicitly requested,
3310     # i.e with_ads_support = auto, otherwise die with an error.
3312     if test x"$with_ads_support" = x"yes"; then
3313       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3314     else
3315       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3316     fi
3318     # Turn off AD support and restore CFLAGS and LIBS variables
3320     with_ads_support="no"
3322     CFLAGS=$ac_save_CFLAGS
3323     CPPFLAGS=$ac_save_CPPFLAGS
3324     LDFLAGS=$ac_save_LDFLAGS
3325   fi
3326   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3327   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3328         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3329         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3330   fi
3333 # Now we have determined whether we really want ADS support
3334 use_ads=no
3335 if test x"$with_ads_support" != x"no"; then
3336   use_ads=yes
3337   have_gssapi=no
3338   ac_save_LIBS=$LIBS
3340   # now check for gssapi headers.  This is also done here to allow for
3341   # different kerberos include paths
3342   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3344   ##################################################################
3345   # we might need the k5crypto and com_err libraries on some systems
3346   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3347   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3349   # Heimdal checks.
3350   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3351   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3352   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3354   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3355   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3357   ########################################################
3358   # now see if we can find the krb5 libs in standard paths
3359   # or as specified above
3360   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3361   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3363   ########################################################
3364   # now see if we can find the gssapi libs in standard paths
3365   if test x"$have_gssapi" != x"yes"; then
3366      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3367   fi
3369   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3370   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3371   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3372   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3373   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3374   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3375   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3376   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3377   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3378   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3379   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3380   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3381   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3382   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3383   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3384   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3385   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3386   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3387   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3388   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3389   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3390   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3391   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3392   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3393   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3394   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3395   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3396   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3397   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3398   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3399   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3400   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3401   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3402   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3403   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3404   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3405   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3406   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3407   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3408   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3409   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3411   LIBS="$KRB5_LIBS $LIBS"
3413   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3414         smb_krb5_ticket_has_keyinfo,
3415         [
3416             AC_TRY_COMPILE(
3417             [
3418                 #include <krb5.h>
3419             ],
3420             [
3421                 krb5_ticket ticket;
3422                 krb5_kvno kvno;
3423                 krb5_enctype enctype;
3425                 enctype = ticket.enc_part.enctype;
3426                 kvno = ticket.enc_part.kvno;
3427             ],
3428             [ smb_krb5_ticket_has_keyinfo=yes ],
3429             [ smb_krb5_ticket_has_keyinfo=no ])
3430         ])
3432   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3433         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3434             [Whether the krb5_ticket structure contains the kvno and enctype])
3435   fi
3437   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3438           smb_krb5_creds_opt_free_context,
3439           [
3440                 AC_TRY_COMPILE([
3441                     #include <krb5.h>],
3442                     [
3443                         krb5_context ctx;
3444                         krb5_get_init_creds_opt *opt = NULL;
3445                         krb5_get_init_creds_opt_free(ctx, opt);
3446                     ],
3447                     [smb_krb5_creds_opt_free_context=yes],
3448                     [smb_krb5_creds_opt_free_context=no]
3449                 )
3450           ])
3452   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3453         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3454             [Whether krb5_get_init_creds_opt_free takes a context argument])
3455   fi
3457   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3458     AC_TRY_COMPILE([
3459         #include <krb5.h>],
3460         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3461         [smb_krb5_verify_checksum=7],
3462         [smb_krb5_verify_checksum=6],
3463     )
3464   ])
3465   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3467   AC_CACHE_CHECK([for checksum in krb5_checksum],
3468                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3469     AC_TRY_COMPILE([#include <krb5.h>],
3470       [krb5_checksum cksum; cksum.checksum.length = 0;],
3471       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3472       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3474   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3475     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3476                [Whether the krb5_checksum struct has a checksum property])
3477   fi
3479   AC_CACHE_CHECK([for etype in EncryptedData],
3480                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3481     AC_TRY_COMPILE([#include <krb5.h>],
3482       [EncryptedData edata; edata.etype = 0;],
3483       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3484       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3486   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3487     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3488                [Whether the EncryptedData struct has a etype property])
3489   fi
3491   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3492                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3493     AC_TRY_COMPILE([#include <krb5.h>],
3494       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3495       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3496       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3498   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3499     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3500                [Whether the krb5_ap_req struct has a ticket pointer])
3501   fi
3503   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3504                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3505     AC_TRY_COMPILE([#include <krb5.h>],
3506       [krb5_error err; err.e_data = NULL;],
3507       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3508       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3510   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3511     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3512                [Whether the krb5_error struct has a e_data pointer])
3513   fi
3515   AC_CACHE_CHECK([for krb5_crypto type],
3516                 samba_cv_HAVE_KRB5_CRYPTO,[
3517     AC_TRY_COMPILE([#include <krb5.h>],
3518       [krb5_crypto crypto;],
3519       samba_cv_HAVE_KRB5_CRYPTO=yes,
3520       samba_cv_HAVE_KRB5_CRYPTO=no)])
3522   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3523     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3524                [Whether the type krb5_crypto exists])
3525   fi
3527   AC_CACHE_CHECK([for krb5_encrypt_block type],
3528                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3529     AC_TRY_COMPILE([#include <krb5.h>],
3530       [krb5_encrypt_block block;],
3531       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3532       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3534   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3535     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3536                [Whether the type krb5_encrypt_block exists])
3537   fi
3539   AC_CACHE_CHECK([for addrtype in krb5_address],
3540                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3541     AC_TRY_COMPILE([#include <krb5.h>],
3542       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3543       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3544       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3546   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3547     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3548                [Whether the krb5_address struct has a addrtype property])
3549   fi
3551   AC_CACHE_CHECK([for addr_type in krb5_address],
3552                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3553     AC_TRY_COMPILE([#include <krb5.h>],
3554       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3555       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3556       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3558   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3559     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3560               [Whether the krb5_address struct has a addr_type property])
3561   fi
3563   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3564                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3565                  [AC_TRY_COMPILE([#include <krb5.h>],
3566     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3567     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3569   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3570     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3571               [Whether the krb5_ticket struct has a enc_part2 property])
3572   fi
3574   AC_CACHE_CHECK([for keyblock in krb5_creds],
3575                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3576     AC_TRY_COMPILE([#include <krb5.h>],
3577       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3578       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3579       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3581   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3582     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3583               [Whether the krb5_creds struct has a keyblock property])
3584   fi
3586   AC_CACHE_CHECK([for session in krb5_creds],
3587                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3588     AC_TRY_COMPILE([#include <krb5.h>],
3589       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3590       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3591       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3593   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3594     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3595               [Whether the krb5_creds struct has a session property])
3596   fi
3598   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3599                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3600     AC_TRY_COMPILE([#include <krb5.h>],
3601       [krb5_keyblock key; key.keyvalue.data = NULL;],
3602       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3603       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3605   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3606     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3607               [Whether the krb5_keyblock struct has a keyvalue property])
3608   fi
3610   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3611                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3612     AC_TRY_COMPILE([#include <krb5.h>],
3613       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3614       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3615       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3616   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3617                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3618     AC_TRY_COMPILE([#include <krb5.h>],
3619       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3620       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3621       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3622 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3623 # w.r.t. arcfour and windows, so we must not enable it here
3624   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3625           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3626     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3627               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3628   fi
3630   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3631                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3632     AC_TRY_COMPILE([#include <krb5.h>],
3633       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3634       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3635       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3637   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3638     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3639               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3640   fi
3642   AC_CACHE_CHECK([for KV5M_KEYTAB],
3643                  samba_cv_HAVE_KV5M_KEYTAB,[
3644     AC_TRY_COMPILE([#include <krb5.h>],
3645       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3646       samba_cv_HAVE_KV5M_KEYTAB=yes,
3647       samba_cv_HAVE_KV5M_KEYTAB=no)])
3649   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3650       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3651              [Whether the KV5M_KEYTAB option is available])
3652   fi
3654   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3655                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3656     AC_TRY_COMPILE([#include <krb5.h>],
3657       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3658       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3659       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3661   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3662     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3663               [Whether KRB5_KU_OTHER_CKSUM is available])
3664   fi
3666   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3667                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3668     AC_TRY_COMPILE([#include <krb5.h>],
3669       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3670       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3671       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3673   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3674     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3675               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3676   fi
3678   AC_CACHE_CHECK([for the krb5_princ_component macro],
3679                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3680     AC_TRY_LINK([#include <krb5.h>],
3681       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3682       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3683       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3685   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3686     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3687                [Whether krb5_princ_component is available])
3688   fi
3690   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3691                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3692     AC_TRY_COMPILE([#include <krb5.h>],
3693       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3694       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3695       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3697   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3698     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3699               [Whether krb5_keytab_entry has key member])
3700   fi
3702   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3703                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3704     AC_TRY_COMPILE([#include <krb5.h>],
3705       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3706       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3707       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3709   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3710     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3711               [Whether krb5_keytab_entry has keyblock member])
3712   fi
3714   AC_CACHE_CHECK([for magic in krb5_address],
3715                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3716     AC_TRY_COMPILE([#include <krb5.h>],
3717       [krb5_address addr; addr.magic = 0;],
3718       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3719       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3721   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3722     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3723               [Whether the krb5_address struct has a magic property])
3724   fi
3726   AC_CACHE_CHECK([for WRFILE: keytab support],
3727                 samba_cv_HAVE_WRFILE_KEYTAB,[
3728     AC_TRY_RUN([
3729 #include<krb5.h>
3730   main()
3731   {
3732     krb5_context context;
3733     krb5_keytab keytab;
3735     krb5_init_context(&context);
3736     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3737   }],
3738   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3739   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3741   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3742       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3743                [Whether the WRFILE:-keytab is supported])
3744   fi
3746   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3747                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3748     AC_TRY_COMPILE([#include <krb5.h>],
3749     [
3750     krb5_context context;
3751     krb5_principal principal;
3752     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3753     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3754     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3756   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3757     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3758               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3759   fi
3761   AC_CACHE_CHECK([for krb5_addresses type],
3762                 samba_cv_HAVE_KRB5_ADDRESSES,[
3763     AC_TRY_COMPILE([#include <krb5.h>],
3764       [krb5_addresses addr;],
3765       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3766       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3768   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3769     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3770                [Whether the type krb5_addresses type exists])
3771   fi
3773   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3774                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3775     AC_TRY_COMPILE([#include <krb5.h>],
3776     [
3777     krb5_mk_error(0,0,0);],
3778     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3779     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3781   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3782     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3783               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3784   fi
3786   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3787     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3788         smb_krb5_enctype_to_string_takes_krb5_context_arg,[
3789         AC_TRY_RUN_STRICT([
3790                 #include <krb5.h>
3791                 int main(void) {
3792                         krb5_context context = NULL;
3793                         char *str = NULL;
3794                         krb5_enctype_to_string(context, 1, &str);
3795                         if (str) free (str); 
3796                         return 0;
3797                 }
3798                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3799                 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
3800                 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
3802     if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3803       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3804                 [whether krb5_enctype_to_string takes krb5_context argument])
3805     fi
3807     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3808         smb_krb5_enctype_to_string_takes_size_t_arg,[
3809         AC_TRY_RUN_STRICT([
3810                 #include <krb5.h>
3811                 int main(void) {
3812                         char buf[256];
3813                         krb5_enctype_to_string(1, buf, 256);
3814                         return 0;
3815                 }
3816                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3817                 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
3818                 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
3820     if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
3821       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3822                 [whether krb5_enctype_to_string takes size_t argument])
3823     fi
3824   fi
3826   AC_CACHE_CHECK([for krb5_principal_get_realm],
3827                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3828     AC_TRY_LINK([#include <krb5.h>],
3829       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3830       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3831       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3833   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3834     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3835                [Whether the function krb5_principal_get_realm is defined])
3836   fi
3838   AC_CACHE_CHECK([for krb5_princ_realm],
3839                 samba_cv_HAVE_KRB5_PRINC_REALM,[
3840     AC_TRY_LINK([#include <krb5.h>],
3841       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3842       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3843       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3845   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3846     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3847                [Whether the macro krb5_princ_realm is defined])
3848   fi
3850   #
3851   #
3852   # Now the decisions whether we can support krb5
3853   #
3854   # NOTE: all tests should be done before this block!
3855   #
3856   #
3857   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3858     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3859     use_ads=no
3860   fi
3862   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3863           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3864   then
3865     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3866     use_ads=no
3867   fi
3869   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3870           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3871   then
3872     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3873     use_ads=no
3874   fi
3876   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3877           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3878   then
3879     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3880     use_ads=no
3881   fi
3883   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3884           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3885   then
3886     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3887     use_ads=no
3888   fi
3890   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3892       # We only need the following functions if we can't get the enctype
3893       # and kvno out of the ticket directly (ie. on Heimdal).
3895       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3896       then
3897         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3898         use_ads=no
3899       fi
3901       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3902       then
3903         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3904         use_ads=no
3905       fi
3907   fi
3909   if test x"$use_ads" = x"yes"; then
3910     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3911     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3912     if test x"$have_gssapi" = x"yes"; then
3913       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3914     fi
3915   else
3916     if test x"$with_ads_support" = x"yes"; then
3917         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3918     else
3919         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3920     fi
3921     AC_REMOVE_DEFINE(HAVE_KRB5_H)
3922     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3923     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3924     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3925     KRB5_LIBS=""
3926     with_ads_support=no
3927   fi
3928   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3929   AC_MSG_RESULT([$use_ads])
3931 LIBS="$ac_save_LIBS"
3934 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3935 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3938 ########################################################
3939 # Compile with DNS Updates support?
3941 with_dnsupdate_support=no
3942 AC_MSG_CHECKING([whether to enable DNS Updates support])
3944 AC_ARG_WITH(dnsupdate,
3945 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
3946 [ case "$withval" in
3947     yes|no)
3948         with_dnsupdate_support=$withval
3949         ;;
3950   esac ])
3952 AC_MSG_RESULT($with_dnsupdate_support)
3954 if test x"$with_dnsupdate_support" != x"no"; then
3956   ################################################################
3957   # first test for Active Directory support being enabled
3958   #if test x"$with_ads_support" = x"no"; then
3959   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3960   #             with_dnsupdate_support=no
3961   #fi           
3962   ##################################################################
3963   # then test for uuid.h (necessary to generate unique DNS keynames
3964   # (uuid.h is required for this test)
3965   AC_CHECK_HEADERS(uuid/uuid.h)
3967   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3968         if test x"$with_dnsupdate_support" = x"yes"; then
3969          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3970         else
3971          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3972         fi
3973         with_dnsupdate_support=no
3974   fi
3977 if test x"$with_dnsupdate_support" != x"no"; then
3979   ########################################################
3980   # Now see if we can find the uuid libs in standard paths
3981   # On some systems, the uuid API is in libc, so we have to
3982   # be careful not to insert a spurious -luuid.
3984   UUID_LIBS=""
3985   AC_LIBTESTFUNC(uuid, uuid_generate,
3986           [
3987             case " $LIBS " in
3988                 *\ -luuid\ *)
3989                 UUID_LIBS="-luuid"
3990                 SMB_REMOVE_LIB(uuid)
3991                 ;;
3992             esac
3994             with_dnsupdate_support=yes
3995             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3996         ],
3997         [
3998             if test x"$with_dnsupdate_support" = x"yes"; then
3999                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4000             else
4001                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4002             fi
4003             with_dnsupdate_support=no
4004         ])
4007 #################################################
4008 # check for automount support
4009 AC_MSG_CHECKING(whether to use automount)
4010 AC_ARG_WITH(automount,
4011 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4012 [ case "$withval" in
4013   yes)
4014     AC_MSG_RESULT(yes)
4015     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4016     ;;
4017   *)
4018     AC_MSG_RESULT(no)
4019     ;;
4020   esac ],
4021   AC_MSG_RESULT(no)
4024 #################################################
4025 # check for mount- and umount.cifs support
4026 CIFSMOUNT_PROGS=""
4027 INSTALL_CIFSMOUNT=""
4028 UNINSTALL_CIFSMOUNT=""
4029 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4030 AC_ARG_WITH(cifsmount,
4031 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4032 [ case "$withval" in
4033   no)
4034         AC_MSG_RESULT(no)
4035         ;;
4036   *)
4037         case "$host_os" in
4038         *linux*)
4039                 AC_MSG_RESULT(yes)
4040                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4041                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4042                 INSTALL_CIFSMOUNT="installcifsmount"
4043                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4044                 ;;
4045         *)
4046                 AC_MSG_ERROR(not on a linux system!)
4047                 ;;
4048         esac
4049     ;;
4050   esac ],
4051 [ case "$host_os" in
4052   *linux*)
4053         AC_MSG_RESULT(yes)
4054         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4055         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4056         INSTALL_CIFSMOUNT="installcifsmount"
4057         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4058         ;;
4059   *)
4060         AC_MSG_RESULT(no)
4061         ;;
4062   esac ]
4065 #################################################
4066 # check for cifs.spnego support
4067 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4068 CIFSSPNEGO_PROGS=""
4069 INSTALL_CIFSSPNEGO=""
4070 UNINSTALL_CIFSSPNEGO=""
4071 AC_MSG_CHECKING(whether to build cifs.spnego)
4072 AC_ARG_WITH(cifsspnego,
4073 [AS_HELP_STRING([--with-cifsspnego], [Include cifs.spnego (Linux only) support (default=no)])],
4074 [ case "$withval" in
4075   no)
4076         AC_MSG_RESULT(no)
4077         ;;
4078   *)
4079         case "$host_os" in
4080         *linux*)
4081                 if test x"$use_ads" != x"yes"; then
4082                         AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4083                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4084                         AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4085                 else
4086                         AC_MSG_RESULT(yes)
4087                         AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4088                         CIFSSPNEGO_PROGS="bin/cifs.spnego"
4089                         INSTALL_CIFSSPNEGO="installcifsspnego"
4090                         UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4091                 fi
4092                 ;;
4093         *)
4094                 AC_MSG_ERROR(not on a linux system!)
4095                 ;;
4096         esac
4097     ;;
4098   esac ],
4100   AC_MSG_RESULT(no)
4101   ]
4105 #################################################
4106 # Check for a PAM clear-text auth, accounts, password
4107 # and session support. Most PAM implementations keep their
4108 # headers in /usr/include/security. Darwin keeps its in
4109 # /usr/include/pam.
4111 with_pam_for_crypt=no
4112 try_pam=no
4113 AC_MSG_CHECKING(whether to try PAM support)
4114 AC_ARG_WITH(pam,
4115 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4116 [ case "$withval" in
4117   yes|no)
4118     try_pam=$withval
4119     ;;
4120   esac
4122 AC_MSG_RESULT([$try_pam])
4124 use_pam=no
4125 create_pam_modules=no
4126 if test x"${try_pam}" != x"no";then
4127         use_pam=yes
4128         create_pam_modules=yes
4130         # Most systems have PAM headers in /usr/include/security, but Darwin
4131         # has them in /usr/include/pam.
4132         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4133         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4134                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4135                 if test x"${try_pam}" = x"yes";then
4136                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4137                 fi
4138                 use_pam=no
4139                 create_pam_modules=no
4140         fi
4142         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4143         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4144                 if test x"${try_pam}" = x"yes";then
4145                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4146                 fi
4147                 use_pam=no
4148                 create_pam_modules=no
4149         fi
4151         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4152                 #if HAVE_SECURITY_PAM_APPL_H
4153                 #include <security/pam_appl.h>
4154                 #endif
4155                 #if HAVE_PAM_PAM_APPL_H
4156                 #include <pam/pam_appl.h>
4157                 #endif
4158         ]])
4159         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4160                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4161                 if test x"${try_pam}" = x"yes";then
4162                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4163        fi
4164                 create_pam_modules=no
4165     fi
4167         if test x"$use_pam" = x"yes"; then
4168     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4169                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4170                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4171     with_pam_for_crypt=yes
4173                 if test x"$create_pam_modules" = x"yes"; then
4174                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4175                         # this checks are optional,
4176                         # we don't care about the results here
4177                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4178                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4179                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4180                 else
4181                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4182                 fi
4183         fi
4184         AC_MSG_CHECKING(whether to use PAM support)
4185         AC_MSG_RESULT([$use_pam])
4187         AC_MSG_CHECKING(whether to have PAM MODULES support)
4188         AC_MSG_RESULT([$create_pam_modules])
4189 fi # try_pam != no
4191 #################################################
4192 # check for pam_smbpass support
4193 PAM_MODULES=""
4194 INSTALL_PAM_MODULES=""
4195 UNINSTALL_PAM_MODULES=""
4196 AC_MSG_CHECKING(whether to use pam_smbpass)
4197 AC_ARG_WITH(pam_smbpass,
4198 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4199 [ case "$withval" in
4200   yes)
4201     AC_MSG_RESULT(yes)
4203        # Conditions under which pam_smbpass should not be built.
4205        if test x"$BLDSHARED" != x"true"; then
4206           AC_MSG_ERROR([No support for shared modules])
4207        elif test x"$create_pam_modules" != x"yes"; then
4208           AC_MSG_ERROR([No support for PAM MODULES])
4209        else
4210           PAM_MODULES="pam_smbpass"
4211           INSTALL_PAM_MODULES="installpammodules"
4212           UNINSTALL_PAM_MODULES="uninstallpammodules"
4213        fi
4214     ;;
4215   *)
4216     AC_MSG_RESULT(no)
4217     ;;
4218   esac ],
4219   AC_MSG_RESULT(no)
4223 ###############################################
4224 # test for where we get crypt() from
4225 AC_SEARCH_LIBS(crypt, [crypt],
4226   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4227   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4230 ## moved after the check for -lcrypt in order to
4231 ## ensure that the necessary libraries are included
4232 ## check checking for truncated salt.  Wrapped by the
4233 ## $with_pam_for_crypt variable as above   --jerry
4235 if test $with_pam_for_crypt = no; then
4236 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4237 crypt_LIBS="$LIBS"
4238 LIBS="$AUTH_LIBS $LIBS"
4239 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4240         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4241 LIBS="$crypt_LIBS"])
4242 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4243         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4247 #################################################
4248 # check for a NISPLUS_HOME support
4249 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4250 AC_ARG_WITH(nisplus-home,
4251 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4252 [ case "$withval" in
4253   yes)
4254     AC_MSG_RESULT(yes)
4255     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4256     ;;
4257   *)
4258     AC_MSG_RESULT(no)
4259     ;;
4260   esac ],
4261   AC_MSG_RESULT(no)
4264 #################################################
4265 # check for syslog logging
4266 AC_MSG_CHECKING(whether to use syslog logging)
4267 AC_ARG_WITH(syslog,
4268 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4269 [ case "$withval" in
4270   yes)
4271     AC_MSG_RESULT(yes)
4272     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4273     ;;
4274   *)
4275     AC_MSG_RESULT(no)
4276     ;;
4277   esac ],
4278   AC_MSG_RESULT(no)
4281 #################################################
4282 # check for experimental disk-quotas support
4284 samba_cv_WITH_QUOTAS=auto
4285 samba_cv_TRY_QUOTAS=no
4286 samba_cv_RUN_QUOTA_TESTS=auto
4287 samba_cv_WITH_SYS_QUOTAS=auto
4288 samba_cv_TRY_SYS_QUOTAS=auto
4289 samba_cv_SYSQUOTA_FOUND=no
4291 AC_MSG_CHECKING(whether to try disk-quotas support)
4292 AC_ARG_WITH(quotas,
4293 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4294 [ case "$withval" in
4295   yes)
4296     AC_MSG_RESULT(yes)
4297     samba_cv_WITH_QUOTAS=yes
4298     samba_cv_TRY_QUOTAS=yes
4299     samba_cv_RUN_QUOTA_TESTS=yes
4300     #set sys quotas to auto in this case
4301     samba_cv_TRY_SYS_QUOTAS=auto
4302     ;;
4303   auto)
4304     AC_MSG_RESULT(auto)
4305     samba_cv_WITH_QUOTAS=auto
4306     samba_cv_TRY_QUOTAS=auto
4307     samba_cv_RUN_QUOTA_TESTS=auto
4308     #set sys quotas to auto in this case
4309     samba_cv_TRY_SYS_QUOTAS=auto
4310     ;;
4311   no)
4312     AC_MSG_RESULT(no)
4313     samba_cv_WITH_QUOTAS=no
4314     samba_cv_TRY_QUOTAS=no
4315     samba_cv_RUN_QUOTA_TESTS=no
4316     ;;
4317   *)
4318     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4319     ;;
4320   esac ],
4321   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4324 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4325 AC_ARG_WITH(sys-quotas,
4326 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4327 [ case "$withval" in
4328   yes)
4329     AC_MSG_RESULT(yes)
4330     samba_cv_WITH_SYS_QUOTAS=yes
4331     samba_cv_TRY_SYS_QUOTAS=yes
4332     samba_cv_RUN_QUOTA_TESTS=yes
4333     ;;
4334   auto)
4335     AC_MSG_RESULT(auto)
4336     samba_cv_WITH_SYS_QUOTAS=auto
4337     samba_cv_TRY_SYS_QUOTAS=auto
4338     samba_cv_RUN_QUOTA_TESTS=auto
4339     ;;
4340   no)
4341     AC_MSG_RESULT(no)
4342     samba_cv_WITH_SYS_QUOTAS=no
4343     samba_cv_TRY_SYS_QUOTAS=no
4344     ;;
4345   *)
4346     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4347     ;;
4348   esac ],
4349   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4352 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4353 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4354   case "$host_os" in
4355         *linux*)
4356             AC_MSG_RESULT(yes)
4357             samba_cv_TRY_SYS_QUOTAS=yes
4358             samba_cv_RUN_QUOTA_TESTS=yes
4359             ;;
4360         *)
4361             AC_MSG_RESULT(no)
4362             samba_cv_TRY_SYS_QUOTAS=no
4363             ;;
4364   esac
4367 #############################################
4368 # only check for quota stuff if --with-quotas
4369 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4371 case "$host_os" in
4372         # on linux we didn't need to test we have builtin support
4373         *linux*)
4374             samba_cv_SYSQUOTA_FOUND=yes
4375             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4376             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4377             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4378             AC_MSG_RESULT(yes)
4380             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4381             samba_cv_found_xfs_header=yes
4382             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4383             AC_MSG_RESULT(yes)
4384             ;;
4385         *solaris*)
4386             # need to set this define when using static linking (BUG 1473)
4387             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4388             ;;
4389         *)
4390             ;;
4391 esac
4393 # some broken header files need this
4394 AC_CHECK_HEADER(asm/types.h,[
4395             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4396             AC_ADD_INCLUDE(<asm/types.h>)
4397             ])
4399 # For quotas on Veritas VxFS filesystems
4400 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4402 # For quotas on Linux XFS filesystems
4403 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4405 # For sys/quota.h and linux/quota.h
4406 AC_CHECK_HEADERS(sys/quota.h)
4408 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4409 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4410 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4411 AC_TRY_COMPILE([
4412 #include "confdefs.h"
4413 #ifdef HAVE_SYS_TYPES_H
4414 #include <sys/types.h>
4415 #endif
4416 #ifdef HAVE_ASM_TYPES_H
4417 #include <asm/types.h>
4418 #endif
4419 #include <sys/quota.h>
4420 ],[int i = Q_XGETQUOTA;],
4421 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4422 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4423         samba_cv_found_xfs_header=yes
4427 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4428 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4429 AC_TRY_COMPILE([
4430 #include "confdefs.h"
4431 #ifdef HAVE_SYS_QUOTA_H
4432 #include <sys/quota.h>
4433 #endif
4435 struct dqblk D;
4436 D.dqb_fsoftlimit = 0;],
4437 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4438 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4439         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4442 ##################
4443 # look for a working quota system
4445 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4446 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4447 AC_TRY_RUN_STRICT([
4448 #define HAVE_QUOTACTL_4A 1
4449 #define AUTOCONF_TEST 1
4450 #include "confdefs.h"
4451 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4452            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4453 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4454     samba_cv_SYSQUOTA_FOUND=yes;
4455     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4456     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4460 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4461 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4462 AC_TRY_RUN_STRICT([
4463 #define HAVE_QUOTACTL_4B 1
4464 #define AUTOCONF_TEST 1
4465 #include "confdefs.h"
4466 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4467            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4468 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4469     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4470     samba_cv_SYSQUOTA_FOUND=yes;
4471     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4472     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4476 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4477 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4478 AC_TRY_RUN_STRICT([
4479 #define HAVE_QUOTACTL_3 1
4480 #define AUTOCONF_TEST 1
4481 #include "confdefs.h"
4482 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4483            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4484 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4485     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4486     samba_cv_SYSQUOTA_FOUND=yes;
4487     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4488     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4492 #################################################
4493 # check for mntent.h and struct mntent
4494 AC_CHECK_HEADERS(mntent.h)
4495 #################################################
4496 # check for setmntent,getmntent,endmntent
4497 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4499 #################################################
4500 # check for devnm.h and struct mntent
4501 AC_CHECK_HEADERS(devnm.h)
4502 #################################################
4503 # check for devnm
4504 AC_CHECK_FUNCS(devnm)
4506 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4507     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4508         # if --with-sys-quotas=yes then build it
4509         # you have can use the get/set quota command smb.conf
4510         # options then
4511         samba_cv_SYSQUOTA_FOUND=auto
4512     fi
4513     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4514         # if --with-sys-quotas=yes then build it
4515         # you have can use the get/set quota command smb.conf
4516         # options then
4517         samba_cv_TRY_SYS_QUOTAS=auto
4518     fi
4521 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4522 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4523 SAVE_CPPFLAGS="$CPPFLAGS"
4524 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4525 AC_TRY_COMPILE([
4526 #include "confdefs.h"
4527 #define NO_PROTO_H 1
4528 #define NO_CONFIG_H 1
4529 #define HAVE_SYS_QUOTAS 1
4530 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4531 #include "${srcdir-.}/lib/sysquotas.c"
4532 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4533 CPPFLAGS="$SAVE_CPPFLAGS"
4535 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4536 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4537     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4538         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4539         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4540         samba_cv_WE_USE_SYS_QUOTAS=yes
4541         AC_MSG_RESULT(yes)
4542     else
4543         AC_MSG_RESULT(no)
4544     fi
4548 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4549 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4550 SAVE_CPPFLAGS="$CPPFLAGS"
4551 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4552 AC_TRY_COMPILE([
4553 #include "confdefs.h"
4554 #define NO_PROTO_H 1
4555 #define NO_CONFIG_H 1
4556 #define HAVE_SYS_QUOTAS 1
4557 #define HAVE_XFS_QUOTAS 1
4558 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4559 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4560 CPPFLAGS="$SAVE_CPPFLAGS"
4562 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4563     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4564         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4565     fi
4569 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4570 SAVE_CPPFLAGS="$CPPFLAGS"
4571 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4572 AC_TRY_COMPILE([
4573 #include "confdefs.h"
4574 #define NO_PROTO_H 1
4575 #define NO_CONFIG_H 1
4576 #include "${srcdir-.}/smbd/quotas.c"
4577 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4578 CPPFLAGS="$SAVE_CPPFLAGS"
4580 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4581 AC_MSG_CHECKING(whether to use the old quota support)
4582     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4583       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4584         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4585         AC_MSG_RESULT(yes)
4586       else
4587         AC_MSG_RESULT(no)
4588       fi
4589     else
4590       AC_MSG_RESULT(no)
4591     fi
4594 ####################
4595 # End of quota check samba_cv_RUN_QUOTA_TESTS
4598 #################################################
4599 # check for experimental utmp accounting
4601 AC_MSG_CHECKING(whether to support utmp accounting)
4602 WITH_UTMP=yes
4603 AC_ARG_WITH(utmp,
4604 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4605 [ case "$withval" in
4606   no)
4607                 WITH_UTMP=no
4608                 ;;
4609   *)
4610                 WITH_UTMP=yes
4611                 ;;
4612   esac ],
4615 # utmp requires utmp.h
4616 # Note similar check earlier, when checking utmp details.
4618 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4619         utmp_no_reason=", no utmp.h on $host_os"
4620         WITH_UTMP=no
4623 # Display test results
4625 if test x"$WITH_UTMP" = x"yes"; then
4626         AC_MSG_RESULT(yes)
4627         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4628 else
4629         AC_MSG_RESULT(no$utmp_no_reason)
4632 INSTALLLIBCMD_SH=:
4633 INSTALLLIBCMD_A=:
4634 UNINSTALLLIBCMD_SH=:
4635 UNINSTALLLIBCMD_A=:
4637 if test $BLDSHARED = true; then
4638         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4639         UNINSTALLLIBCMD_SH="rm -f"
4641 if test $enable_static = yes; then
4642         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4643         UNINSTALLLIBCMD_A="rm -f"
4646 #################################################
4647 # --disable-shared-libs
4648 # can be used to disable the internal use of shared libs altogether
4649 # (this only has an effect when building shared libs is enabled)
4651 USESHARED=false
4652 AC_SUBST(USESHARED)
4654 AC_MSG_CHECKING(whether to use shared libraries internally)
4655 AC_ARG_ENABLE([shared-libs],
4656         AS_HELP_STRING([--enable-shared-libs],
4657                 [Use shared libraries internally (default=yes)]),
4658         [enable_shared_libs=$enableval],
4659         [enable_shared_libs=yes])
4661 if test x"$enable_shared_libs" != x"no" ; then
4662         USESHARED=$BLDSHARED
4665 AC_MSG_RESULT([$USESHARED])
4667 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4668         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4671 #################################################
4672 # --with-static-libs=LIBS:
4673 #   link (internal) libs dynamically or statically?
4675 # If a subsystem is built as a library then this controls whether they are
4676 # linked into Samba targets statically or dynamically:
4678 # * If we build the shared library at all, we link dynamically by default.
4680 # * We only link statically if we don't build shared or if the library
4681 #   appears in the --with-static-libs configure option.
4683 # Example:
4684 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4685 #   of linking the dynamic variant with -ltalloc.
4687 # NOTE: This option only affects libraries that we do not only build
4688 # but that samba also links against as libraries (as opposed to linking
4689 # the plain object files. - This has to be configured in Makefile.in.
4690 # So in particular it does not harm to give invalid or unknown names here.
4693 AC_ARG_WITH([static-libs],
4694         [AS_HELP_STRING([--with-static-libs=LIBS],
4695                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4696         [AS_IF([test $withval],
4697                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4698                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4699                         eval LINK_$lib=STATIC
4700                 done], [])],
4701         [])
4704 SMB_LIBRARY(talloc)
4705 SMB_LIBRARY(tdb)
4706 SMB_LIBRARY(netapi)
4709 #################################################
4710 # should we build libaddns?
4711 INSTALL_LIBADDNS=
4712 UNINSTALL_LIBADDNS=
4713 LIBADDNS_SHARED=
4714 LIBADDNS=
4715 AC_MSG_CHECKING(whether to build the libaddns shared library)
4716 AC_ARG_WITH(libaddns,
4717 [AS_HELP_STRING([--with-libaddns], [Build the libaddns shared library (default=no undefined API)])],
4718 [ case "$withval" in
4719   *)
4720      AC_MSG_RESULT(no)
4721      ;;
4722   yes)
4723      if test $BLDSHARED = true; then
4724         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4725         LIBADDNS=libaddns
4726         AC_MSG_RESULT(yes)
4727      else
4728         enable_static=yes
4729         AC_MSG_RESULT(no shared library support -- will supply static library)
4730      fi
4731      if test $enable_static = yes; then
4732         LIBADDNS=libaddns
4733      fi
4734      INSTALL_LIBADDNS=installlibaddns
4735      UNINSTALL_LIBADDNS=uninstalllibaddns
4736      ;;
4737   esac ],
4738 [AC_MSG_RESULT(no)]
4741 #################################################
4742 # should we build libsmbclient?
4744 INSTALL_LIBSMBCLIENT=
4745 UNINSTALL_LIBSMBCLIENT=
4746 LIBSMBCLIENT_SHARED=
4747 LIBSMBCLIENT=
4748 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4749 AC_ARG_WITH(libsmbclient,
4750 [AS_HELP_STRING([--with-libsmbclient], [Build the libsmbclient shared library (default=yes if shared libs supported)])],
4751 [ case "$withval" in
4752   no)
4753      AC_MSG_RESULT(no)
4754      ;;
4755   *)
4756      if test $BLDSHARED = true; then
4757         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4758         LIBSMBCLIENT=libsmbclient
4759         AC_MSG_RESULT(yes)
4760      else
4761         enable_static=yes
4762         AC_MSG_RESULT(no shared library support -- will supply static library)
4763      fi
4764      if test $enable_static = yes; then
4765         LIBSMBCLIENT=libsmbclient
4766      fi
4767      INSTALL_LIBSMBCLIENT=installclientlib
4768      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4769      ;;
4770   esac ],
4772 # if unspecified, default is to build it if possible.
4773   if test $BLDSHARED = true; then
4774      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4775      LIBSMBCLIENT=libsmbclient
4776      AC_MSG_RESULT(yes)
4777    else
4778      enable_static=yes
4779      AC_MSG_RESULT(no shared library support -- will supply static library)
4780    fi
4781    if test $enable_static = yes; then
4782      LIBSMBCLIENT=libsmbclient
4783   fi]
4784   INSTALL_LIBSMBCLIENT=installclientlib
4785   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4788 INSTALL_LIBSMBSHAREMODES=
4789 LIBSMBSHAREMODES_SHARED=
4790 LIBSMBSHAREMODES=
4791 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4792 AC_ARG_WITH(libsmbsharemodes,
4793 [AS_HELP_STRING([--with-libsmbsharemodes], [Build the libsmbsharemodes shared library (default=yes if shared libs supported)])],
4794 [ case "$withval" in
4795   no)
4796      AC_MSG_RESULT(no)
4797      ;;
4798   *)
4799      if test $BLDSHARED = true; then
4800         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4801         LIBSMBSHAREMODES=libsmbsharemodes
4802         AC_MSG_RESULT(yes)
4803      else
4804         enable_static=yes
4805         AC_MSG_RESULT(no shared library support -- will supply static library)
4806      fi
4807      if test $enable_static = yes; then
4808         LIBSMBSHAREMODES=libsmbsharemodes
4809      fi
4810      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4811      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4812      ;;
4813   esac ],
4815 # if unspecified, default is to build it if possible.
4816   if test $BLDSHARED = true; then
4817      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4818      LIBSMBSHAREMODES=libsmbsharemodes
4819      AC_MSG_RESULT(yes)
4820    else
4821      enable_static=yes
4822      AC_MSG_RESULT(no shared library support -- will supply static library)
4823    fi
4824    if test $enable_static = yes; then
4825      LIBSMBSHAREMODES=libsmbsharemodes
4826   fi]
4827   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4831 #################################################
4832 # these tests are taken from the GNU fileutils package
4833 AC_CHECKING(how to get filesystem space usage)
4834 space=no
4836 # Test for statvfs64.
4837 if test $space = no; then
4838   # SVR4
4839   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4840   [AC_TRY_RUN([
4841 #if defined(HAVE_UNISTD_H)
4842 #include <unistd.h>
4843 #endif
4844 #include <sys/types.h>
4845 #include <sys/statvfs.h>
4846   main ()
4847   {
4848     struct statvfs64 fsd;
4849     exit (statvfs64 (".", &fsd));
4850   }],
4851   fu_cv_sys_stat_statvfs64=yes,
4852   fu_cv_sys_stat_statvfs64=no,
4853   fu_cv_sys_stat_statvfs64=cross)])
4854   if test $fu_cv_sys_stat_statvfs64 = yes; then
4855     space=yes
4856     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4857   fi
4860 # Perform only the link test since it seems there are no variants of the
4861 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4862 # because that got a false positive on SCO OSR5.  Adding the declaration
4863 # of a `struct statvfs' causes this test to fail (as it should) on such
4864 # systems.  That system is reported to work fine with STAT_STATFS4 which
4865 # is what it gets when this test fails.
4866 if test $space = no; then
4867   # SVR4
4868   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4869                  [AC_TRY_LINK([#include <sys/types.h>
4870 #include <sys/statvfs.h>],
4871                               [struct statvfs fsd; statvfs (0, &fsd);],
4872                               fu_cv_sys_stat_statvfs=yes,
4873                               fu_cv_sys_stat_statvfs=no)])
4874   if test $fu_cv_sys_stat_statvfs = yes; then
4875     space=yes
4876     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4877   fi
4880 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4881 # This is not the case on ancient Linux systems.
4883 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4884     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4885         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4886 if test x"$samba_cv_fsid_int" = x"yes"; then
4887     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4890 if test $space = no; then
4891   # DEC Alpha running OSF/1
4892   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4893   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4894   [AC_TRY_RUN([
4895 #include <sys/param.h>
4896 #include <sys/types.h>
4897 #include <sys/mount.h>
4898   main ()
4899   {
4900     struct statfs fsd;
4901     fsd.f_fsize = 0;
4902     exit (statfs (".", &fsd, sizeof (struct statfs)));
4903   }],
4904   fu_cv_sys_stat_statfs3_osf1=yes,
4905   fu_cv_sys_stat_statfs3_osf1=no,
4906   fu_cv_sys_stat_statfs3_osf1=no)])
4907   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4908   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4909     space=yes
4910     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4911   fi
4914 if test $space = no; then
4915 # AIX
4916   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4917 member (AIX, 4.3BSD)])
4918   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4919   [AC_TRY_RUN([
4920 #ifdef HAVE_SYS_PARAM_H
4921 #include <sys/param.h>
4922 #endif
4923 #ifdef HAVE_SYS_MOUNT_H
4924 #include <sys/mount.h>
4925 #endif
4926 #ifdef HAVE_SYS_VFS_H
4927 #include <sys/vfs.h>
4928 #endif
4929   main ()
4930   {
4931   struct statfs fsd;
4932   fsd.f_bsize = 0;
4933   exit (statfs (".", &fsd));
4934   }],
4935   fu_cv_sys_stat_statfs2_bsize=yes,
4936   fu_cv_sys_stat_statfs2_bsize=no,
4937   fu_cv_sys_stat_statfs2_bsize=no)])
4938   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4939   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4940     space=yes
4941     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4942   fi
4945 if test $space = no; then
4946 # SVR3
4947   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4948   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4949   [AC_TRY_RUN([#include <sys/types.h>
4950 #include <sys/statfs.h>
4951   main ()
4952   {
4953   struct statfs fsd;
4954   exit (statfs (".", &fsd, sizeof fsd, 0));
4955   }],
4956     fu_cv_sys_stat_statfs4=yes,
4957     fu_cv_sys_stat_statfs4=no,
4958     fu_cv_sys_stat_statfs4=no)])
4959   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4960   if test $fu_cv_sys_stat_statfs4 = yes; then
4961     space=yes
4962     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4963   fi
4966 if test $space = no; then
4967 # 4.4BSD and NetBSD
4968   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4969 member (4.4BSD and NetBSD)])
4970   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4971   [AC_TRY_RUN([#include <sys/types.h>
4972 #ifdef HAVE_SYS_PARAM_H
4973 #include <sys/param.h>
4974 #endif
4975 #ifdef HAVE_SYS_MOUNT_H
4976 #include <sys/mount.h>
4977 #endif
4978   main ()
4979   {
4980   struct statfs fsd;
4981   fsd.f_fsize = 0;
4982   exit (statfs (".", &fsd));
4983   }],
4984   fu_cv_sys_stat_statfs2_fsize=yes,
4985   fu_cv_sys_stat_statfs2_fsize=no,
4986   fu_cv_sys_stat_statfs2_fsize=no)])
4987   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4988   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4989     space=yes
4990         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4991   fi
4994 if test $space = no; then
4995   # Ultrix
4996   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4997   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4998   [AC_TRY_RUN([#include <sys/types.h>
4999 #ifdef HAVE_SYS_PARAM_H
5000 #include <sys/param.h>
5001 #endif
5002 #ifdef HAVE_SYS_MOUNT_H
5003 #include <sys/mount.h>
5004 #endif
5005 #ifdef HAVE_SYS_FS_TYPES_H
5006 #include <sys/fs_types.h>
5007 #endif
5008   main ()
5009   {
5010   struct fs_data fsd;
5011   /* Ultrix's statfs returns 1 for success,
5012      0 for not mounted, -1 for failure.  */
5013   exit (statfs (".", &fsd) != 1);
5014   }],
5015   fu_cv_sys_stat_fs_data=yes,
5016   fu_cv_sys_stat_fs_data=no,
5017   fu_cv_sys_stat_fs_data=no)])
5018   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5019   if test $fu_cv_sys_stat_fs_data = yes; then
5020     space=yes
5021     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5022   fi
5026 # As a gating factor for large file support, in order to
5027 # use <4GB files we must have the following minimal support
5028 # available.
5029 # long long, and a 64 bit off_t or off64_t.
5030 # If we don't have all of these then disable large
5031 # file support.
5033 AC_MSG_CHECKING([if large file support can be enabled])
5034 AC_TRY_COMPILE([
5035 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5036 #include <sys/types.h>
5037 #else
5038 __COMPILE_ERROR_
5039 #endif
5041 [int i],
5042 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5043 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5044         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5046 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5048 #################################################
5049 # check for cluster extensions
5051 AC_MSG_CHECKING(whether to include cluster support)
5052 AC_ARG_WITH(cluster-support,
5053 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5054 if test "x$with_cluster_support" = "xyes"; then
5055     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5056     AC_MSG_RESULT(yes)
5057 else
5058     AC_MSG_RESULT(no)
5062 #################################################
5063 # check for ACL support
5065 AC_MSG_CHECKING(whether to support ACLs)
5066 AC_ARG_WITH(acl-support,
5067 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5068 [ case "$withval" in
5069         yes|no)
5070                 with_acl_support="$withval"
5071                 ;;
5072   esac ])
5074 if test x"$with_acl_support" = x ; then
5075         with_acl_support="auto"
5078 AC_MSG_RESULT($with_acl_support)
5080 if test x"$with_acl_support" = x"no"; then
5081         AC_MSG_RESULT(Disabling ACL support)
5082         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5083 else
5084         AC_MSG_NOTICE(checking whether ACL support is available:)
5085         case "$host_os" in
5086         *sysv5*)
5087                 AC_MSG_NOTICE(Using UnixWare ACLs)
5088                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5089                 default_static_modules="$default_static_modules vfs_solarisacl"
5090                 ;;
5091         *solaris*)
5092                 AC_MSG_NOTICE(Using solaris ACLs)
5093                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5094                 ACL_LIBS="$ACL_LIBS -lsec"
5095                 default_static_modules="$default_static_modules vfs_solarisacl"
5096                 ;;
5097         *hpux*)
5098                 AC_MSG_NOTICE(Using HPUX ACLs)
5099                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5100                 default_static_modules="$default_static_modules vfs_hpuxacl"
5101                 ;;
5102         *irix*)
5103                 AC_MSG_NOTICE(Using IRIX ACLs)
5104                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5105                 default_static_modules="$default_static_modules vfs_irixacl"
5106                 ;;
5107         *aix*)
5108                 AC_MSG_NOTICE(Using AIX ACLs)
5109                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5110                 default_static_modules="$default_static_modules vfs_aixacl"
5111                 ;;
5112         *osf*)
5113                 AC_MSG_NOTICE(Using Tru64 ACLs)
5114                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5115                 ACL_LIBS="$ACL_LIBS -lpacl"
5116                 default_static_modules="$default_static_modules vfs_tru64acl"
5117                 ;;
5118         *darwin*)
5119                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5120                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5121                 ;;
5122         *)
5123                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5124                 case "$host_os" in
5125                 *linux*)
5126                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5127                         ;;
5128                 esac
5129                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5130                         acl_LIBS=$LIBS
5131                         LIBS="$LIBS $ACL_LIBS"
5132                         AC_TRY_LINK([
5133                                 #include <sys/types.h>
5134                                 #include <sys/acl.h>
5135                         ],[
5136                                 acl_t acl;
5137                                 int entry_id;
5138                                 acl_entry_t *entry_p;
5139                                 return acl_get_entry(acl, entry_id, entry_p);
5140                         ],
5141                         [samba_cv_HAVE_POSIX_ACLS=yes],
5142                         [samba_cv_HAVE_POSIX_ACLS=no])
5143                         LIBS=$acl_LIBS
5144                 ])
5145                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5146                         AC_MSG_NOTICE(Using posix ACLs)
5147                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5148                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5149                                 acl_LIBS=$LIBS
5150                                 LIBS="$LIBS $ACL_LIBS"
5151                                 AC_TRY_LINK([
5152                                         #include <sys/types.h>
5153                                         #include <sys/acl.h>
5154                                 ],[
5155                                         acl_permset_t permset_d;
5156                                         acl_perm_t perm;
5157                                         return acl_get_perm_np(permset_d, perm);
5158                                 ],
5159                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5160                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5161                                 LIBS=$acl_LIBS
5162                         ])
5163                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5164                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5165                         fi
5166                         default_static_modules="$default_static_modules vfs_posixacl"
5167                 else
5168                         AC_MSG_NOTICE(ACL support is not avaliable)
5169                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5170                 fi
5171                 ;;
5172         esac
5173 fi # with_acl_support
5177 #################################################
5178 # check for AIO support
5180 AC_MSG_CHECKING(whether to support asynchronous io)
5181 AC_ARG_WITH(aio-support,
5182 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5183 [ case "$withval" in
5184   yes)
5186         AC_MSG_RESULT(yes)
5187         case "$host_os" in
5188         *)
5189                 AIO_LIBS=$LIBS
5190                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5191                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5192                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5193                 aio_LIBS=$LIBS
5194                 LIBS=$AIO_LIBS
5195                 AC_TRY_LINK([#include <sys/types.h>
5196 #include <aio.h>],
5197 [ struct aiocb a; return aio_read(&a);],
5198 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5199                 LIBS=$aio_LIBS])
5200                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5201                 aio_LIBS=$LIBS
5202                 LIBS=$AIO_LIBS
5203                 AC_TRY_LINK([#include <sys/types.h>
5204 #include <aio.h>],
5205 [ struct aiocb64 a; return aio_read64(&a);],
5206 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5207                 LIBS=$aio_LIBS])
5208                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5209                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5210                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5211                         LIBS=$AIO_LIBS
5212                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5213                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5214                         LIBS=$AIO_LIBS
5215                 fi
5217                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5218                         AC_MSG_CHECKING(for aio_read)
5219                         AC_LINK_IFELSE([#include <aio.h>
5220 int main() { struct aiocb a; return aio_read(&a); }],
5221 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5222 [AC_MSG_RESULT(no)])
5224                         AC_MSG_CHECKING(for aio_write)
5225                         AC_LINK_IFELSE([#include <aio.h>
5226 int main() { struct aiocb a; return aio_write(&a); }],
5227 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5228 [AC_MSG_RESULT(no)])
5230                         AC_MSG_CHECKING(for aio_fsync)
5231                         AC_LINK_IFELSE([#include <aio.h>
5232 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5233 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5234 [AC_MSG_RESULT(no)])
5236                         AC_MSG_CHECKING(for aio_return)
5237                         AC_LINK_IFELSE([#include <aio.h>
5238 int main() { struct aiocb a; return aio_return(&a); }],
5239 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5240 [AC_MSG_RESULT(no)])
5242                         AC_MSG_CHECKING(for aio_error)
5243                         AC_LINK_IFELSE([#include <aio.h>
5244 int main() { struct aiocb a; return aio_error(&a); }],
5245 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5246 [AC_MSG_RESULT(no)])
5248                         AC_MSG_CHECKING(for aio_cancel)
5249                         AC_LINK_IFELSE([#include <aio.h>
5250 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5251 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5252 [AC_MSG_RESULT(no)])
5254                         AC_MSG_CHECKING(for aio_suspend)
5255                         AC_LINK_IFELSE([#include <aio.h>
5256 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5257 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5258 [AC_MSG_RESULT(no)])
5259                 fi
5261                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5262                         AC_MSG_CHECKING(for aio_read64)
5263                         AC_LINK_IFELSE([#include <aio.h>
5264 int main() { struct aiocb a; return aio_read64(&a); }],
5265 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5266 [AC_MSG_RESULT(no)])
5268                         AC_MSG_CHECKING(for aio_write64)
5269                         AC_LINK_IFELSE([#include <aio.h>
5270 int main() { struct aiocb a; return aio_write64(&a); }],
5271 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5272 [AC_MSG_RESULT(no)])
5274                         AC_MSG_CHECKING(for aio_fsync64)
5275                         AC_LINK_IFELSE([#include <aio.h>
5276 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5277 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5278 [AC_MSG_RESULT(no)])
5280                         AC_MSG_CHECKING(for aio_return64)
5281                         AC_LINK_IFELSE([#include <aio.h>
5282 int main() { struct aiocb a; return aio_return64(&a); }],
5283 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5284 [AC_MSG_RESULT(no)])
5286                         AC_MSG_CHECKING(for aio_error64)
5287                         AC_LINK_IFELSE([#include <aio.h>
5288 int main() { struct aiocb a; return aio_error64(&a); }],
5289 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5290 [AC_MSG_RESULT(no)])
5292                         AC_MSG_CHECKING(for aio_cancel64)
5293                         AC_LINK_IFELSE([#include <aio.h>
5294 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5295 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5296 [AC_MSG_RESULT(no)])
5298                         AC_MSG_CHECKING(for aio_suspend64)
5299                         AC_LINK_IFELSE([#include <aio.h>
5300 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5301 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5302 [AC_MSG_RESULT(no)])
5303                 fi
5304             ;;
5305         esac
5306         ;;
5307   *)
5308     AC_MSG_RESULT(no)
5309     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5310     ;;
5311   esac ],
5312   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5313   AC_MSG_RESULT(no)
5316 #################################################
5317 # check for sendfile support
5319 with_sendfile_support=yes
5320 AC_MSG_CHECKING(whether to check to support sendfile)
5321 AC_ARG_WITH(sendfile-support,
5322 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5323 [ case "$withval" in
5324   yes)
5326         AC_MSG_RESULT(yes);
5328         case "$host_os" in
5329         *linux*)
5330                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5331                 AC_TRY_LINK([#include <sys/sendfile.h>],
5333 int tofd, fromfd;
5334 off64_t offset;
5335 size_t total;
5336 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5338 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5340                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5341                 AC_TRY_LINK([#include <sys/sendfile.h>],
5343 int tofd, fromfd;
5344 off_t offset;
5345 size_t total;
5346 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5348 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5350 # Try and cope with broken Linux sendfile....
5351                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5352                 AC_TRY_LINK([\
5353 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5354 #undef _FILE_OFFSET_BITS
5355 #endif
5356 #include <sys/sendfile.h>],
5358 int tofd, fromfd;
5359 off_t offset;
5360 size_t total;
5361 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5363 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5365         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5366                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5367                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5368                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5369         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5370                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5371                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5372                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5373         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5374                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5375                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5376         else
5377                 AC_MSG_RESULT(no);
5378         fi
5380         ;;
5381         *freebsd* | *dragonfly* )
5382                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5383                 AC_TRY_LINK([\
5384 #include <sys/types.h>
5385 #include <unistd.h>
5386 #include <sys/socket.h>
5387 #include <sys/uio.h>],
5389         int fromfd, tofd, ret, total=0;
5390         off_t offset, nwritten;
5391         struct sf_hdtr hdr;
5392         struct iovec hdtrl;
5393         hdr.headers = &hdtrl;
5394         hdr.hdr_cnt = 1;
5395         hdr.trailers = NULL;
5396         hdr.trl_cnt = 0;
5397         hdtrl.iov_base = NULL;
5398         hdtrl.iov_len = 0;
5399         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5401 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5403         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5404                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5405                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5406                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5407         else
5408                 AC_MSG_RESULT(no);
5409         fi
5410         ;;
5412         *hpux*)
5413                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5414                 AC_TRY_LINK([\
5415 #include <sys/socket.h>
5416 #include <sys/uio.h>],
5418         int fromfd, tofd;
5419         size_t total=0;
5420         struct iovec hdtrl[2];
5421         ssize_t nwritten;
5422         off64_t offset;
5424         hdtrl[0].iov_base = 0;
5425         hdtrl[0].iov_len = 0;
5427         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5429 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5430         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5431                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5432                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5433                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5434         else
5435                 AC_MSG_RESULT(no);
5436         fi
5438                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5439                 AC_TRY_LINK([\
5440 #include <sys/socket.h>
5441 #include <sys/uio.h>],
5443         int fromfd, tofd;
5444         size_t total=0;
5445         struct iovec hdtrl[2];
5446         ssize_t nwritten;
5447         off_t offset;
5449         hdtrl[0].iov_base = 0;
5450         hdtrl[0].iov_len = 0;
5452         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5454 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5455         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5456                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5457                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5458                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5459         else
5460                 AC_MSG_RESULT(no);
5461         fi
5462         ;;
5464         *solaris*)
5465                 AC_CHECK_LIB(sendfile,sendfilev)
5466                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5467                 AC_TRY_LINK([\
5468 #include <sys/sendfile.h>],
5470         int sfvcnt;
5471         size_t xferred;
5472         struct sendfilevec vec[2];
5473         ssize_t nwritten;
5474         int tofd;
5476         sfvcnt = 2;
5478         vec[0].sfv_fd = SFV_FD_SELF;
5479         vec[0].sfv_flag = 0;
5480         vec[0].sfv_off = 0;
5481         vec[0].sfv_len = 0;
5483         vec[1].sfv_fd = 0;
5484         vec[1].sfv_flag = 0;
5485         vec[1].sfv_off = 0;
5486         vec[1].sfv_len = 0;
5487         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5489 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5491         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5492                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5493                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5494                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5495         else
5496                 AC_MSG_RESULT(no);
5497         fi
5499                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5500                 AC_TRY_LINK([\
5501 #include <sys/sendfile.h>],
5503         int sfvcnt;
5504         size_t xferred;
5505         struct sendfilevec vec[2];
5506         ssize_t nwritten;
5507         int tofd;
5509         sfvcnt = 2;
5511         vec[0].sfv_fd = SFV_FD_SELF;
5512         vec[0].sfv_flag = 0;
5513         vec[0].sfv_off = 0;
5514         vec[0].sfv_len = 0;
5516         vec[1].sfv_fd = 0;
5517         vec[1].sfv_flag = 0;
5518         vec[1].sfv_off = 0;
5519         vec[1].sfv_len = 0;
5520         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5522 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5524         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5525                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5526                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5527                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5528         else
5529                 AC_MSG_RESULT(no);
5530         fi
5531         ;;
5532         *aix*)
5533                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5534                 AC_TRY_LINK([\
5535 #include <sys/socket.h>],
5537         int fromfd, tofd;
5538         size_t total=0;
5539         struct sf_parms hdtrl;
5540         ssize_t nwritten;
5541         off64_t offset;
5543         hdtrl.header_data = 0;
5544         hdtrl.header_length = 0;
5545         hdtrl.file_descriptor = fromfd;
5546         hdtrl.file_offset = 0;
5547         hdtrl.file_bytes = 0;
5548         hdtrl.trailer_data = 0;
5549         hdtrl.trailer_length = 0;
5551         nwritten = send_file(&tofd, &hdtrl, 0);
5553 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5554         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5555                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5556                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5557                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5558         else
5559                 AC_MSG_RESULT(no);
5560         fi
5561         ;;
5562         *)
5563         ;;
5564         esac
5565         ;;
5566   *)
5567     AC_MSG_RESULT(no)
5568     ;;
5569   esac ],
5570   AC_MSG_RESULT(yes)
5573 ############################################
5574 # See if we have the Linux readahead syscall.
5576 AC_CACHE_CHECK([for Linux readahead],
5577                 samba_cv_HAVE_LINUX_READAHEAD,[
5578     AC_TRY_LINK([
5579 #if defined(HAVE_UNISTD_H)
5580 #include <unistd.h>
5581 #endif
5582 #include <fcntl.h>],
5583     [ssize_t err = readahead(0,0,0x80000);],
5584     samba_cv_HAVE_LINUX_READAHEAD=yes,
5585     samba_cv_HAVE_LINUX_READAHEAD=no)])
5587 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5588   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5589              [Whether Linux readahead is available])
5592 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5594 ############################################
5595 # See if we have the posix_fadvise syscall.
5597 AC_CACHE_CHECK([for posix_fadvise],
5598                 samba_cv_HAVE_POSIX_FADVISE,[
5599     AC_TRY_LINK([
5600 #if defined(HAVE_UNISTD_H)
5601 #include <unistd.h>
5602 #endif
5603 #include <fcntl.h>],
5604     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5605     samba_cv_HAVE_POSIX_FADVISE=yes,
5606     samba_cv_HAVE_POSIX_FADVISE=no)])
5608 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5609   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5610              [Whether posix_fadvise is available])
5615 #################################################
5616 # Check whether winbind is supported on this platform.  If so we need to
5617 # build and install client programs, sbin programs and shared libraries
5619 AC_MSG_CHECKING(whether to build winbind)
5621 # Initially, the value of $host_os decides whether winbind is supported
5623 HAVE_WINBIND=yes
5625 # Define the winbind shared library name and any specific linker flags
5626 # it needs to be built with.
5628 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5629 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5630 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5631 NSSSONAMEVERSIONSUFFIX=""
5632 WINBIND_NSS_PTHREAD=""
5634 case "$host_os" in
5635         *linux*)
5636                 NSSSONAMEVERSIONSUFFIX=".2"
5637                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5638                 ;;
5639         *freebsd[[5-9]]*)
5640                 # FreeBSD winbind client is implemented as a wrapper around
5641                 # the Linux version.
5642                 NSSSONAMEVERSIONSUFFIX=".1"
5643                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5644                     nsswitch/winbind_nss_linux.o"
5645                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5646                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5647                 ;;
5649         *netbsd*[[3-9]]*)
5650                 # NetBSD winbind client is implemented as a wrapper
5651                 # around the Linux version. It needs getpwent_r() to
5652                 # indicate libc's use of the correct nsdispatch API.
5653                 #
5654                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5655                         WINBIND_NSS_EXTRA_OBJS="\
5656                             nsswitch/winbind_nss_netbsd.o \
5657                             nsswitch/winbind_nss_linux.o"
5658                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5659                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5660                 else
5661                         HAVE_WINBIND=no
5662                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5663                 fi
5664                 ;;
5665         *irix*)
5666                 # IRIX has differently named shared libraries
5667                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5668                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5669                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5670                 ;;
5671         *solaris*)
5672                 # Solaris winbind client is implemented as a wrapper around
5673                 # the Linux version.
5674                 NSSSONAMEVERSIONSUFFIX=".1"
5675                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5676                     nsswitch/winbind_nss_linux.o"
5677                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5678                 ;;
5679         *hpux11*)
5680                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5681                 ;;
5682         *aix*)
5683                 # AIX has even differently named shared libraries.  No
5684                 # WINS support has been implemented yet.
5685                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5686                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5687                 WINBIND_NSS="nsswitch/WINBIND"
5688                 WINBIND_WINS_NSS=""
5689                 ;;
5690         *)
5691                 HAVE_WINBIND=no
5692                 winbind_no_reason=", unsupported on $host_os"
5693                 ;;
5694 esac
5696 # Check the setting of --with-winbind
5698 AC_ARG_WITH(winbind,
5699 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5701   case "$withval" in
5702         yes)
5703                 HAVE_WINBIND=yes
5704                 ;;
5705         no)
5706                 HAVE_WINBIND=no
5707                 winbind_reason=""
5708                 ;;
5709   esac ],
5712 # We need unix domain sockets for winbind
5714 if test x"$HAVE_WINBIND" = x"yes"; then
5715         if test x"$samba_cv_unixsocket" = x"no"; then
5716                 winbind_no_reason=", no unix domain socket support on $host_os"
5717                 HAVE_WINBIND=no
5718         fi
5721 # Display test results
5723 if test x"$HAVE_WINBIND" = x"no"; then
5724         WINBIND_NSS=""
5725         WINBIND_WINS_NSS=""
5728 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5729         BUILD_LIBWBCLIENT_SHARED=no
5730 else
5731         BUILD_LIBWBCLIENT_SHARED=yes
5734 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5735         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5736         ## Only worry about libwbclient if we have shared library support
5737         ## and winbindd
5738         LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
5739         LIBWBCLIENT=libwbclient
5740         INSTALL_LIBWBCLIENT=installlibwbclient
5741         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5742         WINBIND_LIBS="-lwbclient"
5743 else
5744         LIBWBCLIENT_STATIC=bin/libwbclient.a
5747 if test x"$HAVE_WINBIND" = x"yes"; then
5748         AC_MSG_RESULT(yes)
5749         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5751         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5752         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5753         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5754                 PAM_MODULES="$PAM_MODULES pam_winbind"
5755                 INSTALL_PAM_MODULES="installpammodules"
5756                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5757         fi
5758 else
5759         AC_MSG_RESULT(no$winbind_no_reason)
5762 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5763                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5765 AC_SUBST(WINBIND_NSS_PTHREAD)
5766 AC_SUBST(WINBIND_NSS)
5767 AC_SUBST(WINBIND_WINS_NSS)
5768 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5769 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5770 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5771 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5773 AC_SUBST(WINBIND_KRB5_LOCATOR)
5775 # Solaris 10 does have new member in nss_XbyY_key
5776 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5777                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5778                 [#include <nss_dbdefs.h>])
5780 # Solaris has some extra fields in struct passwd that need to be
5781 # initialised otherwise nscd crashes.
5783 AC_CHECK_MEMBER(struct passwd.pw_comment,
5784                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5785                 [#include <pwd.h>])
5787 AC_CHECK_MEMBER(struct passwd.pw_age,
5788                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5789                 [#include <pwd.h>])
5791 # AIX 4.3.x and 5.1 do not have as many members in
5792 # struct secmethod_table as AIX 5.2
5793 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5794        [#include <usersec.h>])
5795 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5796        [#include <usersec.h>])
5798 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5799 AC_TRY_COMPILE([#include <sys/types.h>
5800 #include <sys/socket.h>],
5801 [struct ucred cred;
5802  socklen_t cred_len;
5803  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5805 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5806 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5807     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5811 #################################################
5812 # Check to see if we should use the included popt
5814 AC_ARG_WITH(included-popt,
5815 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5817   case "$withval" in
5818         yes)
5819                 INCLUDED_POPT=yes
5820                 ;;
5821         no)
5822                 INCLUDED_POPT=no
5823                 ;;
5824   esac ],
5826 if test x"$INCLUDED_POPT" != x"yes"; then
5827     AC_CHECK_LIB(popt, poptGetContext,
5828                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5831 AC_MSG_CHECKING(whether to use included popt)
5832 if test x"$INCLUDED_POPT" = x"yes"; then
5833     AC_MSG_RESULT(yes)
5834     BUILD_POPT='$(POPT_OBJ)'
5835     POPTLIBS='$(POPT_OBJ)'
5836     FLAGS1="-I\$(srcdir)/popt"
5837 else
5838     AC_MSG_RESULT(no)
5839         BUILD_POPT=""
5840     POPTLIBS="-lpopt"
5842 AC_SUBST(BUILD_POPT)
5843 AC_SUBST(POPTLIBS)
5844 AC_SUBST(FLAGS1)
5846 #################################################
5847 # Check if user wants DNS service discovery support
5849 AC_ARG_ENABLE(dnssd,
5850 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5852 AC_SUBST(DNSSD_LIBS)
5853 if test x"$enable_dnssd" != x"no"; then
5854     have_dnssd_support=yes
5856     AC_CHECK_HEADERS(dns_sd.h)
5857     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5858         have_dnssd_support=no
5859     fi
5861     # On Darwin the DNSSD API is in libc, but on other platforms it's
5862     # probably in -ldns_sd
5863     AC_CHECK_FUNCS(DNSServiceRegister)
5864     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5865     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5866             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5867         have_dnssd_support=no
5868     fi
5870     if test x"$have_dnssd_support" = x"yes"; then
5871         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5872                 [Whether to enable DNS service discovery support])
5873     else
5874         if test x"$enable_dnssd" = x"yes"; then
5875             AC_MSG_ERROR(DNS service discovery support not available)
5876         fi
5877     fi
5881 #################################################
5882 # Check to see if we should use the included iniparser
5884 AC_ARG_WITH(included-iniparser,
5885 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5887   case "$withval" in
5888         yes)
5889                 INCLUDED_INIPARSER=yes
5890                 ;;
5891         no)
5892                 INCLUDED_INIPARSER=no
5893                 ;;
5894   esac ],
5896 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5897     AC_CHECK_LIB(iniparser, iniparser_load,
5898                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5901 AC_MSG_CHECKING(whether to use included iniparser)
5902 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5903     AC_MSG_RESULT(yes)
5904     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5905         INIPARSERLIBS=""
5906     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5907 else
5908     AC_MSG_RESULT(no)
5909         BUILD_INIPARSER=""
5910     INIPARSERLIBS="-liniparser"
5912 AC_SUBST(BUILD_INIPARSER)
5913 AC_SUBST(INIPARSERLIBS)
5914 AC_SUBST(FLAGS1)
5918 # Checks for the vfs_fileid module
5919 # Start
5920 AC_CHECK_FUNC(getmntent)
5922 AC_CHECK_HEADERS(sys/statfs.h)
5924 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
5925 AC_CACHE_VAL(vfsfileid_cv_statfs,[
5926              AC_TRY_RUN([
5927                 #include <sys/types.h>
5928                 #include <sys/statfs.h>
5929                 int main(void)
5930                 {
5931                         struct statfs fsd;
5932                         fsid_t fsid = fsd.f_fsid;
5933                         return statfs (".", &fsd);
5934                 }],
5935                 vfsfileid_cv_statfs=yes,
5936                 vfsfileid_cv_statfs=no,
5937                 vfsfileid_cv_statfs=cross)
5939 AC_MSG_RESULT($vfsfileid_cv_statfs)
5941 if test x"$ac_cv_func_getmntent" = x"yes" -a \
5942         x"$vfsfileid_cv_statfs" = x"yes"; then
5943         default_shared_modules="$default_shared_modules vfs_fileid"
5945 # End
5946 # Checks for the vfs_fileid module
5949 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5951         eval MODULE_DEFAULT_$i=STATIC
5952 done
5954 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5956         dnl Fall back to static if we cannot build shared libraries
5957         eval MODULE_DEFAULT_$i=STATIC
5959         if test $BLDSHARED = true; then
5960                 eval MODULE_DEFAULT_$i=SHARED
5961         fi
5962 done
5964 dnl Always build these modules static
5965 MODULE_rpc_spoolss=STATIC
5966 MODULE_rpc_srvsvc2=STATIC
5967 MODULE_idmap_tdb=STATIC
5968 MODULE_idmap_passdb=STATIC
5969 MODULE_idmap_nss=STATIC
5971 MODULE_nss_info_template=STATIC
5973 AC_ARG_WITH(static-modules,
5974 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
5975 [ if test $withval; then
5976         for i in `echo $withval | sed -e 's/,/ /g'`
5977         do
5978                 eval MODULE_$i=STATIC
5979         done
5980 fi ])
5982 AC_ARG_WITH(shared-modules,
5983 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
5984 [ if test $withval; then
5985         for i in `echo $withval | sed -e 's/,/ /g'`
5986         do
5987                         eval MODULE_$i=SHARED
5988         done
5989 fi ])
5991 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
5992                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5993 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5994 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5995 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5998 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5999 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6000 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6001 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6002 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6003 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6004 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
6005 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6006 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6007 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6008 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6009 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6010 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6011 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6012 SMB_SUBSYSTEM(RPC,smbd/server.o)
6014 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6015 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6016 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6017 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6018 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6019 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6020 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6021 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6023 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6024 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6026 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6027 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6028 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6029 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6030 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6032 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6033 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6034 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6035 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6036 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6037 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6038 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6039 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6041 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6042 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6043 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6044 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6045 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6046 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6047 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6048 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6049 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6050 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6051 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6052 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6053 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6054 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6055 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6056 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6057 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6058 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6059 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6060 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6061 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6062 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6063 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6064 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6065 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6066 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6067 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6068 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6069 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6070 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6071 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6072 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6073 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6074 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6075 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6076 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6079 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6081 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6083 #################################################
6084 # do extra things if we are running insure
6086 if test "${ac_cv_prog_CC}" = "insure"; then
6087         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6090 #################################################
6091 # If run from the build farm, enable NASTY hacks
6092 #################################################
6093 AC_MSG_CHECKING(whether to enable build farm hacks)
6094 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6095         AC_MSG_RESULT(yes)
6096         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6097 else
6098         AC_MSG_RESULT(no)
6101 #################################################
6102 # check for bad librt/libpthread interactions
6104 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6105     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6106     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6107     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6109 SMB_IF_RTSIGNAL_BUG(
6110         [
6111             # Have RT_SIGNAL bug, need to check whether the problem will
6112             # affect anything we have configured.
6114             rt_do_error=no
6115             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6116                 if test x"$rt_signal_lease_ok" = x"no" ; then
6117                     rt_do_error=yes
6118                 fi
6119             fi
6121             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6122                 if test x"$rt_signal_notify_ok" = x"no" ; then
6123                     rt_do_error=yes
6124                 fi
6125             fi
6127             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6128                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6129                 if test x"$rt_signal_aio_ok" = x"no" ; then
6130                     rt_do_error=yes
6131                 fi
6132             fi
6134             if test x"$rt_do_error" = x"yes" ; then
6135                 SMB_IS_LIBPTHREAD_LINKED(
6136                     [
6137                         cat<<MSG
6139 *** On this platforms, linking Samba against pthreads causes problems
6140 *** with the oplock and change notification mechanisms. You may be
6141 *** using pthreads as a side-effect of using the --with-aio-support
6142 *** or --with-profiling-data options. Please remove these and try again.
6145                     ],
6146                     [
6147                         cat<<MSG
6149 *** On this platform, the oplock and change notification mechanisms do not
6150 *** appear to work. Please report this problem to samba-technical@samba.org
6151 *** and attach the config.log file from this directory.
6154                     ])
6155                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6156             fi
6157         ],
6158         [
6159             # no RT_SIGNAL bug, we are golden
6160             SMB_IS_LIBPTHREAD_LINKED(
6161                 [
6162                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6163                 ])
6165         ],
6166         [
6167             # cross compiling, I hope you know what you are doing
6168             true
6169         ])
6173 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6174 LIB_REMOVE_USR_LIB(LDFLAGS)
6175 LIB_REMOVE_USR_LIB(LIBS)
6176 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6178 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6179 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6180 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6182 #################################################
6183 # Display summary of libraries detected
6185 AC_MSG_RESULT([Using libraries:])
6186 AC_MSG_RESULT([    LIBS = $LIBS])
6187 if test x"$with_ads_support" != x"no"; then
6188     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6190 if test x"$with_ldap_support" != x"no"; then
6191     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6193 if test x"$with_dnsupdate_support" != x"no"; then
6194     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6196 if test x"$have_dnssd_support" != x"no"; then
6197     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6199 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6201 #################################################
6202 # final configure stuff
6204 AC_MSG_CHECKING([configure summary])
6205 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6206            AC_MSG_RESULT(yes),
6207            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6208            AC_MSG_WARN([cannot run when cross-compiling]))
6210 dnl Merge in developer cflags from now on
6211 AC_SUBST(DEVELOPER_CFLAGS)
6212 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6213     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6216 # Stuff the smbd-only libraries at the end of the smbd link
6217 # path (if we have them).
6218 SMBD_LIBS="$samba_dmapi_libs"
6219 AC_SUBST(SMBD_LIBS)
6221 AC_OUTPUT(Makefile library-versions
6222           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6223           lib/netapi/examples/Makefile
6224           pkgconfig/smbclient.pc
6225           pkgconfig/wbclient.pc
6226           pkgconfig/netapi.pc
6227           pkgconfig/smbsharemodes.pc
6228           )
6230 #################################################
6231 # Print very concise instructions on building/use
6232 if test "x$enable_dmalloc" = xyes
6233 then
6234         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6235         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])