libads/cldap: store client sitename also keyed by dns domain name.
[Samba.git] / source / configure.in
blob8a6b2d64c47b5e8e100c6ed96f04819e827040cc
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${srcdir-.}/$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(RELRO_LDFLAGS)
77 AC_SUBST(SHLIBEXT)
78 AC_SUBST(INSTALLLIBCMD_SH)
79 AC_SUBST(INSTALLLIBCMD_A)
80 AC_SUBST(UNINSTALLLIBCMD_SH)
81 AC_SUBST(UNINSTALLLIBCMD_A)
82 AC_SUBST(INSTALL_LIBADDNS)
83 AC_SUBST(UNINSTALL_LIBADDNS)
84 AC_SUBST(LIBADDNS_SHARED)
85 AC_SUBST(LIBADDNS)
87 AC_SUBST(INSTALL_LIBWBCLIENT)
88 AC_SUBST(UNINSTALL_LIBWBCLIENT)
89 AC_SUBST(LIBWBCLIENT_SHARED)
90 AC_SUBST(LIBWBCLIENT_STATIC)
91 AC_SUBST(LIBWBCLIENT)
92 AC_SUBST(WINBIND_LIBS)
94 AC_SUBST(LIBSAMBAUTIL_SHARED)
96 AC_SUBST(INSTALL_LIBSMBCLIENT)
97 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
98 AC_SUBST(LIBSMBCLIENT_SHARED)
99 AC_SUBST(LIBSMBCLIENT)
100 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
101 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
102 AC_SUBST(LIBSMBSHAREMODES_SHARED)
103 AC_SUBST(LIBSMBSHAREMODES)
105 AC_SUBST(PRINT_LIBS)
106 AC_SUBST(AUTH_LIBS)
107 AC_SUBST(ACL_LIBS)
108 AC_SUBST(PASSDB_LIBS)
109 AC_SUBST(IDMAP_LIBS)
110 AC_SUBST(KRB5_LIBS)
111 AC_SUBST(UUID_LIBS)
112 AC_SUBST(LDAP_LIBS)
113 AC_SUBST(PAM_MODULES)
114 AC_SUBST(INSTALL_PAM_MODULES)
115 AC_SUBST(UNINSTALL_PAM_MODULES)
116 AC_SUBST(NSS_MODULES)
117 AC_SUBST(EXTRA_BIN_PROGS)
118 AC_SUBST(CIFSMOUNT_PROGS)
119 AC_SUBST(INSTALL_CIFSMOUNT)
120 AC_SUBST(UNINSTALL_CIFSMOUNT)
121 AC_SUBST(CIFSSPNEGO_PROGS)
122 AC_SUBST(INSTALL_CIFSSPNEGO)
123 AC_SUBST(UNINSTALL_CIFSSPNEGO)
124 AC_SUBST(EXTRA_SBIN_PROGS)
125 AC_SUBST(EXTRA_ALL_TARGETS)
126 AC_SUBST(CONFIG_LIBS)
127 AC_SUBST(NSCD_LIBS)
129 # compile with optimization and without debugging by default, but
130 # allow people to set their own preference.
131 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
132 # if it has no value.  This prevent *very* large debug binaries from occurring
133 # by default.
134 if test "x$CFLAGS" = x; then
135   CFLAGS="-O"
137 if test "x$debug" = "xyes" ; then
138         CFLAGS="${CFLAGS} -g"
139 else
140         CFLAGS="-O"
143 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
145 m4_include(lib/socket_wrapper/config.m4)
146 m4_include(lib/nss_wrapper/config.m4)
148 m4_include(m4/swat.m4)
150 # Probe the gcc version for extra CFLAGS. We always stash these in
151 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
152 # Makefile edit, avoiding the need to re-run configure.
153 if test x"$ac_cv_prog_gcc" = x"yes" ; then
154         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
155         # Add -Wdeclaration-after-statement if compiler supports it
156         AC_CACHE_CHECK(
157           [that the C compiler understands -Wdeclaration-after-statement],
158           samba_cv_HAVE_Wdeclaration_after_statement, [
159           AC_TRY_RUN_STRICT([
160             int main(void)
161             {
162                 return 0;
163             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
164             samba_cv_HAVE_Wdeclaration_after_statement=yes,
165             samba_cv_HAVE_Wdeclaration_after_statement=no,
166             samba_cv_HAVE_Wdeclaration_after_statement=cross)
167        ])
169         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
170             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
171         fi
173         #-Werror-implicit-function-declaration
174         AC_CACHE_CHECK(
175           [that the C compiler understands -Werror-implicit-function-declaration],
176           samba_cv_HAVE_Werror_implicit_function_declaration, [
177           AC_TRY_RUN_STRICT([
178             int main(void)
179             {
180                 return 0;
181             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
182             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
183             samba_cv_HAVE_Werror_implicit_function_declaration=no,
184             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
185        ])
186        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
187             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
188        fi
190         # krb5developer is like developer, except we don't get
191         # -Wstrict-prototypes.
192        if test x"$krb5_developer" != x"$yes" ; then
193             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
194        fi
197 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
199 if test "x$enable_dmalloc" = xyes
200 then
201         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
202         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
203                   [Define to check invariants around some common functions])
204         LIBS="$LIBS -ldmalloc"  
207 #################################################
208 # check for a shared memory profiling support
209 AC_MSG_CHECKING(whether to use profiling)
210 AC_ARG_WITH(profiling-data,
211 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
212 [ case "$withval" in
213   yes)
214     AC_MSG_RESULT(yes)
215     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
216     samba_cv_WITH_PROFILE=yes
217     ;;
218   *)
219     AC_MSG_RESULT(no)
220     samba_cv_WITH_PROFILE=no
221     ;;
222   esac ],
223   AC_MSG_RESULT(no)
226 dnl Checks for programs.
228 AC_PROG_INSTALL
229 AC_PROG_AWK
230 AC_PATH_PROG(PERL, perl)
232 AC_CHECK_TOOL(AR, ar)
234 dnl Check if we use GNU ld
235 LD=ld
236 AC_PROG_LD_GNU
238 dnl Certain versions of GNU ld the default is not to have the
239 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
240 dnl warnings when building modules.
241 if test "$ac_cv_prog_gnu_ld" = "yes"; then
242         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
243         AC_MSG_CHECKING(GNU ld release date)
244         changequote(,)dnl
245         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'`
246         changequote([,])dnl
247         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
248         if test -n "$ac_cv_gnu_ld_date"; then
249         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
250                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
251         fi
252         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
253                 ac_cv_gnu_ld_version_script=yes
254         fi
255         else
256            AC_MSG_CHECKING(GNU ld release version)
257            changequote(,)dnl
258            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
259            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
260            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
261            changequote([,])dnl
262            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
263            AC_MSG_CHECKING(GNU ld release version major)
264            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
265            AC_MSG_CHECKING(GNU ld release version minor)
266            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
267            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
268              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
269            fi
270            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
271              ac_cv_gnu_ld_version_script=yes
272            fi
273         fi
276 dnl look for executable suffix
277 AC_EXEEXT
279 dnl Check if C compiler understands -c and -o at the same time
280 AC_PROG_CC_C_O
281 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
282       BROKEN_CC=
283 else
284       BROKEN_CC=#
286 AC_SUBST(BROKEN_CC)
288 dnl Check if the C compiler understands -Werror
289 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
290  AC_TRY_RUN_STRICT([
291   int main(void)
292   {
293         return 0;
294   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
295   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
296 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
297    Werror_FLAGS="-Werror"
298 else
299 dnl Check if the C compiler understands -w2
300 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
301  AC_TRY_RUN_STRICT([
302   int main(void)
303   {
304         return 0;
305   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
306   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
307 if test x"$samba_cv_HAVE_w2" = x"yes"; then
308    Werror_FLAGS="-w2"
309 else
310 dnl Check if the C compiler understands -errwarn
311 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
312   AC_TRY_RUN_STRICT([
313    int main(void)
314    {
315         return 0;
316    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
317    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
318 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
319    Werror_FLAGS="-errwarn=%all"
324 dnl Check if the C compiler understands volatile (it should, being ANSI).
325 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
326     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
327         samba_cv_volatile=yes,samba_cv_volatile=no)])
328 if test x"$samba_cv_volatile" = x"yes"; then
329    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
332 ############################################
333 # check if the compiler can handle negative enum values
334 # and don't truncate the values to INT_MAX
335 # a runtime test is needed here
336 AC_SUBST(PIDL_ARGS)
337 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
338     AC_TRY_RUN(
340         #include <stdio.h>
341         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
342         int main(void) {
343                 enum negative_values v1 = NEGATIVE_VALUE;
344                 unsigned v2 = NEGATIVE_VALUE;
346                 if (v1 != 0xFFFFFFFF) {
347                         printf("%u != 0xFFFFFFFF\n", v1);
348                         return 1;
349                 }
350                 if (v2 != 0xFFFFFFFF) {
351                         printf("%u != 0xFFFFFFFF\n", v2);
352                         return 1;
353                 }
355                 return 0;
356         }
358         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
359 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
360         AC_MSG_WARN([using --unit-enums for pidl])
361         PIDL_ARGS="$PIDL_ARGS --uint-enums"
364 dnl Figure out the flags to support named structure initializers
366 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
368 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
369 AC_MSG_CHECKING(uname -s)
370 AC_MSG_RESULT(${UNAME_S})
372 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
373 AC_MSG_CHECKING(uname -r)
374 AC_MSG_RESULT(${UNAME_R})
376 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
377 AC_MSG_CHECKING(uname -m)
378 AC_MSG_RESULT(${UNAME_M})
380 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
381 AC_MSG_CHECKING(uname -p)
382 AC_MSG_RESULT(${UNAME_P})
384 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
385 AC_MSG_CHECKING(uname -i)
386 AC_MSG_RESULT(${UNAME_I})
388 dnl Add #include for broken IRIX header files
389   case "$host_os" in
390         *irix6*)
391                 #TODO add to libreplace
392                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
393                         dnl Fix sensible defaults for MIPSPro compilers. The
394                         dnl error numbers are valid for the 7.3 compilers,
395                         dnl hopefully also valid for the 7.4 series.
396                         dnl
397                         dnl Bugzilla 3801. Force an error on warning 1035
398                         dnl so we don't incorrectly detect stdint.h. This
399                         dnl warning is emitted for #error directives.
400                         CFLAGS="$CFLAGS -diag_error 1035"
401                         dnl 1209: Controlling expression is constant
402                         dnl 1174: Function foo declared but never referenced
403                         dnl 3201: Parameter foo was never referenced
404                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
405                 fi
406         ;;
407 esac
409 DYNEXP=
410 AC_SUBST(DYNEXP)
412 dnl Add modules that have to be built by default here
413 dnl These have to be built static:
414 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_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
416 dnl These are preferably build shared, and static if dlopen() is not available
417 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"
419 if test "x$developer" = xyes; then
420    default_static_modules="$default_static_modules rpc_rpcecho"
421    default_shared_modules="$default_shared_modules charset_weird"
425 # Config CPPFLAG settings for strange OS's that must be set
426 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
427 # case statement; its first reference must be unconditional.
429 case "$host_os" in
430     *hpux*)
432 # Defines needed for HPUX support.
433 # HPUX has bigcrypt but (sometimes?) doesn't use it for
434 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
436       case `uname -r` in
437                 *9*|*10*|*11)
438                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
439                 ;;
440       esac
441       ;;
444 # CRAY Unicos has broken const handling
445        *unicos*)
446           AC_MSG_RESULT([disabling const])
447           CPPFLAGS="$CPPFLAGS -Dconst="
448           ;;
449         
451 # AIX4.x doesn't even admit to having large
452 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
454     *aix4*)
455           AC_MSG_RESULT([enabling large file support])
456       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
457           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
458       ;;
460 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
461 # to the existance of large files..
462 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
463 # recommendations on large file support, however it makes the
464 # compile work using gcc 2.7 and 2.8, whereas using the Sun
465 # recommendation makes the compile fail on gcc2.7. JRA.
467 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
469         *solaris*)
470                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
471                 case `uname -r` in
472                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
473                                 AC_MSG_RESULT([no large file support])
474                                 ;;
475                         5.*)
476                         AC_MSG_RESULT([enabling large file support])
477                         if test "$ac_cv_prog_gcc" = yes; then
478                                 ${CC-cc} -v >conftest.c 2>&1
479                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
480                                 rm -fr conftest.c
481                                 case "$ac_cv_gcc_compiler_version_number" in
482                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
483                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
484                                                 LDFLAGS="$LDFLAGS -lthread"
485                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
486                                                 ;;
487                                         *)
488                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
489                                                 LDFLAGS="$LDFLAGS -lthread"
490                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
491                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
492                                                 ;;
493                                 esac
494                         else
495                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
496                                 LDFLAGS="$LDFLAGS -lthread"
497                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
498                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
499                         fi
500                         ;;
501                 esac
502                 ;;
504 # IRIX uses SYSV printing.  Make sure to set that here
506         *irix*)
507                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
508                 ;;
509         *freebsd*|*dragonfly*)
510                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
511                 ;;
513 # VOS may need to have POSIX support and System V compatibility enabled.
515     *vos*)
516     case "$CPPFLAGS" in
517           *-D_POSIX_C_SOURCE*)
518                 ;;
519           *)
520                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
521                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
522                 ;;
523     esac
524     case "$CPPFLAGS" in
525           *-D_SYSV*|*-D_SVID_SOURCE*)
526                 ;;
527           *)
528                 CPPFLAGS="$CPPFLAGS -D_SYSV"
529                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
530     esac
531     ;;
533 # Tests needed for SINIX large file support.
535     *sysv4*)
536       if test $host = mips-sni-sysv4 ; then
537         AC_MSG_CHECKING([for LFS support])
538         old_CPPFLAGS="$CPPFLAGS"
539         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
540         AC_TRY_RUN([
541 #include <unistd.h>
542 main () {
543 #if _LFS64_LARGEFILE == 1
544 exit(0);
545 #else
546 exit(1);
547 #endif
548 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
549         CPPFLAGS="$old_CPPFLAGS"
550         if test x$SINIX_LFS_SUPPORT = xyes ; then
551           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
552                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
553           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
554           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
555           LIBS="`getconf LFS64_LIBS` $LIBS"
556         fi
557       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
558       fi
559     ;;
561 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
563     *linux*)
564         AC_MSG_CHECKING([for LFS support])
565         old_CPPFLAGS="$CPPFLAGS"
566         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
567        AC_TRY_RUN([
568 #include <unistd.h>
569 #include <sys/utsname.h>
570 #include <string.h>
571 #include <stdlib.h>
572 main() {
573 #if _LFS64_LARGEFILE == 1
574        struct utsname uts;
575        char *release;
576        int major, minor;
578        /* Ensure this is glibc 2.2 or higher */
579 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
580        int libc_major = __GLIBC__;
581        int libc_minor = __GLIBC_MINOR__;
583        if (libc_major < 2)
584               exit(1);
585        if (libc_minor < 2)
586               exit(1);
587 #endif
589        /* Ensure this is kernel 2.4 or higher */
591        uname(&uts);
592        release = strdup(uts.release);
593        major = atoi(strsep(&release, "."));
594        minor = atoi(strsep(&release, "."));
596        if (major > 2 || (major == 2 && minor > 3))
597                exit(0);
598        exit(1);
599 #else
600        exit(1);
601 #endif
603 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
604         CPPFLAGS="$old_CPPFLAGS"
605         if test x$LINUX_LFS_SUPPORT = xyes ; then
606                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
607                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
608                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
609                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
610         fi
611         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
612         ;;
615 # MacOS X is the *only* system that uses compose character in utf8. This
616 # is so horribly broken....
618     *darwin*)
619         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
621 # Add a system specific charset module.
622         default_shared_modules="$default_shared_modules charset_macosxfs"
624         ;;
625     *hurd*)
626         AC_MSG_CHECKING([for LFS support])
627         old_CPPFLAGS="$CPPFLAGS"
628         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
629         AC_TRY_RUN([
630 #include <unistd.h>
631 main () {
632 #if _LFS64_LARGEFILE == 1
633 exit(0);
634 #else
635 exit(1);
636 #endif
637 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
638         CPPFLAGS="$old_CPPFLAGS"
639         if test x$GLIBC_LFS_SUPPORT = xyes ; then
640           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
641                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
642           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
643         fi
644       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
645     ;;
647 esac
649 SAVE_CPPFLAGS="${CPPFLAGS}"
650 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
652 AC_LIBREPLACE_BROKEN_CHECKS
653 AC_LIBREPLACE_NETWORK_CHECKS
655 CPPFLAGS="${SAVE_CPPFLAGS}"
657 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
659 LIBREPLACE_OBJS=""
660 for obj in ${LIBREPLACEOBJ}; do
661         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
662 done
663 AC_SUBST(LIBREPLACE_OBJS)
665 # add -ldl to the global LIBS
666 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
668 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
669 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
670 AC_CHECK_HEADERS(limits.h float.h pthread.h)
671 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
672 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
673 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
674 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
675 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
676 AC_CHECK_HEADERS(sys/sysmacros.h)
677 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
678 AC_CHECK_HEADERS(langinfo.h locale.h)
679 AC_CHECK_HEADERS(xfs/libxfs.h)
680 AC_CHECK_HEADERS(netgroup.h)
682 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
683 #if HAVE_RPC_RPC_H
684 #include <rpc/rpc.h>
685 #endif
688 ## These fail to compile on IRIX so just check for their presence
689 AC_CHECK_HEADERS(sys/mode.h,,,)
691 # Look for Darwin headers
692 old_CPPFLAGS="$CPPFLAGS"
693 CPPFLAGS="-Iinclude $CPPFLAGS"
694 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
695 CPPFLAGS="$old_CPPFLAGS"
697 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
698 # subdirectory of headers.
699 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
701 # check for linux on amd64 since valgrind is not quite there yet
702 case "$host_os" in
703         *linux*)
704                 case "$UNAME_P" in
705                         *x86_64*)
706                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
707                                 ;;
708                 esac
709                 ;;
710 esac
714 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
715 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
717 case "$host_os" in
718     *hpux*)
719                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
720                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
721                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
722                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
723                 fi
724         ;;
725 esac
726 AC_CHECK_HEADERS(shadow.h)
727 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
728 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
730 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
731 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
733 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
735 # For experimental utmp support (lastlog on some BSD-like systems)
736 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
738 AC_CHECK_SIZEOF(int,cross)
739 AC_CHECK_SIZEOF(long,cross)
740 AC_CHECK_SIZEOF(long long,cross)
741 AC_CHECK_SIZEOF(short,cross)
743 AC_C_CONST
744 AC_C_INLINE
745 AC_C_BIGENDIAN
746 AC_C_CHAR_UNSIGNED
748 AC_TYPE_SIGNAL
749 AC_TYPE_UID_T
750 AC_TYPE_MODE_T
751 AC_TYPE_OFF_T
752 AC_TYPE_SIZE_T
753 AC_TYPE_PID_T
754 AC_STRUCT_ST_RDEV
755 AC_DIRENT_D_OFF
756 AC_CHECK_TYPE(ssize_t, int)
757 AC_CHECK_TYPE(wchar_t, unsigned short)
759 ############################################
760 # for cups support we need libcups, and a handful of header files
762 AC_ARG_ENABLE(cups,
763 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
765 if test x$enable_cups != xno; then
766         AC_PATH_PROG(CUPS_CONFIG, cups-config)
768         if test "x$CUPS_CONFIG" != x; then
769                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
770                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
771                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
772                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
773         elif test x"$enable_cups" = x"yes"; then
774                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
775         fi
778 AC_ARG_ENABLE(iprint,
779 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
781 if test x$enable_iprint != xno; then
782         if test "x$CUPS_CONFIG" != x; then
783                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
784         elif test x"$enable_iprint" = x"yes"; then
785                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
786         fi
789 ############################################
790 # check if the compiler will optimize out function calls
791 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
792     AC_TRY_LINK([
793 #include <stdio.h>],
795                 if (0) {
796                    this_function_does_not_exist();
797                 } else {
798                   return 1;
799                 }
802         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
803 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
804    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
807 #############################################
808 # check for fd passing struct via msg_control
809 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
810     AC_TRY_COMPILE([
811 #include <sys/types.h>
812 #include <stdlib.h>
813 #include <stddef.h>
814 #include <sys/socket.h>
815 #include <sys/un.h>],
817         struct msghdr msg;
818         union {
819               struct cmsghdr cm;
820               char control[CMSG_SPACE(sizeof(int))];
821         } control_un;
822         msg.msg_control = control_un.control;
823         msg.msg_controllen = sizeof(control_un.control);
825         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
826 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
827    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
828              [If we can use msg_control for passing file descriptors])
831 #############################################
832 # check for fd passing struct via msg_acctrights
833 AC_CACHE_CHECK([for fd passing via msg_acctrights],
834                 samba_cv_msghdr_msg_acctrights, [
835     AC_TRY_COMPILE([
836 #include <sys/types.h>
837 #include <stdlib.h>
838 #include <stddef.h>
839 #include <sys/socket.h>
840 #include <sys/un.h>],
842         struct msghdr msg;
843         int fd;
844         msg.msg_acctrights = (caddr_t) &fd;
845         msg.msg_acctrightslen = sizeof(fd);
847         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
848 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
849    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
850              [If we can use msg_acctrights for passing file descriptors])
853 AC_CHECK_FUNCS(dirfd)
854 if test x"$ac_cv_func_dirfd" = x"yes"; then
855         default_shared_modules="$default_shared_modules vfs_syncops"
858 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
859     AC_TRY_COMPILE([
860 #include <sys/types.h>
861 #if STDC_HEADERS
862 #include <stdlib.h>
863 #include <stddef.h>
864 #endif
865 #include <signal.h>],[sig_atomic_t i = 0],
866         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
867 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
868    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
871 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
872     AC_TRY_COMPILE([
873 #include <sys/types.h>
874 #if STDC_HEADERS
875 #include <stdlib.h>
876 #include <stddef.h>
877 #endif
878 #if TIME_WITH_SYS_TIME
879 # include <sys/time.h>
880 # include <time.h>
881 #else
882 # if HAVE_SYS_TIME_H
883 #  include <sys/time.h>
884 # else
885 #  include <time.h>
886 # endif
887 #endif
888 ],[struct timespec ts;],
889         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
890 if test x"$samba_cv_struct_timespec" = x"yes"; then
891    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
894 # stupid headers have the functions but no declaration. grrrr.
895 AC_HAVE_DECL(errno, [#include <errno.h>])
896 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
897 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
899 # and glibc has setresuid under linux but the function does
900 # nothing until kernel 2.1.44! very dumb.
901 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
902     AC_TRY_RUN([#include <errno.h>
903 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
904         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
905 if test x"$samba_cv_have_setresuid" = x"yes"; then
906     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
909 # Do the same check for setresguid...
911 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
912     AC_TRY_RUN([#include <unistd.h>
913 #include <errno.h>
914 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
915         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
916 if test x"$samba_cv_have_setresgid" = x"yes"; then
917     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
920 AC_FUNC_MEMCMP
922 ###############################################
923 # Readline included by default unless explicitly asked not to
924 test "${with_readline+set}" != "set" && with_readline=yes
926 # test for where we get readline() from
927 AC_MSG_CHECKING(whether to use readline)
928 AC_ARG_WITH(readline,
929 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
930 [  case "$with_readline" in
931   yes)
932     AC_MSG_RESULT(yes)
934     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
935     AC_CHECK_HEADERS(readline/history.h)
937     AC_CHECK_HEADERS(readline.h readline/readline.h,[
938       for termlib in ncurses curses termcap terminfo termlib tinfo; do
939        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
940       done
941       AC_CHECK_LIB(readline, rl_callback_handler_install,
942        [TERMLIBS="-lreadline $TERMLIBS"
943        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
944        break], [TERMLIBS=], $TERMLIBS)])
945     ;;
946   no)
947     AC_MSG_RESULT(no)
948     ;;
949   *)
950     AC_MSG_RESULT(yes)
952     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
953     # alternate readline path
954     _ldflags=${LDFLAGS}
955     _cppflags=${CPPFLAGS}
957     # Add additional search path
958     LDFLAGS="-L$with_readline/lib $LDFLAGS"
959     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
961     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
962     AC_CHECK_HEADERS(readline/history.h)
964     AC_CHECK_HEADERS(readline.h readline/readline.h,[
965       for termlib in ncurses curses termcap terminfo termlib; do
966        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
967       done
968       AC_CHECK_LIB(readline, rl_callback_handler_install,
969        [TERMLDFLAGS="-L$with_readline/lib"
970        TERMCPPFLAGS="-I$with_readline/include"
971        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
972        TERMLIBS="-lreadline $TERMLIBS"
973        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
974        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
976     LDFLAGS=$_ldflags
977     ;;
978   esac],
979   AC_MSG_RESULT(no)
981 AC_SUBST(TERMLIBS)
982 AC_SUBST(TERMLDFLAGS)
984 # The readline API changed slightly from readline3 to readline4, so
985 # code will generate warnings on one of them unless we have a few
986 # special cases.
987 AC_CHECK_LIB(readline, rl_completion_matches,
988              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
989                         [Do we have rl_completion_matches?])],
990              [],
991              [$TERMLIBS])
993 # not all readline libs have rl_event_hook or history_list
994 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
995 AC_CHECK_LIB(readline, history_list,
996              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
997              [],
998              [$TERMLIBS])
1000 ###############################################
1001 # test for where we get yp_get_default_domain() from
1002 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1003 AC_CHECK_FUNCS(yp_get_default_domain)
1005 # Check if we have execl, if not we need to compile smbrun.
1006 AC_CHECK_FUNCS(execl)
1007 if test x"$ac_cv_func_execl" = x"no"; then
1008     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1011 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1012 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1013 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1014 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1015 AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1016 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1017 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1018 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1019 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1020 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1021 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1022 AC_CHECK_FUNCS(getpwent_r)
1023 AC_CHECK_FUNCS(getdents getdents64)
1024 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1025 AC_CHECK_FUNCS(syslog vsyslog timegm)
1026 AC_CHECK_FUNCS(setlocale nl_langinfo)
1027 AC_CHECK_FUNCS(nanosleep)
1028 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1029 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1030 AC_CHECK_HEADERS(sys/mman.h)
1031 # setbuffer, shmget, shm_open are needed for smbtorture
1032 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1034 # Find a method of generating a stack trace
1035 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1036 AC_CHECK_FUNCS(backtrace_symbols)
1037 AC_CHECK_LIB(exc, trace_back_stack)
1039 printf "%s" "checking for GPFS GPL libs... "
1040 save_LIBS="$LIBS"
1041 LIBS="$LIBS -lgpfs_gpl"
1042 AC_TRY_LINK([#include <gpfs_gpl.h>],
1043           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1044           samba_cv_HAVE_GPFS=yes,
1045           samba_cv_HAVE_GPFS=no)
1046 echo $samba_cv_HAVE_GPFS
1047 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1048     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1049     default_shared_modules="$default_shared_modules vfs_gpfs"
1051 LIBS="$save_LIBS"
1053 # Note that all the libunwind symbols in the API are defined to internal
1054 # platform-specific version, so we must include libunwind.h before checking
1055 # any of them.
1056 AC_MSG_CHECKING([for libunwind])
1057 save_LIBS=$LIBS
1059 UNWIND_ARCH="unknown"
1060 if test x"$UNAME_I" != x"unknown"; then
1061         UNWIND_ARCH="$UNAME_I"
1062 elif test x"$UNAME_M" != x"unknown"; then
1063         UNWIND_ARCH="$UNAME_M"
1064 elif test x"$UNAME_P" != x"unknown"; then
1065         UNWIND_ARCH="$UNAME_P"
1068 case "$UNWIND_ARCH" in
1069         unknown)
1070                 # This probably won't link without
1071                 # the platform-specific libunwind.
1072                 LIBS="$LIBS -lunwind"
1073                 ;;
1074         i386|i586|i686)
1075                 # Add the platform-specific libunwind module.
1076                 LIBS="$LIBS -lunwind -lunwind-x86"
1077                 ;;
1078         *)
1079                 # Add the platform-specific libunwind module.
1080                 # based on uname -i, uname -m or uname -p
1081                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1082                 ;;
1083 esac
1085 AC_TRY_LINK(
1086     [
1087 #ifdef HAVE_LIBUNWIND_H
1088 #include <libunwind.h>
1089 #endif
1090     ],
1091     [
1092         unw_context_t ctx; unw_cursor_t cur;
1093         char buf[256]; unw_word_t off;
1094         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1095         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1096     ],
1097     [
1098         AC_MSG_RESULT(yes)
1099         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1101         # If we have libunwind, test whether we also have libunwind-ptrace
1102         # which would let us unwind arbitrary processes.
1103         save_LIBS=$LIBS
1104         AC_CHECK_HEADERS(libunwind-ptrace.h)
1105         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1106             [
1107                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1108                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1109                     [Whether libunwind-ptrace.a is available.])
1110             ],
1111             [ LIBUNWIND_PTRACE="" ])
1113         LIBS=$save_LIBS
1114     ],
1115     [
1116         AC_MSG_RESULT(no)
1117         LIBS=$save_LIBS
1118     ])
1120 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1121 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1122     AC_CHECK_HEADERS(sys/ptrace.h)
1123     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1124     AC_TRY_LINK(
1125             [
1126 #if HAVE_SYS_TYPES_H
1127 #include <sys/types.h>
1128 #endif
1129 #if HAVE_SYS_PTRACE_H
1130 #include <sys/ptrace.h>
1131 #endif
1132             ],
1133             [
1134                 int main(int argc, const char ** argv)
1135                 {
1136                         pid_t me = (pid_t)-1;
1137                         ptrace(PTRACE_ATTACH, me, 0, 0);
1138                         ptrace(PTRACE_DETACH, me, 0, 0);
1139                         return 0;
1140                 }
1141             ],
1142             [
1143                 AC_MSG_RESULT(yes)
1144                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1145                     [Whether the Linux ptrace(2) interface is available.])
1146             ],
1147             [
1148                 AC_MSG_RESULT(no)
1149                 LIBUNWIND_PTRACE=""
1150             ])
1153 AC_SUBST(LIBUNWIND_PTRACE)
1155 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1156 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1157 AC_CHECK_FUNCS(__getcwd _getcwd)
1158 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1159 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1160 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1161 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1162 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1163 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1164 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1165 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1166 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1167 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1168 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1169 AC_CHECK_FUNCS(prctl)
1171 AC_TRY_COMPILE([
1172 #ifdef HAVE_SYS_PRCTL_H
1173 #include <sys/prctl.h>
1174 #endif
1176 [int i; i = prtcl(0); ],
1177 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1182 case "$host_os" in
1183     *linux*)
1184        # glibc <= 2.3.2 has a broken getgrouplist
1185        AC_TRY_RUN([
1186 #include <unistd.h>
1187 #include <sys/utsname.h>
1188 main() {
1189        /* glibc up to 2.3 has a broken getgrouplist */
1190 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1191        int libc_major = __GLIBC__;
1192        int libc_minor = __GLIBC_MINOR__;
1194        if (libc_major < 2)
1195               exit(1);
1196        if ((libc_major == 2) && (libc_minor <= 3))
1197               exit(1);
1198 #endif
1199        exit(0);
1201 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1202        if test x"$linux_getgrouplist_ok" = x"yes"; then
1203           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1204        fi
1205        ;;
1206     *)
1207        AC_CHECK_FUNCS(getgrouplist)
1208        ;;
1209 esac
1212 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1215 if test x$ac_cv_func_stat64 = xno ; then
1216   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1217   AC_TRY_LINK([
1218 #if defined(HAVE_UNISTD_H)
1219 #include <unistd.h>
1220 #endif
1221 #include <sys/stat.h>
1222 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1223   AC_MSG_RESULT([$ac_cv_func_stat64])
1224   if test x$ac_cv_func_stat64 = xyes ; then
1225     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1226   fi
1229 if test x$ac_cv_func_lstat64 = xno ; then
1230   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1231   AC_TRY_LINK([
1232 #if defined(HAVE_UNISTD_H)
1233 #include <unistd.h>
1234 #endif
1235 #include <sys/stat.h>
1236 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1237   AC_MSG_RESULT([$ac_cv_func_lstat64])
1238   if test x$ac_cv_func_lstat64 = xyes ; then
1239     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1240   fi
1243 if test x$ac_cv_func_fstat64 = xno ; then
1244   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1245   AC_TRY_LINK([
1246 #if defined(HAVE_UNISTD_H)
1247 #include <unistd.h>
1248 #endif
1249 #include <sys/stat.h>
1250 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1251   AC_MSG_RESULT([$ac_cv_func_fstat64])
1252   if test x$ac_cv_func_fstat64 = xyes ; then
1253     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1254   fi
1257 #################################################
1258 # Check whether struct stat has timestamps with sub-second resolution.
1259 # At least IRIX and Solaris have these.
1261 # We check that
1262 #       all of st_mtim, st_atim and st_ctim exist
1263 #       all of the members are in fact of type struct timespec
1265 # There is some conflicting standards weirdness about whether we should use
1266 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1267 # prefer struct timespec.
1269 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1270     [
1271         AC_TRY_COMPILE(
1272             [
1273 #if TIME_WITH_SYS_TIME
1274 # include <sys/time.h>
1275 # include <time.h>
1276 #else
1277 # if HAVE_SYS_TIME_H
1278 #  include <sys/time.h>
1279 # else
1280 #  include <time.h>
1281 # endif
1282 #endif
1283 #ifdef HAVE_SYS_STAT_H
1284 #include <sys/stat.h>
1285 #endif
1286             ],
1287             [
1288                 struct timespec t;
1289                 struct stat s = {0};
1290                 t.tv_sec = s.st_mtim.tv_sec;
1291                 t.tv_nsec = s.st_mtim.tv_nsec;
1292                 t.tv_sec = s.st_ctim.tv_sec;
1293                 t.tv_nsec = s.st_ctim.tv_nsec;
1294                 t.tv_sec = s.st_atim.tv_sec;
1295                 t.tv_nsec = s.st_atim.tv_nsec;
1296             ],
1297             samba_stat_hires=yes, samba_stat_hires=no)
1298     ])
1300 if test x"$samba_stat_hires" = x"yes" ; then
1301     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1302     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1303     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1304     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1305             [whether struct stat has sub-second timestamps])
1308 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
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_mtime;
1330                 t.tv_nsec = s.st_mtimensec;
1331                 t.tv_sec = s.st_ctime;
1332                 t.tv_nsec = s.st_ctimensec;
1333                 t.tv_sec = s.st_atime;
1334                 t.tv_nsec = s.st_atimensec;
1335             ],
1336             samba_stat_hires=yes, samba_stat_hires=no)
1337     ])
1339 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1340     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1341     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1342     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1343     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1344             [whether struct stat has sub-second timestamps without struct timespec])
1347 #####################################
1348 # needed for SRV lookups
1349 AC_CHECK_LIB(resolv, dn_expand)
1350 AC_CHECK_LIB(resolv, _dn_expand)
1351 AC_CHECK_LIB(resolv, __dn_expand)
1354 # Check for the functions putprpwnam, set_auth_parameters,
1355 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1356 # Needed for OSF1 and HPUX.
1359 AC_LIBTESTFUNC(security, putprpwnam)
1360 AC_LIBTESTFUNC(sec, putprpwnam)
1362 AC_LIBTESTFUNC(security, set_auth_parameters)
1363 AC_LIBTESTFUNC(sec, set_auth_parameters)
1365 # UnixWare 7.x has its getspnam in -lgen
1366 AC_LIBTESTFUNC(gen, getspnam)
1368 AC_LIBTESTFUNC(security, getspnam)
1369 AC_LIBTESTFUNC(sec, getspnam)
1371 AC_LIBTESTFUNC(security, bigcrypt)
1372 AC_LIBTESTFUNC(sec, bigcrypt)
1374 AC_LIBTESTFUNC(security, getprpwnam)
1375 AC_LIBTESTFUNC(sec, getprpwnam)
1377 AC_CHECK_FUNCS(strsignal)
1379 ############################################
1380 # Check if we have libattr
1381 case "$host_os" in
1382   *osf*)
1383         AC_SEARCH_LIBS(getproplist, [proplist])
1384         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1385         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1386         AC_CHECK_FUNCS(sizeof_proplist_entry)
1387   ;;
1388   *)
1389         AC_SEARCH_LIBS(getxattr, [attr])
1390         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1391         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1392         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1393         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1394         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1395         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1396         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1397   ;;
1398 esac
1400 ########################################################
1401 # Check if attropen() is present if this is Solaris
1402 case "$host_os" in
1403   *solaris*)
1404         AC_CHECK_FUNCS(attropen)
1405   ;;
1406 esac
1408 ########################################################
1409 # Do xattr functions take additional options like on Darwin?
1410 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1411         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1412                 old_LIBS=$LIBS
1413                 LIBS="$LIBS $ACL_LIBS"
1414                 AC_TRY_COMPILE([
1415                         #include <sys/types.h>
1416                         #if HAVE_ATTR_XATTR_H
1417                         #include <attr/xattr.h>
1418                         #elif HAVE_SYS_XATTR_H
1419                         #include <sys/xattr.h>
1420                         #endif
1421                 ],[
1422                         getxattr(0, 0, 0, 0, 0, 0);
1423                 ],
1424                 [smb_attr_cv_xattr_add_opt=yes],
1425                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1426         ])
1427         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1428                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1429         fi
1432 # Check if we have extattr
1433 case "$host_os" in
1434   *freebsd4* | *dragonfly* )
1435     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1436     ;;
1437   *)
1438     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1439     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1440     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1441     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1442     ;;
1443 esac
1445 AC_DISABLE_STATIC
1446 AC_ENABLE_SHARED
1448 # Set defaults
1449 PIE_CFLAGS=""
1450 PIE_LDFLAGS=""
1451 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1453 if test "x$enable_pie" != xno
1454 then
1455         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1456         [
1457                 cat > conftest.c <<EOF
1458 int foo;
1459 main () { return 0;}
1461                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1462                 then
1463                         samba_cv_fpie=yes
1464                 else
1465                         samba_cv_fpie=no
1466                 fi
1467                 rm -f conftest*
1468         ])
1469         if test x"${samba_cv_fpie}" = x"yes"
1470         then
1471                 PIE_CFLAGS="-fPIE"
1472                 PIE_LDFLAGS="-pie"
1473         fi
1476 # Set defaults
1477 RELRO_LDFLAGS=""
1478 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1480 if test "x$enable_relro" != xno
1481 then
1482         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1483         [
1484                 cat > conftest.c <<EOF
1485 int foo;
1486 main () { return 0;}
1488                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1489                 then
1490                         samba_cv_relro=yes
1491                 else
1492                         samba_cv_relro=no
1493                 fi
1494                 rm -f conftest*
1495         ])
1496         if test x"${samba_cv_relro}" = x"yes"
1497         then
1498                 RELRO_LDFLAGS="-Wl,-z,relro"
1499         fi
1502 # Assume non-shared by default and override below
1503 BLDSHARED="false"
1505 # these are the defaults, good for lots of systems
1506 HOST_OS="$host_os"
1507 LDSHFLAGS="-shared"
1508 MODULE_EXPORTS=""
1509 SONAMEFLAG="#"
1510 SHLD="\${CC} \${CFLAGS}"
1511 PICFLAG="${PIE_CFLAGS}"
1512 SHLIBEXT="so"
1513 DSO_EXPORTS=""
1515 # this bit needs to be modified for each OS that supports share libs
1516 # You need to specify how to create a shared library and
1517   # how to compile C code to produce PIC object files
1519   AC_MSG_CHECKING([ability to build shared libraries])
1521   # and these are for particular systems
1522   case "$host_os" in
1523                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1524                         BLDSHARED="true"
1525                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1526                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1527                         else
1528                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1529                         fi
1530                         DYNEXP="-Wl,--export-dynamic"
1531                         PICFLAG="-fPIC"
1532                         SONAMEFLAG="-Wl,-soname="
1533                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1534                         ;;
1535                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1536                         BLDSHARED="true"
1537                         LDSHFLAGS="-G"
1538                         SONAMEFLAG="-h "
1539                         if test "${GCC}" = "yes"; then
1540                                 PICFLAG="-fPIC"
1541                                 SONAMEFLAG="-Wl,-soname="
1542                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1543                                         DYNEXP="-Wl,-E"
1544                                 fi
1545                         else
1546                                 PICFLAG="-KPIC"
1547                                 ## ${CFLAGS} added for building 64-bit shared
1548                                 ## libs using Sun's Compiler
1549                                 LDSHFLAGS="-G \${CFLAGS}"
1550                         fi
1551                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1552                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1553                         ;;
1554                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1555                         BLDSHARED="true"
1556                         LDSHFLAGS="-G"
1557                         SONAMEFLAG="-Wl,-h,"
1558                         PICFLAG="-KPIC"   # Is this correct for SunOS
1559                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1560                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1561                         ;;
1562                 *netbsd* | *freebsd* | *dragonfly* )
1563                         BLDSHARED="true"
1564                         LDSHFLAGS="-shared"
1565                         DYNEXP="-Wl,--export-dynamic"
1566                         SONAMEFLAG="-Wl,-soname,"
1567                         PICFLAG="-fPIC -DPIC"
1568                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1569                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1570                         ;;
1571                 *openbsd*)  BLDSHARED="true"
1572                         LDSHFLAGS="-shared"
1573                         DYNEXP="-Wl,-Bdynamic"
1574                         SONAMEFLAG="-Wl,-soname,"
1575                         PICFLAG="-fPIC"
1576                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1577                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1578                         ;;
1579                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1580                         case "$host_os" in
1581                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1582                         ;;
1583                         esac
1584                         BLDSHARED="true"
1585                         LDSHFLAGS="-set_version sgi1.0 -shared"
1586                         SONAMEFLAG="-soname "
1587                         SHLD="\${LD}"
1588                         if test "${GCC}" = "yes"; then
1589                                 PICFLAG="-fPIC"
1590                         else
1591                                 PICFLAG="-KPIC"
1592                         fi
1593                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1594                         ;;
1595                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1596                         BLDSHARED="true"
1597                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc"
1598                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1599                         PICFLAG="-O2"
1600                         # as AIX code is always position independent...
1601                         # .po will just create compile warnings, use po.o:
1602                         if test "${GCC}" != "yes"; then
1603                                 ## for funky AIX compiler using strncpy()
1604                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1605                         fi
1607                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1608                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1609                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1610                         ;;
1611                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1612                         # Use special PIC flags for the native HP-UX compiler.
1613                                 BLDSHARED="true"
1614                                 SHLD="cc"
1615                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1616                                 SONAMEFLAG="-Wl,+h "
1617                                 PICFLAG="+z"
1618                         if test "${GCC}" = "yes"; then
1619                                 PICFLAG="-fPIC"
1620                         else
1621                                 PICFLAG="+z +ESnolit"
1622                         fi
1623                         if test "$host_cpu" = "ia64"; then
1624                                 SHLIBEXT="so"
1625                               PICFLAG="+z"
1626                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1627                         else
1628                                 SHLIBEXT="sl"
1629                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1630                         fi
1631                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1632                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1633                         ;;
1634                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1635                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1636                         ;;
1637                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1638                         BLDSHARED="true"
1639                         LDSHFLAGS="-shared"
1640                         SONAMEFLAG="-Wl,-soname,"
1641                         PICFLAG="-fPIC"
1642                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1643                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1644                         ;;
1645                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1646                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1647                         ;;
1648                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1649                         BLDSHARED="true"
1650                         LDSHFLAGS="-shared"
1651                         SONAMEFLAG="-Wl,-soname,"
1652                         PICFLAG="-KPIC"
1653                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1654                         ;;
1655                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1656                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1657                         ;;
1658                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1659                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1660                         ;;
1661                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1662                         case "$host" in
1663                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1664                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1665                                         fi
1666                                         LDSHFLAGS="-G"
1667                                         DYNEXP="-Bexport"
1668                                 ;;
1669                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1670                         esac
1671                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1672                         ;;
1674                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1675                         if [ test "$GCC" != yes ]; then
1676                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1677                         fi
1678                         LDSHFLAGS="-G"
1679                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1680                         ;;
1681                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1682                         BLDSHARED="false"
1683                         LDSHFLAGS=""
1684                         ;;
1686                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1687                         BLDSHARED="true"
1688                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1689                         CFLAGS="$CFLAGS -fno-common"
1690                         SHLD="\${CC}"
1691                         SHLIBEXT="dylib"
1692                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1693                         SHLIBEXT="dylib"
1694                         # Since gcc doesn't fail on unrecognised options, the
1695                         # PIE test incorrectly succeeds. Darwin gcc does not
1696                         # actually support the PIE stuff.
1697                         PIE_LDFLAGS=
1698                         PIE_CFLAGS=
1699                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1700                         ;;
1702                 *)
1703                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1704                         ;;
1705   esac
1707 if test "$enable_shared" != "yes"; then
1708         BLDSHARED=false
1711 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1712         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1715 if test x"$BLDSHARED" = x"true" ; then
1716         LDFLAGS="$LDFLAGS -L./bin"
1719 AC_MSG_RESULT($BLDSHARED)
1721 AC_MSG_CHECKING([LDFLAGS])
1722 AC_MSG_RESULT([$LDFLAGS])
1723 AC_MSG_CHECKING([DYNEXP])
1724 AC_MSG_RESULT([$DYNEXP])
1726 #######################################################
1727 # test whether building a shared library actually works
1728 if test $BLDSHARED = true; then
1730 AC_MSG_CHECKING([SHLD])
1731 AC_MSG_RESULT([$SHLD])
1732 AC_MSG_CHECKING([LDSHFLAGS])
1733 AC_MSG_RESULT([$LDSHFLAGS])
1735 AC_MSG_CHECKING([SHLIBEXT])
1736 AC_MSG_RESULT([$SHLIBEXT])
1737 AC_MSG_CHECKING([SONAMEFLAG])
1738 AC_MSG_RESULT([$SONAMEFLAG])
1740 AC_MSG_CHECKING([PICFLAG])
1741 AC_MSG_RESULT([$PICFLAG])
1743 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1744 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1746 AC_CACHE_CHECK([whether building shared libraries actually works],
1747                [ac_cv_shlib_works],[
1748    # try building a trivial shared library
1749    ac_cv_shlib_works=no
1750    # The $SHLD and $LDSHFLAGS variables may contain references to other
1751    # variables so they need to be eval'ed.
1752    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1753         shlib.o ${srcdir-.}/tests/shlib.c && \
1754    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1755         shlib.o && ac_cv_shlib_works=yes
1756    rm -f "shlib.$SHLIBEXT" shlib.o
1759 if test $ac_cv_shlib_works = no; then
1760    BLDSHARED=false
1764 if test x"$BLDSHARED" != x"true"; then
1765         LDSHFLAGS="shared-libraries-disabled"
1766         SONAMEFLAG="shared-libraries-disabled"
1767         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1768         SHLD="shared-libraries-disabled"
1769         PICFLAG="${PIE_CFLAGS}"
1770         SHLIBEXT="shared_libraries_disabled"
1773 AC_MSG_CHECKING([used PICFLAG])
1774 AC_MSG_RESULT([$PICFLAG])
1776 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1778 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1780 ################
1782 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1783 AC_TRY_RUN([#include <stdio.h>
1784 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1785 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1786 if test x"$samba_cv_have_longlong" = x"yes"; then
1787     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1788     AC_CHECK_TYPE(intptr_t, unsigned long long)
1789 else
1790     AC_CHECK_TYPE(intptr_t, unsigned long)
1794 # Check if the compiler supports the LL prefix on long long integers.
1795 # AIX needs this.
1797 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1798     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1799         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1800 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1801    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1805 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1806 AC_TRY_RUN([#include <time.h>
1807 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1808 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1809 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1810     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1813 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1814 AC_TRY_RUN([#include <stdio.h>
1815 #include <sys/stat.h>
1816 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1817 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1818 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1819     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1822 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1823 AC_TRY_RUN([
1824 #if defined(HAVE_UNISTD_H)
1825 #include <unistd.h>
1826 #endif
1827 #include <stdio.h>
1828 #include <sys/stat.h>
1829 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1830 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1831 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1832     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1835 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_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() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1843 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1844 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1845     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1848 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_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() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1856 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1857 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1858     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1861 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_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() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1869 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1870 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1871     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1874 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_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() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1882 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1883 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1884     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1887 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1888 AC_TRY_COMPILE([
1889 #if defined(HAVE_UNISTD_H)
1890 #include <unistd.h>
1891 #endif
1892 #include <sys/types.h>
1893 #include <dirent.h>],
1894 [DIR64 de;],
1895 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1896 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1897     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1900 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
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 [struct dirent64 de;],
1908 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1909 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1910     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1913 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1914 AC_TRY_RUN([
1915 #if defined(HAVE_UNISTD_H)
1916 #include <unistd.h>
1917 #endif
1918 #include <sys/types.h>
1919 main() { dev_t dev; int i = major(dev); return 0; }],
1920 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1921 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1922     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1925 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1926 AC_TRY_RUN([
1927 #if defined(HAVE_UNISTD_H)
1928 #include <unistd.h>
1929 #endif
1930 #include <sys/types.h>
1931 main() { dev_t dev; int i = minor(dev); return 0; }],
1932 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1933 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1934     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1937 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1938 AC_TRY_RUN([
1939 #if defined(HAVE_UNISTD_H)
1940 #include <unistd.h>
1941 #endif
1942 #include <sys/types.h>
1943 main() { dev_t dev = makedev(1,2); return 0; }],
1944 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1945 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1946     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1949 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1950 AC_TRY_RUN([#include <stdio.h>
1951 main() { char c; c=250; exit((c > 0)?0:1); }],
1952 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1953 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1954     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1957 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1958 AC_TRY_COMPILE([#include <sys/types.h>
1959 #include <dirent.h>
1960 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1961 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1962 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1963     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1966 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1967 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1968 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1969 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1970     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1973 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1974 AC_TRY_LINK([
1975 #include <sys/time.h>
1976 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
1977            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
1978            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
1979 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1980     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
1983 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
1985     # On some systems (eg. Linux) librt can pull in libpthread. We
1986     # don't want this to happen because libpthreads changes signal delivery
1987     # semantics in ways we are not prepared for. This breaks Linux oplocks
1988     # which rely on signals.
1990     AC_LIBTESTFUNC(rt, clock_gettime,
1991             [
1992                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
1993                                 [Whether clock_gettime is available])
1994                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
1995                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
1996                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
1997                         ])
2001 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2002 AC_TRY_RUN([#include <sys/types.h>
2003 #include <dirent.h>
2004 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2005 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2006 di->d_name[0] == 0) exit(0); exit(1);} ],
2007 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2008 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2009     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2012 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2013 AC_TRY_COMPILE([#include <sys/types.h>
2014 #include <utime.h>],
2015 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2016 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2017 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2018     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2021 ##############
2022 # Check utmp details, but only if our OS offers utmp.h
2023 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2024 dnl  utmp and utmpx come in many flavours
2025 dnl  We need to check for many of them
2026 dnl  But we don't need to do each and every one, because our code uses
2027 dnl  mostly just the utmp (not utmpx) fields.
2029 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2031 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2032 AC_TRY_COMPILE([#include <sys/types.h>
2033 #include <utmp.h>],
2034 [struct utmp ut;  ut.ut_name[0] = 'a';],
2035 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2036 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2037     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2040 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2041 AC_TRY_COMPILE([#include <sys/types.h>
2042 #include <utmp.h>],
2043 [struct utmp ut;  ut.ut_user[0] = 'a';],
2044 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2045 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2046     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2049 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2050 AC_TRY_COMPILE([#include <sys/types.h>
2051 #include <utmp.h>],
2052 [struct utmp ut;  ut.ut_id[0] = 'a';],
2053 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2054 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2055     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2058 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2059 AC_TRY_COMPILE([#include <sys/types.h>
2060 #include <utmp.h>],
2061 [struct utmp ut;  ut.ut_host[0] = 'a';],
2062 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2063 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2064     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2067 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2068 AC_TRY_COMPILE([#include <sys/types.h>
2069 #include <utmp.h>],
2070 [struct utmp ut;  time_t t; ut.ut_time = t;],
2071 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2072 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2073     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2076 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2077 AC_TRY_COMPILE([#include <sys/types.h>
2078 #include <utmp.h>],
2079 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2080 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2081 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2082     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2085 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2086 AC_TRY_COMPILE([#include <sys/types.h>
2087 #include <utmp.h>],
2088 [struct utmp ut;  ut.ut_type = 0;],
2089 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2090 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2091     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2094 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2095 AC_TRY_COMPILE([#include <sys/types.h>
2096 #include <utmp.h>],
2097 [struct utmp ut;  ut.ut_pid = 0;],
2098 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2099 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2100     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2103 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2104 AC_TRY_COMPILE([#include <sys/types.h>
2105 #include <utmp.h>],
2106 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2107 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2108 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2109     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2112 dnl Look for the IPv6 varient by preference. Many systems have both.
2113 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2114 AC_TRY_COMPILE([#include <sys/types.h>
2115 #include <utmp.h>],
2116 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2117 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2118 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2119     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2122 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2123 AC_TRY_COMPILE([#include <sys/types.h>
2124 #include <utmp.h>],
2125 [struct utmp ut;  ut.ut_addr = 0;],
2126 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2127 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2128     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2131 if test x$ac_cv_func_pututline = xyes ; then
2132   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2133   AC_TRY_COMPILE([#include <sys/types.h>
2134 #include <utmp.h>],
2135   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2136   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2137   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2138       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2139   fi
2142 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2143 AC_TRY_COMPILE([#include <sys/types.h>
2144 #include <utmpx.h>],
2145 [struct utmpx ux;  ux.ut_syslen = 0;],
2146 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2147 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2148     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2152 # end utmp details
2155 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2156 AC_ARG_WITH(libiconv,
2157 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2159   if test "$withval" = "no" ; then
2160     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2161   else
2162      if test "$withval" != "yes" ; then
2163         ICONV_PATH_SPEC=yes
2164         ICONV_LOOK_DIRS="$withval"
2165      fi
2166   fi
2169 for i in $ICONV_LOOK_DIRS ; do
2171     save_LIBS="$LIBS"
2172     save_LDFLAGS="$LDFLAGS"
2173     save_CPPFLAGS="$CPPFLAGS"
2175     iconv_current_LIBS=""
2176     iconv_current_LDFLAGS=""
2177     iconv_current_CPPFLAGS=""
2179     ICONV_FOUND="no"
2180     unset libext
2182     #  This is here to handle -withval stuff for --with-libiconv
2183     #  Perhaps we should always add a -L
2184     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2186     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2187     # installation paths. This gets a little tricky since we might have iconv
2188     # in both libiconv and in libc. In this case the jm_ICONV test will always
2189     # succeed when the header is found. To counter this, make sure the
2190     # library directory is there and check the ABI directory first (which
2191     # should be harmless on other systems.
2192     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2193     for l in "lib32" "lib" "lib/hpux32"; do
2194         if test -d "$i/$l" ; then
2195                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2196                 LIBS=
2197                 export LDFLAGS LIBS CPPFLAGS
2198                 # Try to find iconv(3)
2199                 jm_ICONV($i/$l)
2200                 if test x"$ICONV_FOUND" = "xyes" ; then
2201                     libext="$l"
2202                     break
2203                 fi
2204         fi
2205     done
2207     if test x"$ICONV_FOUND" = "xyes" ; then
2208         iconv_current_LDFLAGS="-L$i/$libext"
2209         iconv_current_CPPFLAGS="-I$i/include"
2211         if test x"$jm_cv_lib_iconv" != x; then
2212             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2213         else
2214             # We found iconv in libc.
2215             iconv_current_LIBS=""
2216         fi
2218     fi
2220     if test x"$ICONV_FOUND" = "xyes" ; then
2222         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2223         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2224         LIBS="$save_LIBS $iconv_current_LIBS"
2225         export LDFLAGS LIBS CPPFLAGS
2227         default_dos_charset=no
2228         default_display_charset=no
2229         default_unix_charset=no
2231         # check for default dos charset name
2232         for j in CP850 IBM850 ; do
2233             rjs_CHARSET($j)
2234             default_dos_charset="$ICONV_CHARSET"
2235             if test x"$default_dos_charset" = x"$j"; then
2236                 break
2237             fi
2238         done
2240         # check for default display charset name
2241         for j in ASCII 646 ; do
2242             rjs_CHARSET($j)
2243             default_display_charset="$ICONV_CHARSET"
2244             if test x"$default_display_charset" = x"$j"; then
2245                 break
2246             fi
2247         done
2249         # check for default unix charset name
2250         for j in UTF-8 UTF8 ; do
2251             rjs_CHARSET($j)
2252             default_unix_charset="$ICONV_CHARSET"
2253             if test x"$default_unix_charset" = x"$j"; then
2254                 break
2255             fi
2256         done
2258         if test "$default_dos_charset" != "no" -a \
2259                 "$default_dos_charset" != "cross" -a \
2260                 "$default_display_charset" != "no" -a \
2261                 "$default_display_charset" != "cross" -a \
2262                 "$default_unix_charset" != "no" -a \
2263                 "$default_unix_charset" != "cross"
2264         then
2265                 samba_cv_HAVE_NATIVE_ICONV=yes
2266         else
2267             if test "$default_dos_charset" = "cross" -o \
2268                      "$default_display_charset" = "cross" -o \
2269                      "$default_unix_charset" = "cross"
2270             then
2271                     samba_cv_HAVE_NATIVE_ICONV=cross
2272             else
2273                     samba_cv_HAVE_NATIVE_ICONV=no
2274             fi
2275         fi
2277         # At this point, we have a libiconv candidate. We know that
2278         # we have the right headers and libraries, but we don't know
2279         # whether it does the conversions we want. We can't test this
2280         # because we are cross-compiling. This is not necessarily a big
2281         # deal, since we can't guarantee that the results we get now will
2282         # match the results we get at runtime anyway.
2283         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2284             default_dos_charset="CP850"
2285             default_display_charset="ASCII"
2286             default_unix_charset="UTF-8"
2287             samba_cv_HAVE_NATIVE_ICONV=yes
2288             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2289             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2290         fi
2292         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2294             CPPFLAGS=$save_CPPFLAGS
2295             LDFLAGS=$save_LDFLAGS
2296             LIBS=$save_LIBS
2298             if test x"$iconv_current_LIBS" != x; then
2299                 LIBS="$LIBS $iconv_current_LIBS"
2300             fi
2302             # Add the flags we need to CPPFLAGS and LDFLAGS
2303             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2304             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2306             # Turn the #defines into string literals
2307             default_dos_charset="\"$default_dos_charset\""
2308             default_display_charset="\"$default_display_charset\""
2309             default_unix_charset="\"$default_unix_charset\""
2311             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2312             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2313             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2314             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2316            break
2317         fi
2319     # We didn't find a working iconv, so keep going
2320     fi
2322     #  We only need to clean these up here for the next pass through the loop
2323     CPPFLAGS=$save_CPPFLAGS
2324     LDFLAGS=$save_LDFLAGS
2325     LIBS=$save_LIBS
2326     export LDFLAGS LIBS CPPFLAGS
2327 done
2328 unset libext
2331 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2332     AC_MSG_WARN([Sufficient support for iconv function was not found.
2333     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2334    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2335    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2336    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2340 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2341 AC_TRY_RUN([
2342 #include <sys/types.h>
2343 #include <fcntl.h>
2344 #ifndef F_GETLEASE
2345 #define F_GETLEASE      1025
2346 #endif
2347 main() {
2348        int fd = open("/dev/null", O_RDONLY);
2349        return fcntl(fd, F_GETLEASE, 0) == -1;
2352 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2353 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2354     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2357 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2358 AC_TRY_RUN([
2359 #include <sys/types.h>
2360 #include <fcntl.h>
2361 #include <signal.h>
2362 #ifndef F_NOTIFY
2363 #define F_NOTIFY 1026
2364 #endif
2365 main() {
2366         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2369 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2370 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2371     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2374 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2375 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2376 AC_CHECK_FUNCS(inotify_init)
2377 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2379 samba_cv_HAVE_INOTIFY=yes,
2380 samba_cv_HAVE_INOTIFY=no,
2381 samba_cv_HAVE_INOTIFY=cross)
2383 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2384     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2387 #################################################
2388 # Check if FAM notifications are available. For FAM info, see
2389 #       http://oss.sgi.com/projects/fam/
2390 #       http://savannah.nongnu.org/projects/fam/
2391 AC_ARG_ENABLE(fam,
2392 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2394 if test x$enable_fam != xno; then
2395     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2396     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2397         # On IRIX, libfam requires libC, but other FAM implementations
2398         # might not need it.
2399         AC_CHECK_LIB(fam, FAMOpen2,
2400             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2401             [samba_cv_HAVE_LIBFAM=no])
2403         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2404             samba_fam_xtra=-lC
2405             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2406                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2407                 [samba_cv_HAVE_LIBFAM=no])
2408             unset samba_fam_xtra
2409         fi
2410     fi
2412     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2413         default_shared_modules="$default_shared_modules vfs_notify_fam"
2414         AC_TRY_COMPILE([#include <fam.h>],
2415                     [FAMCodes code = FAMChanged;],
2416                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2417                         [Whether fam.h contains a typedef for enum FAMCodes]),
2418                     [])
2419     fi
2421     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2422         AC_MSG_ERROR(FAM support requested but FAM library not available )
2423     fi
2426 AC_SUBST(SMB_FAM_LIBS)
2428 #################################################
2429 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2431 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2433 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2434 # Theoretically it should work with AIX JFS2 too but this needs testing
2435 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2436     default_shared_modules="$default_shared_modules vfs_tsmsm"
2439 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2440 AC_TRY_RUN([
2441 #include <sys/types.h>
2442 #include <fcntl.h>
2443 #include <signal.h>
2444 #include <sys/file.h>
2445 #ifndef LOCK_MAND
2446 #define LOCK_MAND       32
2447 #define LOCK_READ       64
2448 #endif
2449 main() {
2450         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2453 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2454 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2455     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2459 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2460 AC_TRY_COMPILE([#include <sys/types.h>
2461 #include <fcntl.h>],
2462 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2463 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2464 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2465     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2468 #################################################
2469 # Check for POSIX capability support
2471 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2472     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2473     [], [])
2475 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2477     ac_save_LIBS=$LIBS
2478     AC_LIBTESTFUNC(cap, cap_get_proc)
2480     AC_CACHE_CHECK([for POSIX capabilities],
2481             samba_cv_HAVE_POSIX_CAPABILITIES,
2482             [
2483                 AC_TRY_RUN([
2484 #include <sys/types.h>
2485 #include <sys/capability.h>
2486 main() {
2487  cap_t cap;
2488  cap_value_t vals[1];
2489  if (!(cap = cap_get_proc()))
2490    exit(1);
2491  vals[0] = CAP_CHOWN;
2492  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2493  cap_set_proc(cap);
2494  exit(0);
2496                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2497                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2498                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2499             ])
2501 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2502     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2503             [Whether POSIX capabilities are available])
2504 else
2505     LIBS=$ac_save_LIBS
2511 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2512 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2515 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2516 AC_TRY_COMPILE([#include <sys/types.h>
2517 #if defined(HAVE_RPC_RPC_H)
2518 #include <rpc/rpc.h>
2519 #endif],
2520 [int16 testvar;],
2521 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2522 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2523     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2526 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2527 AC_TRY_COMPILE([#include <sys/types.h>
2528 #if defined(HAVE_RPC_RPC_H)
2529 #include <rpc/rpc.h>
2530 #endif],
2531 [uint16 testvar;],
2532 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2533 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2534     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2537 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2538 AC_TRY_COMPILE([#include <sys/types.h>
2539 #if defined(HAVE_RPC_RPC_H)
2540 #include <rpc/rpc.h>
2541 #endif],
2542 [int32 testvar;],
2543 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2544 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2545     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2548 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2549 AC_TRY_COMPILE([#include <sys/types.h>
2550 #if defined(HAVE_RPC_RPC_H)
2551 #include <rpc/rpc.h>
2552 #endif],
2553 [uint32 testvar;],
2554 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2555 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2556     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2560 dnl Some systems (SCO) have a problem including
2561 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2562 dnl as a #define in <prot.h> and as part of an enum
2563 dnl in <rpc/rpc.h>.
2566 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2567 AC_TRY_COMPILE([#include <sys/types.h>
2568 #ifdef HAVE_SYS_SECURITY_H
2569 #include <sys/security.h>
2570 #include <prot.h>
2571 #endif  /* HAVE_SYS_SECURITY_H */
2572 #if defined(HAVE_RPC_RPC_H)
2573 #include <rpc/rpc.h>
2574 #endif],
2575 [int testvar;],
2576 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2577 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2578     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2581 AC_MSG_CHECKING([for test routines])
2582 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2583            AC_MSG_RESULT(yes),
2584            AC_MSG_ERROR([cant find test code. Aborting config]),
2585            AC_MSG_WARN([cannot run when cross-compiling]))
2587 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2588 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2589            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2590 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2591     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2594 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2595 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2596            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2597 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2598     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2601 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2602 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2603 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2604 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2605 AC_CHECK_FUNCS(getpagesize)
2607 ################################################
2608 # look for a method of setting the effective uid
2609 seteuid=no;
2610 if test $seteuid = no; then
2611 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2612 AC_TRY_RUN([
2613 #define AUTOCONF_TEST 1
2614 #define USE_SETRESUID 1
2615 #include "confdefs.h"
2616 #include "${srcdir-.}/lib/util_sec.c"],
2617            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2618 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2619     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2624 if test $seteuid = no; then
2625 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2626 AC_TRY_RUN([
2627 #define AUTOCONF_TEST 1
2628 #define USE_SETREUID 1
2629 #include "confdefs.h"
2630 #include "${srcdir-.}/lib/util_sec.c"],
2631            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2632 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2633     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2637 if test $seteuid = no; then
2638 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2639 AC_TRY_RUN([
2640 #define AUTOCONF_TEST 1
2641 #define USE_SETEUID 1
2642 #include "confdefs.h"
2643 #include "${srcdir-.}/lib/util_sec.c"],
2644            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2645 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2646     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2650 if test $seteuid = no; then
2651 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2652 AC_TRY_RUN([
2653 #define AUTOCONF_TEST 1
2654 #define USE_SETUIDX 1
2655 #include "confdefs.h"
2656 #include "${srcdir-.}/lib/util_sec.c"],
2657            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2658 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2659     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2663 AC_CACHE_CHECK([for the Darwin initgroups system call],
2664         samba_cv_DARWIN_INITGROUPS,
2665         AC_TRY_LINK([
2666 #include <sys/syscall.h>
2667 #include <unistd.h>
2668         ],
2669         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2670         samba_cv_DARWIN_INITGROUPS=yes,
2671         samba_cv_DARWIN_INITGROUPS=no)
2674 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2675     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2676         [Whether to use the Darwin-specific initgroups system call])
2679 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2680 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2681            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2682 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2683     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2686 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2687 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2688            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2689 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2690     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2692 else
2695 dnl Don't check for 64 bit fcntl locking if we know that the
2696 dnl glibc2.1 broken check has succeeded.
2699   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2700   AC_TRY_RUN([
2701 #if defined(HAVE_UNISTD_H)
2702 #include <unistd.h>
2703 #endif
2704 #include <stdio.h>
2705 #include <stdlib.h>
2707 #ifdef HAVE_FCNTL_H
2708 #include <fcntl.h>
2709 #endif
2711 #ifdef HAVE_SYS_FCNTL_H
2712 #include <sys/fcntl.h>
2713 #endif
2714 main() { struct flock64 fl64;
2715 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2716 exit(0);
2717 #else
2718 exit(1);
2719 #endif
2721        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2723   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2724       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2725   fi
2728 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2729 AC_TRY_COMPILE([#include <sys/types.h>
2730 #include <sys/stat.h>
2731 #include <unistd.h>],
2732 [struct stat st;  st.st_blocks = 0;],
2733 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2734 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2735     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2738 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2739 AC_TRY_COMPILE([#include <sys/types.h>
2740 #include <sys/stat.h>
2741 #include <unistd.h>],
2742 [struct stat st;  st.st_blksize = 0;],
2743 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2744 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2745     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2748 AC_CACHE_CHECK([for st_flags in struct stat],
2749         samba_cv_HAVE_STAT_ST_FLAGS,
2750         [
2751             AC_TRY_COMPILE([#include <sys/types.h>
2752 #include <sys/stat.h>
2753 #include <unistd.h>],
2754             [struct stat st;  st.st_flags = 0;],
2755             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2756             samba_cv_HAVE_STAT_ST_FLAGS=no,
2757             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2758         ])
2760 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2761     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2762                 [Whether the stat struct has a st_flags member])
2765 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2766 AC_TRY_COMPILE([
2767 #include <sys/types.h>
2768 #include <sys/acl.h>
2769 #if defined(HAVE_RPCSVC_NIS_H)
2770 #include <rpcsvc/nis.h>
2771 #endif],
2772 [int i;],
2773 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2774 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2775         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2778 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2779 AC_TRY_RUN([
2780 #include <stdio.h>
2781 #include <limits.h>
2782 main() {
2783         char *newpath = realpath("/tmp", NULL);
2784         exit ((newpath != NULL) ? 0 : 1);
2787 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2788 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2789     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2792 #################################################
2793 # check for AFS clear-text auth support
2794 samba_cv_WITH_AFS=no
2795 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2796 AC_ARG_WITH(afs,
2797 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2798 [ case "$withval" in
2799   yes|auto)
2800     AC_MSG_RESULT($withval)
2801     samba_cv_WITH_AFS=$withval
2802     ;;
2803   *)
2804     AC_MSG_RESULT(no)
2805     ;;
2806   esac ],
2807   AC_MSG_RESULT(no)
2810 ####################################################
2811 # check for Linux-specific AFS fake-kaserver support
2812 samba_cv_WITH_FAKE_KASERVER=no
2813 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2814 AC_ARG_WITH(fake-kaserver,
2815 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2816 [ case "$withval" in
2817   yes|auto)
2818     AC_MSG_RESULT($withval)
2819     samba_cv_WITH_FAKE_KASERVER=$withval
2820     ;;
2821   *)
2822     AC_MSG_RESULT(no)
2823     ;;
2824   esac ],
2825   AC_MSG_RESULT(no)
2828 #################################################
2829 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2830 if test x"$samba_cv_WITH_AFS" != x"no" ||
2831    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2833     # see if this box has the afs-headers in /usr/include/afs
2834     AC_MSG_CHECKING(for /usr/include/afs)
2835     if test -d /usr/include/afs; then
2836           CFLAGS="$CFLAGS -I/usr/include/afs"
2837           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2838           AC_MSG_RESULT(yes)
2839     else
2840       AC_MSG_RESULT(no)
2841     fi
2843     # check for afs.h
2844     have_afs_headers=no
2845     AC_CHECK_HEADERS(afs.h afs/afs.h)
2846     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2847         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2848            test x"$samba_cv_WITH_AFS" = x"auto"; then
2849                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2850         else
2851                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2852         fi
2853     else
2854         have_afs_headers=yes
2855     fi
2858 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2859     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2862 #################################################
2863 # check whether to compile AFS/NT ACL mapping module
2864 samba_cv_WITH_VFS_AFSACL=no
2865 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2866 AC_ARG_WITH(vfs-afsacl,
2867 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2868 [ case "$withval" in
2869   yes|auto)
2870     AC_MSG_RESULT($withval)
2871     samba_cv_WITH_VFS_AFSACL=yes
2872     ;;
2873   *)
2874     AC_MSG_RESULT(no)
2875     ;;
2876   esac ],
2877   AC_MSG_RESULT(no)
2880 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2881    default_shared_modules="$default_shared_modules vfs_afsacl"
2883         
2884 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2885     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2888 #################################################
2889 # check for the DFS clear-text auth system
2890 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2891 AC_ARG_WITH(dfs,
2892 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2893 [ case "$withval" in
2894   yes)
2895     AC_MSG_RESULT(yes)
2896     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2897     ;;
2898   *)
2899     AC_MSG_RESULT(no)
2900     ;;
2901   esac ],
2902   AC_MSG_RESULT(no)
2905 ########################################################
2906 # Compile with LDAP support?
2908 with_ldap_support=auto
2909 AC_MSG_CHECKING([for LDAP support])
2911 AC_ARG_WITH(ldap,
2912 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2913 [ case "$withval" in
2914     yes|no)
2915         with_ldap_support=$withval
2916         ;;
2917   esac ])
2919 AC_MSG_RESULT($with_ldap_support)
2921 SMBLDAP=""
2922 AC_SUBST(SMBLDAP)
2923 SMBLDAPUTIL=""
2924 AC_SUBST(SMBLDAPUTIL)
2925 LDBLDAP=""
2926 AC_SUBST(LDBLDAP)
2928 if test x"$with_ldap_support" != x"no"; then
2930   ##################################################################
2931   # first test for ldap.h and lber.h
2932   # (ldap.h is required for this test)
2933   AC_CHECK_HEADERS(ldap.h lber.h)
2935   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2936         if test x"$with_ldap_support" = x"yes"; then
2937          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2938         else
2939          AC_MSG_WARN(ldap.h is needed for LDAP support)
2940         fi
2941         
2942         with_ldap_support=no
2943   fi
2945   ##################################################################
2946   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
2947   # unsigned int in include/includes.h
2948   case $host_os in
2949         *hpux*)
2950          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2951          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
2952         with_ldap_support=yes
2953         ;;
2954         *)
2955         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
2956         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
2957                 if test x"$with_ldap_support" = x"yes"; then
2958                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
2959                 else
2960                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2961                 fi
2962                 with_ldap_support=no
2963         fi
2964         ;;
2965   esac
2968 if test x"$with_ldap_support" != x"no"; then
2969   ac_save_LIBS=$LIBS
2971   ##################################################################
2972   # we might need the lber lib on some systems. To avoid link errors
2973   # this test must be before the libldap test
2974   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2976   ########################################################
2977   # If ber_sockbuf_add_io() is available we can add
2978   # SASL wrapping hooks
2979   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
2981   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
2982                  AC_TRY_COMPILE([#include <ldap.h>],
2983                                 [int val = LDAP_OPT_SOCKBUF;],
2984                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
2985                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
2987   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
2988           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
2989         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
2990   fi
2992   #######################################################
2993   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
2994   # ldap logging and print it out in the samba logs
2995   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
2996                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
2997                  [AC_TRY_COMPILE([#include <lber.h>],
2998                                  [int val = LBER_OPT_LOG_PRINT_FN;],
2999                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3000                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3002   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3003         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3004                   [Support for LDAP/LBER logging interception])
3005   fi
3007   ########################################################
3008   # now see if we can find the ldap libs in standard paths
3009   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3011   ########################################################
3012   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3013   # Check found in pam_ldap 145.
3014   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3016   LIBS="$LIBS $LDAP_LIBS"
3017   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3018     AC_TRY_COMPILE([
3019         #include <lber.h>
3020         #include <ldap.h>],
3021         [ldap_set_rebind_proc(0, 0, 0);],
3022         [smb_ldap_cv_ldap_set_rebind_proc=3],
3023         [smb_ldap_cv_ldap_set_rebind_proc=2]
3024     )
3025   ])
3027   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3029   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3031   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3032     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3033     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3034     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3035     default_shared_modules="$default_shared_modules";
3036     SMBLDAP="lib/smbldap.o"
3037     SMBLDAPUTIL="lib/smbldap_util.o"
3038     with_ldap_support=yes
3039     AC_MSG_CHECKING(whether LDAP support is used)
3040     AC_MSG_RESULT(yes)
3041   else
3042     if test x"$with_ldap_support" = x"yes"; then
3043         AC_MSG_ERROR(libldap is needed for LDAP support)
3044     else
3045         AC_MSG_WARN(libldap is needed for LDAP support)
3046     fi
3048     LDAP_LIBS=""
3049     with_ldap_support=no
3050   fi
3051   LIBS=$ac_save_LIBS
3055 #################################################
3056 # active directory support
3058 with_ads_support=auto
3059 AC_MSG_CHECKING([for Active Directory and krb5 support])
3061 AC_ARG_WITH(ads,
3062 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3063 [ case "$withval" in
3064     yes|no)
3065         with_ads_support="$withval"
3066         ;;
3067   esac ])
3069 AC_MSG_RESULT($with_ads_support)
3071 FOUND_KRB5=no
3072 KRB5_LIBS=""
3074 if test x"$with_ldap_support" != x"yes"; then
3076     if test x"$with_ads_support" = x"yes"; then
3077         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3078     elif test x"$with_ads_support" = x"auto"; then
3079         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3080         with_ads_support=no
3081     fi
3083 else
3085     # Check to see whether there is enough LDAP functionality to be able
3086     # to build AD support.
3088 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3089 case "$host_os" in
3090         *hpux*)
3091     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3093     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3094         if test x"$with_ads_support" = x"yes"; then
3095             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3096         elif test x"$with_ads_support" = x"auto"; then
3097             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3098             with_ads_support=no
3099         fi
3100     fi
3101     ;;
3102         *)
3103     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3105     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3106         if test x"$with_ads_support" = x"yes"; then
3107             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3108         elif test x"$with_ads_support" = x"auto"; then
3109             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3110             with_ads_support=no
3111         fi
3112     fi
3113     ;;
3114 esac
3117     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3119     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3120         if test x"$with_ads_support" = x"yes"; then
3121             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3122         elif test x"$with_ads_support" = x"auto"; then
3123             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3124             with_ads_support=no
3125         fi
3126     fi
3130 if test x"$with_ads_support" != x"no"; then
3132   # Do no harm to the values of CFLAGS and LIBS while testing for
3133   # Kerberos support.
3135   if test x$FOUND_KRB5 = x"no"; then
3136     #################################################
3137     # check for location of Kerberos 5 install
3138     AC_MSG_CHECKING(for kerberos 5 install path)
3139     AC_ARG_WITH(krb5,
3140     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3141     [ case "$withval" in
3142       no)
3143         AC_MSG_RESULT(no krb5-path given)
3144         ;;
3145       yes)
3146         AC_MSG_RESULT(/usr)
3147         FOUND_KRB5=yes
3148         ;;
3149       *)
3150         AC_MSG_RESULT($withval)
3151         KRB5_CFLAGS="-I$withval/include"
3152         KRB5_CPPFLAGS="-I$withval/include"
3153         KRB5_LDFLAGS="-L$withval/lib"
3154         FOUND_KRB5=yes
3155         if test -x "$withval/bin/krb5-config"; then
3156                 KRB5CONFIG=$withval/bin/krb5-config
3157         fi
3158         ;;
3159       esac ],
3160       AC_MSG_RESULT(no krb5-path given)
3161     )
3162   fi
3164   #################################################
3165   # check for krb5-config from recent MIT and Heimdal kerberos 5
3166   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3167   AC_MSG_CHECKING(for working krb5-config)
3168   if test -x "$KRB5CONFIG"; then
3169     ac_save_CFLAGS=$CFLAGS
3170     CFLAGS="";export CFLAGS
3171     ac_save_LDFLAGS=$LDFLAGS
3172     LDFLAGS="";export LDFLAGS
3173     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3174     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3175     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3176     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3177     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3178     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3179     FOUND_KRB5=yes
3180     AC_MSG_RESULT(yes)
3181   else
3182     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3183   fi
3185   if test x$FOUND_KRB5 = x"no"; then
3186     #################################################
3187     # see if this box has the SuSE location for the heimdal krb implementation
3188     AC_MSG_CHECKING(for /usr/include/heimdal)
3189     if test -d /usr/include/heimdal; then
3190       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3191           KRB5_CFLAGS="-I/usr/include/heimdal"
3192           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3193           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3194           FOUND_KRB5=yes
3195           AC_MSG_RESULT(yes)
3196       else
3197           KRB5_CFLAGS="-I/usr/include/heimdal"
3198           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3199           FOUND_KRB5=yes
3200           AC_MSG_RESULT(yes)
3201       fi
3202     else
3203       AC_MSG_RESULT(no)
3204     fi
3205   fi
3207   if test x$FOUND_KRB5 = x"no"; then
3208     #################################################
3209     # see if this box has the RedHat location for kerberos
3210     AC_MSG_CHECKING(for /usr/kerberos)
3211     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3212       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3213       KRB5_CFLAGS="-I/usr/kerberos/include"
3214       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3215       FOUND_KRB5=yes
3216       AC_MSG_RESULT(yes)
3217     else
3218       AC_MSG_RESULT(no)
3219     fi
3220   fi
3222   if test x$FOUND_KRB5 = x"no"; then
3223     #################################################
3224     # see if this box has the OpenBSD location for heimdal krb5
3225     AC_MSG_CHECKING(for /usr/include/kerberosV)
3226     if test -d /usr/include/kerberosV; then
3227       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3228       KRB5_LIBS="-lcrypto"
3229       FOUND_KRB5=yes
3230       AC_MSG_RESULT(yes)
3231     else
3232       AC_MSG_RESULT(no)
3233     fi
3234   fi
3236   ac_save_CFLAGS=$CFLAGS
3237   ac_save_CPPFLAGS=$CPPFLAGS
3238   ac_save_LDFLAGS=$LDFLAGS
3240   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3241   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3242   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3244   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3246   # now check for krb5.h. Some systems have the libraries without the headers!
3247   # note that this check is done here to allow for different kerberos
3248   # include paths
3249   AC_CHECK_HEADERS(krb5.h)
3251   if test x"$ac_cv_header_krb5_h" = x"no"; then
3253     # Give a warning if AD support was not explicitly requested,
3254     # i.e with_ads_support = auto, otherwise die with an error.
3256     if test x"$with_ads_support" = x"yes"; then
3257       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3258     else
3259       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3260     fi
3262     # Turn off AD support and restore CFLAGS and LIBS variables
3264     with_ads_support="no"
3266     CFLAGS=$ac_save_CFLAGS
3267     CPPFLAGS=$ac_save_CPPFLAGS
3268     LDFLAGS=$ac_save_LDFLAGS
3269   fi
3270   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3271   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3272         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3273         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3274   fi
3277 # Now we have determined whether we really want ADS support
3278 use_ads=no
3279 if test x"$with_ads_support" != x"no"; then
3280   use_ads=yes
3281   have_gssapi=no
3282   ac_save_LIBS=$LIBS
3284   # now check for gssapi headers.  This is also done here to allow for
3285   # different kerberos include paths
3286   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3288   ##################################################################
3289   # we might need the k5crypto and com_err libraries on some systems
3290   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3291   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3293   # Heimdal checks.
3294   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3295   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3296   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3298   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3299   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3301   ########################################################
3302   # now see if we can find the krb5 libs in standard paths
3303   # or as specified above
3304   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3305   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3307   ########################################################
3308   # now see if we can find the gssapi libs in standard paths
3309   if test x"$have_gssapi" != x"yes"; then
3310      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3311   fi
3313   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3314   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3315   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3316   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3317   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3318   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3319   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3320   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3321   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3322   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3323   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3324   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3325   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3326   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3327   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3328   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3329   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3330   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3331   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3332   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3333   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3334   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3335   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3336   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3337   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3338   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3339   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3340   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3341   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3342   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3343   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3344   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3345   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3346   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3347   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3348   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3349   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3350   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3351   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3352   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3353   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3355   LIBS="$KRB5_LIBS $LIBS"
3357   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3358         smb_krb5_ticket_has_keyinfo,
3359         [
3360             AC_TRY_COMPILE(
3361             [
3362                 #include <krb5.h>
3363             ],
3364             [
3365                 krb5_ticket ticket;
3366                 krb5_kvno kvno;
3367                 krb5_enctype enctype;
3369                 enctype = ticket.enc_part.enctype;
3370                 kvno = ticket.enc_part.kvno;
3371             ],
3372             [ smb_krb5_ticket_has_keyinfo=yes ],
3373             [ smb_krb5_ticket_has_keyinfo=no ])
3374         ])
3376   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3377         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3378             [Whether the krb5_ticket structure contains the kvno and enctype])
3379   fi
3381   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3382           smb_krb5_creds_opt_free_context,
3383           [
3384                 AC_TRY_COMPILE([
3385                     #include <krb5.h>],
3386                     [
3387                         krb5_context ctx;
3388                         krb5_get_init_creds_opt *opt = NULL;
3389                         krb5_get_init_creds_opt_free(ctx, opt);
3390                     ],
3391                     [smb_krb5_creds_opt_free_context=yes],
3392                     [smb_krb5_creds_opt_free_context=no]
3393                 )
3394           ])
3396   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3397         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3398             [Whether krb5_get_init_creds_opt_free takes a context argument])
3399   fi
3401   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3402     AC_TRY_COMPILE([
3403         #include <krb5.h>],
3404         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3405         [smb_krb5_verify_checksum=7],
3406         [smb_krb5_verify_checksum=6],
3407     )
3408   ])
3409   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3411   AC_CACHE_CHECK([for checksum in krb5_checksum],
3412                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3413     AC_TRY_COMPILE([#include <krb5.h>],
3414       [krb5_checksum cksum; cksum.checksum.length = 0;],
3415       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3416       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3418   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3419     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3420                [Whether the krb5_checksum struct has a checksum property])
3421   fi
3423   AC_CACHE_CHECK([for etype in EncryptedData],
3424                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3425     AC_TRY_COMPILE([#include <krb5.h>],
3426       [EncryptedData edata; edata.etype = 0;],
3427       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3428       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3430   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3431     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3432                [Whether the EncryptedData struct has a etype property])
3433   fi
3435   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3436                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3437     AC_TRY_COMPILE([#include <krb5.h>],
3438       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3439       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3440       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3442   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3443     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3444                [Whether the krb5_ap_req struct has a ticket pointer])
3445   fi
3447   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3448                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3449     AC_TRY_COMPILE([#include <krb5.h>],
3450       [krb5_error err; err.e_data = NULL;],
3451       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3452       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3454   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3455     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3456                [Whether the krb5_error struct has a e_data pointer])
3457   fi
3459   AC_CACHE_CHECK([for krb5_crypto type],
3460                 samba_cv_HAVE_KRB5_CRYPTO,[
3461     AC_TRY_COMPILE([#include <krb5.h>],
3462       [krb5_crypto crypto;],
3463       samba_cv_HAVE_KRB5_CRYPTO=yes,
3464       samba_cv_HAVE_KRB5_CRYPTO=no)])
3466   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3467     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3468                [Whether the type krb5_crypto exists])
3469   fi
3471   AC_CACHE_CHECK([for krb5_encrypt_block type],
3472                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3473     AC_TRY_COMPILE([#include <krb5.h>],
3474       [krb5_encrypt_block block;],
3475       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3476       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3478   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3479     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3480                [Whether the type krb5_encrypt_block exists])
3481   fi
3483   AC_CACHE_CHECK([for addrtype in krb5_address],
3484                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3485     AC_TRY_COMPILE([#include <krb5.h>],
3486       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3487       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3488       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3490   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3491     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3492                [Whether the krb5_address struct has a addrtype property])
3493   fi
3495   AC_CACHE_CHECK([for addr_type in krb5_address],
3496                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3497     AC_TRY_COMPILE([#include <krb5.h>],
3498       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3499       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3500       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3502   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3503     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3504               [Whether the krb5_address struct has a addr_type property])
3505   fi
3507   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3508                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3509                  [AC_TRY_COMPILE([#include <krb5.h>],
3510     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3511     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3513   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3514     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3515               [Whether the krb5_ticket struct has a enc_part2 property])
3516   fi
3518   AC_CACHE_CHECK([for keyblock in krb5_creds],
3519                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3520     AC_TRY_COMPILE([#include <krb5.h>],
3521       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3522       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3523       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3525   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3526     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3527               [Whether the krb5_creds struct has a keyblock property])
3528   fi
3530   AC_CACHE_CHECK([for session in krb5_creds],
3531                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3532     AC_TRY_COMPILE([#include <krb5.h>],
3533       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3534       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3535       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3537   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3538     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3539               [Whether the krb5_creds struct has a session property])
3540   fi
3542   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3543                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3544     AC_TRY_COMPILE([#include <krb5.h>],
3545       [krb5_keyblock key; key.keyvalue.data = NULL;],
3546       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3547       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3549   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3550     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3551               [Whether the krb5_keyblock struct has a keyvalue property])
3552   fi
3554   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3555                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3556     AC_TRY_COMPILE([#include <krb5.h>],
3557       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3558       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3559       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3560   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3561                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3562     AC_TRY_COMPILE([#include <krb5.h>],
3563       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3564       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3565       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3566 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3567 # w.r.t. arcfour and windows, so we must not enable it here
3568   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3569           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3570     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3571               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3572   fi
3574   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3575                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3576     AC_TRY_COMPILE([#include <krb5.h>],
3577       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3578       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3579       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3581   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3582     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3583               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3584   fi
3586   AC_CACHE_CHECK([for KV5M_KEYTAB],
3587                  samba_cv_HAVE_KV5M_KEYTAB,[
3588     AC_TRY_COMPILE([#include <krb5.h>],
3589       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3590       samba_cv_HAVE_KV5M_KEYTAB=yes,
3591       samba_cv_HAVE_KV5M_KEYTAB=no)])
3593   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3594       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3595              [Whether the KV5M_KEYTAB option is available])
3596   fi
3598   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3599                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3600     AC_TRY_COMPILE([#include <krb5.h>],
3601       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3602       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3603       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3605   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3606     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3607               [Whether KRB5_KU_OTHER_CKSUM is available])
3608   fi
3610   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3611                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3612     AC_TRY_COMPILE([#include <krb5.h>],
3613       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3614       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3615       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3617   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3618     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3619               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3620   fi
3622   AC_CACHE_CHECK([for the krb5_princ_component macro],
3623                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3624     AC_TRY_LINK([#include <krb5.h>],
3625       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3626       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3627       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3629   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3630     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3631                [Whether krb5_princ_component is available])
3632   fi
3634   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3635                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3636     AC_TRY_COMPILE([#include <krb5.h>],
3637       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3638       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3639       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3641   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3642     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3643               [Whether krb5_keytab_entry has key member])
3644   fi
3646   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3647                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3648     AC_TRY_COMPILE([#include <krb5.h>],
3649       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3650       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3651       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3653   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3654     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3655               [Whether krb5_keytab_entry has keyblock member])
3656   fi
3658   AC_CACHE_CHECK([for magic in krb5_address],
3659                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3660     AC_TRY_COMPILE([#include <krb5.h>],
3661       [krb5_address addr; addr.magic = 0;],
3662       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3663       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3665   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3666     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3667               [Whether the krb5_address struct has a magic property])
3668   fi
3670   AC_CACHE_CHECK([for WRFILE: keytab support],
3671                 samba_cv_HAVE_WRFILE_KEYTAB,[
3672     AC_TRY_RUN([
3673 #include<krb5.h>
3674   main()
3675   {
3676     krb5_context context;
3677     krb5_keytab keytab;
3679     krb5_init_context(&context);
3680     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3681   }],
3682   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3683   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3685   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3686       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3687                [Whether the WRFILE:-keytab is supported])
3688   fi
3690   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3691                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3692     AC_TRY_COMPILE([#include <krb5.h>],
3693     [
3694     krb5_context context;
3695     krb5_principal principal;
3696     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3697     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3698     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3700   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3701     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3702               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3703   fi
3705   AC_CACHE_CHECK([for krb5_addresses type],
3706                 samba_cv_HAVE_KRB5_ADDRESSES,[
3707     AC_TRY_COMPILE([#include <krb5.h>],
3708       [krb5_addresses addr;],
3709       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3710       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3712   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3713     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3714                [Whether the type krb5_addresses type exists])
3715   fi
3717   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3718                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3719     AC_TRY_COMPILE([#include <krb5.h>],
3720     [
3721     krb5_mk_error(0,0,0);],
3722     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3723     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3725   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3726     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3727               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3728   fi
3730   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3731     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3732         smb_krb5_enctype_to_string_takes_krb5_context_arg,[
3733         AC_TRY_RUN_STRICT([
3734                 #include <krb5.h>
3735                 int main(void) {
3736                         krb5_context context = NULL;
3737                         char *str = NULL;
3738                         krb5_enctype_to_string(context, 1, &str);
3739                         if (str) free (str); 
3740                         return 0;
3741                 }
3742                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3743                 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
3744                 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
3746     if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3747       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3748                 [whether krb5_enctype_to_string takes krb5_context argument])
3749     fi
3751     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3752         smb_krb5_enctype_to_string_takes_size_t_arg,[
3753         AC_TRY_RUN_STRICT([
3754                 #include <krb5.h>
3755                 int main(void) {
3756                         char buf[256];
3757                         krb5_enctype_to_string(1, buf, 256);
3758                         return 0;
3759                 }
3760                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3761                 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
3762                 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
3764     if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
3765       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3766                 [whether krb5_enctype_to_string takes size_t argument])
3767     fi
3768   fi
3770   AC_CACHE_CHECK([for krb5_principal_get_realm],
3771                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3772     AC_TRY_LINK([#include <krb5.h>],
3773       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3774       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3775       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3777   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3778     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3779                [Whether the function krb5_principal_get_realm is defined])
3780   fi
3782   AC_CACHE_CHECK([for krb5_princ_realm],
3783                 samba_cv_HAVE_KRB5_PRINC_REALM,[
3784     AC_TRY_LINK([#include <krb5.h>],
3785       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3786       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3787       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3789   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3790     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3791                [Whether the macro krb5_princ_realm is defined])
3792   fi
3794   #
3795   #
3796   # Now the decisions whether we can support krb5
3797   #
3798   # NOTE: all tests should be done before this block!
3799   #
3800   #
3801   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3802     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3803     use_ads=no
3804   fi
3806   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3807           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3808   then
3809     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3810     use_ads=no
3811   fi
3813   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3814           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3815   then
3816     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3817     use_ads=no
3818   fi
3820   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3821           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3822   then
3823     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3824     use_ads=no
3825   fi
3827   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3828           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3829   then
3830     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3831     use_ads=no
3832   fi
3834   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3836       # We only need the following functions if we can't get the enctype
3837       # and kvno out of the ticket directly (ie. on Heimdal).
3839       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3840       then
3841         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3842         use_ads=no
3843       fi
3845       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3846       then
3847         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3848         use_ads=no
3849       fi
3851   fi
3853   if test x"$use_ads" = x"yes"; then
3854     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3855     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3856     if test x"$have_gssapi" = x"yes"; then
3857       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3858     fi
3859   else
3860     if test x"$with_ads_support" = x"yes"; then
3861         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3862     else
3863         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3864     fi
3865     AC_REMOVE_DEFINE(HAVE_KRB5_H)
3866     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3867     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3868     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3869     KRB5_LIBS=""
3870     with_ads_support=no
3871   fi
3872   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3873   AC_MSG_RESULT([$use_ads])
3875 LIBS="$ac_save_LIBS"
3878 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3879 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3882 ########################################################
3883 # Compile with DNS Updates support?
3885 with_dnsupdate_support=no
3886 AC_MSG_CHECKING([whether to enable DNS Updates support])
3888 AC_ARG_WITH(dnsupdate,
3889 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
3890 [ case "$withval" in
3891     yes|no)
3892         with_dnsupdate_support=$withval
3893         ;;
3894   esac ])
3896 AC_MSG_RESULT($with_dnsupdate_support)
3898 if test x"$with_dnsupdate_support" != x"no"; then
3900   ################################################################
3901   # first test for Active Directory support being enabled
3902   #if test x"$with_ads_support" = x"no"; then
3903   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3904   #             with_dnsupdate_support=no
3905   #fi           
3906   ##################################################################
3907   # then test for uuid.h (necessary to generate unique DNS keynames
3908   # (uuid.h is required for this test)
3909   AC_CHECK_HEADERS(uuid/uuid.h)
3911   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3912         if test x"$with_dnsupdate_support" = x"yes"; then
3913          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3914         else
3915          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3916         fi
3917         with_dnsupdate_support=no
3918   fi
3921 if test x"$with_dnsupdate_support" != x"no"; then
3923   ########################################################
3924   # Now see if we can find the uuid libs in standard paths
3925   # On some systems, the uuid API is in libc, so we have to
3926   # be careful not to insert a spurious -luuid.
3928   UUID_LIBS=""
3929   AC_LIBTESTFUNC(uuid, uuid_generate,
3930           [
3931             case " $LIBS " in
3932                 *\ -luuid\ *)
3933                 UUID_LIBS="-luuid"
3934                 SMB_REMOVE_LIB(uuid)
3935                 ;;
3936             esac
3938             with_dnsupdate_support=yes
3939             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3940         ],
3941         [
3942             if test x"$with_dnsupdate_support" = x"yes"; then
3943                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
3944             else
3945                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
3946             fi
3947             with_dnsupdate_support=no
3948         ])
3951 #################################################
3952 # check for automount support
3953 AC_MSG_CHECKING(whether to use automount)
3954 AC_ARG_WITH(automount,
3955 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
3956 [ case "$withval" in
3957   yes)
3958     AC_MSG_RESULT(yes)
3959     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3960     ;;
3961   *)
3962     AC_MSG_RESULT(no)
3963     ;;
3964   esac ],
3965   AC_MSG_RESULT(no)
3968 #################################################
3969 # check for mount- and umount.cifs support
3970 CIFSMOUNT_PROGS=""
3971 INSTALL_CIFSMOUNT=""
3972 UNINSTALL_CIFSMOUNT=""
3973 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
3974 AC_ARG_WITH(cifsmount,
3975 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
3976 [ case "$withval" in
3977   no)
3978         AC_MSG_RESULT(no)
3979         ;;
3980   *)
3981         case "$host_os" in
3982         *linux*)
3983                 AC_MSG_RESULT(yes)
3984                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3985                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3986                 INSTALL_CIFSMOUNT="installcifsmount"
3987                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3988                 ;;
3989         *)
3990                 AC_MSG_ERROR(not on a linux system!)
3991                 ;;
3992         esac
3993     ;;
3994   esac ],
3995 [ case "$host_os" in
3996   *linux*)
3997         AC_MSG_RESULT(yes)
3998         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3999         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4000         INSTALL_CIFSMOUNT="installcifsmount"
4001         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4002         ;;
4003   *)
4004         AC_MSG_RESULT(no)
4005         ;;
4006   esac ]
4009 #################################################
4010 # check for cifs.spnego support
4011 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4012 CIFSSPNEGO_PROGS=""
4013 INSTALL_CIFSSPNEGO=""
4014 UNINSTALL_CIFSSPNEGO=""
4015 AC_MSG_CHECKING(whether to build cifs.spnego)
4016 AC_ARG_WITH(cifsspnego,
4017 [AS_HELP_STRING([--with-cifsspnego], [Include cifs.spnego (Linux only) support (default=no)])],
4018 [ case "$withval" in
4019   no)
4020         AC_MSG_RESULT(no)
4021         ;;
4022   *)
4023         case "$host_os" in
4024         *linux*)
4025                 if test x"$use_ads" != x"yes"; then
4026                         AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4027                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4028                         AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4029                 else
4030                         AC_MSG_RESULT(yes)
4031                         AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4032                         CIFSSPNEGO_PROGS="bin/cifs.spnego"
4033                         INSTALL_CIFSSPNEGO="installcifsspnego"
4034                         UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4035                 fi
4036                 ;;
4037         *)
4038                 AC_MSG_ERROR(not on a linux system!)
4039                 ;;
4040         esac
4041     ;;
4042   esac ],
4044   AC_MSG_RESULT(no)
4045   ]
4049 #################################################
4050 # Check for a PAM clear-text auth, accounts, password
4051 # and session support. Most PAM implementations keep their
4052 # headers in /usr/include/security. Darwin keeps its in
4053 # /usr/include/pam.
4055 with_pam_for_crypt=no
4056 try_pam=no
4057 AC_MSG_CHECKING(whether to try PAM support)
4058 AC_ARG_WITH(pam,
4059 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4060 [ case "$withval" in
4061   yes|no)
4062     try_pam=$withval
4063     ;;
4064   esac
4066 AC_MSG_RESULT([$try_pam])
4068 use_pam=no
4069 create_pam_modules=no
4070 if test x"${try_pam}" != x"no";then
4071         use_pam=yes
4072         create_pam_modules=yes
4074         # Most systems have PAM headers in /usr/include/security, but Darwin
4075         # has them in /usr/include/pam.
4076         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4077         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4078                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4079                 if test x"${try_pam}" = x"yes";then
4080                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4081                 fi
4082                 use_pam=no
4083                 create_pam_modules=no
4084         fi
4086         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4087         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4088                 if test x"${try_pam}" = x"yes";then
4089                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4090                 fi
4091                 use_pam=no
4092                 create_pam_modules=no
4093         fi
4095         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4096                 #if HAVE_SECURITY_PAM_APPL_H
4097                 #include <security/pam_appl.h>
4098                 #endif
4099                 #if HAVE_PAM_PAM_APPL_H
4100                 #include <pam/pam_appl.h>
4101                 #endif
4102         ]])
4103         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4104                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4105                 if test x"${try_pam}" = x"yes";then
4106                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4107        fi
4108                 create_pam_modules=no
4109     fi
4111         if test x"$use_pam" = x"yes"; then
4112     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4113                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4114                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4115     with_pam_for_crypt=yes
4117                 if test x"$create_pam_modules" = x"yes"; then
4118                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4119                         # this checks are optional,
4120                         # we don't care about the results here
4121                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4122                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4123                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4124                 else
4125                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4126                 fi
4127         fi
4128         AC_MSG_CHECKING(whether to use PAM support)
4129         AC_MSG_RESULT([$use_pam])
4131         AC_MSG_CHECKING(whether to have PAM MODULES support)
4132         AC_MSG_RESULT([$create_pam_modules])
4133 fi # try_pam != no
4135 #################################################
4136 # check for pam_smbpass support
4137 PAM_MODULES=""
4138 INSTALL_PAM_MODULES=""
4139 UNINSTALL_PAM_MODULES=""
4140 AC_MSG_CHECKING(whether to use pam_smbpass)
4141 AC_ARG_WITH(pam_smbpass,
4142 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4143 [ case "$withval" in
4144   yes)
4145     AC_MSG_RESULT(yes)
4147        # Conditions under which pam_smbpass should not be built.
4149        if test x"$BLDSHARED" != x"true"; then
4150           AC_MSG_ERROR([No support for shared modules])
4151        elif test x"$create_pam_modules" != x"yes"; then
4152           AC_MSG_ERROR([No support for PAM MODULES])
4153        else
4154           PAM_MODULES="pam_smbpass"
4155           INSTALL_PAM_MODULES="installpammodules"
4156           UNINSTALL_PAM_MODULES="uninstallpammodules"
4157        fi
4158     ;;
4159   *)
4160     AC_MSG_RESULT(no)
4161     ;;
4162   esac ],
4163   AC_MSG_RESULT(no)
4167 ###############################################
4168 # test for where we get crypt() from
4169 AC_SEARCH_LIBS(crypt, [crypt],
4170   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4171   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4174 ## moved after the check for -lcrypt in order to
4175 ## ensure that the necessary libraries are included
4176 ## check checking for truncated salt.  Wrapped by the
4177 ## $with_pam_for_crypt variable as above   --jerry
4179 if test $with_pam_for_crypt = no; then
4180 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4181 crypt_LIBS="$LIBS"
4182 LIBS="$AUTH_LIBS $LIBS"
4183 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4184         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4185 LIBS="$crypt_LIBS"])
4186 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4187         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4191 #################################################
4192 # check for a NISPLUS_HOME support
4193 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4194 AC_ARG_WITH(nisplus-home,
4195 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4196 [ case "$withval" in
4197   yes)
4198     AC_MSG_RESULT(yes)
4199     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4200     ;;
4201   *)
4202     AC_MSG_RESULT(no)
4203     ;;
4204   esac ],
4205   AC_MSG_RESULT(no)
4208 #################################################
4209 # check for syslog logging
4210 AC_MSG_CHECKING(whether to use syslog logging)
4211 AC_ARG_WITH(syslog,
4212 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4213 [ case "$withval" in
4214   yes)
4215     AC_MSG_RESULT(yes)
4216     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4217     ;;
4218   *)
4219     AC_MSG_RESULT(no)
4220     ;;
4221   esac ],
4222   AC_MSG_RESULT(no)
4225 #################################################
4226 # check for experimental disk-quotas support
4228 samba_cv_WITH_QUOTAS=auto
4229 samba_cv_TRY_QUOTAS=no
4230 samba_cv_RUN_QUOTA_TESTS=auto
4231 samba_cv_WITH_SYS_QUOTAS=auto
4232 samba_cv_TRY_SYS_QUOTAS=auto
4233 samba_cv_SYSQUOTA_FOUND=no
4235 AC_MSG_CHECKING(whether to try disk-quotas support)
4236 AC_ARG_WITH(quotas,
4237 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4238 [ case "$withval" in
4239   yes)
4240     AC_MSG_RESULT(yes)
4241     samba_cv_WITH_QUOTAS=yes
4242     samba_cv_TRY_QUOTAS=yes
4243     samba_cv_RUN_QUOTA_TESTS=yes
4244     #set sys quotas to auto in this case
4245     samba_cv_TRY_SYS_QUOTAS=auto
4246     ;;
4247   auto)
4248     AC_MSG_RESULT(auto)
4249     samba_cv_WITH_QUOTAS=auto
4250     samba_cv_TRY_QUOTAS=auto
4251     samba_cv_RUN_QUOTA_TESTS=auto
4252     #set sys quotas to auto in this case
4253     samba_cv_TRY_SYS_QUOTAS=auto
4254     ;;
4255   no)
4256     AC_MSG_RESULT(no)
4257     samba_cv_WITH_QUOTAS=no
4258     samba_cv_TRY_QUOTAS=no
4259     samba_cv_RUN_QUOTA_TESTS=no
4260     ;;
4261   *)
4262     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4263     ;;
4264   esac ],
4265   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4268 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4269 AC_ARG_WITH(sys-quotas,
4270 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4271 [ case "$withval" in
4272   yes)
4273     AC_MSG_RESULT(yes)
4274     samba_cv_WITH_SYS_QUOTAS=yes
4275     samba_cv_TRY_SYS_QUOTAS=yes
4276     samba_cv_RUN_QUOTA_TESTS=yes
4277     ;;
4278   auto)
4279     AC_MSG_RESULT(auto)
4280     samba_cv_WITH_SYS_QUOTAS=auto
4281     samba_cv_TRY_SYS_QUOTAS=auto
4282     samba_cv_RUN_QUOTA_TESTS=auto
4283     ;;
4284   no)
4285     AC_MSG_RESULT(no)
4286     samba_cv_WITH_SYS_QUOTAS=no
4287     samba_cv_TRY_SYS_QUOTAS=no
4288     ;;
4289   *)
4290     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4291     ;;
4292   esac ],
4293   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4296 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4297 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4298   case "$host_os" in
4299         *linux*)
4300             AC_MSG_RESULT(yes)
4301             samba_cv_TRY_SYS_QUOTAS=yes
4302             samba_cv_RUN_QUOTA_TESTS=yes
4303             ;;
4304         *)
4305             AC_MSG_RESULT(no)
4306             samba_cv_TRY_SYS_QUOTAS=no
4307             ;;
4308   esac
4311 #############################################
4312 # only check for quota stuff if --with-quotas
4313 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4315 case "$host_os" in
4316         # on linux we didn't need to test we have builtin support
4317         *linux*)
4318             samba_cv_SYSQUOTA_FOUND=yes
4319             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4320             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4321             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4322             AC_MSG_RESULT(yes)
4324             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4325             samba_cv_found_xfs_header=yes
4326             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4327             AC_MSG_RESULT(yes)
4328             ;;
4329         *solaris*)
4330             # need to set this define when using static linking (BUG 1473)
4331             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4332             ;;
4333         *)
4334             ;;
4335 esac
4337 # some broken header files need this
4338 AC_CHECK_HEADER(asm/types.h,[
4339             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4340             AC_ADD_INCLUDE(<asm/types.h>)
4341             ])
4343 # For quotas on Veritas VxFS filesystems
4344 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4346 # For quotas on Linux XFS filesystems
4347 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4349 # For sys/quota.h and linux/quota.h
4350 AC_CHECK_HEADERS(sys/quota.h)
4352 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4353 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4354 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4355 AC_TRY_COMPILE([
4356 #include "confdefs.h"
4357 #ifdef HAVE_SYS_TYPES_H
4358 #include <sys/types.h>
4359 #endif
4360 #ifdef HAVE_ASM_TYPES_H
4361 #include <asm/types.h>
4362 #endif
4363 #include <sys/quota.h>
4364 ],[int i = Q_XGETQUOTA;],
4365 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4366 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4367         samba_cv_found_xfs_header=yes
4371 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4372 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4373 AC_TRY_COMPILE([
4374 #include "confdefs.h"
4375 #ifdef HAVE_SYS_QUOTA_H
4376 #include <sys/quota.h>
4377 #endif
4379 struct dqblk D;
4380 D.dqb_fsoftlimit = 0;],
4381 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4382 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4383         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4386 ##################
4387 # look for a working quota system
4389 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4390 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4391 AC_TRY_RUN_STRICT([
4392 #define HAVE_QUOTACTL_4A 1
4393 #define AUTOCONF_TEST 1
4394 #include "confdefs.h"
4395 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4396            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4397 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4398     samba_cv_SYSQUOTA_FOUND=yes;
4399     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4400     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4404 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4405 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4406 AC_TRY_RUN_STRICT([
4407 #define HAVE_QUOTACTL_4B 1
4408 #define AUTOCONF_TEST 1
4409 #include "confdefs.h"
4410 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4411            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4412 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4413     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4414     samba_cv_SYSQUOTA_FOUND=yes;
4415     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4416     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4420 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4421 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4422 AC_TRY_RUN_STRICT([
4423 #define HAVE_QUOTACTL_3 1
4424 #define AUTOCONF_TEST 1
4425 #include "confdefs.h"
4426 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4427            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4428 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4429     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4430     samba_cv_SYSQUOTA_FOUND=yes;
4431     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4432     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4436 #################################################
4437 # check for mntent.h and struct mntent
4438 AC_CHECK_HEADERS(mntent.h)
4439 #################################################
4440 # check for setmntent,getmntent,endmntent
4441 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4443 #################################################
4444 # check for devnm.h and struct mntent
4445 AC_CHECK_HEADERS(devnm.h)
4446 #################################################
4447 # check for devnm
4448 AC_CHECK_FUNCS(devnm)
4450 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4451     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4452         # if --with-sys-quotas=yes then build it
4453         # you have can use the get/set quota command smb.conf
4454         # options then
4455         samba_cv_SYSQUOTA_FOUND=auto
4456     fi
4457     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4458         # if --with-sys-quotas=yes then build it
4459         # you have can use the get/set quota command smb.conf
4460         # options then
4461         samba_cv_TRY_SYS_QUOTAS=auto
4462     fi
4465 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4466 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4467 SAVE_CPPFLAGS="$CPPFLAGS"
4468 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4469 AC_TRY_COMPILE([
4470 #include "confdefs.h"
4471 #define NO_PROTO_H 1
4472 #define NO_CONFIG_H 1
4473 #define HAVE_SYS_QUOTAS 1
4474 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4475 #include "${srcdir-.}/lib/sysquotas.c"
4476 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4477 CPPFLAGS="$SAVE_CPPFLAGS"
4479 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4480 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4481     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4482         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4483         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4484         samba_cv_WE_USE_SYS_QUOTAS=yes
4485         AC_MSG_RESULT(yes)
4486     else
4487         AC_MSG_RESULT(no)
4488     fi
4492 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4493 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4494 SAVE_CPPFLAGS="$CPPFLAGS"
4495 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4496 AC_TRY_COMPILE([
4497 #include "confdefs.h"
4498 #define NO_PROTO_H 1
4499 #define NO_CONFIG_H 1
4500 #define HAVE_SYS_QUOTAS 1
4501 #define HAVE_XFS_QUOTAS 1
4502 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4503 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4504 CPPFLAGS="$SAVE_CPPFLAGS"
4506 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4507     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4508         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4509     fi
4513 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4514 SAVE_CPPFLAGS="$CPPFLAGS"
4515 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4516 AC_TRY_COMPILE([
4517 #include "confdefs.h"
4518 #define NO_PROTO_H 1
4519 #define NO_CONFIG_H 1
4520 #include "${srcdir-.}/smbd/quotas.c"
4521 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4522 CPPFLAGS="$SAVE_CPPFLAGS"
4524 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4525 AC_MSG_CHECKING(whether to use the old quota support)
4526     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4527       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4528         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4529         AC_MSG_RESULT(yes)
4530       else
4531         AC_MSG_RESULT(no)
4532       fi
4533     else
4534       AC_MSG_RESULT(no)
4535     fi
4538 ####################
4539 # End of quota check samba_cv_RUN_QUOTA_TESTS
4542 #################################################
4543 # check for experimental utmp accounting
4545 AC_MSG_CHECKING(whether to support utmp accounting)
4546 WITH_UTMP=yes
4547 AC_ARG_WITH(utmp,
4548 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4549 [ case "$withval" in
4550   no)
4551                 WITH_UTMP=no
4552                 ;;
4553   *)
4554                 WITH_UTMP=yes
4555                 ;;
4556   esac ],
4559 # utmp requires utmp.h
4560 # Note similar check earlier, when checking utmp details.
4562 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4563         utmp_no_reason=", no utmp.h on $host_os"
4564         WITH_UTMP=no
4567 # Display test results
4569 if test x"$WITH_UTMP" = x"yes"; then
4570         AC_MSG_RESULT(yes)
4571         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4572 else
4573         AC_MSG_RESULT(no$utmp_no_reason)
4576 INSTALLLIBCMD_SH=:
4577 INSTALLLIBCMD_A=:
4578 UNINSTALLLIBCMD_SH=:
4579 UNINSTALLLIBCMD_A=:
4581 if test $BLDSHARED = true; then
4582         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4583         UNINSTALLLIBCMD_SH="rm -f"
4585 if test $enable_static = yes; then
4586         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4587         UNINSTALLLIBCMD_A="rm -f"
4590 #################################################
4591 # --disable-shared-libs
4592 # can be used to disable the internal use of shared libs altogether
4593 # (this only has an effect when building shared libs is enabled)
4595 USESHARED=false
4596 AC_SUBST(USESHARED)
4598 AC_MSG_CHECKING(whether to use shared libraries internally)
4599 AC_ARG_ENABLE([shared-libs],
4600         AS_HELP_STRING([--enable-shared-libs],
4601                 [Use shared libraries internally (default=yes)]),
4602         [enable_shared_libs=$enableval],
4603         [enable_shared_libs=yes])
4605 if test x"$enable_shared_libs" != x"no" ; then
4606         USESHARED=$BLDSHARED
4609 AC_MSG_RESULT([$USESHARED])
4611 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4612         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4615 #################################################
4616 # --with-static-libs=LIBS:
4617 #   link (internal) libs dynamically or statically?
4619 # If a subsystem is built as a library then this controls whether they are
4620 # linked into Samba targets statically or dynamically:
4622 # * If we build the shared library at all, we link dynamically by default.
4624 # * We only link statically if we don't build shared or if the library
4625 #   appears in the --with-static-libs configure option.
4627 # Example:
4628 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4629 #   of linking the dynamic variant with -ltalloc.
4631 # NOTE: This option only affects libraries that we do not only build
4632 # but that samba also links against as libraries (as opposed to linking
4633 # the plain object files. - This has to be configured in Makefile.in.
4634 # So in particular it does not harm to give invalid or unknown names here.
4637 AC_ARG_WITH([static-libs],
4638         [AS_HELP_STRING([--with-static-libs=LIBS],
4639                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4640         [AS_IF([test $withval],
4641                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4642                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4643                         eval LINK_$lib=STATIC
4644                 done], [])],
4645         [])
4648 # WORKAROUND:
4649 #   until we have organized other internal subsystems (as util, registry
4650 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
4651 #   dynamically to samba programs.
4653 LINK_LIBNETAPI=STATIC
4655 SMB_LIBRARY(talloc)
4656 SMB_LIBRARY(tdb)
4657 SMB_LIBRARY(netapi)
4660 #################################################
4661 # should we build libaddns?
4662 INSTALL_LIBADDNS=
4663 UNINSTALL_LIBADDNS=
4664 LIBADDNS_SHARED=
4665 LIBADDNS=
4666 AC_MSG_CHECKING(whether to build the libaddns shared library)
4667 AC_ARG_WITH(libaddns,
4668 [AS_HELP_STRING([--with-libaddns], [Build the libaddns shared library (default=no undefined API)])],
4669 [ case "$withval" in
4670   *)
4671      AC_MSG_RESULT(no)
4672      ;;
4673   yes)
4674      if test $BLDSHARED = true; then
4675         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4676         LIBADDNS=libaddns
4677         AC_MSG_RESULT(yes)
4678      else
4679         enable_static=yes
4680         AC_MSG_RESULT(no shared library support -- will supply static library)
4681      fi
4682      if test $enable_static = yes; then
4683         LIBADDNS=libaddns
4684      fi
4685      INSTALL_LIBADDNS=installlibaddns
4686      UNINSTALL_LIBADDNS=uninstalllibaddns
4687      ;;
4688   esac ],
4689 [AC_MSG_RESULT(no)]
4692 #################################################
4693 # should we build libsmbclient?
4695 INSTALL_LIBSMBCLIENT=
4696 UNINSTALL_LIBSMBCLIENT=
4697 LIBSMBCLIENT_SHARED=
4698 LIBSMBCLIENT=
4699 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4700 AC_ARG_WITH(libsmbclient,
4701 [AS_HELP_STRING([--with-libsmbclient], [Build the libsmbclient shared library (default=yes if shared libs supported)])],
4702 [ case "$withval" in
4703   no)
4704      AC_MSG_RESULT(no)
4705      ;;
4706   *)
4707      if test $BLDSHARED = true; then
4708         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4709         LIBSMBCLIENT=libsmbclient
4710         AC_MSG_RESULT(yes)
4711      else
4712         enable_static=yes
4713         AC_MSG_RESULT(no shared library support -- will supply static library)
4714      fi
4715      if test $enable_static = yes; then
4716         LIBSMBCLIENT=libsmbclient
4717      fi
4718      INSTALL_LIBSMBCLIENT=installclientlib
4719      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4720      ;;
4721   esac ],
4723 # if unspecified, default is to build it if possible.
4724   if test $BLDSHARED = true; then
4725      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4726      LIBSMBCLIENT=libsmbclient
4727      AC_MSG_RESULT(yes)
4728    else
4729      enable_static=yes
4730      AC_MSG_RESULT(no shared library support -- will supply static library)
4731    fi
4732    if test $enable_static = yes; then
4733      LIBSMBCLIENT=libsmbclient
4734   fi]
4735   INSTALL_LIBSMBCLIENT=installclientlib
4736   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4739 INSTALL_LIBSMBSHAREMODES=
4740 LIBSMBSHAREMODES_SHARED=
4741 LIBSMBSHAREMODES=
4742 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4743 AC_ARG_WITH(libsmbsharemodes,
4744 [AS_HELP_STRING([--with-libsmbsharemodes], [Build the libsmbsharemodes shared library (default=yes if shared libs supported)])],
4745 [ case "$withval" in
4746   no)
4747      AC_MSG_RESULT(no)
4748      ;;
4749   *)
4750      if test $BLDSHARED = true; then
4751         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4752         LIBSMBSHAREMODES=libsmbsharemodes
4753         AC_MSG_RESULT(yes)
4754      else
4755         enable_static=yes
4756         AC_MSG_RESULT(no shared library support -- will supply static library)
4757      fi
4758      if test $enable_static = yes; then
4759         LIBSMBSHAREMODES=libsmbsharemodes
4760      fi
4761      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4762      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4763      ;;
4764   esac ],
4766 # if unspecified, default is to build it if possible.
4767   if test $BLDSHARED = true; then
4768      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4769      LIBSMBSHAREMODES=libsmbsharemodes
4770      AC_MSG_RESULT(yes)
4771    else
4772      enable_static=yes
4773      AC_MSG_RESULT(no shared library support -- will supply static library)
4774    fi
4775    if test $enable_static = yes; then
4776      LIBSMBSHAREMODES=libsmbsharemodes
4777   fi]
4778   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4782 #################################################
4783 # these tests are taken from the GNU fileutils package
4784 AC_CHECKING(how to get filesystem space usage)
4785 space=no
4787 # Test for statvfs64.
4788 if test $space = no; then
4789   # SVR4
4790   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4791   [AC_TRY_RUN([
4792 #if defined(HAVE_UNISTD_H)
4793 #include <unistd.h>
4794 #endif
4795 #include <sys/types.h>
4796 #include <sys/statvfs.h>
4797   main ()
4798   {
4799     struct statvfs64 fsd;
4800     exit (statvfs64 (".", &fsd));
4801   }],
4802   fu_cv_sys_stat_statvfs64=yes,
4803   fu_cv_sys_stat_statvfs64=no,
4804   fu_cv_sys_stat_statvfs64=cross)])
4805   if test $fu_cv_sys_stat_statvfs64 = yes; then
4806     space=yes
4807     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4808   fi
4811 # Perform only the link test since it seems there are no variants of the
4812 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4813 # because that got a false positive on SCO OSR5.  Adding the declaration
4814 # of a `struct statvfs' causes this test to fail (as it should) on such
4815 # systems.  That system is reported to work fine with STAT_STATFS4 which
4816 # is what it gets when this test fails.
4817 if test $space = no; then
4818   # SVR4
4819   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4820                  [AC_TRY_LINK([#include <sys/types.h>
4821 #include <sys/statvfs.h>],
4822                               [struct statvfs fsd; statvfs (0, &fsd);],
4823                               fu_cv_sys_stat_statvfs=yes,
4824                               fu_cv_sys_stat_statvfs=no)])
4825   if test $fu_cv_sys_stat_statvfs = yes; then
4826     space=yes
4827     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4828   fi
4831 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4832 # This is not the case on ancient Linux systems.
4834 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4835     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4836         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4837 if test x"$samba_cv_fsid_int" = x"yes"; then
4838     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4841 if test $space = no; then
4842   # DEC Alpha running OSF/1
4843   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4844   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4845   [AC_TRY_RUN([
4846 #include <sys/param.h>
4847 #include <sys/types.h>
4848 #include <sys/mount.h>
4849   main ()
4850   {
4851     struct statfs fsd;
4852     fsd.f_fsize = 0;
4853     exit (statfs (".", &fsd, sizeof (struct statfs)));
4854   }],
4855   fu_cv_sys_stat_statfs3_osf1=yes,
4856   fu_cv_sys_stat_statfs3_osf1=no,
4857   fu_cv_sys_stat_statfs3_osf1=no)])
4858   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4859   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4860     space=yes
4861     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4862   fi
4865 if test $space = no; then
4866 # AIX
4867   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4868 member (AIX, 4.3BSD)])
4869   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4870   [AC_TRY_RUN([
4871 #ifdef HAVE_SYS_PARAM_H
4872 #include <sys/param.h>
4873 #endif
4874 #ifdef HAVE_SYS_MOUNT_H
4875 #include <sys/mount.h>
4876 #endif
4877 #ifdef HAVE_SYS_VFS_H
4878 #include <sys/vfs.h>
4879 #endif
4880   main ()
4881   {
4882   struct statfs fsd;
4883   fsd.f_bsize = 0;
4884   exit (statfs (".", &fsd));
4885   }],
4886   fu_cv_sys_stat_statfs2_bsize=yes,
4887   fu_cv_sys_stat_statfs2_bsize=no,
4888   fu_cv_sys_stat_statfs2_bsize=no)])
4889   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4890   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4891     space=yes
4892     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4893   fi
4896 if test $space = no; then
4897 # SVR3
4898   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4899   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4900   [AC_TRY_RUN([#include <sys/types.h>
4901 #include <sys/statfs.h>
4902   main ()
4903   {
4904   struct statfs fsd;
4905   exit (statfs (".", &fsd, sizeof fsd, 0));
4906   }],
4907     fu_cv_sys_stat_statfs4=yes,
4908     fu_cv_sys_stat_statfs4=no,
4909     fu_cv_sys_stat_statfs4=no)])
4910   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4911   if test $fu_cv_sys_stat_statfs4 = yes; then
4912     space=yes
4913     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4914   fi
4917 if test $space = no; then
4918 # 4.4BSD and NetBSD
4919   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4920 member (4.4BSD and NetBSD)])
4921   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4922   [AC_TRY_RUN([#include <sys/types.h>
4923 #ifdef HAVE_SYS_PARAM_H
4924 #include <sys/param.h>
4925 #endif
4926 #ifdef HAVE_SYS_MOUNT_H
4927 #include <sys/mount.h>
4928 #endif
4929   main ()
4930   {
4931   struct statfs fsd;
4932   fsd.f_fsize = 0;
4933   exit (statfs (".", &fsd));
4934   }],
4935   fu_cv_sys_stat_statfs2_fsize=yes,
4936   fu_cv_sys_stat_statfs2_fsize=no,
4937   fu_cv_sys_stat_statfs2_fsize=no)])
4938   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4939   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4940     space=yes
4941         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4942   fi
4945 if test $space = no; then
4946   # Ultrix
4947   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4948   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4949   [AC_TRY_RUN([#include <sys/types.h>
4950 #ifdef HAVE_SYS_PARAM_H
4951 #include <sys/param.h>
4952 #endif
4953 #ifdef HAVE_SYS_MOUNT_H
4954 #include <sys/mount.h>
4955 #endif
4956 #ifdef HAVE_SYS_FS_TYPES_H
4957 #include <sys/fs_types.h>
4958 #endif
4959   main ()
4960   {
4961   struct fs_data fsd;
4962   /* Ultrix's statfs returns 1 for success,
4963      0 for not mounted, -1 for failure.  */
4964   exit (statfs (".", &fsd) != 1);
4965   }],
4966   fu_cv_sys_stat_fs_data=yes,
4967   fu_cv_sys_stat_fs_data=no,
4968   fu_cv_sys_stat_fs_data=no)])
4969   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4970   if test $fu_cv_sys_stat_fs_data = yes; then
4971     space=yes
4972     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4973   fi
4977 # As a gating factor for large file support, in order to
4978 # use <4GB files we must have the following minimal support
4979 # available.
4980 # long long, and a 64 bit off_t or off64_t.
4981 # If we don't have all of these then disable large
4982 # file support.
4984 AC_MSG_CHECKING([if large file support can be enabled])
4985 AC_TRY_COMPILE([
4986 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4987 #include <sys/types.h>
4988 #else
4989 __COMPILE_ERROR_
4990 #endif
4992 [int i],
4993 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4994 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4995         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4997 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4999 #################################################
5000 # check for cluster extensions
5002 AC_MSG_CHECKING(whether to include cluster support)
5003 AC_ARG_WITH(cluster-support,
5004 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5005 if test "x$with_cluster_support" = "xyes"; then
5006     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5007     AC_MSG_RESULT(yes)
5008 else
5009     AC_MSG_RESULT(no)
5013 #################################################
5014 # check for ACL support
5016 AC_MSG_CHECKING(whether to support ACLs)
5017 AC_ARG_WITH(acl-support,
5018 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5019 [ case "$withval" in
5020         yes|no)
5021                 with_acl_support="$withval"
5022                 ;;
5023   esac ])
5025 if test x"$with_acl_support" = x ; then
5026         with_acl_support="auto"
5029 AC_MSG_RESULT($with_acl_support)
5031 if test x"$with_acl_support" = x"no"; then
5032         AC_MSG_RESULT(Disabling ACL support)
5033         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5034 else
5035         AC_MSG_NOTICE(checking whether ACL support is available:)
5036         case "$host_os" in
5037         *sysv5*)
5038                 AC_MSG_NOTICE(Using UnixWare ACLs)
5039                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5040                 default_static_modules="$default_static_modules vfs_solarisacl"
5041                 ;;
5042         *solaris*)
5043                 AC_MSG_NOTICE(Using solaris ACLs)
5044                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5045                 ACL_LIBS="$ACL_LIBS -lsec"
5046                 default_static_modules="$default_static_modules vfs_solarisacl"
5047                 ;;
5048         *hpux*)
5049                 AC_MSG_NOTICE(Using HPUX ACLs)
5050                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5051                 default_static_modules="$default_static_modules vfs_hpuxacl"
5052                 ;;
5053         *irix*)
5054                 AC_MSG_NOTICE(Using IRIX ACLs)
5055                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5056                 default_static_modules="$default_static_modules vfs_irixacl"
5057                 ;;
5058         *aix*)
5059                 AC_MSG_NOTICE(Using AIX ACLs)
5060                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5061                 default_static_modules="$default_static_modules vfs_aixacl"
5062                 ;;
5063         *osf*)
5064                 AC_MSG_NOTICE(Using Tru64 ACLs)
5065                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5066                 ACL_LIBS="$ACL_LIBS -lpacl"
5067                 default_static_modules="$default_static_modules vfs_tru64acl"
5068                 ;;
5069         *darwin*)
5070                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5071                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5072                 ;;
5073         *)
5074                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5075                 case "$host_os" in
5076                 *linux*)
5077                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5078                         ;;
5079                 esac
5080                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5081                         acl_LIBS=$LIBS
5082                         LIBS="$LIBS $ACL_LIBS"
5083                         AC_TRY_LINK([
5084                                 #include <sys/types.h>
5085                                 #include <sys/acl.h>
5086                         ],[
5087                                 acl_t acl;
5088                                 int entry_id;
5089                                 acl_entry_t *entry_p;
5090                                 return acl_get_entry(acl, entry_id, entry_p);
5091                         ],
5092                         [samba_cv_HAVE_POSIX_ACLS=yes],
5093                         [samba_cv_HAVE_POSIX_ACLS=no])
5094                         LIBS=$acl_LIBS
5095                 ])
5096                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5097                         AC_MSG_NOTICE(Using posix ACLs)
5098                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5099                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5100                                 acl_LIBS=$LIBS
5101                                 LIBS="$LIBS $ACL_LIBS"
5102                                 AC_TRY_LINK([
5103                                         #include <sys/types.h>
5104                                         #include <sys/acl.h>
5105                                 ],[
5106                                         acl_permset_t permset_d;
5107                                         acl_perm_t perm;
5108                                         return acl_get_perm_np(permset_d, perm);
5109                                 ],
5110                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5111                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5112                                 LIBS=$acl_LIBS
5113                         ])
5114                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5115                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5116                         fi
5117                         default_static_modules="$default_static_modules vfs_posixacl"
5118                 else
5119                         AC_MSG_NOTICE(ACL support is not avaliable)
5120                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5121                 fi
5122                 ;;
5123         esac
5124 fi # with_acl_support
5128 #################################################
5129 # check for AIO support
5131 AC_MSG_CHECKING(whether to support asynchronous io)
5132 AC_ARG_WITH(aio-support,
5133 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5134 [ case "$withval" in
5135   yes)
5137         AC_MSG_RESULT(yes)
5138         case "$host_os" in
5139         *)
5140                 AIO_LIBS=$LIBS
5141                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5142                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5143                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5144                 aio_LIBS=$LIBS
5145                 LIBS=$AIO_LIBS
5146                 AC_TRY_LINK([#include <sys/types.h>
5147 #include <aio.h>],
5148 [ struct aiocb a; return aio_read(&a);],
5149 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5150                 LIBS=$aio_LIBS])
5151                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5152                 aio_LIBS=$LIBS
5153                 LIBS=$AIO_LIBS
5154                 AC_TRY_LINK([#include <sys/types.h>
5155 #include <aio.h>],
5156 [ struct aiocb64 a; return aio_read64(&a);],
5157 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5158                 LIBS=$aio_LIBS])
5159                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5160                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5161                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5162                         LIBS=$AIO_LIBS
5163                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5164                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5165                         LIBS=$AIO_LIBS
5166                 fi
5168                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5169                         AC_MSG_CHECKING(for aio_read)
5170                         AC_LINK_IFELSE([#include <aio.h>
5171 int main() { struct aiocb a; return aio_read(&a); }],
5172 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5173 [AC_MSG_RESULT(no)])
5175                         AC_MSG_CHECKING(for aio_write)
5176                         AC_LINK_IFELSE([#include <aio.h>
5177 int main() { struct aiocb a; return aio_write(&a); }],
5178 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5179 [AC_MSG_RESULT(no)])
5181                         AC_MSG_CHECKING(for aio_fsync)
5182                         AC_LINK_IFELSE([#include <aio.h>
5183 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5184 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5185 [AC_MSG_RESULT(no)])
5187                         AC_MSG_CHECKING(for aio_return)
5188                         AC_LINK_IFELSE([#include <aio.h>
5189 int main() { struct aiocb a; return aio_return(&a); }],
5190 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5191 [AC_MSG_RESULT(no)])
5193                         AC_MSG_CHECKING(for aio_error)
5194                         AC_LINK_IFELSE([#include <aio.h>
5195 int main() { struct aiocb a; return aio_error(&a); }],
5196 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5197 [AC_MSG_RESULT(no)])
5199                         AC_MSG_CHECKING(for aio_cancel)
5200                         AC_LINK_IFELSE([#include <aio.h>
5201 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5202 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5203 [AC_MSG_RESULT(no)])
5205                         AC_MSG_CHECKING(for aio_suspend)
5206                         AC_LINK_IFELSE([#include <aio.h>
5207 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5208 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5209 [AC_MSG_RESULT(no)])
5210                 fi
5212                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5213                         AC_MSG_CHECKING(for aio_read64)
5214                         AC_LINK_IFELSE([#include <aio.h>
5215 int main() { struct aiocb a; return aio_read64(&a); }],
5216 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5217 [AC_MSG_RESULT(no)])
5219                         AC_MSG_CHECKING(for aio_write64)
5220                         AC_LINK_IFELSE([#include <aio.h>
5221 int main() { struct aiocb a; return aio_write64(&a); }],
5222 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5223 [AC_MSG_RESULT(no)])
5225                         AC_MSG_CHECKING(for aio_fsync64)
5226                         AC_LINK_IFELSE([#include <aio.h>
5227 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5228 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5229 [AC_MSG_RESULT(no)])
5231                         AC_MSG_CHECKING(for aio_return64)
5232                         AC_LINK_IFELSE([#include <aio.h>
5233 int main() { struct aiocb a; return aio_return64(&a); }],
5234 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5235 [AC_MSG_RESULT(no)])
5237                         AC_MSG_CHECKING(for aio_error64)
5238                         AC_LINK_IFELSE([#include <aio.h>
5239 int main() { struct aiocb a; return aio_error64(&a); }],
5240 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5241 [AC_MSG_RESULT(no)])
5243                         AC_MSG_CHECKING(for aio_cancel64)
5244                         AC_LINK_IFELSE([#include <aio.h>
5245 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5246 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5247 [AC_MSG_RESULT(no)])
5249                         AC_MSG_CHECKING(for aio_suspend64)
5250                         AC_LINK_IFELSE([#include <aio.h>
5251 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5252 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5253 [AC_MSG_RESULT(no)])
5254                 fi
5255             ;;
5256         esac
5257         ;;
5258   *)
5259     AC_MSG_RESULT(no)
5260     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5261     ;;
5262   esac ],
5263   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5264   AC_MSG_RESULT(no)
5267 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5268         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5269                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5270                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5271         fi
5274 #################################################
5275 # check for sendfile support
5277 with_sendfile_support=yes
5278 AC_MSG_CHECKING(whether to check to support sendfile)
5279 AC_ARG_WITH(sendfile-support,
5280 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5281 [ case "$withval" in
5282   yes)
5284         AC_MSG_RESULT(yes);
5286         case "$host_os" in
5287         *linux*)
5288                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5289                 AC_TRY_LINK([#include <sys/sendfile.h>],
5291 int tofd, fromfd;
5292 off64_t offset;
5293 size_t total;
5294 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5296 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5298                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5299                 AC_TRY_LINK([#include <sys/sendfile.h>],
5301 int tofd, fromfd;
5302 off_t offset;
5303 size_t total;
5304 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5306 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5308 # Try and cope with broken Linux sendfile....
5309                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5310                 AC_TRY_LINK([\
5311 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5312 #undef _FILE_OFFSET_BITS
5313 #endif
5314 #include <sys/sendfile.h>],
5316 int tofd, fromfd;
5317 off_t offset;
5318 size_t total;
5319 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5321 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5323         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5324                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5325                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5326                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5327         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5328                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5329                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5330                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5331         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5332                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5333                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5334         else
5335                 AC_MSG_RESULT(no);
5336         fi
5338         ;;
5339         *freebsd* | *dragonfly* )
5340                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5341                 AC_TRY_LINK([\
5342 #include <sys/types.h>
5343 #include <unistd.h>
5344 #include <sys/socket.h>
5345 #include <sys/uio.h>],
5347         int fromfd, tofd, ret, total=0;
5348         off_t offset, nwritten;
5349         struct sf_hdtr hdr;
5350         struct iovec hdtrl;
5351         hdr.headers = &hdtrl;
5352         hdr.hdr_cnt = 1;
5353         hdr.trailers = NULL;
5354         hdr.trl_cnt = 0;
5355         hdtrl.iov_base = NULL;
5356         hdtrl.iov_len = 0;
5357         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5359 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5361         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5362                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5363                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5364                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5365         else
5366                 AC_MSG_RESULT(no);
5367         fi
5368         ;;
5370         *hpux*)
5371                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5372                 AC_TRY_LINK([\
5373 #include <sys/socket.h>
5374 #include <sys/uio.h>],
5376         int fromfd, tofd;
5377         size_t total=0;
5378         struct iovec hdtrl[2];
5379         ssize_t nwritten;
5380         off64_t offset;
5382         hdtrl[0].iov_base = 0;
5383         hdtrl[0].iov_len = 0;
5385         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5387 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5388         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5389                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5390                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5391                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5392         else
5393                 AC_MSG_RESULT(no);
5394         fi
5396                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5397                 AC_TRY_LINK([\
5398 #include <sys/socket.h>
5399 #include <sys/uio.h>],
5401         int fromfd, tofd;
5402         size_t total=0;
5403         struct iovec hdtrl[2];
5404         ssize_t nwritten;
5405         off_t offset;
5407         hdtrl[0].iov_base = 0;
5408         hdtrl[0].iov_len = 0;
5410         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5412 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5413         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5414                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5415                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5416                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5417         else
5418                 AC_MSG_RESULT(no);
5419         fi
5420         ;;
5422         *solaris*)
5423                 AC_CHECK_LIB(sendfile,sendfilev)
5424                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5425                 AC_TRY_LINK([\
5426 #include <sys/sendfile.h>],
5428         int sfvcnt;
5429         size_t xferred;
5430         struct sendfilevec vec[2];
5431         ssize_t nwritten;
5432         int tofd;
5434         sfvcnt = 2;
5436         vec[0].sfv_fd = SFV_FD_SELF;
5437         vec[0].sfv_flag = 0;
5438         vec[0].sfv_off = 0;
5439         vec[0].sfv_len = 0;
5441         vec[1].sfv_fd = 0;
5442         vec[1].sfv_flag = 0;
5443         vec[1].sfv_off = 0;
5444         vec[1].sfv_len = 0;
5445         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5447 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5449         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5450                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5451                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5452                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5453         else
5454                 AC_MSG_RESULT(no);
5455         fi
5457                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5458                 AC_TRY_LINK([\
5459 #include <sys/sendfile.h>],
5461         int sfvcnt;
5462         size_t xferred;
5463         struct sendfilevec vec[2];
5464         ssize_t nwritten;
5465         int tofd;
5467         sfvcnt = 2;
5469         vec[0].sfv_fd = SFV_FD_SELF;
5470         vec[0].sfv_flag = 0;
5471         vec[0].sfv_off = 0;
5472         vec[0].sfv_len = 0;
5474         vec[1].sfv_fd = 0;
5475         vec[1].sfv_flag = 0;
5476         vec[1].sfv_off = 0;
5477         vec[1].sfv_len = 0;
5478         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5480 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5482         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5483                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5484                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5485                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5486         else
5487                 AC_MSG_RESULT(no);
5488         fi
5489         ;;
5490         *aix*)
5491                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5492                 AC_TRY_LINK([\
5493 #include <sys/socket.h>],
5495         int fromfd, tofd;
5496         size_t total=0;
5497         struct sf_parms hdtrl;
5498         ssize_t nwritten;
5499         off64_t offset;
5501         hdtrl.header_data = 0;
5502         hdtrl.header_length = 0;
5503         hdtrl.file_descriptor = fromfd;
5504         hdtrl.file_offset = 0;
5505         hdtrl.file_bytes = 0;
5506         hdtrl.trailer_data = 0;
5507         hdtrl.trailer_length = 0;
5509         nwritten = send_file(&tofd, &hdtrl, 0);
5511 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5512         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5513                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5514                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5515                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5516         else
5517                 AC_MSG_RESULT(no);
5518         fi
5519         ;;
5520         *)
5521         ;;
5522         esac
5523         ;;
5524   *)
5525     AC_MSG_RESULT(no)
5526     ;;
5527   esac ],
5528   AC_MSG_RESULT(yes)
5531 ############################################
5532 # See if we have the Linux readahead syscall.
5534 AC_CACHE_CHECK([for Linux readahead],
5535                 samba_cv_HAVE_LINUX_READAHEAD,[
5536     AC_TRY_LINK([
5537 #if defined(HAVE_UNISTD_H)
5538 #include <unistd.h>
5539 #endif
5540 #include <fcntl.h>],
5541     [ssize_t err = readahead(0,0,0x80000);],
5542     samba_cv_HAVE_LINUX_READAHEAD=yes,
5543     samba_cv_HAVE_LINUX_READAHEAD=no)])
5545 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5546   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5547              [Whether Linux readahead is available])
5550 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5552 ############################################
5553 # See if we have the posix_fadvise syscall.
5555 AC_CACHE_CHECK([for posix_fadvise],
5556                 samba_cv_HAVE_POSIX_FADVISE,[
5557     AC_TRY_LINK([
5558 #if defined(HAVE_UNISTD_H)
5559 #include <unistd.h>
5560 #endif
5561 #include <fcntl.h>],
5562     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5563     samba_cv_HAVE_POSIX_FADVISE=yes,
5564     samba_cv_HAVE_POSIX_FADVISE=no)])
5566 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5567   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5568              [Whether posix_fadvise is available])
5573 #################################################
5574 # Check whether winbind is supported on this platform.  If so we need to
5575 # build and install client programs, sbin programs and shared libraries
5577 AC_MSG_CHECKING(whether to build winbind)
5579 # Initially, the value of $host_os decides whether winbind is supported
5581 HAVE_WINBIND=yes
5583 # Define the winbind shared library name and any specific linker flags
5584 # it needs to be built with.
5586 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5587 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5588 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5589 NSSSONAMEVERSIONSUFFIX=""
5590 WINBIND_NSS_PTHREAD=""
5592 case "$host_os" in
5593         *linux*)
5594                 NSSSONAMEVERSIONSUFFIX=".2"
5595                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5596                 ;;
5597         *freebsd[[5-9]]*)
5598                 # FreeBSD winbind client is implemented as a wrapper around
5599                 # the Linux version.
5600                 NSSSONAMEVERSIONSUFFIX=".1"
5601                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5602                     nsswitch/winbind_nss_linux.o"
5603                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5604                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5605                 ;;
5607         *netbsd*[[3-9]]*)
5608                 # NetBSD winbind client is implemented as a wrapper
5609                 # around the Linux version. It needs getpwent_r() to
5610                 # indicate libc's use of the correct nsdispatch API.
5611                 #
5612                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5613                         WINBIND_NSS_EXTRA_OBJS="\
5614                             nsswitch/winbind_nss_netbsd.o \
5615                             nsswitch/winbind_nss_linux.o"
5616                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5617                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5618                 else
5619                         HAVE_WINBIND=no
5620                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5621                 fi
5622                 ;;
5623         *irix*)
5624                 # IRIX has differently named shared libraries
5625                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5626                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5627                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5628                 ;;
5629         *solaris*)
5630                 # Solaris winbind client is implemented as a wrapper around
5631                 # the Linux version.
5632                 NSSSONAMEVERSIONSUFFIX=".1"
5633                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5634                     nsswitch/winbind_nss_linux.o"
5635                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5636                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5637                 ;;
5638         *hpux11*)
5639                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5640                 ;;
5641         *aix*)
5642                 # AIX has even differently named shared libraries.  No
5643                 # WINS support has been implemented yet.
5644                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5645                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5646                 WINBIND_NSS="nsswitch/WINBIND"
5647                 WINBIND_WINS_NSS=""
5648                 ;;
5649         *)
5650                 HAVE_WINBIND=no
5651                 winbind_no_reason=", unsupported on $host_os"
5652                 ;;
5653 esac
5655 # Check the setting of --with-winbind
5657 AC_ARG_WITH(winbind,
5658 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5660   case "$withval" in
5661         yes)
5662                 HAVE_WINBIND=yes
5663                 ;;
5664         no)
5665                 HAVE_WINBIND=no
5666                 winbind_reason=""
5667                 ;;
5668   esac ],
5671 # We need unix domain sockets for winbind
5673 if test x"$HAVE_WINBIND" = x"yes"; then
5674         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5675                 winbind_no_reason=", no unix domain socket support on $host_os"
5676                 HAVE_WINBIND=no
5677         fi
5680 # Display test results
5682 if test x"$HAVE_WINBIND" = x"no"; then
5683         WINBIND_NSS=""
5684         WINBIND_WINS_NSS=""
5687 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5688         BUILD_LIBWBCLIENT_SHARED=no
5689 else
5690         BUILD_LIBWBCLIENT_SHARED=yes
5693 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5694         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5695         ## Only worry about libwbclient if we have shared library support
5696         ## and winbindd
5697         LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
5698         LIBWBCLIENT=libwbclient
5699         INSTALL_LIBWBCLIENT=installlibwbclient
5700         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5701         WINBIND_LIBS="-lwbclient"
5702 else
5703         LIBWBCLIENT_STATIC=bin/libwbclient.a
5706 if test x"$HAVE_WINBIND" = x"yes"; then
5707         AC_MSG_RESULT(yes)
5708         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5710         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5711         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5712         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5713                 PAM_MODULES="$PAM_MODULES pam_winbind"
5714                 INSTALL_PAM_MODULES="installpammodules"
5715                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5716         fi
5717 else
5718         AC_MSG_RESULT(no$winbind_no_reason)
5721 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5722                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5724 AC_SUBST(WINBIND_NSS_PTHREAD)
5725 AC_SUBST(WINBIND_NSS)
5726 AC_SUBST(WINBIND_WINS_NSS)
5727 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5728 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5729 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5730 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5731 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5733 AC_SUBST(WINBIND_KRB5_LOCATOR)
5735 # Solaris 10 does have new member in nss_XbyY_key
5736 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5737                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5738                 [#include <nss_dbdefs.h>])
5740 # Solaris has some extra fields in struct passwd that need to be
5741 # initialised otherwise nscd crashes.
5743 AC_CHECK_MEMBER(struct passwd.pw_comment,
5744                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5745                 [#include <pwd.h>])
5747 AC_CHECK_MEMBER(struct passwd.pw_age,
5748                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5749                 [#include <pwd.h>])
5751 # AIX 4.3.x and 5.1 do not have as many members in
5752 # struct secmethod_table as AIX 5.2
5753 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5754        [#include <usersec.h>])
5755 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5756        [#include <usersec.h>])
5758 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5759 AC_TRY_COMPILE([#include <sys/types.h>
5760 #include <sys/socket.h>],
5761 [struct ucred cred;
5762  socklen_t cred_len;
5763  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5765 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5766 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5767     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5771 #################################################
5772 # Check to see if we should use the included popt
5774 AC_ARG_WITH(included-popt,
5775 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5777   case "$withval" in
5778         yes)
5779                 INCLUDED_POPT=yes
5780                 ;;
5781         no)
5782                 INCLUDED_POPT=no
5783                 ;;
5784   esac ],
5786 if test x"$INCLUDED_POPT" != x"yes"; then
5787     AC_CHECK_LIB(popt, poptGetContext,
5788                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5791 AC_MSG_CHECKING(whether to use included popt)
5792 if test x"$INCLUDED_POPT" = x"yes"; then
5793     AC_MSG_RESULT(yes)
5794     BUILD_POPT='$(POPT_OBJ)'
5795     POPTLIBS='$(POPT_OBJ)'
5796     FLAGS1="-I\$(srcdir)/popt"
5797 else
5798     AC_MSG_RESULT(no)
5799         BUILD_POPT=""
5800     POPTLIBS="-lpopt"
5802 AC_SUBST(BUILD_POPT)
5803 AC_SUBST(POPTLIBS)
5804 AC_SUBST(FLAGS1)
5806 #################################################
5807 # Check if user wants DNS service discovery support
5809 AC_ARG_ENABLE(dnssd,
5810 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5812 AC_SUBST(DNSSD_LIBS)
5813 if test x"$enable_dnssd" != x"no"; then
5814     have_dnssd_support=yes
5816     AC_CHECK_HEADERS(dns_sd.h)
5817     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5818         have_dnssd_support=no
5819     fi
5821     # On Darwin the DNSSD API is in libc, but on other platforms it's
5822     # probably in -ldns_sd
5823     AC_CHECK_FUNCS(DNSServiceRegister)
5824     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5825     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5826             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5827         have_dnssd_support=no
5828     fi
5830     if test x"$have_dnssd_support" = x"yes"; then
5831         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5832                 [Whether to enable DNS service discovery support])
5833     else
5834         if test x"$enable_dnssd" = x"yes"; then
5835             AC_MSG_ERROR(DNS service discovery support not available)
5836         fi
5837     fi
5841 #################################################
5842 # Check to see if we should use the included iniparser
5844 AC_ARG_WITH(included-iniparser,
5845 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5847   case "$withval" in
5848         yes)
5849                 INCLUDED_INIPARSER=yes
5850                 ;;
5851         no)
5852                 INCLUDED_INIPARSER=no
5853                 ;;
5854   esac ],
5856 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5857     AC_CHECK_LIB(iniparser, iniparser_load,
5858                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5861 AC_MSG_CHECKING(whether to use included iniparser)
5862 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5863     AC_MSG_RESULT(yes)
5864     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5865         INIPARSERLIBS=""
5866     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5867 else
5868     AC_MSG_RESULT(no)
5869         BUILD_INIPARSER=""
5870     INIPARSERLIBS="-liniparser"
5872 AC_SUBST(BUILD_INIPARSER)
5873 AC_SUBST(INIPARSERLIBS)
5874 AC_SUBST(FLAGS1)
5878 # Checks for the vfs_fileid module
5879 # Start
5880 AC_CHECK_FUNC(getmntent)
5882 AC_CHECK_HEADERS(sys/statfs.h)
5884 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
5885 AC_CACHE_VAL(vfsfileid_cv_statfs,[
5886              AC_TRY_RUN([
5887                 #include <sys/types.h>
5888                 #include <sys/statfs.h>
5889                 int main(void)
5890                 {
5891                         struct statfs fsd;
5892                         fsid_t fsid = fsd.f_fsid;
5893                         return statfs (".", &fsd);
5894                 }],
5895                 vfsfileid_cv_statfs=yes,
5896                 vfsfileid_cv_statfs=no,
5897                 vfsfileid_cv_statfs=cross)
5899 AC_MSG_RESULT($vfsfileid_cv_statfs)
5901 if test x"$ac_cv_func_getmntent" = x"yes" -a \
5902         x"$vfsfileid_cv_statfs" = x"yes"; then
5903         default_shared_modules="$default_shared_modules vfs_fileid"
5905 # End
5906 # Checks for the vfs_fileid module
5909 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5911         eval MODULE_DEFAULT_$i=STATIC
5912 done
5914 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5916         dnl Fall back to static if we cannot build shared libraries
5917         eval MODULE_DEFAULT_$i=STATIC
5919         if test $BLDSHARED = true; then
5920                 eval MODULE_DEFAULT_$i=SHARED
5921         fi
5922 done
5924 dnl Always build these modules static
5925 MODULE_rpc_spoolss=STATIC
5926 MODULE_rpc_srvsvc=STATIC
5927 MODULE_idmap_tdb=STATIC
5928 MODULE_idmap_passdb=STATIC
5929 MODULE_idmap_nss=STATIC
5931 MODULE_nss_info_template=STATIC
5933 AC_ARG_WITH(static-modules,
5934 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
5935 [ if test $withval; then
5936         for i in `echo $withval | sed -e 's/,/ /g'`
5937         do
5938                 eval MODULE_$i=STATIC
5939         done
5940 fi ])
5942 AC_ARG_WITH(shared-modules,
5943 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
5944 [ if test $withval; then
5945         for i in `echo $withval | sed -e 's/,/ /g'`
5946         do
5947                         eval MODULE_$i=SHARED
5948         done
5949 fi ])
5951 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
5952                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5953 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5954 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5955 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5958 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5959 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5960 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
5961 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
5962 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5963 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
5964 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
5965 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5966 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5967 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
5968 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5969 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
5970 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5971 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
5972 SMB_SUBSYSTEM(RPC,smbd/server.o)
5974 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
5975 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
5976 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
5977 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
5978 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
5979 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
5980 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
5981 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
5983 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
5984 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
5986 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5987 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5988 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5989 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5990 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5992 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5993 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5994 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5995 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5996 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5997 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5998 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5999 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6001 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6002 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6003 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6004 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6005 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6006 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6007 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6008 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6009 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6010 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6011 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6012 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6013 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6014 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6015 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6016 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6017 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6018 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6019 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6020 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6021 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6022 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6023 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6024 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6025 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6026 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6027 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6028 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6029 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6030 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6031 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6032 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6033 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6034 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6035 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6036 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6039 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6041 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6043 #################################################
6044 # do extra things if we are running insure
6046 if test "${ac_cv_prog_CC}" = "insure"; then
6047         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6050 #################################################
6051 # If run from the build farm, enable NASTY hacks
6052 #################################################
6053 AC_MSG_CHECKING(whether to enable build farm hacks)
6054 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6055         AC_MSG_RESULT(yes)
6056         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6057 else
6058         AC_MSG_RESULT(no)
6061 #################################################
6062 # check for bad librt/libpthread interactions
6064 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6065     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6066     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6067     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6069 SMB_IF_RTSIGNAL_BUG(
6070         [
6071             # Have RT_SIGNAL bug, need to check whether the problem will
6072             # affect anything we have configured.
6074             rt_do_error=no
6075             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6076                 if test x"$rt_signal_lease_ok" = x"no" ; then
6077                     rt_do_error=yes
6078                 fi
6079             fi
6081             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6082                 if test x"$rt_signal_notify_ok" = x"no" ; then
6083                     rt_do_error=yes
6084                 fi
6085             fi
6087             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6088                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6089                 if test x"$rt_signal_aio_ok" = x"no" ; then
6090                     rt_do_error=yes
6091                 fi
6092             fi
6094             if test x"$rt_do_error" = x"yes" ; then
6095                 SMB_IS_LIBPTHREAD_LINKED(
6096                     [
6097                         cat<<MSG
6099 *** On this platforms, linking Samba against pthreads causes problems
6100 *** with the oplock and change notification mechanisms. You may be
6101 *** using pthreads as a side-effect of using the --with-aio-support
6102 *** or --with-profiling-data options. Please remove these and try again.
6105                     ],
6106                     [
6107                         cat<<MSG
6109 *** On this platform, the oplock and change notification mechanisms do not
6110 *** appear to work. Please report this problem to samba-technical@samba.org
6111 *** and attach the config.log file from this directory.
6114                     ])
6115                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6116             fi
6117         ],
6118         [
6119             # no RT_SIGNAL bug, we are golden
6120             SMB_IS_LIBPTHREAD_LINKED(
6121                 [
6122                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6123                 ])
6125         ],
6126         [
6127             # cross compiling, I hope you know what you are doing
6128             true
6129         ])
6133 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6134 LIB_REMOVE_USR_LIB(LDFLAGS)
6135 LIB_REMOVE_USR_LIB(LIBS)
6136 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6138 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6139 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6140 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6142 #################################################
6143 # Display summary of libraries detected
6145 AC_MSG_RESULT([Using libraries:])
6146 AC_MSG_RESULT([    LIBS = $LIBS])
6147 if test x"$with_ads_support" != x"no"; then
6148     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6150 if test x"$with_ldap_support" != x"no"; then
6151     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6153 if test x"$with_dnsupdate_support" != x"no"; then
6154     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6156 if test x"$have_dnssd_support" != x"no"; then
6157     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6159 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6161 #################################################
6162 # final configure stuff
6164 AC_MSG_CHECKING([configure summary])
6165 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6166            AC_MSG_RESULT(yes),
6167            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6168            AC_MSG_WARN([cannot run when cross-compiling]))
6170 dnl Merge in developer cflags from now on
6171 AC_SUBST(DEVELOPER_CFLAGS)
6172 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6173     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6176 # Stuff the smbd-only libraries at the end of the smbd link
6177 # path (if we have them).
6178 SMBD_LIBS="$samba_dmapi_libs"
6179 AC_SUBST(SMBD_LIBS)
6181 AC_OUTPUT(Makefile library-versions
6182           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6183           lib/netapi/examples/Makefile
6184           pkgconfig/smbclient.pc
6185           pkgconfig/wbclient.pc
6186           pkgconfig/netapi.pc
6187           pkgconfig/smbsharemodes.pc
6188           )
6190 #################################################
6191 # Print very concise instructions on building/use
6192 if test "x$enable_dmalloc" = xyes
6193 then
6194         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6195         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])