configure: samba_cv_unixsocket was renamed into libreplace_cv_HAVE_UNIXSOCKET
[Samba.git] / source / configure.in
blobd63ef613a8e3c818ca2b38072e5350e9448af270
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(lib/talloc/libtalloc.m4)
28 TALLOC_OBJS=""
29 for obj in ${TALLOC_OBJ}; do
30         TALLOC_OBJS="${TALLOC_OBJS} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(TALLOC_OBJS)
34 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35 # but currently this fails: things have to get merged from s4.
36 tdbdir="lib/tdb"
37 AC_SUBST(tdbdir)
38 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
39 AC_SUBST(TDB_CFLAGS)
40 TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
41 TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o"
42 AC_SUBST(TDB_OBJ)
44 TDB_OBJS=""
45 for obj in ${TDB_OBJ}; do
46         TDB_OBJS="${TDB_OBJS} ${tdbdir}/${obj}"
47 done
48 AC_SUBST(TDB_OBJS)
50 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
51 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
52 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
57 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
59 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60 if test "x${srcdir-.}" != "x."; then
61         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
64 dnl Unique-to-Samba variables we'll be playing with.
65 AC_SUBST(SAMBA_CPPFLAGS)
66 AC_SUBST(SHELL)
67 AC_SUBST(LDSHFLAGS)
68 AC_SUBST(SONAMEFLAG)
69 AC_SUBST(SHLD)
70 AC_SUBST(MODULE_EXPORTS)
71 AC_SUBST(DSO_EXPORTS)
72 AC_SUBST(HOST_OS)
73 AC_SUBST(PICFLAG)
74 AC_SUBST(PIE_CFLAGS)
75 AC_SUBST(PIE_LDFLAGS)
76 AC_SUBST(RELRO_LDFLAGS)
77 AC_SUBST(SHLIBEXT)
78 AC_SUBST(INSTALLLIBCMD_SH)
79 AC_SUBST(INSTALLLIBCMD_A)
80 AC_SUBST(UNINSTALLLIBCMD_SH)
81 AC_SUBST(UNINSTALLLIBCMD_A)
82 AC_SUBST(INSTALL_LIBADDNS)
83 AC_SUBST(UNINSTALL_LIBADDNS)
84 AC_SUBST(LIBADDNS_SHARED)
85 AC_SUBST(LIBADDNS)
87 AC_SUBST(INSTALL_LIBWBCLIENT)
88 AC_SUBST(UNINSTALL_LIBWBCLIENT)
89 AC_SUBST(LIBWBCLIENT_SHARED)
90 AC_SUBST(LIBWBCLIENT_STATIC)
91 AC_SUBST(LIBWBCLIENT)
92 AC_SUBST(WINBIND_LIBS)
94 AC_SUBST(LIBSAMBAUTIL_SHARED)
96 AC_SUBST(INSTALL_LIBSMBCLIENT)
97 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
98 AC_SUBST(LIBSMBCLIENT_SHARED)
99 AC_SUBST(LIBSMBCLIENT)
100 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
101 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
102 AC_SUBST(LIBSMBSHAREMODES_SHARED)
103 AC_SUBST(LIBSMBSHAREMODES)
105 AC_SUBST(PRINT_LIBS)
106 AC_SUBST(AUTH_LIBS)
107 AC_SUBST(ACL_LIBS)
108 AC_SUBST(PASSDB_LIBS)
109 AC_SUBST(IDMAP_LIBS)
110 AC_SUBST(KRB5_LIBS)
111 AC_SUBST(UUID_LIBS)
112 AC_SUBST(LDAP_LIBS)
113 AC_SUBST(GPEXT_LIBS)
114 AC_SUBST(PAM_MODULES)
115 AC_SUBST(INSTALL_PAM_MODULES)
116 AC_SUBST(UNINSTALL_PAM_MODULES)
117 AC_SUBST(NSS_MODULES)
118 AC_SUBST(EXTRA_BIN_PROGS)
119 AC_SUBST(CIFSMOUNT_PROGS)
120 AC_SUBST(INSTALL_CIFSMOUNT)
121 AC_SUBST(UNINSTALL_CIFSMOUNT)
122 AC_SUBST(CIFSSPNEGO_PROGS)
123 AC_SUBST(INSTALL_CIFSSPNEGO)
124 AC_SUBST(UNINSTALL_CIFSSPNEGO)
125 AC_SUBST(EXTRA_SBIN_PROGS)
126 AC_SUBST(EXTRA_ALL_TARGETS)
127 AC_SUBST(CONFIG_LIBS)
128 AC_SUBST(NSCD_LIBS)
130 # compile with optimization and without debugging by default, but
131 # allow people to set their own preference.
132 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
133 # if it has no value.  This prevent *very* large debug binaries from occurring
134 # by default.
135 if test "x$CFLAGS" = x; then
136   CFLAGS="-O"
138 if test "x$debug" = "xyes" ; then
139         CFLAGS="${CFLAGS} -g"
140 else
141         CFLAGS="-O"
144 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
146 m4_include(lib/socket_wrapper/config.m4)
147 m4_include(lib/nss_wrapper/config.m4)
149 m4_include(m4/swat.m4)
151 # Probe the gcc version for extra CFLAGS. We always stash these in
152 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
153 # Makefile edit, avoiding the need to re-run configure.
154 if test x"$ac_cv_prog_gcc" = x"yes" ; then
155         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
156         # Add -Wdeclaration-after-statement if compiler supports it
157         AC_CACHE_CHECK(
158           [that the C compiler understands -Wdeclaration-after-statement],
159           samba_cv_HAVE_Wdeclaration_after_statement, [
160           AC_TRY_RUN_STRICT([
161             int main(void)
162             {
163                 return 0;
164             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
165             samba_cv_HAVE_Wdeclaration_after_statement=yes,
166             samba_cv_HAVE_Wdeclaration_after_statement=no,
167             samba_cv_HAVE_Wdeclaration_after_statement=cross)
168        ])
170         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
171             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
172         fi
174         #-Werror-implicit-function-declaration
175         AC_CACHE_CHECK(
176           [that the C compiler understands -Werror-implicit-function-declaration],
177           samba_cv_HAVE_Werror_implicit_function_declaration, [
178           AC_TRY_RUN_STRICT([
179             int main(void)
180             {
181                 return 0;
182             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
183             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
184             samba_cv_HAVE_Werror_implicit_function_declaration=no,
185             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
186        ])
187        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
188             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
189        fi
191         # krb5developer is like developer, except we don't get
192         # -Wstrict-prototypes.
193        if test x"$krb5_developer" != x"$yes" ; then
194             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
195        fi
198 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
200 if test "x$enable_dmalloc" = xyes
201 then
202         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
203         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
204                   [Define to check invariants around some common functions])
205         LIBS="$LIBS -ldmalloc"  
208 #################################################
209 # check for a shared memory profiling support
210 AC_MSG_CHECKING(whether to use profiling)
211 AC_ARG_WITH(profiling-data,
212 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
213 [ case "$withval" in
214   yes)
215     AC_MSG_RESULT(yes)
216     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
217     samba_cv_WITH_PROFILE=yes
218     ;;
219   *)
220     AC_MSG_RESULT(no)
221     samba_cv_WITH_PROFILE=no
222     ;;
223   esac ],
224   AC_MSG_RESULT(no)
227 dnl Checks for programs.
229 AC_PROG_INSTALL
230 AC_PROG_AWK
231 AC_PATH_PROG(PERL, perl)
233 AC_CHECK_TOOL(AR, ar)
235 dnl Check if we use GNU ld
236 LD=ld
237 AC_PROG_LD_GNU
239 dnl Certain versions of GNU ld the default is not to have the
240 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
241 dnl warnings when building modules.
242 if test "$ac_cv_prog_gnu_ld" = "yes"; then
243         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
244         AC_MSG_CHECKING(GNU ld release date)
245         changequote(,)dnl
246         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'`
247         changequote([,])dnl
248         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
249         if test -n "$ac_cv_gnu_ld_date"; then
250         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
251                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
252         fi
253         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
254                 ac_cv_gnu_ld_version_script=yes
255         fi
256         else
257            AC_MSG_CHECKING(GNU ld release version)
258            changequote(,)dnl
259            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
260            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
261            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
262            changequote([,])dnl
263            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
264            AC_MSG_CHECKING(GNU ld release version major)
265            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
266            AC_MSG_CHECKING(GNU ld release version minor)
267            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
268            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
269              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
270            fi
271            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
272              ac_cv_gnu_ld_version_script=yes
273            fi
274         fi
277 dnl look for executable suffix
278 AC_EXEEXT
280 dnl Check if C compiler understands -c and -o at the same time
281 AC_PROG_CC_C_O
282 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
283       BROKEN_CC=
284 else
285       BROKEN_CC=#
287 AC_SUBST(BROKEN_CC)
289 dnl Check if the C compiler understands -Werror
290 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
291  AC_TRY_RUN_STRICT([
292   int main(void)
293   {
294         return 0;
295   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
296   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
297 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
298    Werror_FLAGS="-Werror"
299 else
300 dnl Check if the C compiler understands -w2
301 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
302  AC_TRY_RUN_STRICT([
303   int main(void)
304   {
305         return 0;
306   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
307   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
308 if test x"$samba_cv_HAVE_w2" = x"yes"; then
309    Werror_FLAGS="-w2"
310 else
311 dnl Check if the C compiler understands -errwarn
312 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
313   AC_TRY_RUN_STRICT([
314    int main(void)
315    {
316         return 0;
317    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
318    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
319 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
320    Werror_FLAGS="-errwarn=%all"
325 dnl Check if the C compiler understands volatile (it should, being ANSI).
326 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
327     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
328         samba_cv_volatile=yes,samba_cv_volatile=no)])
329 if test x"$samba_cv_volatile" = x"yes"; then
330    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
333 ############################################
334 # check if the compiler can handle negative enum values
335 # and don't truncate the values to INT_MAX
336 # a runtime test is needed here
337 AC_SUBST(PIDL_ARGS)
338 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
339     AC_TRY_RUN(
341         #include <stdio.h>
342         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
343         int main(void) {
344                 enum negative_values v1 = NEGATIVE_VALUE;
345                 unsigned v2 = NEGATIVE_VALUE;
347                 if (v1 != 0xFFFFFFFF) {
348                         printf("%u != 0xFFFFFFFF\n", v1);
349                         return 1;
350                 }
351                 if (v2 != 0xFFFFFFFF) {
352                         printf("%u != 0xFFFFFFFF\n", v2);
353                         return 1;
354                 }
356                 return 0;
357         }
359         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
360 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
361         AC_MSG_WARN([using --unit-enums for pidl])
362         PIDL_ARGS="$PIDL_ARGS --uint-enums"
365 dnl Figure out the flags to support named structure initializers
367 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
369 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
370 AC_MSG_CHECKING(uname -s)
371 AC_MSG_RESULT(${UNAME_S})
373 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
374 AC_MSG_CHECKING(uname -r)
375 AC_MSG_RESULT(${UNAME_R})
377 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
378 AC_MSG_CHECKING(uname -m)
379 AC_MSG_RESULT(${UNAME_M})
381 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
382 AC_MSG_CHECKING(uname -p)
383 AC_MSG_RESULT(${UNAME_P})
385 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
386 AC_MSG_CHECKING(uname -i)
387 AC_MSG_RESULT(${UNAME_I})
389 dnl Add #include for broken IRIX header files
390   case "$host_os" in
391         *irix6*)
392                 #TODO add to libreplace
393                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
394                         dnl Fix sensible defaults for MIPSPro compilers. The
395                         dnl error numbers are valid for the 7.3 compilers,
396                         dnl hopefully also valid for the 7.4 series.
397                         dnl
398                         dnl Bugzilla 3801. Force an error on warning 1035
399                         dnl so we don't incorrectly detect stdint.h. This
400                         dnl warning is emitted for #error directives.
401                         CFLAGS="$CFLAGS -diag_error 1035"
402                         dnl 1209: Controlling expression is constant
403                         dnl 1174: Function foo declared but never referenced
404                         dnl 3201: Parameter foo was never referenced
405                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
406                 fi
407         ;;
408 esac
410 DYNEXP=
411 AC_SUBST(DYNEXP)
413 dnl Add modules that have to be built by default here
414 dnl These have to be built static:
415 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"
417 dnl These are preferably build shared, and static if dlopen() is not available
418 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"
420 if test "x$developer" = xyes; then
421    default_static_modules="$default_static_modules rpc_rpcecho"
422    default_shared_modules="$default_shared_modules charset_weird"
426 # Config CPPFLAG settings for strange OS's that must be set
427 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
428 # case statement; its first reference must be unconditional.
430 case "$host_os" in
431     *hpux*)
433 # Defines needed for HPUX support.
434 # HPUX has bigcrypt but (sometimes?) doesn't use it for
435 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
437       case `uname -r` in
438                 *9*|*10*|*11)
439                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
440                 ;;
441       esac
442       ;;
445 # CRAY Unicos has broken const handling
446        *unicos*)
447           AC_MSG_RESULT([disabling const])
448           CPPFLAGS="$CPPFLAGS -Dconst="
449           ;;
450         
452 # AIX4.x doesn't even admit to having large
453 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
455     *aix4*)
456           AC_MSG_RESULT([enabling large file support])
457       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
458           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
459       ;;
461 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
462 # to the existance of large files..
463 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
464 # recommendations on large file support, however it makes the
465 # compile work using gcc 2.7 and 2.8, whereas using the Sun
466 # recommendation makes the compile fail on gcc2.7. JRA.
468 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
470         *solaris*)
471                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
472                 case `uname -r` in
473                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
474                                 AC_MSG_RESULT([no large file support])
475                                 ;;
476                         5.*)
477                         AC_MSG_RESULT([enabling large file support])
478                         if test "$ac_cv_prog_gcc" = yes; then
479                                 ${CC-cc} -v >conftest.c 2>&1
480                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
481                                 rm -fr conftest.c
482                                 case "$ac_cv_gcc_compiler_version_number" in
483                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
484                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
485                                                 LDFLAGS="$LDFLAGS -lthread"
486                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
487                                                 ;;
488                                         *)
489                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
490                                                 LDFLAGS="$LDFLAGS -lthread"
491                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
492                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
493                                                 ;;
494                                 esac
495                         else
496                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
497                                 LDFLAGS="$LDFLAGS -lthread"
498                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
499                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
500                         fi
501                         ;;
502                 esac
503                 ;;
505 # IRIX uses SYSV printing.  Make sure to set that here
507         *irix*)
508                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
509                 ;;
510         *freebsd*|*dragonfly*)
511                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
512                 ;;
514 # VOS may need to have POSIX support and System V compatibility enabled.
516     *vos*)
517     case "$CPPFLAGS" in
518           *-D_POSIX_C_SOURCE*)
519                 ;;
520           *)
521                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
522                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
523                 ;;
524     esac
525     case "$CPPFLAGS" in
526           *-D_SYSV*|*-D_SVID_SOURCE*)
527                 ;;
528           *)
529                 CPPFLAGS="$CPPFLAGS -D_SYSV"
530                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
531     esac
532     ;;
534 # Tests needed for SINIX large file support.
536     *sysv4*)
537       if test $host = mips-sni-sysv4 ; then
538         AC_MSG_CHECKING([for LFS support])
539         old_CPPFLAGS="$CPPFLAGS"
540         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
541         AC_TRY_RUN([
542 #include <unistd.h>
543 main () {
544 #if _LFS64_LARGEFILE == 1
545 exit(0);
546 #else
547 exit(1);
548 #endif
549 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
550         CPPFLAGS="$old_CPPFLAGS"
551         if test x$SINIX_LFS_SUPPORT = xyes ; then
552           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
553                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
554           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
555           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
556           LIBS="`getconf LFS64_LIBS` $LIBS"
557         fi
558       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
559       fi
560     ;;
562 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
564     *linux*)
565         AC_MSG_CHECKING([for LFS support])
566         old_CPPFLAGS="$CPPFLAGS"
567         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
568        AC_TRY_RUN([
569 #include <unistd.h>
570 #include <sys/utsname.h>
571 #include <string.h>
572 #include <stdlib.h>
573 main() {
574 #if _LFS64_LARGEFILE == 1
575        struct utsname uts;
576        char *release;
577        int major, minor;
579        /* Ensure this is glibc 2.2 or higher */
580 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
581        int libc_major = __GLIBC__;
582        int libc_minor = __GLIBC_MINOR__;
584        if (libc_major < 2)
585               exit(1);
586        if (libc_minor < 2)
587               exit(1);
588 #endif
590        /* Ensure this is kernel 2.4 or higher */
592        uname(&uts);
593        release = strdup(uts.release);
594        major = atoi(strsep(&release, "."));
595        minor = atoi(strsep(&release, "."));
597        if (major > 2 || (major == 2 && minor > 3))
598                exit(0);
599        exit(1);
600 #else
601        exit(1);
602 #endif
604 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
605         CPPFLAGS="$old_CPPFLAGS"
606         if test x$LINUX_LFS_SUPPORT = xyes ; then
607                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
608                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
609                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
610                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
611         fi
612         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
613         ;;
616 # MacOS X is the *only* system that uses compose character in utf8. This
617 # is so horribly broken....
619     *darwin*)
620         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
622 # Add a system specific charset module.
623         default_shared_modules="$default_shared_modules charset_macosxfs"
625         ;;
626     *hurd*)
627         AC_MSG_CHECKING([for LFS support])
628         old_CPPFLAGS="$CPPFLAGS"
629         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
630         AC_TRY_RUN([
631 #include <unistd.h>
632 main () {
633 #if _LFS64_LARGEFILE == 1
634 exit(0);
635 #else
636 exit(1);
637 #endif
638 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
639         CPPFLAGS="$old_CPPFLAGS"
640         if test x$GLIBC_LFS_SUPPORT = xyes ; then
641           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
642                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
643           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
644         fi
645       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
646     ;;
648 esac
650 SAVE_CPPFLAGS="${CPPFLAGS}"
651 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
653 AC_LIBREPLACE_BROKEN_CHECKS
654 AC_LIBREPLACE_NETWORK_CHECKS
656 CPPFLAGS="${SAVE_CPPFLAGS}"
658 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
660 LIBREPLACE_OBJS=""
661 for obj in ${LIBREPLACEOBJ}; do
662         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
663 done
664 AC_SUBST(LIBREPLACE_OBJS)
666 # add -ldl to the global LIBS
667 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
669 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
670 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
671 AC_CHECK_HEADERS(limits.h float.h pthread.h)
672 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
673 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
674 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
675 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
676 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
677 AC_CHECK_HEADERS(sys/sysmacros.h)
678 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
679 AC_CHECK_HEADERS(langinfo.h locale.h)
680 AC_CHECK_HEADERS(xfs/libxfs.h)
681 AC_CHECK_HEADERS(netgroup.h)
683 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
684 #if HAVE_RPC_RPC_H
685 #include <rpc/rpc.h>
686 #endif
689 ## These fail to compile on IRIX so just check for their presence
690 AC_CHECK_HEADERS(sys/mode.h,,,)
692 # Look for Darwin headers
693 old_CPPFLAGS="$CPPFLAGS"
694 CPPFLAGS="-Iinclude $CPPFLAGS"
695 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
696 CPPFLAGS="$old_CPPFLAGS"
698 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
699 # subdirectory of headers.
700 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
702 # check for linux on amd64 since valgrind is not quite there yet
703 case "$host_os" in
704         *linux*)
705                 case "$UNAME_P" in
706                         *x86_64*)
707                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
708                                 ;;
709                 esac
710                 ;;
711 esac
715 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
716 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
718 case "$host_os" in
719     *hpux*)
720                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
721                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
722                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
723                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
724                 fi
725         ;;
726 esac
727 AC_CHECK_HEADERS(shadow.h)
728 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
729 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
731 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
732 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
734 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
736 # For experimental utmp support (lastlog on some BSD-like systems)
737 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
739 AC_CHECK_SIZEOF(int,cross)
740 AC_CHECK_SIZEOF(long,cross)
741 AC_CHECK_SIZEOF(long long,cross)
742 AC_CHECK_SIZEOF(short,cross)
744 AC_C_CONST
745 AC_C_INLINE
746 AC_C_BIGENDIAN
747 AC_C_CHAR_UNSIGNED
749 AC_TYPE_SIGNAL
750 AC_TYPE_UID_T
751 AC_TYPE_MODE_T
752 AC_TYPE_OFF_T
753 AC_TYPE_SIZE_T
754 AC_TYPE_PID_T
755 AC_STRUCT_ST_RDEV
756 AC_DIRENT_D_OFF
757 AC_CHECK_TYPE(ssize_t, int)
758 AC_CHECK_TYPE(wchar_t, unsigned short)
760 ############################################
761 # for cups support we need libcups, and a handful of header files
763 AC_ARG_ENABLE(cups,
764 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
766 if test x$enable_cups != xno; then
767         AC_PATH_PROG(CUPS_CONFIG, cups-config)
769         if test "x$CUPS_CONFIG" != x; then
770                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
771                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
772                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
773                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
774         elif test x"$enable_cups" = x"yes"; then
775                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
776         fi
779 AC_ARG_ENABLE(iprint,
780 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
782 if test x$enable_iprint != xno; then
783         if test "x$CUPS_CONFIG" != x; then
784                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
785         elif test x"$enable_iprint" = x"yes"; then
786                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
787         fi
790 ############################################
791 # check if the compiler will optimize out function calls
792 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
793     AC_TRY_LINK([
794 #include <stdio.h>],
796                 if (0) {
797                    this_function_does_not_exist();
798                 } else {
799                   return 1;
800                 }
803         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
804 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
805    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
808 #############################################
809 # check for fd passing struct via msg_control
810 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
811     AC_TRY_COMPILE([
812 #include <sys/types.h>
813 #include <stdlib.h>
814 #include <stddef.h>
815 #include <sys/socket.h>
816 #include <sys/un.h>],
818         struct msghdr msg;
819         union {
820               struct cmsghdr cm;
821               char control[CMSG_SPACE(sizeof(int))];
822         } control_un;
823         msg.msg_control = control_un.control;
824         msg.msg_controllen = sizeof(control_un.control);
826         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
827 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
828    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
829              [If we can use msg_control for passing file descriptors])
832 #############################################
833 # check for fd passing struct via msg_acctrights
834 AC_CACHE_CHECK([for fd passing via msg_acctrights],
835                 samba_cv_msghdr_msg_acctrights, [
836     AC_TRY_COMPILE([
837 #include <sys/types.h>
838 #include <stdlib.h>
839 #include <stddef.h>
840 #include <sys/socket.h>
841 #include <sys/un.h>],
843         struct msghdr msg;
844         int fd;
845         msg.msg_acctrights = (caddr_t) &fd;
846         msg.msg_acctrightslen = sizeof(fd);
848         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
849 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
850    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
851              [If we can use msg_acctrights for passing file descriptors])
854 AC_CHECK_FUNCS(dirfd)
855 if test x"$ac_cv_func_dirfd" = x"yes"; then
856         default_shared_modules="$default_shared_modules vfs_syncops"
859 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
860     AC_TRY_COMPILE([
861 #include <sys/types.h>
862 #if STDC_HEADERS
863 #include <stdlib.h>
864 #include <stddef.h>
865 #endif
866 #include <signal.h>],[sig_atomic_t i = 0],
867         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
868 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
869    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
872 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
873     AC_TRY_COMPILE([
874 #include <sys/types.h>
875 #if STDC_HEADERS
876 #include <stdlib.h>
877 #include <stddef.h>
878 #endif
879 #if TIME_WITH_SYS_TIME
880 # include <sys/time.h>
881 # include <time.h>
882 #else
883 # if HAVE_SYS_TIME_H
884 #  include <sys/time.h>
885 # else
886 #  include <time.h>
887 # endif
888 #endif
889 ],[struct timespec ts;],
890         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
891 if test x"$samba_cv_struct_timespec" = x"yes"; then
892    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
895 # stupid headers have the functions but no declaration. grrrr.
896 AC_HAVE_DECL(errno, [#include <errno.h>])
897 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
898 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
900 # and glibc has setresuid under linux but the function does
901 # nothing until kernel 2.1.44! very dumb.
902 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
903     AC_TRY_RUN([#include <errno.h>
904 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
905         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
906 if test x"$samba_cv_have_setresuid" = x"yes"; then
907     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
910 # Do the same check for setresguid...
912 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
913     AC_TRY_RUN([#include <unistd.h>
914 #include <errno.h>
915 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
916         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
917 if test x"$samba_cv_have_setresgid" = x"yes"; then
918     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
921 AC_FUNC_MEMCMP
923 ###############################################
924 # Readline included by default unless explicitly asked not to
925 test "${with_readline+set}" != "set" && with_readline=yes
927 # test for where we get readline() from
928 AC_MSG_CHECKING(whether to use readline)
929 AC_ARG_WITH(readline,
930 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
931 [  case "$with_readline" in
932   yes)
933     AC_MSG_RESULT(yes)
935     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
936     AC_CHECK_HEADERS(readline/history.h)
938     AC_CHECK_HEADERS(readline.h readline/readline.h,[
939       for termlib in ncurses curses termcap terminfo termlib tinfo; do
940        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
941       done
942       AC_CHECK_LIB(readline, rl_callback_handler_install,
943        [TERMLIBS="-lreadline $TERMLIBS"
944        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
945        break], [TERMLIBS=], $TERMLIBS)])
946     ;;
947   no)
948     AC_MSG_RESULT(no)
949     ;;
950   *)
951     AC_MSG_RESULT(yes)
953     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
954     # alternate readline path
955     _ldflags=${LDFLAGS}
956     _cppflags=${CPPFLAGS}
958     # Add additional search path
959     LDFLAGS="-L$with_readline/lib $LDFLAGS"
960     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
962     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
963     AC_CHECK_HEADERS(readline/history.h)
965     AC_CHECK_HEADERS(readline.h readline/readline.h,[
966       for termlib in ncurses curses termcap terminfo termlib; do
967        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
968       done
969       AC_CHECK_LIB(readline, rl_callback_handler_install,
970        [TERMLDFLAGS="-L$with_readline/lib"
971        TERMCPPFLAGS="-I$with_readline/include"
972        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
973        TERMLIBS="-lreadline $TERMLIBS"
974        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
975        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
977     LDFLAGS=$_ldflags
978     ;;
979   esac],
980   AC_MSG_RESULT(no)
982 AC_SUBST(TERMLIBS)
983 AC_SUBST(TERMLDFLAGS)
985 # The readline API changed slightly from readline3 to readline4, so
986 # code will generate warnings on one of them unless we have a few
987 # special cases.
988 AC_CHECK_LIB(readline, rl_completion_matches,
989              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
990                         [Do we have rl_completion_matches?])],
991              [],
992              [$TERMLIBS])
994 # not all readline libs have rl_event_hook or history_list
995 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
996 AC_CHECK_LIB(readline, history_list,
997              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
998              [],
999              [$TERMLIBS])
1001 ###############################################
1002 # test for where we get yp_get_default_domain() from
1003 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1004 AC_CHECK_FUNCS(yp_get_default_domain)
1006 # Check if we have execl, if not we need to compile smbrun.
1007 AC_CHECK_FUNCS(execl)
1008 if test x"$ac_cv_func_execl" = x"no"; then
1009     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1012 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1013 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1014 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1015 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1016 AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1017 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1018 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1019 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1020 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1021 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1022 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1023 AC_CHECK_FUNCS(getpwent_r)
1024 AC_CHECK_FUNCS(getdents getdents64)
1025 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1026 AC_CHECK_FUNCS(syslog vsyslog timegm)
1027 AC_CHECK_FUNCS(setlocale nl_langinfo)
1028 AC_CHECK_FUNCS(nanosleep)
1029 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1030 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1031 AC_CHECK_HEADERS(sys/mman.h)
1032 # setbuffer, shmget, shm_open are needed for smbtorture
1033 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1035 # Find a method of generating a stack trace
1036 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1037 AC_CHECK_FUNCS(backtrace_symbols)
1038 AC_CHECK_LIB(exc, trace_back_stack)
1040 printf "%s" "checking for GPFS GPL libs... "
1041 save_LIBS="$LIBS"
1042 LIBS="$LIBS -lgpfs_gpl"
1043 AC_TRY_LINK([#include <gpfs_gpl.h>],
1044           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1045           samba_cv_HAVE_GPFS=yes,
1046           samba_cv_HAVE_GPFS=no)
1047 echo $samba_cv_HAVE_GPFS
1048 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1049     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1050     default_shared_modules="$default_shared_modules vfs_gpfs"
1052 LIBS="$save_LIBS"
1054 # Note that all the libunwind symbols in the API are defined to internal
1055 # platform-specific version, so we must include libunwind.h before checking
1056 # any of them.
1057 AC_MSG_CHECKING([for libunwind])
1058 save_LIBS=$LIBS
1060 UNWIND_ARCH="unknown"
1061 if test x"$UNAME_I" != x"unknown"; then
1062         UNWIND_ARCH="$UNAME_I"
1063 elif test x"$UNAME_M" != x"unknown"; then
1064         UNWIND_ARCH="$UNAME_M"
1065 elif test x"$UNAME_P" != x"unknown"; then
1066         UNWIND_ARCH="$UNAME_P"
1069 case "$UNWIND_ARCH" in
1070         unknown)
1071                 # This probably won't link without
1072                 # the platform-specific libunwind.
1073                 LIBS="$LIBS -lunwind"
1074                 ;;
1075         i386|i586|i686)
1076                 # Add the platform-specific libunwind module.
1077                 LIBS="$LIBS -lunwind -lunwind-x86"
1078                 ;;
1079         *)
1080                 # Add the platform-specific libunwind module.
1081                 # based on uname -i, uname -m or uname -p
1082                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1083                 ;;
1084 esac
1086 AC_TRY_LINK(
1087     [
1088 #ifdef HAVE_LIBUNWIND_H
1089 #include <libunwind.h>
1090 #endif
1091     ],
1092     [
1093         unw_context_t ctx; unw_cursor_t cur;
1094         char buf[256]; unw_word_t off;
1095         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1096         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1097     ],
1098     [
1099         AC_MSG_RESULT(yes)
1100         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1102         # If we have libunwind, test whether we also have libunwind-ptrace
1103         # which would let us unwind arbitrary processes.
1104         save_LIBS=$LIBS
1105         AC_CHECK_HEADERS(libunwind-ptrace.h)
1106         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1107             [
1108                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1109                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1110                     [Whether libunwind-ptrace.a is available.])
1111             ],
1112             [ LIBUNWIND_PTRACE="" ])
1114         LIBS=$save_LIBS
1115     ],
1116     [
1117         AC_MSG_RESULT(no)
1118         LIBS=$save_LIBS
1119     ])
1121 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1122 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1123     AC_CHECK_HEADERS(sys/ptrace.h)
1124     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1125     AC_TRY_LINK(
1126             [
1127 #if HAVE_SYS_TYPES_H
1128 #include <sys/types.h>
1129 #endif
1130 #if HAVE_SYS_PTRACE_H
1131 #include <sys/ptrace.h>
1132 #endif
1133             ],
1134             [
1135                 int main(int argc, const char ** argv)
1136                 {
1137                         pid_t me = (pid_t)-1;
1138                         ptrace(PTRACE_ATTACH, me, 0, 0);
1139                         ptrace(PTRACE_DETACH, me, 0, 0);
1140                         return 0;
1141                 }
1142             ],
1143             [
1144                 AC_MSG_RESULT(yes)
1145                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1146                     [Whether the Linux ptrace(2) interface is available.])
1147             ],
1148             [
1149                 AC_MSG_RESULT(no)
1150                 LIBUNWIND_PTRACE=""
1151             ])
1154 AC_SUBST(LIBUNWIND_PTRACE)
1156 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1157 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1158 AC_CHECK_FUNCS(__getcwd _getcwd)
1159 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1160 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1161 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1162 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1163 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1164 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1165 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1166 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1167 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1168 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1169 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1170 AC_CHECK_FUNCS(prctl)
1172 AC_TRY_COMPILE([
1173 #ifdef HAVE_SYS_PRCTL_H
1174 #include <sys/prctl.h>
1175 #endif
1177 [int i; i = prtcl(0); ],
1178 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1183 case "$host_os" in
1184     *linux*)
1185        # glibc <= 2.3.2 has a broken getgrouplist
1186        AC_TRY_RUN([
1187 #include <unistd.h>
1188 #include <sys/utsname.h>
1189 main() {
1190        /* glibc up to 2.3 has a broken getgrouplist */
1191 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1192        int libc_major = __GLIBC__;
1193        int libc_minor = __GLIBC_MINOR__;
1195        if (libc_major < 2)
1196               exit(1);
1197        if ((libc_major == 2) && (libc_minor <= 3))
1198               exit(1);
1199 #endif
1200        exit(0);
1202 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1203        if test x"$linux_getgrouplist_ok" = x"yes"; then
1204           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1205        fi
1206        ;;
1207     *)
1208        AC_CHECK_FUNCS(getgrouplist)
1209        ;;
1210 esac
1213 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1216 if test x$ac_cv_func_stat64 = xno ; then
1217   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1218   AC_TRY_LINK([
1219 #if defined(HAVE_UNISTD_H)
1220 #include <unistd.h>
1221 #endif
1222 #include <sys/stat.h>
1223 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1224   AC_MSG_RESULT([$ac_cv_func_stat64])
1225   if test x$ac_cv_func_stat64 = xyes ; then
1226     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1227   fi
1230 if test x$ac_cv_func_lstat64 = xno ; then
1231   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1232   AC_TRY_LINK([
1233 #if defined(HAVE_UNISTD_H)
1234 #include <unistd.h>
1235 #endif
1236 #include <sys/stat.h>
1237 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1238   AC_MSG_RESULT([$ac_cv_func_lstat64])
1239   if test x$ac_cv_func_lstat64 = xyes ; then
1240     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1241   fi
1244 if test x$ac_cv_func_fstat64 = xno ; then
1245   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1246   AC_TRY_LINK([
1247 #if defined(HAVE_UNISTD_H)
1248 #include <unistd.h>
1249 #endif
1250 #include <sys/stat.h>
1251 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1252   AC_MSG_RESULT([$ac_cv_func_fstat64])
1253   if test x$ac_cv_func_fstat64 = xyes ; then
1254     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1255   fi
1258 #################################################
1259 # Check whether struct stat has timestamps with sub-second resolution.
1260 # At least IRIX and Solaris have these.
1262 # We check that
1263 #       all of st_mtim, st_atim and st_ctim exist
1264 #       all of the members are in fact of type struct timespec
1266 # There is some conflicting standards weirdness about whether we should use
1267 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1268 # prefer struct timespec.
1270 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1271     [
1272         AC_TRY_COMPILE(
1273             [
1274 #if TIME_WITH_SYS_TIME
1275 # include <sys/time.h>
1276 # include <time.h>
1277 #else
1278 # if HAVE_SYS_TIME_H
1279 #  include <sys/time.h>
1280 # else
1281 #  include <time.h>
1282 # endif
1283 #endif
1284 #ifdef HAVE_SYS_STAT_H
1285 #include <sys/stat.h>
1286 #endif
1287             ],
1288             [
1289                 struct timespec t;
1290                 struct stat s = {0};
1291                 t.tv_sec = s.st_mtim.tv_sec;
1292                 t.tv_nsec = s.st_mtim.tv_nsec;
1293                 t.tv_sec = s.st_ctim.tv_sec;
1294                 t.tv_nsec = s.st_ctim.tv_nsec;
1295                 t.tv_sec = s.st_atim.tv_sec;
1296                 t.tv_nsec = s.st_atim.tv_nsec;
1297             ],
1298             samba_stat_hires=yes, samba_stat_hires=no)
1299     ])
1301 if test x"$samba_stat_hires" = x"yes" ; then
1302     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1303     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1304     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1305     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1306             [whether struct stat has sub-second timestamps])
1309 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1310     [
1311         AC_TRY_COMPILE(
1312             [
1313 #if TIME_WITH_SYS_TIME
1314 # include <sys/time.h>
1315 # include <time.h>
1316 #else
1317 # if HAVE_SYS_TIME_H
1318 #  include <sys/time.h>
1319 # else
1320 #  include <time.h>
1321 # endif
1322 #endif
1323 #ifdef HAVE_SYS_STAT_H
1324 #include <sys/stat.h>
1325 #endif
1326             ],
1327             [
1328                 struct timespec t;
1329                 struct stat s = {0};
1330                 t.tv_sec = s.st_mtime;
1331                 t.tv_nsec = s.st_mtimensec;
1332                 t.tv_sec = s.st_ctime;
1333                 t.tv_nsec = s.st_ctimensec;
1334                 t.tv_sec = s.st_atime;
1335                 t.tv_nsec = s.st_atimensec;
1336             ],
1337             samba_stat_hires=yes, samba_stat_hires=no)
1338     ])
1340 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1341     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1342     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1343     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1344     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1345             [whether struct stat has sub-second timestamps without struct timespec])
1348 #####################################
1349 # needed for SRV lookups
1350 AC_CHECK_LIB(resolv, dn_expand)
1351 AC_CHECK_LIB(resolv, _dn_expand)
1352 AC_CHECK_LIB(resolv, __dn_expand)
1355 # Check for the functions putprpwnam, set_auth_parameters,
1356 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1357 # Needed for OSF1 and HPUX.
1360 AC_LIBTESTFUNC(security, putprpwnam)
1361 AC_LIBTESTFUNC(sec, putprpwnam)
1363 AC_LIBTESTFUNC(security, set_auth_parameters)
1364 AC_LIBTESTFUNC(sec, set_auth_parameters)
1366 # UnixWare 7.x has its getspnam in -lgen
1367 AC_LIBTESTFUNC(gen, getspnam)
1369 AC_LIBTESTFUNC(security, getspnam)
1370 AC_LIBTESTFUNC(sec, getspnam)
1372 AC_LIBTESTFUNC(security, bigcrypt)
1373 AC_LIBTESTFUNC(sec, bigcrypt)
1375 AC_LIBTESTFUNC(security, getprpwnam)
1376 AC_LIBTESTFUNC(sec, getprpwnam)
1378 AC_CHECK_FUNCS(strsignal)
1380 ############################################
1381 # Check if we have libattr
1382 case "$host_os" in
1383   *osf*)
1384         AC_SEARCH_LIBS(getproplist, [proplist])
1385         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1386         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1387         AC_CHECK_FUNCS(sizeof_proplist_entry)
1388   ;;
1389   *)
1390         AC_SEARCH_LIBS(getxattr, [attr])
1391         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1392         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1393         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1394         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1395         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1396         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1397         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1398   ;;
1399 esac
1401 ########################################################
1402 # Check if attropen() is present if this is Solaris
1403 case "$host_os" in
1404   *solaris*)
1405         AC_CHECK_FUNCS(attropen)
1406   ;;
1407 esac
1409 ########################################################
1410 # Do xattr functions take additional options like on Darwin?
1411 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1412         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1413                 old_LIBS=$LIBS
1414                 LIBS="$LIBS $ACL_LIBS"
1415                 AC_TRY_COMPILE([
1416                         #include <sys/types.h>
1417                         #if HAVE_ATTR_XATTR_H
1418                         #include <attr/xattr.h>
1419                         #elif HAVE_SYS_XATTR_H
1420                         #include <sys/xattr.h>
1421                         #endif
1422                 ],[
1423                         getxattr(0, 0, 0, 0, 0, 0);
1424                 ],
1425                 [smb_attr_cv_xattr_add_opt=yes],
1426                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1427         ])
1428         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1429                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1430         fi
1433 # Check if we have extattr
1434 case "$host_os" in
1435   *freebsd4* | *dragonfly* )
1436     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1437     ;;
1438   *)
1439     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1440     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1441     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1442     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1443     ;;
1444 esac
1446 AC_DISABLE_STATIC
1447 AC_ENABLE_SHARED
1449 # Set defaults
1450 PIE_CFLAGS=""
1451 PIE_LDFLAGS=""
1452 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1454 if test "x$enable_pie" != xno
1455 then
1456         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1457         [
1458                 cat > conftest.c <<EOF
1459 int foo;
1460 main () { return 0;}
1462                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1463                 then
1464                         samba_cv_fpie=yes
1465                 else
1466                         samba_cv_fpie=no
1467                 fi
1468                 rm -f conftest*
1469         ])
1470         if test x"${samba_cv_fpie}" = x"yes"
1471         then
1472                 PIE_CFLAGS="-fPIE"
1473                 PIE_LDFLAGS="-pie"
1474         fi
1477 # Set defaults
1478 RELRO_LDFLAGS=""
1479 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1481 if test "x$enable_relro" != xno
1482 then
1483         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1484         [
1485                 cat > conftest.c <<EOF
1486 int foo;
1487 main () { return 0;}
1489                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1490                 then
1491                         samba_cv_relro=yes
1492                 else
1493                         samba_cv_relro=no
1494                 fi
1495                 rm -f conftest*
1496         ])
1497         if test x"${samba_cv_relro}" = x"yes"
1498         then
1499                 RELRO_LDFLAGS="-Wl,-z,relro"
1500         fi
1503 # Assume non-shared by default and override below
1504 BLDSHARED="false"
1506 # these are the defaults, good for lots of systems
1507 HOST_OS="$host_os"
1508 LDSHFLAGS="-shared"
1509 MODULE_EXPORTS=""
1510 SONAMEFLAG="#"
1511 SHLD="\${CC} \${CFLAGS}"
1512 PICFLAG="${PIE_CFLAGS}"
1513 SHLIBEXT="so"
1514 DSO_EXPORTS=""
1516 # this bit needs to be modified for each OS that supports share libs
1517 # You need to specify how to create a shared library and
1518   # how to compile C code to produce PIC object files
1520   AC_MSG_CHECKING([ability to build shared libraries])
1522   # and these are for particular systems
1523   case "$host_os" in
1524                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1525                         BLDSHARED="true"
1526                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1527                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1528                         else
1529                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1530                         fi
1531                         DYNEXP="-Wl,--export-dynamic"
1532                         PICFLAG="-fPIC"
1533                         SONAMEFLAG="-Wl,-soname="
1534                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1535                         ;;
1536                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1537                         BLDSHARED="true"
1538                         LDSHFLAGS="-G"
1539                         SONAMEFLAG="-h "
1540                         if test "${GCC}" = "yes"; then
1541                                 PICFLAG="-fPIC"
1542                                 SONAMEFLAG="-Wl,-soname="
1543                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1544                                         DYNEXP="-Wl,-E"
1545                                 fi
1546                         else
1547                                 PICFLAG="-KPIC"
1548                                 ## ${CFLAGS} added for building 64-bit shared
1549                                 ## libs using Sun's Compiler
1550                                 LDSHFLAGS="-G \${CFLAGS}"
1551                         fi
1552                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1553                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1554                         ;;
1555                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1556                         BLDSHARED="true"
1557                         LDSHFLAGS="-G"
1558                         SONAMEFLAG="-Wl,-h,"
1559                         PICFLAG="-KPIC"   # Is this correct for SunOS
1560                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1561                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1562                         ;;
1563                 *netbsd* | *freebsd* | *dragonfly* )
1564                         BLDSHARED="true"
1565                         LDSHFLAGS="-shared"
1566                         DYNEXP="-Wl,--export-dynamic"
1567                         SONAMEFLAG="-Wl,-soname,"
1568                         PICFLAG="-fPIC -DPIC"
1569                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1570                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1571                         ;;
1572                 *openbsd*)  BLDSHARED="true"
1573                         LDSHFLAGS="-shared"
1574                         DYNEXP="-Wl,-Bdynamic"
1575                         SONAMEFLAG="-Wl,-soname,"
1576                         PICFLAG="-fPIC"
1577                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1578                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1579                         ;;
1580                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1581                         case "$host_os" in
1582                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1583                         ;;
1584                         esac
1585                         BLDSHARED="true"
1586                         LDSHFLAGS="-set_version sgi1.0 -shared"
1587                         SONAMEFLAG="-soname "
1588                         SHLD="\${LD}"
1589                         if test "${GCC}" = "yes"; then
1590                                 PICFLAG="-fPIC"
1591                         else
1592                                 PICFLAG="-KPIC"
1593                         fi
1594                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1595                         ;;
1596                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1597                         BLDSHARED="true"
1598                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc"
1599                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1600                         PICFLAG="-O2"
1601                         # as AIX code is always position independent...
1602                         # .po will just create compile warnings, use po.o:
1603                         if test "${GCC}" != "yes"; then
1604                                 ## for funky AIX compiler using strncpy()
1605                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1606                         fi
1608                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1609                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1610                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1611                         ;;
1612                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1613                         # Use special PIC flags for the native HP-UX compiler.
1614                                 BLDSHARED="true"
1615                                 SHLD="cc"
1616                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1617                                 SONAMEFLAG="-Wl,+h "
1618                                 PICFLAG="+z"
1619                         if test "${GCC}" = "yes"; then
1620                                 PICFLAG="-fPIC"
1621                         else
1622                                 PICFLAG="+z +ESnolit"
1623                         fi
1624                         if test "$host_cpu" = "ia64"; then
1625                                 SHLIBEXT="so"
1626                               PICFLAG="+z"
1627                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1628                         else
1629                                 SHLIBEXT="sl"
1630                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1631                         fi
1632                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1633                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1634                         ;;
1635                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1636                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1637                         ;;
1638                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1639                         BLDSHARED="true"
1640                         LDSHFLAGS="-shared"
1641                         SONAMEFLAG="-Wl,-soname,"
1642                         PICFLAG="-fPIC"
1643                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1644                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1645                         ;;
1646                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1647                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1648                         ;;
1649                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1650                         BLDSHARED="true"
1651                         LDSHFLAGS="-shared"
1652                         SONAMEFLAG="-Wl,-soname,"
1653                         PICFLAG="-KPIC"
1654                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1655                         ;;
1656                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1657                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1658                         ;;
1659                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1660                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1661                         ;;
1662                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1663                         case "$host" in
1664                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1665                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1666                                         fi
1667                                         LDSHFLAGS="-G"
1668                                         DYNEXP="-Bexport"
1669                                 ;;
1670                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1671                         esac
1672                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1673                         ;;
1675                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1676                         if [ test "$GCC" != yes ]; then
1677                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1678                         fi
1679                         LDSHFLAGS="-G"
1680                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1681                         ;;
1682                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1683                         BLDSHARED="false"
1684                         LDSHFLAGS=""
1685                         ;;
1687                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1688                         BLDSHARED="true"
1689                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1690                         CFLAGS="$CFLAGS -fno-common"
1691                         SHLD="\${CC}"
1692                         SHLIBEXT="dylib"
1693                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1694                         SHLIBEXT="dylib"
1695                         # Since gcc doesn't fail on unrecognised options, the
1696                         # PIE test incorrectly succeeds. Darwin gcc does not
1697                         # actually support the PIE stuff.
1698                         PIE_LDFLAGS=
1699                         PIE_CFLAGS=
1700                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1701                         ;;
1703                 *)
1704                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1705                         ;;
1706   esac
1708 if test "$enable_shared" != "yes"; then
1709         BLDSHARED=false
1712 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1713         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1716 if test x"$BLDSHARED" = x"true" ; then
1717         LDFLAGS="$LDFLAGS -L./bin"
1720 AC_MSG_RESULT($BLDSHARED)
1722 AC_MSG_CHECKING([LDFLAGS])
1723 AC_MSG_RESULT([$LDFLAGS])
1724 AC_MSG_CHECKING([DYNEXP])
1725 AC_MSG_RESULT([$DYNEXP])
1727 #######################################################
1728 # test whether building a shared library actually works
1729 if test $BLDSHARED = true; then
1731 AC_MSG_CHECKING([SHLD])
1732 AC_MSG_RESULT([$SHLD])
1733 AC_MSG_CHECKING([LDSHFLAGS])
1734 AC_MSG_RESULT([$LDSHFLAGS])
1736 AC_MSG_CHECKING([SHLIBEXT])
1737 AC_MSG_RESULT([$SHLIBEXT])
1738 AC_MSG_CHECKING([SONAMEFLAG])
1739 AC_MSG_RESULT([$SONAMEFLAG])
1741 AC_MSG_CHECKING([PICFLAG])
1742 AC_MSG_RESULT([$PICFLAG])
1744 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1745 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1747 AC_CACHE_CHECK([whether building shared libraries actually works],
1748                [ac_cv_shlib_works],[
1749    # try building a trivial shared library
1750    ac_cv_shlib_works=no
1751    # The $SHLD and $LDSHFLAGS variables may contain references to other
1752    # variables so they need to be eval'ed.
1753    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1754         shlib.o ${srcdir-.}/tests/shlib.c && \
1755    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1756         shlib.o && ac_cv_shlib_works=yes
1757    rm -f "shlib.$SHLIBEXT" shlib.o
1760 if test $ac_cv_shlib_works = no; then
1761    BLDSHARED=false
1765 if test x"$BLDSHARED" != x"true"; then
1766         LDSHFLAGS="shared-libraries-disabled"
1767         SONAMEFLAG="shared-libraries-disabled"
1768         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1769         SHLD="shared-libraries-disabled"
1770         PICFLAG="${PIE_CFLAGS}"
1771         SHLIBEXT="shared_libraries_disabled"
1774 AC_MSG_CHECKING([used PICFLAG])
1775 AC_MSG_RESULT([$PICFLAG])
1777 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1779 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1781 ################
1783 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1784 AC_TRY_RUN([#include <stdio.h>
1785 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1786 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1787 if test x"$samba_cv_have_longlong" = x"yes"; then
1788     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1789     AC_CHECK_TYPE(intptr_t, unsigned long long)
1790 else
1791     AC_CHECK_TYPE(intptr_t, unsigned long)
1795 # Check if the compiler supports the LL prefix on long long integers.
1796 # AIX needs this.
1798 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1799     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1800         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1801 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1802    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1806 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1807 AC_TRY_RUN([#include <time.h>
1808 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1809 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1810 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1811     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1814 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1815 AC_TRY_RUN([#include <stdio.h>
1816 #include <sys/stat.h>
1817 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1818 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1819 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1820     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1823 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1824 AC_TRY_RUN([
1825 #if defined(HAVE_UNISTD_H)
1826 #include <unistd.h>
1827 #endif
1828 #include <stdio.h>
1829 #include <sys/stat.h>
1830 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1831 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1832 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1833     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1836 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1837 AC_TRY_RUN([
1838 #if defined(HAVE_UNISTD_H)
1839 #include <unistd.h>
1840 #endif
1841 #include <stdio.h>
1842 #include <sys/stat.h>
1843 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1844 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1845 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1846     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1849 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1850 AC_TRY_RUN([
1851 #if defined(HAVE_UNISTD_H)
1852 #include <unistd.h>
1853 #endif
1854 #include <stdio.h>
1855 #include <sys/stat.h>
1856 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1857 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1858 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1859     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1862 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1863 AC_TRY_RUN([
1864 #if defined(HAVE_UNISTD_H)
1865 #include <unistd.h>
1866 #endif
1867 #include <stdio.h>
1868 #include <sys/stat.h>
1869 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1870 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1871 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1872     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1875 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1876 AC_TRY_RUN([
1877 #if defined(HAVE_UNISTD_H)
1878 #include <unistd.h>
1879 #endif
1880 #include <stdio.h>
1881 #include <sys/stat.h>
1882 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1883 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1884 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1885     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1888 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1889 AC_TRY_COMPILE([
1890 #if defined(HAVE_UNISTD_H)
1891 #include <unistd.h>
1892 #endif
1893 #include <sys/types.h>
1894 #include <dirent.h>],
1895 [DIR64 de;],
1896 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1897 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1898     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1901 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1902 AC_TRY_COMPILE([
1903 #if defined(HAVE_UNISTD_H)
1904 #include <unistd.h>
1905 #endif
1906 #include <sys/types.h>
1907 #include <dirent.h>],
1908 [struct dirent64 de;],
1909 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1910 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1911     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1914 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1915 AC_TRY_RUN([
1916 #if defined(HAVE_UNISTD_H)
1917 #include <unistd.h>
1918 #endif
1919 #include <sys/types.h>
1920 main() { dev_t dev; int i = major(dev); return 0; }],
1921 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1922 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1923     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1926 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1927 AC_TRY_RUN([
1928 #if defined(HAVE_UNISTD_H)
1929 #include <unistd.h>
1930 #endif
1931 #include <sys/types.h>
1932 main() { dev_t dev; int i = minor(dev); return 0; }],
1933 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1934 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1935     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1938 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1939 AC_TRY_RUN([
1940 #if defined(HAVE_UNISTD_H)
1941 #include <unistd.h>
1942 #endif
1943 #include <sys/types.h>
1944 main() { dev_t dev = makedev(1,2); return 0; }],
1945 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1946 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1947     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1950 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1951 AC_TRY_RUN([#include <stdio.h>
1952 main() { char c; c=250; exit((c > 0)?0:1); }],
1953 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1954 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1955     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1958 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1959 AC_TRY_COMPILE([#include <sys/types.h>
1960 #include <dirent.h>
1961 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1962 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1963 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1964     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1967 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1968 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1969 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1970 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1971     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1974 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1975 AC_TRY_LINK([
1976 #include <sys/time.h>
1977 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
1978            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
1979            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
1980 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1981     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
1984 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
1986     # On some systems (eg. Linux) librt can pull in libpthread. We
1987     # don't want this to happen because libpthreads changes signal delivery
1988     # semantics in ways we are not prepared for. This breaks Linux oplocks
1989     # which rely on signals.
1991     AC_LIBTESTFUNC(rt, clock_gettime,
1992             [
1993                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
1994                                 [Whether clock_gettime is available])
1995                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
1996                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
1997                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
1998                         ])
2002 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2003 AC_TRY_RUN([#include <sys/types.h>
2004 #include <dirent.h>
2005 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2006 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2007 di->d_name[0] == 0) exit(0); exit(1);} ],
2008 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2009 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2010     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2013 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2014 AC_TRY_COMPILE([#include <sys/types.h>
2015 #include <utime.h>],
2016 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2017 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2018 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2019     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2022 ##############
2023 # Check utmp details, but only if our OS offers utmp.h
2024 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2025 dnl  utmp and utmpx come in many flavours
2026 dnl  We need to check for many of them
2027 dnl  But we don't need to do each and every one, because our code uses
2028 dnl  mostly just the utmp (not utmpx) fields.
2030 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2032 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2033 AC_TRY_COMPILE([#include <sys/types.h>
2034 #include <utmp.h>],
2035 [struct utmp ut;  ut.ut_name[0] = 'a';],
2036 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2037 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2038     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2041 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2042 AC_TRY_COMPILE([#include <sys/types.h>
2043 #include <utmp.h>],
2044 [struct utmp ut;  ut.ut_user[0] = 'a';],
2045 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2046 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2047     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2050 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2051 AC_TRY_COMPILE([#include <sys/types.h>
2052 #include <utmp.h>],
2053 [struct utmp ut;  ut.ut_id[0] = 'a';],
2054 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2055 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2056     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2059 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2060 AC_TRY_COMPILE([#include <sys/types.h>
2061 #include <utmp.h>],
2062 [struct utmp ut;  ut.ut_host[0] = 'a';],
2063 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2064 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2065     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2068 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2069 AC_TRY_COMPILE([#include <sys/types.h>
2070 #include <utmp.h>],
2071 [struct utmp ut;  time_t t; ut.ut_time = t;],
2072 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2073 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2074     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2077 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2078 AC_TRY_COMPILE([#include <sys/types.h>
2079 #include <utmp.h>],
2080 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2081 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2082 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2083     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2086 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2087 AC_TRY_COMPILE([#include <sys/types.h>
2088 #include <utmp.h>],
2089 [struct utmp ut;  ut.ut_type = 0;],
2090 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2091 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2092     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2095 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2096 AC_TRY_COMPILE([#include <sys/types.h>
2097 #include <utmp.h>],
2098 [struct utmp ut;  ut.ut_pid = 0;],
2099 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2100 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2101     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2104 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2105 AC_TRY_COMPILE([#include <sys/types.h>
2106 #include <utmp.h>],
2107 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2108 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2109 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2110     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2113 dnl Look for the IPv6 varient by preference. Many systems have both.
2114 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2115 AC_TRY_COMPILE([#include <sys/types.h>
2116 #include <utmp.h>],
2117 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2118 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2119 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2120     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2123 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2124 AC_TRY_COMPILE([#include <sys/types.h>
2125 #include <utmp.h>],
2126 [struct utmp ut;  ut.ut_addr = 0;],
2127 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2128 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2129     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2132 if test x$ac_cv_func_pututline = xyes ; then
2133   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2134   AC_TRY_COMPILE([#include <sys/types.h>
2135 #include <utmp.h>],
2136   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2137   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2138   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2139       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2140   fi
2143 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2144 AC_TRY_COMPILE([#include <sys/types.h>
2145 #include <utmpx.h>],
2146 [struct utmpx ux;  ux.ut_syslen = 0;],
2147 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2148 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2149     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2153 # end utmp details
2156 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2157 AC_ARG_WITH(libiconv,
2158 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2160   if test "$withval" = "no" ; then
2161     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2162   else
2163      if test "$withval" != "yes" ; then
2164         ICONV_PATH_SPEC=yes
2165         ICONV_LOOK_DIRS="$withval"
2166      fi
2167   fi
2170 for i in $ICONV_LOOK_DIRS ; do
2172     save_LIBS="$LIBS"
2173     save_LDFLAGS="$LDFLAGS"
2174     save_CPPFLAGS="$CPPFLAGS"
2176     iconv_current_LIBS=""
2177     iconv_current_LDFLAGS=""
2178     iconv_current_CPPFLAGS=""
2180     ICONV_FOUND="no"
2181     unset libext
2183     #  This is here to handle -withval stuff for --with-libiconv
2184     #  Perhaps we should always add a -L
2185     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2187     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2188     # installation paths. This gets a little tricky since we might have iconv
2189     # in both libiconv and in libc. In this case the jm_ICONV test will always
2190     # succeed when the header is found. To counter this, make sure the
2191     # library directory is there and check the ABI directory first (which
2192     # should be harmless on other systems, but causes tons of linker warnings on
2193     # 64bit Ubuntu systems).
2194     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2195     # installed, I've decided to fix the linker warnings.
2196     # -- Kai
2197     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2198     for l in "lib" "lib32" "lib/hpux32"; do
2199         if test -d "$i/$l" ; then
2200                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2201                 LIBS=
2202                 export LDFLAGS LIBS CPPFLAGS
2203                 # Try to find iconv(3)
2204                 jm_ICONV($i/$l)
2205                 if test x"$ICONV_FOUND" = "xyes" ; then
2206                     libext="$l"
2207                     break
2208                 fi
2209         fi
2210     done
2212     if test x"$ICONV_FOUND" = "xyes" ; then
2213         iconv_current_LDFLAGS="-L$i/$libext"
2214         iconv_current_CPPFLAGS="-I$i/include"
2216         if test x"$jm_cv_lib_iconv" != x; then
2217             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2218         else
2219             # We found iconv in libc.
2220             iconv_current_LIBS=""
2221         fi
2223     fi
2225     if test x"$ICONV_FOUND" = "xyes" ; then
2227         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2228         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2229         LIBS="$save_LIBS $iconv_current_LIBS"
2230         export LDFLAGS LIBS CPPFLAGS
2232         default_dos_charset=no
2233         default_display_charset=no
2234         default_unix_charset=no
2236         # check for default dos charset name
2237         for j in CP850 IBM850 ; do
2238             rjs_CHARSET($j)
2239             default_dos_charset="$ICONV_CHARSET"
2240             if test x"$default_dos_charset" = x"$j"; then
2241                 break
2242             fi
2243         done
2245         # check for default display charset name
2246         for j in ASCII 646 ; do
2247             rjs_CHARSET($j)
2248             default_display_charset="$ICONV_CHARSET"
2249             if test x"$default_display_charset" = x"$j"; then
2250                 break
2251             fi
2252         done
2254         # check for default unix charset name
2255         for j in UTF-8 UTF8 ; do
2256             rjs_CHARSET($j)
2257             default_unix_charset="$ICONV_CHARSET"
2258             if test x"$default_unix_charset" = x"$j"; then
2259                 break
2260             fi
2261         done
2263         if test "$default_dos_charset" != "no" -a \
2264                 "$default_dos_charset" != "cross" -a \
2265                 "$default_display_charset" != "no" -a \
2266                 "$default_display_charset" != "cross" -a \
2267                 "$default_unix_charset" != "no" -a \
2268                 "$default_unix_charset" != "cross"
2269         then
2270                 samba_cv_HAVE_NATIVE_ICONV=yes
2271         else
2272             if test "$default_dos_charset" = "cross" -o \
2273                      "$default_display_charset" = "cross" -o \
2274                      "$default_unix_charset" = "cross"
2275             then
2276                     samba_cv_HAVE_NATIVE_ICONV=cross
2277             else
2278                     samba_cv_HAVE_NATIVE_ICONV=no
2279             fi
2280         fi
2282         # At this point, we have a libiconv candidate. We know that
2283         # we have the right headers and libraries, but we don't know
2284         # whether it does the conversions we want. We can't test this
2285         # because we are cross-compiling. This is not necessarily a big
2286         # deal, since we can't guarantee that the results we get now will
2287         # match the results we get at runtime anyway.
2288         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2289             default_dos_charset="CP850"
2290             default_display_charset="ASCII"
2291             default_unix_charset="UTF-8"
2292             samba_cv_HAVE_NATIVE_ICONV=yes
2293             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2294             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2295         fi
2297         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2299             CPPFLAGS=$save_CPPFLAGS
2300             LDFLAGS=$save_LDFLAGS
2301             LIBS=$save_LIBS
2303             if test x"$iconv_current_LIBS" != x; then
2304                 LIBS="$LIBS $iconv_current_LIBS"
2305             fi
2307             # Add the flags we need to CPPFLAGS and LDFLAGS
2308             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2309             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2311             # Turn the #defines into string literals
2312             default_dos_charset="\"$default_dos_charset\""
2313             default_display_charset="\"$default_display_charset\""
2314             default_unix_charset="\"$default_unix_charset\""
2316             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2317             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2318             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2319             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2321            break
2322         fi
2324     # We didn't find a working iconv, so keep going
2325     fi
2327     #  We only need to clean these up here for the next pass through the loop
2328     CPPFLAGS=$save_CPPFLAGS
2329     LDFLAGS=$save_LDFLAGS
2330     LIBS=$save_LIBS
2331     export LDFLAGS LIBS CPPFLAGS
2332 done
2333 unset libext
2336 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2337     AC_MSG_WARN([Sufficient support for iconv function was not found.
2338     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2339    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2340    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2341    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2345 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2346 AC_TRY_RUN([
2347 #include <sys/types.h>
2348 #include <fcntl.h>
2349 #ifndef F_GETLEASE
2350 #define F_GETLEASE      1025
2351 #endif
2352 main() {
2353        int fd = open("/dev/null", O_RDONLY);
2354        return fcntl(fd, F_GETLEASE, 0) == -1;
2357 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2358 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2359     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2362 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2363 AC_TRY_RUN([
2364 #include <sys/types.h>
2365 #include <fcntl.h>
2366 #include <signal.h>
2367 #ifndef F_NOTIFY
2368 #define F_NOTIFY 1026
2369 #endif
2370 main() {
2371         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2374 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2375 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2376     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2379 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2380 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2381 AC_CHECK_FUNCS(inotify_init)
2382 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2384 samba_cv_HAVE_INOTIFY=yes,
2385 samba_cv_HAVE_INOTIFY=no,
2386 samba_cv_HAVE_INOTIFY=cross)
2388 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2389     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2392 #################################################
2393 # Check if FAM notifications are available. For FAM info, see
2394 #       http://oss.sgi.com/projects/fam/
2395 #       http://savannah.nongnu.org/projects/fam/
2396 AC_ARG_ENABLE(fam,
2397 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2399 if test x$enable_fam != xno; then
2400     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2401     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2402         # On IRIX, libfam requires libC, but other FAM implementations
2403         # might not need it.
2404         AC_CHECK_LIB(fam, FAMOpen2,
2405             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2406             [samba_cv_HAVE_LIBFAM=no])
2408         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2409             samba_fam_xtra=-lC
2410             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2411                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2412                 [samba_cv_HAVE_LIBFAM=no])
2413             unset samba_fam_xtra
2414         fi
2415     fi
2417     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2418         default_shared_modules="$default_shared_modules vfs_notify_fam"
2419         AC_TRY_COMPILE([#include <fam.h>],
2420                     [FAMCodes code = FAMChanged;],
2421                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2422                         [Whether fam.h contains a typedef for enum FAMCodes]),
2423                     [])
2424     fi
2426     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2427         AC_MSG_ERROR(FAM support requested but FAM library not available )
2428     fi
2431 AC_SUBST(SMB_FAM_LIBS)
2433 #################################################
2434 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2436 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2438 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2439 # Theoretically it should work with AIX JFS2 too but this needs testing
2440 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2441     default_shared_modules="$default_shared_modules vfs_tsmsm"
2444 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2445 AC_TRY_RUN([
2446 #include <sys/types.h>
2447 #include <fcntl.h>
2448 #include <signal.h>
2449 #include <sys/file.h>
2450 #ifndef LOCK_MAND
2451 #define LOCK_MAND       32
2452 #define LOCK_READ       64
2453 #endif
2454 main() {
2455         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2458 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2459 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2460     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2464 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2465 AC_TRY_COMPILE([#include <sys/types.h>
2466 #include <fcntl.h>],
2467 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2468 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2469 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2470     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2473 #################################################
2474 # Check for POSIX capability support
2476 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2477     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2478     [], [])
2480 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2482     ac_save_LIBS=$LIBS
2483     AC_LIBTESTFUNC(cap, cap_get_proc)
2485     AC_CACHE_CHECK([for POSIX capabilities],
2486             samba_cv_HAVE_POSIX_CAPABILITIES,
2487             [
2488                 AC_TRY_RUN([
2489 #include <sys/types.h>
2490 #include <sys/capability.h>
2491 main() {
2492  cap_t cap;
2493  cap_value_t vals[1];
2494  if (!(cap = cap_get_proc()))
2495    exit(1);
2496  vals[0] = CAP_CHOWN;
2497  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2498  cap_set_proc(cap);
2499  exit(0);
2501                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2502                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2503                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2504             ])
2506 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2507     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2508             [Whether POSIX capabilities are available])
2509 else
2510     LIBS=$ac_save_LIBS
2516 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2517 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2520 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2521 AC_TRY_COMPILE([#include <sys/types.h>
2522 #if defined(HAVE_RPC_RPC_H)
2523 #include <rpc/rpc.h>
2524 #endif],
2525 [int16 testvar;],
2526 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2527 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2528     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2531 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2532 AC_TRY_COMPILE([#include <sys/types.h>
2533 #if defined(HAVE_RPC_RPC_H)
2534 #include <rpc/rpc.h>
2535 #endif],
2536 [uint16 testvar;],
2537 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2538 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2539     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2542 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2543 AC_TRY_COMPILE([#include <sys/types.h>
2544 #if defined(HAVE_RPC_RPC_H)
2545 #include <rpc/rpc.h>
2546 #endif],
2547 [int32 testvar;],
2548 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2549 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2550     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2553 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2554 AC_TRY_COMPILE([#include <sys/types.h>
2555 #if defined(HAVE_RPC_RPC_H)
2556 #include <rpc/rpc.h>
2557 #endif],
2558 [uint32 testvar;],
2559 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2560 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2561     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2565 dnl Some systems (SCO) have a problem including
2566 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2567 dnl as a #define in <prot.h> and as part of an enum
2568 dnl in <rpc/rpc.h>.
2571 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2572 AC_TRY_COMPILE([#include <sys/types.h>
2573 #ifdef HAVE_SYS_SECURITY_H
2574 #include <sys/security.h>
2575 #include <prot.h>
2576 #endif  /* HAVE_SYS_SECURITY_H */
2577 #if defined(HAVE_RPC_RPC_H)
2578 #include <rpc/rpc.h>
2579 #endif],
2580 [int testvar;],
2581 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2582 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2583     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2586 AC_MSG_CHECKING([for test routines])
2587 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2588            AC_MSG_RESULT(yes),
2589            AC_MSG_ERROR([cant find test code. Aborting config]),
2590            AC_MSG_WARN([cannot run when cross-compiling]))
2592 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2593 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2594            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2595 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2596     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2599 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2600 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2601            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2602 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2603     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2606 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2607 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2608 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2609 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2610 AC_CHECK_FUNCS(getpagesize)
2612 ################################################
2613 # look for a method of setting the effective uid
2614 seteuid=no;
2615 if test $seteuid = no; then
2616 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2617 AC_TRY_RUN([
2618 #define AUTOCONF_TEST 1
2619 #define USE_SETRESUID 1
2620 #include "confdefs.h"
2621 #include "${srcdir-.}/lib/util_sec.c"],
2622            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2623 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2624     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2629 if test $seteuid = no; then
2630 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2631 AC_TRY_RUN([
2632 #define AUTOCONF_TEST 1
2633 #define USE_SETREUID 1
2634 #include "confdefs.h"
2635 #include "${srcdir-.}/lib/util_sec.c"],
2636            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2637 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2638     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2642 if test $seteuid = no; then
2643 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2644 AC_TRY_RUN([
2645 #define AUTOCONF_TEST 1
2646 #define USE_SETEUID 1
2647 #include "confdefs.h"
2648 #include "${srcdir-.}/lib/util_sec.c"],
2649            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2650 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2651     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2655 if test $seteuid = no; then
2656 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2657 AC_TRY_RUN([
2658 #define AUTOCONF_TEST 1
2659 #define USE_SETUIDX 1
2660 #include "confdefs.h"
2661 #include "${srcdir-.}/lib/util_sec.c"],
2662            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2663 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2664     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2668 AC_CACHE_CHECK([for the Darwin initgroups system call],
2669         samba_cv_DARWIN_INITGROUPS,
2670         AC_TRY_LINK([
2671 #include <sys/syscall.h>
2672 #include <unistd.h>
2673         ],
2674         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2675         samba_cv_DARWIN_INITGROUPS=yes,
2676         samba_cv_DARWIN_INITGROUPS=no)
2679 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2680     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2681         [Whether to use the Darwin-specific initgroups system call])
2684 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2685 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2686            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2687 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2688     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2691 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2692 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2693            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2694 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2695     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2697 else
2700 dnl Don't check for 64 bit fcntl locking if we know that the
2701 dnl glibc2.1 broken check has succeeded.
2704   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2705   AC_TRY_RUN([
2706 #if defined(HAVE_UNISTD_H)
2707 #include <unistd.h>
2708 #endif
2709 #include <stdio.h>
2710 #include <stdlib.h>
2712 #ifdef HAVE_FCNTL_H
2713 #include <fcntl.h>
2714 #endif
2716 #ifdef HAVE_SYS_FCNTL_H
2717 #include <sys/fcntl.h>
2718 #endif
2719 main() { struct flock64 fl64;
2720 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2721 exit(0);
2722 #else
2723 exit(1);
2724 #endif
2726        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2728   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2729       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2730   fi
2733 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2734 AC_TRY_COMPILE([#include <sys/types.h>
2735 #include <sys/stat.h>
2736 #include <unistd.h>],
2737 [struct stat st;  st.st_blocks = 0;],
2738 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2739 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2740     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2743 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2744 AC_TRY_COMPILE([#include <sys/types.h>
2745 #include <sys/stat.h>
2746 #include <unistd.h>],
2747 [struct stat st;  st.st_blksize = 0;],
2748 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2749 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2750     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2753 AC_CACHE_CHECK([for st_flags in struct stat],
2754         samba_cv_HAVE_STAT_ST_FLAGS,
2755         [
2756             AC_TRY_COMPILE([#include <sys/types.h>
2757 #include <sys/stat.h>
2758 #include <unistd.h>],
2759             [struct stat st;  st.st_flags = 0;],
2760             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2761             samba_cv_HAVE_STAT_ST_FLAGS=no,
2762             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2763         ])
2765 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2766     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2767                 [Whether the stat struct has a st_flags member])
2770 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2771 AC_TRY_COMPILE([
2772 #include <sys/types.h>
2773 #include <sys/acl.h>
2774 #if defined(HAVE_RPCSVC_NIS_H)
2775 #include <rpcsvc/nis.h>
2776 #endif],
2777 [int i;],
2778 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2779 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2780         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2783 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2784 AC_TRY_RUN([
2785 #include <stdio.h>
2786 #include <limits.h>
2787 main() {
2788         char *newpath = realpath("/tmp", NULL);
2789         exit ((newpath != NULL) ? 0 : 1);
2792 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2793 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2794     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2797 #################################################
2798 # check for AFS clear-text auth support
2799 samba_cv_WITH_AFS=no
2800 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2801 AC_ARG_WITH(afs,
2802 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2803 [ case "$withval" in
2804   yes|auto)
2805     AC_MSG_RESULT($withval)
2806     samba_cv_WITH_AFS=$withval
2807     ;;
2808   *)
2809     AC_MSG_RESULT(no)
2810     ;;
2811   esac ],
2812   AC_MSG_RESULT(no)
2815 ####################################################
2816 # check for Linux-specific AFS fake-kaserver support
2817 samba_cv_WITH_FAKE_KASERVER=no
2818 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2819 AC_ARG_WITH(fake-kaserver,
2820 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2821 [ case "$withval" in
2822   yes|auto)
2823     AC_MSG_RESULT($withval)
2824     samba_cv_WITH_FAKE_KASERVER=$withval
2825     ;;
2826   *)
2827     AC_MSG_RESULT(no)
2828     ;;
2829   esac ],
2830   AC_MSG_RESULT(no)
2833 #################################################
2834 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2835 if test x"$samba_cv_WITH_AFS" != x"no" ||
2836    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2838     # see if this box has the afs-headers in /usr/include/afs
2839     AC_MSG_CHECKING(for /usr/include/afs)
2840     if test -d /usr/include/afs; then
2841           CFLAGS="$CFLAGS -I/usr/include/afs"
2842           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2843           AC_MSG_RESULT(yes)
2844     else
2845       AC_MSG_RESULT(no)
2846     fi
2848     # check for afs.h
2849     have_afs_headers=no
2850     AC_CHECK_HEADERS(afs.h afs/afs.h)
2851     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2852         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2853            test x"$samba_cv_WITH_AFS" = x"auto"; then
2854                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2855         else
2856                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2857         fi
2858     else
2859         have_afs_headers=yes
2860     fi
2863 FAKE_KASERVER_OBJ=""
2864 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2865     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2866     FAKE_KASERVER_OBJ="utils/net_afs.o"
2868 AC_SUBST(FAKE_KASERVER_OBJ)
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_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_ticket_has_keyinfo=yes ],
3381             [ smb_krb5_ticket_has_keyinfo=no ])
3382         ])
3384   if test x"$smb_krb5_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_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_creds_opt_free_context=yes],
3400                     [smb_krb5_creds_opt_free_context=no]
3401                 )
3402           ])
3404   if test x"$smb_krb5_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_verify_checksum, [
3410     AC_TRY_COMPILE([
3411         #include <krb5.h>],
3412         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3413         [smb_krb5_verify_checksum=7],
3414         [smb_krb5_verify_checksum=6],
3415     )
3416   ])
3417   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_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_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_enctype_to_string_takes_krb5_context_arg=yes,
3752                 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
3754     if test x"$smb_krb5_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_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_enctype_to_string_takes_size_t_arg=yes,
3770                 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
3772     if test x"$smb_krb5_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_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 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5722         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5723         ## Only worry about libwbclient if we have shared library support
5724         ## and winbindd
5725         LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
5726         LIBWBCLIENT=libwbclient
5727         INSTALL_LIBWBCLIENT=installlibwbclient
5728         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5729         WINBIND_LIBS="-lwbclient"
5730 else
5731         LIBWBCLIENT_STATIC=bin/libwbclient.a
5734 if test x"$HAVE_WINBIND" = x"yes"; then
5735         AC_MSG_RESULT(yes)
5736         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5738         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5739         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5740         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5741                 PAM_MODULES="$PAM_MODULES pam_winbind"
5742                 INSTALL_PAM_MODULES="installpammodules"
5743                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5744         fi
5745 else
5746         AC_MSG_RESULT(no$winbind_no_reason)
5749 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5750                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5752 AC_SUBST(WINBIND_NSS_PTHREAD)
5753 AC_SUBST(WINBIND_NSS)
5754 AC_SUBST(WINBIND_WINS_NSS)
5755 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5756 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5757 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5758 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5759 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5761 AC_SUBST(WINBIND_KRB5_LOCATOR)
5763 # Solaris 10 does have new member in nss_XbyY_key
5764 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5765                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5766                 [#include <nss_dbdefs.h>])
5768 # Solaris has some extra fields in struct passwd that need to be
5769 # initialised otherwise nscd crashes.
5771 AC_CHECK_MEMBER(struct passwd.pw_comment,
5772                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5773                 [#include <pwd.h>])
5775 AC_CHECK_MEMBER(struct passwd.pw_age,
5776                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5777                 [#include <pwd.h>])
5779 # AIX 4.3.x and 5.1 do not have as many members in
5780 # struct secmethod_table as AIX 5.2
5781 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5782        [#include <usersec.h>])
5783 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5784        [#include <usersec.h>])
5786 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5787 AC_TRY_COMPILE([#include <sys/types.h>
5788 #include <sys/socket.h>],
5789 [struct ucred cred;
5790  socklen_t cred_len;
5791  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5793 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5794 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5795     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5799 #################################################
5800 # Check to see if we should use the included popt
5802 AC_ARG_WITH(included-popt,
5803 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5805   case "$withval" in
5806         yes)
5807                 INCLUDED_POPT=yes
5808                 ;;
5809         no)
5810                 INCLUDED_POPT=no
5811                 ;;
5812   esac ],
5814 if test x"$INCLUDED_POPT" != x"yes"; then
5815     AC_CHECK_LIB(popt, poptGetContext,
5816                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5819 AC_MSG_CHECKING(whether to use included popt)
5820 if test x"$INCLUDED_POPT" = x"yes"; then
5821     AC_MSG_RESULT(yes)
5822     BUILD_POPT='$(POPT_OBJ)'
5823     POPTLIBS='$(POPT_OBJ)'
5824     FLAGS1="-I\$(srcdir)/popt"
5825 else
5826     AC_MSG_RESULT(no)
5827         BUILD_POPT=""
5828     POPTLIBS="-lpopt"
5830 AC_SUBST(BUILD_POPT)
5831 AC_SUBST(POPTLIBS)
5832 AC_SUBST(FLAGS1)
5834 #################################################
5835 # Check if user wants DNS service discovery support
5837 AC_ARG_ENABLE(dnssd,
5838 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5840 AC_SUBST(DNSSD_LIBS)
5841 if test x"$enable_dnssd" != x"no"; then
5842     have_dnssd_support=yes
5844     AC_CHECK_HEADERS(dns_sd.h)
5845     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5846         have_dnssd_support=no
5847     fi
5849     # On Darwin the DNSSD API is in libc, but on other platforms it's
5850     # probably in -ldns_sd
5851     AC_CHECK_FUNCS(DNSServiceRegister)
5852     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5853     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5854             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5855         have_dnssd_support=no
5856     fi
5858     if test x"$have_dnssd_support" = x"yes"; then
5859         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5860                 [Whether to enable DNS service discovery support])
5861     else
5862         if test x"$enable_dnssd" = x"yes"; then
5863             AC_MSG_ERROR(DNS service discovery support not available)
5864         fi
5865     fi
5869 #################################################
5870 # Check to see if we should use the included iniparser
5872 AC_ARG_WITH(included-iniparser,
5873 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5875   case "$withval" in
5876         yes)
5877                 INCLUDED_INIPARSER=yes
5878                 ;;
5879         no)
5880                 INCLUDED_INIPARSER=no
5881                 ;;
5882   esac ],
5884 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5885     AC_CHECK_LIB(iniparser, iniparser_load,
5886                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5889 AC_MSG_CHECKING(whether to use included iniparser)
5890 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5891     AC_MSG_RESULT(yes)
5892     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5893         INIPARSERLIBS=""
5894     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5895 else
5896     AC_MSG_RESULT(no)
5897         BUILD_INIPARSER=""
5898     INIPARSERLIBS="-liniparser"
5900 AC_SUBST(BUILD_INIPARSER)
5901 AC_SUBST(INIPARSERLIBS)
5902 AC_SUBST(FLAGS1)
5906 # Checks for the vfs_fileid module
5907 # Start
5908 AC_CHECK_FUNC(getmntent)
5910 AC_CHECK_HEADERS(sys/statfs.h)
5912 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
5913 AC_CACHE_VAL(vfsfileid_cv_statfs,[
5914              AC_TRY_RUN([
5915                 #include <sys/types.h>
5916                 #include <sys/statfs.h>
5917                 int main(void)
5918                 {
5919                         struct statfs fsd;
5920                         fsid_t fsid = fsd.f_fsid;
5921                         return statfs (".", &fsd);
5922                 }],
5923                 vfsfileid_cv_statfs=yes,
5924                 vfsfileid_cv_statfs=no,
5925                 vfsfileid_cv_statfs=cross)
5927 AC_MSG_RESULT($vfsfileid_cv_statfs)
5929 if test x"$ac_cv_func_getmntent" = x"yes" -a \
5930         x"$vfsfileid_cv_statfs" = x"yes"; then
5931         default_shared_modules="$default_shared_modules vfs_fileid"
5933 # End
5934 # Checks for the vfs_fileid module
5937 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5939         eval MODULE_DEFAULT_$i=STATIC
5940 done
5942 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5944         dnl Fall back to static if we cannot build shared libraries
5945         eval MODULE_DEFAULT_$i=STATIC
5947         if test $BLDSHARED = true; then
5948                 eval MODULE_DEFAULT_$i=SHARED
5949         fi
5950 done
5952 dnl Always build these modules static
5953 MODULE_rpc_spoolss=STATIC
5954 MODULE_rpc_srvsvc=STATIC
5955 MODULE_idmap_tdb=STATIC
5956 MODULE_idmap_passdb=STATIC
5957 MODULE_idmap_nss=STATIC
5959 MODULE_nss_info_template=STATIC
5961 AC_ARG_WITH(static-modules,
5962 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
5963 [ if test $withval; then
5964         for i in `echo $withval | sed -e 's/,/ /g'`
5965         do
5966                 eval MODULE_$i=STATIC
5967         done
5968 fi ])
5970 AC_ARG_WITH(shared-modules,
5971 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
5972 [ if test $withval; then
5973         for i in `echo $withval | sed -e 's/,/ /g'`
5974         do
5975                         eval MODULE_$i=SHARED
5976         done
5977 fi ])
5979 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
5980                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5981 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5982 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5983 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5986 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5987 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5988 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
5989 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
5990 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5991 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
5992 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
5993 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5994 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5995 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
5996 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5997 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
5998 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5999 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6000 SMB_SUBSYSTEM(RPC,smbd/server.o)
6002 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6003 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6004 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6005 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6006 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6007 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6008 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6009 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6011 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6012 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6014 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6015 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6016 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6017 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6018 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6020 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6021 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6022 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6023 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6024 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6025 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6026 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6027 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6029 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6030 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6031 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6032 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6033 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6034 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6035 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6036 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6037 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6038 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6039 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6040 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6041 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6042 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6043 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6044 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6045 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6046 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6047 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6048 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6049 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6050 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6051 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6052 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6053 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6054 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6055 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6056 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6057 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6058 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6059 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6060 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6061 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6062 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6063 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6064 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6067 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6069 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6070 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6071 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6073 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6075 #################################################
6076 # do extra things if we are running insure
6078 if test "${ac_cv_prog_CC}" = "insure"; then
6079         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6082 #################################################
6083 # If run from the build farm, enable NASTY hacks
6084 #################################################
6085 AC_MSG_CHECKING(whether to enable build farm hacks)
6086 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6087         AC_MSG_RESULT(yes)
6088         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6089 else
6090         AC_MSG_RESULT(no)
6093 #################################################
6094 # check for bad librt/libpthread interactions
6096 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6097     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6098     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6099     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6101 SMB_IF_RTSIGNAL_BUG(
6102         [
6103             # Have RT_SIGNAL bug, need to check whether the problem will
6104             # affect anything we have configured.
6106             rt_do_error=no
6107             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6108                 if test x"$rt_signal_lease_ok" = x"no" ; then
6109                     rt_do_error=yes
6110                 fi
6111             fi
6113             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6114                 if test x"$rt_signal_notify_ok" = x"no" ; then
6115                     rt_do_error=yes
6116                 fi
6117             fi
6119             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6120                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6121                 if test x"$rt_signal_aio_ok" = x"no" ; then
6122                     rt_do_error=yes
6123                 fi
6124             fi
6126             if test x"$rt_do_error" = x"yes" ; then
6127                 SMB_IS_LIBPTHREAD_LINKED(
6128                     [
6129                         cat<<MSG
6131 *** On this platforms, linking Samba against pthreads causes problems
6132 *** with the oplock and change notification mechanisms. You may be
6133 *** using pthreads as a side-effect of using the --with-aio-support
6134 *** or --with-profiling-data options. Please remove these and try again.
6137                     ],
6138                     [
6139                         cat<<MSG
6141 *** On this platform, the oplock and change notification mechanisms do not
6142 *** appear to work. Please report this problem to samba-technical@samba.org
6143 *** and attach the config.log file from this directory.
6146                     ])
6147                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6148             fi
6149         ],
6150         [
6151             # no RT_SIGNAL bug, we are golden
6152             SMB_IS_LIBPTHREAD_LINKED(
6153                 [
6154                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6155                 ])
6157         ],
6158         [
6159             # cross compiling, I hope you know what you are doing
6160             true
6161         ])
6165 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6166 LIB_REMOVE_USR_LIB(LDFLAGS)
6167 LIB_REMOVE_USR_LIB(LIBS)
6168 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6170 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6171 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6172 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6174 #################################################
6175 # Display summary of libraries detected
6177 AC_MSG_RESULT([Using libraries:])
6178 AC_MSG_RESULT([    LIBS = $LIBS])
6179 if test x"$with_ads_support" != x"no"; then
6180     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6182 if test x"$with_ldap_support" != x"no"; then
6183     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6185 if test x"$with_dnsupdate_support" != x"no"; then
6186     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6188 if test x"$have_dnssd_support" != x"no"; then
6189     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6191 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6193 #################################################
6194 # final configure stuff
6196 AC_MSG_CHECKING([configure summary])
6197 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6198            AC_MSG_RESULT(yes),
6199            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6200            AC_MSG_WARN([cannot run when cross-compiling]))
6202 dnl Merge in developer cflags from now on
6203 AC_SUBST(DEVELOPER_CFLAGS)
6204 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6205     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6208 # Stuff the smbd-only libraries at the end of the smbd link
6209 # path (if we have them).
6210 SMBD_LIBS="$samba_dmapi_libs"
6211 AC_SUBST(SMBD_LIBS)
6213 AC_OUTPUT(Makefile library-versions
6214           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6215           lib/netapi/examples/Makefile
6216           pkgconfig/smbclient.pc
6217           pkgconfig/wbclient.pc
6218           pkgconfig/netapi.pc
6219           pkgconfig/smbsharemodes.pc
6220           )
6222 #################################################
6223 # Print very concise instructions on building/use
6224 if test "x$enable_dmalloc" = xyes
6225 then
6226         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6227         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])