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