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