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