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