look for nanosleep in librt, some Unix flavours have it there
[ira/wip.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
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 LIBTALLOC_OBJ0=""
29 for obj in ${TALLOC_OBJ}; do
30         LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(LIBTALLOC_OBJ0)
33
34 m4_include(../lib/tevent/libtevent.m4)
35
36 LIBTEVENT_OBJ0=""
37 for obj in ${TEVENT_OBJ}; do
38         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
39 done
40 AC_SUBST(LIBTEVENT_OBJ0)
41 LIBS="${LIBS} ${TEVENT_LIBS}"
42
43 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
44 # but currently this fails: things have to get merged from s4.
45 tdbdir="../lib/tdb"
46 AC_SUBST(tdbdir)
47 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
48 AC_SUBST(TDB_CFLAGS)
49
50 LIBTDB_OBJ0=""
51 for o in common/tdb.o common/dump.o common/transaction.o common/error.o \
52              common/traverse.o common/freelist.o common/freelistcheck.o \
53                  common/io.o common/lock.o common/open.o; 
54 do 
55         LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o"
56 done
57
58 AC_SUBST(LIBTDB_OBJ0)
59 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
60 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
61 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
62 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
63 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
64 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
65 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
66 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
67
68 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
69
70 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
71 if test "x${srcdir-.}" != "x."; then
72         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
73 fi
74
75 dnl Unique-to-Samba variables we'll be playing with.
76 AC_SUBST(SAMBA_CPPFLAGS)
77 AC_SUBST(SHELL)
78 AC_SUBST(LDSHFLAGS)
79 AC_SUBST(SONAMEFLAG)
80 AC_SUBST(SHLD)
81 AC_SUBST(MODULE_EXPORTS)
82 AC_SUBST(DSO_EXPORTS)
83 AC_SUBST(HOST_OS)
84 AC_SUBST(PICFLAG)
85 AC_SUBST(PIE_CFLAGS)
86 AC_SUBST(PIE_LDFLAGS)
87 AC_SUBST(RELRO_LDFLAGS)
88 AC_SUBST(SHLIBEXT)
89 AC_SUBST(INSTALLLIBCMD_SH)
90 AC_SUBST(INSTALLLIBCMD_A)
91 AC_SUBST(UNINSTALLLIBCMD_SH)
92 AC_SUBST(UNINSTALLLIBCMD_A)
93
94 AC_SUBST(INSTALL_LIBWBCLIENT)
95 AC_SUBST(UNINSTALL_LIBWBCLIENT)
96 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
97 AC_SUBST(LIBWBCLIENT_SHARED)
98 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
99 AC_SUBST(LIBWBCLIENT_STATIC)
100 AC_SUBST(LIBWBCLIENT_SOVER)
101 AC_SUBST(LIBWBCLIENT)
102 AC_SUBST(WINBIND_LIBS)
103
104 AC_SUBST(LIBSAMBAUTIL_SHARED)
105
106 AC_SUBST(PRINT_LIBS)
107 AC_SUBST(AUTH_LIBS)
108 AC_SUBST(ACL_LIBS)
109 AC_SUBST(PASSDB_LIBS)
110 AC_SUBST(IDMAP_LIBS)
111 AC_SUBST(KRB5_LIBS)
112 AC_SUBST(UUID_LIBS)
113 AC_SUBST(LDAP_LIBS)
114 AC_SUBST(GPEXT_LIBS)
115 AC_SUBST(PAM_MODULES)
116 AC_SUBST(INSTALL_PAM_MODULES)
117 AC_SUBST(UNINSTALL_PAM_MODULES)
118 AC_SUBST(NSS_MODULES)
119 AC_SUBST(EXTRA_BIN_PROGS)
120 AC_SUBST(CIFSMOUNT_PROGS)
121 AC_SUBST(INSTALL_CIFSMOUNT)
122 AC_SUBST(UNINSTALL_CIFSMOUNT)
123 AC_SUBST(CIFSUPCALL_PROGS)
124 AC_SUBST(INSTALL_CIFSUPCALL)
125 AC_SUBST(UNINSTALL_CIFSUPCALL)
126 AC_SUBST(EXTRA_SBIN_PROGS)
127 AC_SUBST(EXTRA_ALL_TARGETS)
128 AC_SUBST(CONFIG_LIBS)
129 AC_SUBST(NSCD_LIBS)
130
131 # compile with optimization and without debugging by default, but
132 # allow people to set their own preference.
133 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
134 # if it has no value.  This prevent *very* large debug binaries from occurring
135 # by default.
136 if test "x$CFLAGS" = x; then
137   CFLAGS="-O"
138 fi
139 if test "x$debug" = "xyes" ; then
140         CFLAGS="${CFLAGS} -g"
141 else
142         CFLAGS="${CFLAGS} -O"
143 fi
144
145 m4_include(../lib/socket_wrapper/config.m4)
146 m4_include(../lib/nss_wrapper/config.m4)
147
148 m4_include(m4/swat.m4)
149
150 # Probe the gcc version for extra CFLAGS. We always stash these in
151 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
152 # Makefile edit, avoiding the need to re-run configure.
153 if test x"$ac_cv_prog_gcc" = x"yes" ; then
154         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
155         # Add -Wdeclaration-after-statement if compiler supports it
156         AC_CACHE_CHECK(
157           [that the C compiler understands -Wdeclaration-after-statement],
158           samba_cv_HAVE_Wdeclaration_after_statement, [
159           AC_TRY_RUN_STRICT([
160             int main(void)
161             {
162                 return 0;
163             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
164             samba_cv_HAVE_Wdeclaration_after_statement=yes,
165             samba_cv_HAVE_Wdeclaration_after_statement=no,
166             samba_cv_HAVE_Wdeclaration_after_statement=cross)
167        ])
168
169         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
170             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
171         fi
172
173         #-Werror-implicit-function-declaration
174         AC_CACHE_CHECK(
175           [that the C compiler understands -Werror-implicit-function-declaration],
176           samba_cv_HAVE_Werror_implicit_function_declaration, [
177           AC_TRY_RUN_STRICT([
178             int main(void)
179             {
180                 return 0;
181             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
182             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
183             samba_cv_HAVE_Werror_implicit_function_declaration=no,
184             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
185        ])
186        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
187             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
188        fi
189
190         # krb5developer is like developer, except we don't get
191         # -Wstrict-prototypes.
192        if test x"$krb5_developer" != x"$yes" ; then
193             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
194        fi
195
196        if test x"$picky_developer" = x"yes"; then
197             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
198        fi
199 fi
200
201 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
202
203 if test "x$enable_dmalloc" = xyes
204 then
205         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
206         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
207                   [Define to check invariants around some common functions])
208         LIBS="$LIBS -ldmalloc"  
209 fi
210
211 #################################################
212 # check for a shared memory profiling support
213 AC_MSG_CHECKING(whether to use profiling)
214 AC_ARG_WITH(profiling-data,
215 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
216 [ case "$withval" in
217   yes)
218     AC_MSG_RESULT(yes)
219     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
220     samba_cv_WITH_PROFILE=yes
221     ;;
222   *)
223     AC_MSG_RESULT(no)
224     samba_cv_WITH_PROFILE=no
225     ;;
226   esac ],
227   AC_MSG_RESULT(no)
228 )
229
230 dnl Checks for programs.
231 merged_build_possible=yes
232
233 AC_PROG_INSTALL
234 AC_PROG_AWK
235 # Check for GNU make
236 m4_include(../m4/check_make.m4)
237 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
238
239 # Check for perl
240 m4_include(../m4/check_perl.m4)
241 AC_SAMBA_PERL([true], [merged_build_possible=no])
242
243 AC_CHECK_TOOL(AR, ar)
244
245 dnl Check if we use GNU ld
246 LD=ld
247 AC_PROG_LD_GNU
248
249 dnl Certain versions of GNU ld the default is not to have the
250 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
251 dnl warnings when building modules.
252 if test "$ac_cv_prog_gnu_ld" = "yes"; then
253         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
254         AC_MSG_CHECKING(GNU ld release date)
255         changequote(,)dnl
256         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'`
257         changequote([,])dnl
258         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
259         if test -n "$ac_cv_gnu_ld_date"; then
260         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
261                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
262         fi
263         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
264                 ac_cv_gnu_ld_version_script=yes
265         fi
266         else
267            AC_MSG_CHECKING(GNU ld release version)
268            changequote(,)dnl
269            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
270            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
271            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
272            changequote([,])dnl
273            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
274            AC_MSG_CHECKING(GNU ld release version major)
275            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
276            AC_MSG_CHECKING(GNU ld release version minor)
277            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
278            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
279              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
280            fi
281            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
282              ac_cv_gnu_ld_version_script=yes
283            fi
284         fi
285 fi
286
287 dnl look for executable suffix
288 AC_EXEEXT
289
290 dnl Check if C compiler understands -c and -o at the same time
291 AC_PROG_CC_C_O
292 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
293       BROKEN_CC=
294 else
295       BROKEN_CC=#
296 fi
297 AC_SUBST(BROKEN_CC)
298
299 dnl Check if the C compiler understands -Werror
300 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
301  AC_TRY_RUN_STRICT([
302   int main(void)
303   {
304         return 0;
305   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
306   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
307 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
308    Werror_FLAGS="-Werror"
309 else
310 dnl Check if the C compiler understands -w2
311 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
312  AC_TRY_RUN_STRICT([
313   int main(void)
314   {
315         return 0;
316   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
317   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
318 if test x"$samba_cv_HAVE_w2" = x"yes"; then
319    Werror_FLAGS="-w2"
320 else
321 dnl Check if the C compiler understands -errwarn
322 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
323   AC_TRY_RUN_STRICT([
324    int main(void)
325    {
326         return 0;
327    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
328    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
329 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
330    Werror_FLAGS="-errwarn=%all"
331 fi
332 fi
333 fi
334
335 ############################################
336 # check if the compiler can handle negative enum values
337 # and don't truncate the values to INT_MAX
338 # a runtime test is needed here
339 AC_SUBST(PIDL_ARGS)
340 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
341     AC_TRY_RUN(
342 [
343         #include <stdio.h>
344         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
345         int main(void) {
346                 enum negative_values v1 = NEGATIVE_VALUE;
347                 unsigned v2 = NEGATIVE_VALUE;
348
349                 if (v1 != 0xFFFFFFFF) {
350                         printf("%u != 0xFFFFFFFF\n", v1);
351                         return 1;
352                 }
353                 if (v2 != 0xFFFFFFFF) {
354                         printf("%u != 0xFFFFFFFF\n", v2);
355                         return 1;
356                 }
357
358                 return 0;
359         }
360 ],
361         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
362 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
363         AC_MSG_WARN([using --uint-enums for pidl])
364         PIDL_ARGS="$PIDL_ARGS --uint-enums"
365 fi
366
367 dnl Figure out the flags to support named structure initializers
368
369 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
370
371 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
372 AC_MSG_CHECKING(uname -s)
373 AC_MSG_RESULT(${UNAME_S})
374
375 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
376 AC_MSG_CHECKING(uname -r)
377 AC_MSG_RESULT(${UNAME_R})
378
379 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
380 AC_MSG_CHECKING(uname -m)
381 AC_MSG_RESULT(${UNAME_M})
382
383 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
384 AC_MSG_CHECKING(uname -p)
385 AC_MSG_RESULT(${UNAME_P})
386
387 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
388 AC_MSG_CHECKING(uname -i)
389 AC_MSG_RESULT(${UNAME_I})
390
391 dnl Add #include for broken IRIX header files
392   case "$host_os" in
393         *irix6*)
394                 #TODO add to libreplace
395                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
396                         dnl Fix sensible defaults for MIPSPro compilers. The
397                         dnl error numbers are valid for the 7.3 compilers,
398                         dnl hopefully also valid for the 7.4 series.
399                         dnl
400                         dnl Bugzilla 3801. Force an error on warning 1035
401                         dnl so we don't incorrectly detect stdint.h. This
402                         dnl warning is emitted for #error directives.
403                         CFLAGS="$CFLAGS -diag_error 1035"
404                         dnl 1209: Controlling expression is constant
405                         dnl 1174: Function foo declared but never referenced
406                         dnl 3201: Parameter foo was never referenced
407                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
408                 fi
409         ;;
410 esac
411
412 DYNEXP=
413 AC_SUBST(DYNEXP)
414
415 dnl Add modules that have to be built by default here
416 dnl These have to be built static:
417 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss2 rpc_eventlog auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
418
419 dnl These are preferably build shared, and static if dlopen() is not available
420 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer"
421
422 if test "x$developer" = xyes; then
423    default_static_modules="$default_static_modules rpc_rpcecho"
424    default_shared_modules="$default_shared_modules charset_weird"
425 fi
426
427 #
428 # Config CPPFLAG settings for strange OS's that must be set
429 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
430 # case statement; its first reference must be unconditional.
431 #
432 case "$host_os" in
433     *hpux*)
434 #
435 # Defines needed for HPUX support.
436 # HPUX has bigcrypt but (sometimes?) doesn't use it for
437 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
438 #
439       case `uname -r` in
440                 *9*|*10*|*11)
441                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
442                 ;;
443       esac
444       ;;
445
446 #
447 # CRAY Unicos has broken const handling
448        *unicos*)
449           AC_MSG_RESULT([disabling const])
450           CPPFLAGS="$CPPFLAGS -Dconst="
451           ;;
452         
453 #
454 # AIX4.x doesn't even admit to having large
455 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
456 #
457     *aix4*)
458           AC_MSG_RESULT([enabling large file support])
459       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
460           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
461       ;;
462 #
463 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
464 # to the existance of large files..
465 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
466 # recommendations on large file support, however it makes the
467 # compile work using gcc 2.7 and 2.8, whereas using the Sun
468 # recommendation makes the compile fail on gcc2.7. JRA.
469 #
470 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
471 #
472         *solaris*)
473                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
474                 case `uname -r` in
475                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
476                                 AC_MSG_RESULT([no large file support])
477                                 ;;
478                         5.*)
479                         AC_MSG_RESULT([enabling large file support])
480                         if test "$ac_cv_prog_gcc" = yes; then
481                                 ${CC-cc} -v >conftest.c 2>&1
482                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
483                                 rm -fr conftest.c
484                                 case "$ac_cv_gcc_compiler_version_number" in
485                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
486                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
487                                                 LDFLAGS="$LDFLAGS -lthread"
488                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
489                                                 ;;
490                                         *)
491                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
492                                                 LDFLAGS="$LDFLAGS -lthread"
493                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
494                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
495                                                 ;;
496                                 esac
497                         else
498                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
499                                 LDFLAGS="$LDFLAGS -lthread"
500                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
501                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
502                         fi
503                         ;;
504                 esac
505                 ;;
506 #
507 # IRIX uses SYSV printing.  Make sure to set that here
508 #
509         *irix*)
510                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
511                 ;;
512         *freebsd*|*dragonfly*)
513                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
514                 ;;
515 #
516 # VOS may need to have POSIX support and System V compatibility enabled.
517 #
518     *vos*)
519     case "$CPPFLAGS" in
520           *-D_POSIX_C_SOURCE*)
521                 ;;
522           *)
523                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
524                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
525                 ;;
526     esac
527     case "$CPPFLAGS" in
528           *-D_SYSV*|*-D_SVID_SOURCE*)
529                 ;;
530           *)
531                 CPPFLAGS="$CPPFLAGS -D_SYSV"
532                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
533     esac
534     ;;
535 #
536 # Tests needed for SINIX large file support.
537 #
538     *sysv4*)
539       if test $host = mips-sni-sysv4 ; then
540         AC_MSG_CHECKING([for LFS support])
541         old_CPPFLAGS="$CPPFLAGS"
542         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
543         AC_TRY_RUN([
544 #include <unistd.h>
545 main () {
546 #if _LFS64_LARGEFILE == 1
547 exit(0);
548 #else
549 exit(1);
550 #endif
551 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
552         CPPFLAGS="$old_CPPFLAGS"
553         if test x$SINIX_LFS_SUPPORT = xyes ; then
554           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
555                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
556           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
557           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
558           LIBS="`getconf LFS64_LIBS` $LIBS"
559         fi
560       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
561       fi
562     ;;
563
564 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
565 #
566     *linux*)
567         AC_MSG_CHECKING([for LFS support])
568         old_CPPFLAGS="$CPPFLAGS"
569         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
570        AC_TRY_RUN([
571 #include <unistd.h>
572 #include <sys/utsname.h>
573 #include <string.h>
574 #include <stdlib.h>
575 main() {
576 #if _LFS64_LARGEFILE == 1
577        struct utsname uts;
578        char *release;
579        int major, minor;
580
581        /* Ensure this is glibc 2.2 or higher */
582 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
583        int libc_major = __GLIBC__;
584        int libc_minor = __GLIBC_MINOR__;
585
586        if (libc_major < 2)
587               exit(1);
588        if (libc_minor < 2)
589               exit(1);
590 #endif
591
592        /* Ensure this is kernel 2.4 or higher */
593
594        uname(&uts);
595        release = strdup(uts.release);
596        major = atoi(strsep(&release, "."));
597        minor = atoi(strsep(&release, "."));
598
599        if (major > 2 || (major == 2 && minor > 3))
600                exit(0);
601        exit(1);
602 #else
603        exit(1);
604 #endif
605 }
606 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
607         CPPFLAGS="$old_CPPFLAGS"
608         if test x$LINUX_LFS_SUPPORT = xyes ; then
609                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
610                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
611                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
612                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
613         fi
614         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
615         ;;
616
617 #
618 # MacOS X is the *only* system that uses compose character in utf8. This
619 # is so horribly broken....
620 #
621     *darwin*)
622         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
623
624 # Add a system specific charset module.
625         default_shared_modules="$default_shared_modules charset_macosxfs"
626
627         ;;
628     *hurd*)
629         AC_MSG_CHECKING([for LFS support])
630         old_CPPFLAGS="$CPPFLAGS"
631         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
632         AC_TRY_RUN([
633 #include <unistd.h>
634 main () {
635 #if _LFS64_LARGEFILE == 1
636 exit(0);
637 #else
638 exit(1);
639 #endif
640 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
641         CPPFLAGS="$old_CPPFLAGS"
642         if test x$GLIBC_LFS_SUPPORT = xyes ; then
643           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
644                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
645           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
646         fi
647       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
648     ;;
649
650 esac
651
652 SAVE_CPPFLAGS="${CPPFLAGS}"
653 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
654
655 AC_LIBREPLACE_BROKEN_CHECKS
656 AC_LIBREPLACE_NETWORK_CHECKS
657
658 CPPFLAGS="${SAVE_CPPFLAGS}"
659
660 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
661
662 LIBREPLACE_OBJS=""
663 for obj in ${LIBREPLACEOBJ}; do
664         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
665 done
666 AC_SUBST(LIBREPLACE_OBJS)
667
668 # add -ldl to the global LIBS
669 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
670 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
671
672
673 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
674 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
675 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
676 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
677 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
678 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
679 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
680 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
681 AC_CHECK_HEADERS(sys/sysmacros.h)
682 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
683 AC_CHECK_HEADERS(langinfo.h locale.h)
684 AC_CHECK_HEADERS(xfs/libxfs.h)
685 AC_CHECK_HEADERS(netgroup.h)
686
687 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
688 #if HAVE_RPC_RPC_H
689 #include <rpc/rpc.h>
690 #endif
691 ]])
692
693 ## These fail to compile on IRIX so just check for their presence
694 AC_CHECK_HEADERS(sys/mode.h,,,)
695
696 # Look for Darwin headers
697 old_CPPFLAGS="$CPPFLAGS"
698 CPPFLAGS="-Iinclude $CPPFLAGS"
699 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
700 CPPFLAGS="$old_CPPFLAGS"
701
702 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
703 # subdirectory of headers.
704 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
705
706 # check for linux on amd64 since valgrind is not quite there yet
707 case "$host_os" in
708         *linux*)
709                 case "$UNAME_P" in
710                         *x86_64*)
711                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
712                                 ;;
713                 esac
714                 ;;
715 esac
716
717
718 #
719 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
720 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
721 #
722 case "$host_os" in
723     *hpux*)
724                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
725                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
726                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
727                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
728                 fi
729         ;;
730 esac
731 AC_CHECK_HEADERS(shadow.h)
732 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
733 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
734
735 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
736 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
737
738 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
739
740 # For experimental utmp support (lastlog on some BSD-like systems)
741 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
742
743 AC_CHECK_SIZEOF(int,cross)
744 AC_CHECK_SIZEOF(long,cross)
745 AC_CHECK_SIZEOF(long long,cross)
746 AC_CHECK_SIZEOF(short,cross)
747
748 AC_C_CONST
749 AC_C_INLINE
750 AC_C_BIGENDIAN
751 AC_C_CHAR_UNSIGNED
752
753 AC_TYPE_SIGNAL
754 AC_TYPE_UID_T
755 AC_TYPE_MODE_T
756 AC_TYPE_OFF_T
757 AC_TYPE_SIZE_T
758 AC_TYPE_PID_T
759 AC_STRUCT_ST_RDEV
760 AC_DIRENT_D_OFF
761 AC_CHECK_TYPE(ssize_t, int)
762 AC_CHECK_TYPE(wchar_t, unsigned short)
763
764 ############################################
765 # for cups support we need libcups, and a handful of header files
766
767 AC_ARG_ENABLE(cups,
768 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
769
770 if test x$enable_cups != xno; then
771         AC_PATH_PROG(CUPS_CONFIG, cups-config)
772
773         if test "x$CUPS_CONFIG" != x; then
774
775                 ac_save_CFLAGS=$CFLAGS
776                 ac_save_LDFLAGS=$LDFLAGS
777                 ac_save_PRINT_LIBS=$PRINT_LIBS
778                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
779                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
780                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
781                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
782                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
783                         x"$ac_cv_header_cups_language_h" = xyes; then
784                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
785                         samba_cv_HAVE_CUPS=yes
786                 else
787                         AC_MSG_WARN([cups-config around but cups-devel not installed])
788                         CFLAGS=$ac_save_CFLAGS
789                         LDFLAGS=$ac_save_LDFLAGS
790                         PRINT_LIBS=$ac_save_PRINT_LIBS
791                 fi
792
793         elif test x"$enable_cups" = x"yes"; then
794                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
795         fi
796 fi
797
798 AC_ARG_ENABLE(iprint,
799 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
800
801 if test x$enable_iprint != xno; then
802         if test x"$samba_cv_HAVE_CUPS" = xyes; then
803                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
804         elif test x"$enable_iprint" = x"yes"; then
805                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
806         fi
807 fi
808
809 ############################################
810 # check if the compiler will optimize out function calls
811 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
812     AC_TRY_LINK([
813 #include <stdio.h>],
814 [
815                 if (0) {
816                    this_function_does_not_exist();
817                 } else {
818                   return 1;
819                 }
820
821 ],
822         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
823 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
824    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
825 fi
826
827 #############################################
828 # check for fd passing struct via msg_control
829 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
830     AC_TRY_COMPILE([
831 #include <sys/types.h>
832 #include <stdlib.h>
833 #include <stddef.h>
834 #include <sys/socket.h>
835 #include <sys/un.h>],
836 [
837         struct msghdr msg;
838         union {
839               struct cmsghdr cm;
840               char control[CMSG_SPACE(sizeof(int))];
841         } control_un;
842         msg.msg_control = control_un.control;
843         msg.msg_controllen = sizeof(control_un.control);
844 ],
845         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
846 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
847    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
848              [If we can use msg_control for passing file descriptors])
849 fi
850
851 #############################################
852 # check for fd passing struct via msg_acctrights
853 AC_CACHE_CHECK([for fd passing via msg_acctrights],
854                 samba_cv_msghdr_msg_acctrights, [
855     AC_TRY_COMPILE([
856 #include <sys/types.h>
857 #include <stdlib.h>
858 #include <stddef.h>
859 #include <sys/socket.h>
860 #include <sys/un.h>],
861 [
862         struct msghdr msg;
863         int fd;
864         msg.msg_acctrights = (caddr_t) &fd;
865         msg.msg_acctrightslen = sizeof(fd);
866 ],
867         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
868 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
869    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
870              [If we can use msg_acctrights for passing file descriptors])
871 fi
872
873 AC_CHECK_FUNCS(dirfd)
874 if test x"$ac_cv_func_dirfd" = x"yes"; then
875         default_shared_modules="$default_shared_modules vfs_syncops"
876 fi
877
878 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
879     AC_TRY_COMPILE([
880 #include <sys/types.h>
881 #if STDC_HEADERS
882 #include <stdlib.h>
883 #include <stddef.h>
884 #endif
885 #include <signal.h>],[struct sigevent s;],
886         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
887 if test x"$samba_cv_struct_sigevent" = x"yes"; then
888    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
889    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
890         [#include <signal.h>])
891 fi
892
893 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
894     AC_TRY_COMPILE([
895 #include <sys/types.h>
896 #if STDC_HEADERS
897 #include <stdlib.h>
898 #include <stddef.h>
899 #endif
900 #if TIME_WITH_SYS_TIME
901 # include <sys/time.h>
902 # include <time.h>
903 #else
904 # if HAVE_SYS_TIME_H
905 #  include <sys/time.h>
906 # else
907 #  include <time.h>
908 # endif
909 #endif
910 ],[struct timespec ts;],
911         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
912 if test x"$samba_cv_struct_timespec" = x"yes"; then
913    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
914 fi
915
916 # and glibc has setresuid under linux but the function does
917 # nothing until kernel 2.1.44! very dumb.
918 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
919     AC_TRY_RUN([#include <errno.h>
920 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
921         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
922 if test x"$samba_cv_have_setresuid" = x"yes"; then
923     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
924 fi
925
926 # Do the same check for setresguid...
927 #
928 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
929     AC_TRY_RUN([#include <unistd.h>
930 #include <errno.h>
931 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
932         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
933 if test x"$samba_cv_have_setresgid" = x"yes"; then
934     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
935 fi
936
937 AC_FUNC_MEMCMP
938
939 ###############################################
940 # Readline included by default unless explicitly asked not to
941 test "${with_readline+set}" != "set" && with_readline=yes
942
943 # test for where we get readline() from
944 AC_MSG_CHECKING(whether to use readline)
945 AC_ARG_WITH(readline,
946 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
947 [  case "$with_readline" in
948   yes)
949     AC_MSG_RESULT(yes)
950
951     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
952     AC_CHECK_HEADERS(readline/history.h)
953
954     AC_CHECK_HEADERS(readline.h readline/readline.h,[
955       for termlib in ncurses curses termcap terminfo termlib tinfo; do
956        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
957       done
958       AC_CHECK_LIB(readline, rl_callback_handler_install,
959        [TERMLIBS="-lreadline $TERMLIBS"
960        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
961        break], [TERMLIBS=], $TERMLIBS)])
962     ;;
963   no)
964     AC_MSG_RESULT(no)
965     ;;
966   *)
967     AC_MSG_RESULT(yes)
968
969     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
970     # alternate readline path
971     _ldflags=${LDFLAGS}
972     _cppflags=${CPPFLAGS}
973
974     # Add additional search path
975     LDFLAGS="-L$with_readline/lib $LDFLAGS"
976     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
977
978     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
979     AC_CHECK_HEADERS(readline/history.h)
980
981     AC_CHECK_HEADERS(readline.h readline/readline.h,[
982       for termlib in ncurses curses termcap terminfo termlib; do
983        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
984       done
985       AC_CHECK_LIB(readline, rl_callback_handler_install,
986        [TERMLDFLAGS="-L$with_readline/lib"
987        TERMCPPFLAGS="-I$with_readline/include"
988        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
989        TERMLIBS="-lreadline $TERMLIBS"
990        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
991        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
992
993     LDFLAGS=$_ldflags
994     ;;
995   esac],
996   AC_MSG_RESULT(no)
997 )
998 AC_SUBST(TERMLIBS)
999 AC_SUBST(TERMLDFLAGS)
1000
1001 # The readline API changed slightly from readline3 to readline4, so
1002 # code will generate warnings on one of them unless we have a few
1003 # special cases.
1004 AC_CHECK_LIB(readline, rl_completion_matches,
1005              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1006                         [Do we have rl_completion_matches?])],
1007              [],
1008              [$TERMLIBS])
1009
1010 # not all readline libs have rl_event_hook or history_list
1011 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1012 AC_CHECK_LIB(readline, history_list,
1013              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1014              [],
1015              [$TERMLIBS])
1016
1017 ###############################################
1018 # test for where we get yp_get_default_domain() from
1019 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1020 AC_CHECK_FUNCS(yp_get_default_domain)
1021
1022 # Check if we have execl, if not we need to compile smbrun.
1023 AC_CHECK_FUNCS(execl)
1024 if test x"$ac_cv_func_execl" = x"no"; then
1025     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1026 fi
1027
1028 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1029 AC_CHECK_FUNCS(strtol)
1030 AC_CHECK_FUNCS(strchr chflags)
1031 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1032 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1033 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1034 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1035 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1036 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1037 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1038 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1039 AC_CHECK_FUNCS(getpwent_r)
1040 AC_CHECK_FUNCS(getdents64)
1041 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1042 AC_CHECK_FUNCS(syslog vsyslog timegm)
1043 AC_CHECK_FUNCS(setlocale nl_langinfo)
1044 AC_CHECK_FUNCS(nanosleep)
1045 AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)
1046 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1047 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1048 AC_CHECK_HEADERS(sys/mman.h)
1049 # setbuffer, shmget, shm_open are needed for smbtorture
1050 AC_CHECK_FUNCS(shmget shm_open)
1051 AC_CHECK_FUNCS(gettext dgettext)
1052
1053 # Find a method of generating a stack trace
1054 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1055 # libexecinfo provides backtrace_symbols on FreeBSD
1056 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1057 AC_CHECK_FUNCS(backtrace_symbols)
1058 AC_CHECK_LIB(exc, trace_back_stack)
1059
1060 printf "%s" "checking for GPFS GPL libs... "
1061 save_LIBS="$LIBS"
1062 LIBS="$LIBS -lgpfs_gpl"
1063 AC_TRY_LINK([#include <gpfs_gpl.h>],
1064           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1065           samba_cv_HAVE_GPFS=yes,
1066           samba_cv_HAVE_GPFS=no)
1067 echo $samba_cv_HAVE_GPFS
1068 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1069     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1070     default_shared_modules="$default_shared_modules vfs_gpfs"
1071 fi
1072 LIBS="$save_LIBS"
1073
1074 printf "%s" "checking for GPFS libs (with 3.2.1 PTF8 available as GPL)... "
1075 save_LIBS="$LIBS"
1076 LIBS="$LIBS -lgpfs"
1077 AC_TRY_LINK([#include <gpfs.h>],
1078           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1079           samba_cv_HAVE_GPFS=yes,
1080           samba_cv_HAVE_GPFS=no)
1081 echo $samba_cv_HAVE_GPFS
1082 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1083     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1084     default_shared_modules="$default_shared_modules vfs_gpfs"
1085 fi
1086 LIBS="$save_LIBS"
1087
1088 #############################################
1089 # check if building on Isilon OneFS
1090 printf "%s" "checking for Isilon OneFS... "
1091 save_LIBS="$LIBS"
1092 LIBS="$LIBS -lisi_version"
1093 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1094           [get_isilon_copyright()],
1095           samba_cv_HAVE_ONEFS=yes,
1096           samba_cv_HAVE_ONEFS=no)
1097 echo $samba_cv_HAVE_ONEFS
1098 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1099     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1100     default_shared_modules="$default_shared_modules vfs_onefs"
1101     ONEFS_LIBS="-lisi_acl"
1102 fi
1103 AC_SUBST(ONEFS_LIBS)
1104 LIBS="$save_LIBS"
1105
1106 # Note that all the libunwind symbols in the API are defined to internal
1107 # platform-specific version, so we must include libunwind.h before checking
1108 # any of them.
1109 AC_MSG_CHECKING([for libunwind])
1110 save_LIBS=$LIBS
1111
1112 UNWIND_ARCH="unknown"
1113 if test x"$UNAME_I" != x"unknown"; then
1114         UNWIND_ARCH="$UNAME_I"
1115 elif test x"$UNAME_M" != x"unknown"; then
1116         UNWIND_ARCH="$UNAME_M"
1117 elif test x"$UNAME_P" != x"unknown"; then
1118         UNWIND_ARCH="$UNAME_P"
1119 fi
1120
1121 case "$UNWIND_ARCH" in
1122         unknown)
1123                 # This probably won't link without
1124                 # the platform-specific libunwind.
1125                 LIBS="$LIBS -lunwind"
1126                 ;;
1127         i386|i586|i686)
1128                 # Add the platform-specific libunwind module.
1129                 LIBS="$LIBS -lunwind -lunwind-x86"
1130                 ;;
1131         *)
1132                 # Add the platform-specific libunwind module.
1133                 # based on uname -i, uname -m or uname -p
1134                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1135                 ;;
1136 esac
1137
1138 AC_TRY_LINK(
1139     [
1140 #ifdef HAVE_LIBUNWIND_H
1141 #include <libunwind.h>
1142 #endif
1143     ],
1144     [
1145         unw_context_t ctx; unw_cursor_t cur;
1146         char buf[256]; unw_word_t off;
1147         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1148         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1149     ],
1150     [
1151         AC_MSG_RESULT(yes)
1152         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1153
1154         # If we have libunwind, test whether we also have libunwind-ptrace
1155         # which would let us unwind arbitrary processes.
1156         save_LIBS=$LIBS
1157         AC_CHECK_HEADERS(libunwind-ptrace.h)
1158         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1159             [
1160                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1161                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1162                     [Whether libunwind-ptrace.a is available.])
1163             ],
1164             [ LIBUNWIND_PTRACE="" ])
1165
1166         LIBS=$save_LIBS
1167     ],
1168     [
1169         AC_MSG_RESULT(no)
1170         LIBS=$save_LIBS
1171     ])
1172
1173 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1174 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1175     AC_CHECK_HEADERS(sys/ptrace.h)
1176     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1177     AC_TRY_LINK(
1178             [
1179 #if HAVE_SYS_TYPES_H
1180 #include <sys/types.h>
1181 #endif
1182 #if HAVE_SYS_PTRACE_H
1183 #include <sys/ptrace.h>
1184 #endif
1185             ],
1186             [
1187                 int main(int argc, const char ** argv)
1188                 {
1189                         pid_t me = (pid_t)-1;
1190                         ptrace(PTRACE_ATTACH, me, 0, 0);
1191                         ptrace(PTRACE_DETACH, me, 0, 0);
1192                         return 0;
1193                 }
1194             ],
1195             [
1196                 AC_MSG_RESULT(yes)
1197                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1198                     [Whether the Linux ptrace(2) interface is available.])
1199             ],
1200             [
1201                 AC_MSG_RESULT(no)
1202                 LIBUNWIND_PTRACE=""
1203             ])
1204 fi
1205
1206 AC_SUBST(LIBUNWIND_PTRACE)
1207
1208 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1209 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1210 AC_CHECK_FUNCS(__getcwd _getcwd)
1211 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1212 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1213 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1214 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1215 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1216 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1217 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1218 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1219 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1220 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1221 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1222 AC_CHECK_FUNCS(prctl)
1223
1224 AC_TRY_COMPILE([
1225 #ifdef HAVE_SYS_PRCTL_H
1226 #include <sys/prctl.h>
1227 #endif
1228 ],
1229 [int i; i = prtcl(0); ],
1230 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1231
1232 #
1233 #
1234 #
1235 case "$host_os" in
1236     *linux*)
1237        # glibc <= 2.3.2 has a broken getgrouplist
1238        AC_TRY_RUN([
1239 #include <unistd.h>
1240 #include <sys/utsname.h>
1241 main() {
1242        /* glibc up to 2.3 has a broken getgrouplist */
1243 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1244        int libc_major = __GLIBC__;
1245        int libc_minor = __GLIBC_MINOR__;
1246
1247        if (libc_major < 2)
1248               exit(1);
1249        if ((libc_major == 2) && (libc_minor <= 3))
1250               exit(1);
1251 #endif
1252        exit(0);
1253 }
1254 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1255        if test x"$linux_getgrouplist_ok" = x"yes"; then
1256           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1257        fi
1258        ;;
1259     *)
1260        AC_CHECK_FUNCS(getgrouplist)
1261        ;;
1262 esac
1263
1264 #
1265 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1266 #
1267
1268 if test x$ac_cv_func_stat64 = xno ; then
1269   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1270   AC_TRY_LINK([
1271 #if defined(HAVE_UNISTD_H)
1272 #include <unistd.h>
1273 #endif
1274 #include <sys/stat.h>
1275 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1276   AC_MSG_RESULT([$ac_cv_func_stat64])
1277   if test x$ac_cv_func_stat64 = xyes ; then
1278     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1279   fi
1280 fi
1281
1282 if test x$ac_cv_func_lstat64 = xno ; then
1283   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1284   AC_TRY_LINK([
1285 #if defined(HAVE_UNISTD_H)
1286 #include <unistd.h>
1287 #endif
1288 #include <sys/stat.h>
1289 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1290   AC_MSG_RESULT([$ac_cv_func_lstat64])
1291   if test x$ac_cv_func_lstat64 = xyes ; then
1292     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1293   fi
1294 fi
1295
1296 if test x$ac_cv_func_fstat64 = xno ; then
1297   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1298   AC_TRY_LINK([
1299 #if defined(HAVE_UNISTD_H)
1300 #include <unistd.h>
1301 #endif
1302 #include <sys/stat.h>
1303 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1304   AC_MSG_RESULT([$ac_cv_func_fstat64])
1305   if test x$ac_cv_func_fstat64 = xyes ; then
1306     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1307   fi
1308 fi
1309
1310 #################################################
1311 # Check whether struct stat has timestamps with sub-second resolution.
1312 # At least IRIX and Solaris have these.  FREEBSD does as well,
1313 # but with different members
1314 #
1315 # We check that
1316 #       all of st_mtim, st_atim and st_ctim exist
1317 #       all of the members are in fact of type struct timespec
1318 #
1319 # There is some conflicting standards weirdness about whether we should use
1320 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1321 # prefer struct timespec.
1322 AC_CACHE_CHECK([whether struct stat has timespec timestamps],
1323     samba_cv_stat_timespec_hires,
1324       [
1325       AC_TRY_COMPILE(
1326           [
1327 #if TIME_WITH_SYS_TIME
1328 # include <sys/time.h>
1329 # include <time.h>
1330 #else
1331 # if HAVE_SYS_TIME_H
1332 #  include <sys/time.h>
1333 # else
1334 #  include <time.h>
1335 # endif
1336 #endif
1337 #ifdef HAVE_SYS_STAT_H
1338 #include <sys/stat.h>
1339 #endif
1340           ],
1341           [
1342           struct timespec t;
1343           struct stat s = {0};
1344           t = s.st_mtimespec;
1345           t = s.st_ctimespec;
1346           t = s.st_atimespec;
1347         ],
1348       samba_cv_stat_timespec_hires=yes, samba_cv_stat_timespec_hires=no)
1349       ])
1350
1351 if test x"$samba_cv_stat_timespec_hires" = x"yes" ; then
1352     AC_DEFINE(HAVE_STAT_ST_MTIMESPEC, 1, [whether struct stat contains st_mtimepec])
1353     AC_DEFINE(HAVE_STAT_ST_ATIMESPEC, 1, [whether struct stat contains st_atimespec])
1354     AC_DEFINE(HAVE_STAT_ST_CTIMESPEC, 1, [whether struct stat contains st_ctimespec])
1355     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1, [whether struct stat has sub-second timestamps])
1356 fi
1357
1358
1359
1360 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1361     [
1362         AC_TRY_COMPILE(
1363             [
1364 #if TIME_WITH_SYS_TIME
1365 # include <sys/time.h>
1366 # include <time.h>
1367 #else
1368 # if HAVE_SYS_TIME_H
1369 #  include <sys/time.h>
1370 # else
1371 #  include <time.h>
1372 # endif
1373 #endif
1374 #ifdef HAVE_SYS_STAT_H
1375 #include <sys/stat.h>
1376 #endif
1377             ],
1378             [
1379                 struct timespec t;
1380                 struct stat s = {0};
1381                 t.tv_sec = s.st_mtim.tv_sec;
1382                 t.tv_nsec = s.st_mtim.tv_nsec;
1383                 t.tv_sec = s.st_ctim.tv_sec;
1384                 t.tv_nsec = s.st_ctim.tv_nsec;
1385                 t.tv_sec = s.st_atim.tv_sec;
1386                 t.tv_nsec = s.st_atim.tv_nsec;
1387             ],
1388             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1389     ])
1390
1391 if test x"$samba_cv_stat_hires" = x"yes" ; then
1392     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1393     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1394     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1395     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1396             [whether struct stat has sub-second timestamps])
1397 fi
1398
1399 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed nsec], samba_cv_stat_hires_notimespec,
1400     [
1401         AC_TRY_COMPILE(
1402             [
1403 #if TIME_WITH_SYS_TIME
1404 # include <sys/time.h>
1405 # include <time.h>
1406 #else
1407 # if HAVE_SYS_TIME_H
1408 #  include <sys/time.h>
1409 # else
1410 #  include <time.h>
1411 # endif
1412 #endif
1413 #ifdef HAVE_SYS_STAT_H
1414 #include <sys/stat.h>
1415 #endif
1416             ],
1417             [
1418                 struct timespec t;
1419                 struct stat s = {0};
1420                 t.tv_sec = s.st_mtime;
1421                 t.tv_nsec = s.st_mtimensec;
1422                 t.tv_sec = s.st_ctime;
1423                 t.tv_nsec = s.st_ctimensec;
1424                 t.tv_sec = s.st_atime;
1425                 t.tv_nsec = s.st_atimensec;
1426             ],
1427             samba_cv_stat_hires_notimespec=yes, samba_cv_stat_hires_notimespec=no)
1428     ])
1429
1430 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1431     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1432     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1433     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1434     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1435             [whether struct stat has sub-second timestamps without struct timespec suffixed nsec])
1436 fi
1437
1438 dnl AIX stype sub-second timestamps:
1439 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed _n], samba_cv_stat_hires_notimespec_n,
1440     [
1441         AC_TRY_COMPILE(
1442             [
1443 #if TIME_WITH_SYS_TIME
1444 # include <sys/time.h>
1445 # include <time.h>
1446 #else
1447 # if HAVE_SYS_TIME_H
1448 #  include <sys/time.h>
1449 # else
1450 #  include <time.h>
1451 # endif
1452 #endif
1453 #ifdef HAVE_SYS_STAT_H
1454 #include <sys/stat.h>
1455 #endif
1456             ],
1457             [
1458                 struct timespec t;
1459                 struct stat s = {0};
1460                 t.tv_sec = s.st_mtime;
1461                 t.tv_nsec = s.st_mtime_n;
1462                 t.tv_sec = s.st_ctime;
1463                 t.tv_nsec = s.st_ctime_n;
1464                 t.tv_sec = s.st_atime;
1465                 t.tv_nsec = s.st_atime_n;
1466             ],
1467             samba_cv_stat_hires_notimespec_n=yes, samba_cv_stat_hires_notimespec_n=no)
1468     ])
1469
1470 if test x"$samba_cv_stat_hires_notimespec_n" = x"yes" ; then
1471     AC_DEFINE(HAVE_STAT_ST_MTIME_N, 1, [whether struct stat contains st_mtime_n])
1472     AC_DEFINE(HAVE_STAT_ST_ATIME_N, 1, [whether struct stat contains st_atime_n])
1473     AC_DEFINE(HAVE_STAT_ST_CTIME_N, 1, [whether struct stat contains st_ctime_n])
1474     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1475             [whether struct stat has sub-second timestamps without struct timespec suffixed _n])
1476 fi
1477
1478 dnl Tru64 has _micro_second_ resolution:
1479 AC_CACHE_CHECK([whether struct stat has sub-second timestamps in st_uXtime], samba_cv_stat_hires_uxtime,
1480     [
1481         AC_TRY_COMPILE(
1482             [
1483 #if TIME_WITH_SYS_TIME
1484 # include <sys/time.h>
1485 # include <time.h>
1486 #else
1487 # if HAVE_SYS_TIME_H
1488 #  include <sys/time.h>
1489 # else
1490 #  include <time.h>
1491 # endif
1492 #endif
1493 #ifdef HAVE_SYS_STAT_H
1494 #include <sys/stat.h>
1495 #endif
1496             ],
1497             [
1498                 struct timespec t;
1499                 struct stat s = {0};
1500                 t.tv_sec = s.st_mtime;
1501                 t.tv_nsec = s.st_umtime * 1000;
1502                 t.tv_sec = s.st_ctime;
1503                 t.tv_nsec = s.st_uctime * 1000;
1504                 t.tv_sec = s.st_atime;
1505                 t.tv_nsec = s.st_uatime * 1000;
1506             ],
1507             samba_cv_stat_hires_uxtime=yes, samba_cv_stat_hires_uxtime=no)
1508     ])
1509
1510 if test x"$samba_cv_stat_hires_uxtime" = x"yes" ; then
1511     AC_DEFINE(HAVE_STAT_ST_UMTIME, 1, [whether struct stat contains st_umtime])
1512     AC_DEFINE(HAVE_STAT_ST_UATIME, 1, [whether struct stat contains st_uatime])
1513     AC_DEFINE(HAVE_STAT_ST_UCTIME, 1, [whether struct stat contains st_uctime])
1514     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1515             [whether struct stat has sub-second timestamps in st_uXtime])
1516 fi
1517
1518 AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1519     [
1520         AC_TRY_COMPILE(
1521             [
1522 #if TIME_WITH_SYS_TIME
1523 # include <sys/time.h>
1524 # include <time.h>
1525 #else
1526 # if HAVE_SYS_TIME_H
1527 #  include <sys/time.h>
1528 # else
1529 #  include <time.h>
1530 # endif
1531 #endif
1532 #ifdef HAVE_SYS_STAT_H
1533 #include <sys/stat.h>
1534 #endif
1535             ],
1536             [
1537                 struct timespec t;
1538                 struct stat s = {0};
1539                 t = s.st_birthtimespec;
1540             ],
1541             samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_st_birthtimespec=no)
1542     ])
1543
1544 if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1545     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1546 fi
1547
1548 AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
1549     [
1550         AC_TRY_COMPILE(
1551             [
1552 #if TIME_WITH_SYS_TIME
1553 # include <sys/time.h>
1554 # include <time.h>
1555 #else
1556 # if HAVE_SYS_TIME_H
1557 #  include <sys/time.h>
1558 # else
1559 #  include <time.h>
1560 # endif
1561 #endif
1562 #ifdef HAVE_SYS_STAT_H
1563 #include <sys/stat.h>
1564 #endif
1565             ],
1566             [
1567                 struct timespec t;
1568                 struct stat s = {0};
1569                 t.tv_nsec = s.st_birthtimensec;
1570             ],
1571             samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_st_birthtimensec=no)
1572     ])
1573
1574 if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1575     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1576 fi
1577
1578 AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
1579     [
1580         AC_TRY_COMPILE(
1581             [
1582 #if TIME_WITH_SYS_TIME
1583 # include <sys/time.h>
1584 # include <time.h>
1585 #else
1586 # if HAVE_SYS_TIME_H
1587 #  include <sys/time.h>
1588 # else
1589 #  include <time.h>
1590 # endif
1591 #endif
1592 #ifdef HAVE_SYS_STAT_H
1593 #include <sys/stat.h>
1594 #endif
1595             ],
1596             [
1597                 struct time_t t;
1598                 struct stat s = {0};
1599                 t = s.st_birthtime;
1600             ],
1601             samba_cv_stat_st_birthtime=yes, samba_cv_stat_st_birthtime=no)
1602     ])
1603
1604 if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1605     AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1606 fi
1607
1608 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1609     [
1610         AC_TRY_COMPILE(
1611             [#include <sys/stat.h>],
1612             [
1613                 int a = UF_DOS_ARCHIVE;
1614                 int h = UF_DOS_HIDDEN;
1615                 int r = UF_DOS_RO;
1616                 int s = UF_DOS_SYSTEM;
1617                 int i = UF_DOS_NOINDEX;
1618                 int f = UF_DOS_FLAGS;
1619             ],
1620             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1621     ])
1622
1623 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1624     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1625 fi
1626
1627 #####################################
1628 # needed for SRV lookups
1629 AC_CHECK_LIB(resolv, dn_expand)
1630 AC_CHECK_LIB(resolv, _dn_expand)
1631 AC_CHECK_LIB(resolv, __dn_expand)
1632
1633 #
1634 # Check for the functions putprpwnam, set_auth_parameters,
1635 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1636 # Needed for OSF1 and HPUX.
1637 #
1638
1639 AC_LIBTESTFUNC(security, putprpwnam)
1640 AC_LIBTESTFUNC(sec, putprpwnam)
1641
1642 AC_LIBTESTFUNC(security, set_auth_parameters)
1643 AC_LIBTESTFUNC(sec, set_auth_parameters)
1644
1645 # UnixWare 7.x has its getspnam in -lgen
1646 AC_LIBTESTFUNC(gen, getspnam)
1647
1648 AC_LIBTESTFUNC(security, getspnam)
1649 AC_LIBTESTFUNC(sec, getspnam)
1650
1651 AC_LIBTESTFUNC(security, bigcrypt)
1652 AC_LIBTESTFUNC(sec, bigcrypt)
1653
1654 AC_LIBTESTFUNC(security, getprpwnam)
1655 AC_LIBTESTFUNC(sec, getprpwnam)
1656
1657 AC_CHECK_FUNCS(strsignal)
1658
1659 ############################################
1660 # Check if we have libattr
1661 case "$host_os" in
1662   *osf*)
1663         AC_SEARCH_LIBS(getproplist, [proplist])
1664         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1665         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1666         AC_CHECK_FUNCS(sizeof_proplist_entry)
1667   ;;
1668   *)
1669         AC_SEARCH_LIBS(getxattr, [attr])
1670         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1671         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1672         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1673         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1674         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1675         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1676         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1677   ;;
1678 esac
1679
1680 ########################################################
1681 # Check if attropen() is present if this is Solaris
1682 case "$host_os" in
1683   *solaris*)
1684         AC_CHECK_FUNCS(attropen)
1685   ;;
1686 esac
1687
1688 ########################################################
1689 # Do xattr functions take additional options like on Darwin?
1690 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1691         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1692                 old_LIBS=$LIBS
1693                 LIBS="$LIBS $ACL_LIBS"
1694                 AC_TRY_COMPILE([
1695                         #include <sys/types.h>
1696                         #if HAVE_ATTR_XATTR_H
1697                         #include <attr/xattr.h>
1698                         #elif HAVE_SYS_XATTR_H
1699                         #include <sys/xattr.h>
1700                         #endif
1701                 ],[
1702                         getxattr(0, 0, 0, 0, 0, 0);
1703                 ],
1704                 [smb_attr_cv_xattr_add_opt=yes],
1705                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1706         ])
1707         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1708                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1709         fi
1710 fi
1711
1712 # Check if we have extattr
1713 case "$host_os" in
1714   *freebsd4* | *dragonfly* )
1715     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1716     ;;
1717   *)
1718     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1719     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1720     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1721     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1722     ;;
1723 esac
1724
1725 AC_DISABLE_STATIC
1726 AC_ENABLE_SHARED
1727
1728 # Set defaults
1729 PIE_CFLAGS=""
1730 PIE_LDFLAGS=""
1731 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1732
1733 if test "x$enable_pie" != xno
1734 then
1735         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1736         [
1737                 cat > conftest.c <<EOF
1738 int foo;
1739 main () { return 0;}
1740 EOF
1741                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1742                 then
1743                         samba_cv_fpie=yes
1744                 else
1745                         samba_cv_fpie=no
1746                 fi
1747                 rm -f conftest*
1748         ])
1749         if test x"${samba_cv_fpie}" = x"yes"
1750         then
1751                 PIE_CFLAGS="-fPIE"
1752                 PIE_LDFLAGS="-pie"
1753         fi
1754 fi
1755
1756 # Set defaults
1757 RELRO_LDFLAGS=""
1758 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1759
1760 if test "x$enable_relro" != xno
1761 then
1762         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1763         [
1764                 cat > conftest.c <<EOF
1765 int foo;
1766 main () { return 0;}
1767 EOF
1768                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1769                 then
1770                         samba_cv_relro=yes
1771                 else
1772                         samba_cv_relro=no
1773                 fi
1774                 rm -f conftest*
1775         ])
1776         if test x"${samba_cv_relro}" = x"yes"
1777         then
1778                 RELRO_LDFLAGS="-Wl,-z,relro"
1779         fi
1780 fi
1781
1782 # Set defaults
1783 SYMSEXT="syms"
1784 AC_SUBST(SYMSEXT)
1785
1786 # Assume non-shared by default and override below
1787 BLDSHARED="false"
1788
1789 # these are the defaults, good for lots of systems
1790 HOST_OS="$host_os"
1791 LDSHFLAGS="-shared"
1792 MODULE_EXPORTS=""
1793 SONAMEFLAG="#"
1794 SHLD="\${CC} \${CFLAGS}"
1795 PICFLAG="${PIE_CFLAGS}"
1796 SHLIBEXT="so"
1797 DSO_EXPORTS=""
1798
1799 # this bit needs to be modified for each OS that supports share libs
1800 # You need to specify how to create a shared library and
1801   # how to compile C code to produce PIC object files
1802
1803   AC_MSG_CHECKING([ability to build shared libraries])
1804
1805   # and these are for particular systems
1806   case "$host_os" in
1807                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1808                         BLDSHARED="true"
1809                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1810                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1811                         else
1812                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1813                         fi
1814                         DYNEXP="-Wl,--export-dynamic"
1815                         PICFLAG="-fPIC"
1816                         SONAMEFLAG="-Wl,-soname="
1817                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1818                         ;;
1819                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1820                         BLDSHARED="true"
1821                         LDSHFLAGS="-G"
1822                         SONAMEFLAG="-h "
1823                         if test "${GCC}" = "yes"; then
1824                                 PICFLAG="-fPIC"
1825                                 SONAMEFLAG="-Wl,-soname="
1826                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1827                                         DYNEXP="-Wl,-E"
1828                                 fi
1829                         else
1830                                 PICFLAG="-KPIC"
1831                                 ## ${CFLAGS} added for building 64-bit shared
1832                                 ## libs using Sun's Compiler
1833                                 LDSHFLAGS="-G \${CFLAGS}"
1834                         fi
1835                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1836                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1837                         ;;
1838                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1839                         BLDSHARED="true"
1840                         LDSHFLAGS="-G"
1841                         SONAMEFLAG="-Wl,-h,"
1842                         PICFLAG="-KPIC"   # Is this correct for SunOS
1843                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1844                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1845                         ;;
1846                 *netbsd* | *freebsd* | *dragonfly* )
1847                         BLDSHARED="true"
1848                         LDSHFLAGS="-shared"
1849                         DYNEXP="-Wl,--export-dynamic"
1850                         SONAMEFLAG="-Wl,-soname,"
1851                         PICFLAG="-fPIC -DPIC"
1852                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1853                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1854                         ;;
1855                 *openbsd*)  BLDSHARED="true"
1856                         LDSHFLAGS="-shared"
1857                         DYNEXP="-Wl,-Bdynamic"
1858                         SONAMEFLAG="-Wl,-soname,"
1859                         PICFLAG="-fPIC"
1860                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1861                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1862                         ;;
1863                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1864                         case "$host_os" in
1865                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1866                         ;;
1867                         esac
1868                         BLDSHARED="true"
1869                         LDSHFLAGS="-set_version sgi1.0 -shared"
1870                         SONAMEFLAG="-soname "
1871                         SHLD="\${LD}"
1872                         if test "${GCC}" = "yes"; then
1873                                 PICFLAG="-fPIC"
1874                         else
1875                                 PICFLAG="-KPIC"
1876                         fi
1877                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1878                         ;;
1879                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1880                         BLDSHARED="true"
1881                         # use expfull to export underscored symbols
1882                         # add rtl to remove /lib/crt0.o warning
1883                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1884                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1885                         PICFLAG="-O2"
1886                         # as AIX code is always position independent...
1887                         # .po will just create compile warnings, use po.o:
1888                         if test "${GCC}" != "yes"; then
1889                                 ## for funky AIX compiler using strncpy()
1890                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1891                         fi
1892
1893                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1894                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1895                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1896                         ;;
1897                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1898                         # Use special PIC flags for the native HP-UX compiler.
1899                                 BLDSHARED="true"
1900                                 SHLD="cc"
1901                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1902                                 SONAMEFLAG="-Wl,+h "
1903                                 PICFLAG="+z"
1904                         if test "${GCC}" = "yes"; then
1905                                 PICFLAG="-fPIC"
1906                         else
1907                                 PICFLAG="+z +ESnolit"
1908                         fi
1909                         if test "$host_cpu" = "ia64"; then
1910                                 SHLIBEXT="so"
1911                               PICFLAG="+z"
1912                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1913                         else
1914                                 SHLIBEXT="sl"
1915                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1916                         fi
1917                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1918                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1919                         ;;
1920                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1921                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1922                         ;;
1923                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1924                         BLDSHARED="true"
1925                         LDSHFLAGS="-shared"
1926                         SONAMEFLAG="-Wl,-soname,"
1927                         PICFLAG="-fPIC"
1928                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1929                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1930                         ;;
1931                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1932                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1933                         ;;
1934                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1935                         BLDSHARED="true"
1936                         LDSHFLAGS="-shared"
1937                         SONAMEFLAG="-Wl,-soname,"
1938                         PICFLAG="-KPIC"
1939                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1940                         ;;
1941                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1942                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1943                         ;;
1944                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1945                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1946                         ;;
1947                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1948                         case "$host" in
1949                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1950                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1951                                         fi
1952                                         LDSHFLAGS="-G"
1953                                         DYNEXP="-Bexport"
1954                                 ;;
1955                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1956                         esac
1957                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1958                         ;;
1959
1960                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1961                         if [ test "$GCC" != yes ]; then
1962                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1963                         fi
1964                         LDSHFLAGS="-G"
1965                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1966                         ;;
1967                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1968                         BLDSHARED="false"
1969                         LDSHFLAGS=""
1970                         ;;
1971
1972                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1973                         BLDSHARED="true"
1974                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1975                         CFLAGS="$CFLAGS -fno-common"
1976                         SHLD="\${CC}"
1977                         SHLIBEXT="dylib"
1978                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1979                         SHLIBEXT="dylib"
1980                         # Since gcc doesn't fail on unrecognised options, the
1981                         # PIE test incorrectly succeeds. Darwin gcc does not
1982                         # actually support the PIE stuff.
1983                         PIE_LDFLAGS=
1984                         PIE_CFLAGS=
1985                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1986                         ;;
1987
1988                 *)
1989                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1990                         ;;
1991   esac
1992
1993 if test "$enable_shared" != "yes"; then
1994         BLDSHARED=false
1995 fi
1996
1997 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1998         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1999 fi
2000
2001 if test x"$BLDSHARED" = x"true" ; then
2002         LDFLAGS="$LDFLAGS -L./bin"
2003 fi
2004
2005 AC_MSG_RESULT($BLDSHARED)
2006
2007 AC_MSG_CHECKING([LDFLAGS])
2008 AC_MSG_RESULT([$LDFLAGS])
2009 AC_MSG_CHECKING([DYNEXP])
2010 AC_MSG_RESULT([$DYNEXP])
2011
2012 #######################################################
2013 # test whether building a shared library actually works
2014 if test $BLDSHARED = true; then
2015
2016 AC_MSG_CHECKING([SHLD])
2017 AC_MSG_RESULT([$SHLD])
2018 AC_MSG_CHECKING([LDSHFLAGS])
2019 AC_MSG_RESULT([$LDSHFLAGS])
2020
2021 AC_MSG_CHECKING([SHLIBEXT])
2022 AC_MSG_RESULT([$SHLIBEXT])
2023 AC_MSG_CHECKING([SONAMEFLAG])
2024 AC_MSG_RESULT([$SONAMEFLAG])
2025
2026 AC_MSG_CHECKING([PICFLAG])
2027 AC_MSG_RESULT([$PICFLAG])
2028
2029 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2030 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2031
2032 AC_CACHE_CHECK([whether building shared libraries actually works],
2033                [ac_cv_shlib_works],[
2034    # try building a trivial shared library
2035    ac_cv_shlib_works=no
2036    # The $SHLD and $LDSHFLAGS variables may contain references to other
2037    # variables so they need to be eval'ed.
2038    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2039         shlib.o ${srcdir-.}/../tests/shlib.c && \
2040    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2041         shlib.o && ac_cv_shlib_works=yes
2042    rm -f "shlib.$SHLIBEXT" shlib.o
2043
2044 ])
2045 if test $ac_cv_shlib_works = no; then
2046    BLDSHARED=false
2047 fi
2048 fi
2049
2050 if test x"$BLDSHARED" != x"true"; then
2051         LDSHFLAGS="shared-libraries-disabled"
2052         SONAMEFLAG="shared-libraries-disabled"
2053         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2054         SHLD="shared-libraries-disabled"
2055         PICFLAG="${PIE_CFLAGS}"
2056         SHLIBEXT="shared_libraries_disabled"
2057 fi
2058
2059 AC_MSG_CHECKING([used PICFLAG])
2060 AC_MSG_RESULT([$PICFLAG])
2061
2062 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2063
2064 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2065
2066 ################
2067
2068 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2069 AC_TRY_RUN([#include <stdio.h>
2070 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2071 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2072 if test x"$samba_cv_have_longlong" = x"yes"; then
2073     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2074     AC_CHECK_TYPE(intptr_t, unsigned long long)
2075 else
2076     AC_CHECK_TYPE(intptr_t, unsigned long)
2077 fi
2078
2079 #
2080 # Check if the compiler supports the LL prefix on long long integers.
2081 # AIX needs this.
2082
2083 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2084     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2085         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2086 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2087    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2088 fi
2089
2090
2091 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2092 AC_TRY_RUN([#include <time.h>
2093 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2094 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2095 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2096     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2097 fi
2098
2099 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2100 AC_TRY_RUN([#include <stdio.h>
2101 #include <sys/stat.h>
2102 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2103 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2104 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2105     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2106 fi
2107
2108 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2109 AC_TRY_RUN([
2110 #if defined(HAVE_UNISTD_H)
2111 #include <unistd.h>
2112 #endif
2113 #include <stdio.h>
2114 #include <sys/stat.h>
2115 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2116 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2117 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2118     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2119 fi
2120
2121 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2122 AC_TRY_RUN([
2123 #if defined(HAVE_UNISTD_H)
2124 #include <unistd.h>
2125 #endif
2126 #include <stdio.h>
2127 #include <sys/stat.h>
2128 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2129 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2130 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2131     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2132 fi
2133
2134 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2135 AC_TRY_RUN([
2136 #if defined(HAVE_UNISTD_H)
2137 #include <unistd.h>
2138 #endif
2139 #include <stdio.h>
2140 #include <sys/stat.h>
2141 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2142 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2143 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2144     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2145 fi
2146
2147 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2148 AC_TRY_RUN([
2149 #if defined(HAVE_UNISTD_H)
2150 #include <unistd.h>
2151 #endif
2152 #include <stdio.h>
2153 #include <sys/stat.h>
2154 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2155 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2156 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2157     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2158 fi
2159
2160 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2161 AC_TRY_RUN([
2162 #if defined(HAVE_UNISTD_H)
2163 #include <unistd.h>
2164 #endif
2165 #include <stdio.h>
2166 #include <sys/stat.h>
2167 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2168 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2169 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2170     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2171 fi
2172
2173 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2174 AC_TRY_COMPILE([
2175 #if defined(HAVE_UNISTD_H)
2176 #include <unistd.h>
2177 #endif
2178 #include <sys/types.h>
2179 #include <dirent.h>],
2180 [DIR64 de;],
2181 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2182 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2183     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2184 fi
2185
2186 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2187 AC_TRY_COMPILE([
2188 #if defined(HAVE_UNISTD_H)
2189 #include <unistd.h>
2190 #endif
2191 #include <sys/types.h>
2192 #include <dirent.h>],
2193 [struct dirent64 de;],
2194 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2195 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2196     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2197 fi
2198
2199 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2200 AC_TRY_RUN([
2201 #if defined(HAVE_UNISTD_H)
2202 #include <unistd.h>
2203 #endif
2204 #include <sys/types.h>
2205 main() { dev_t dev; int i = major(dev); return 0; }],
2206 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2207 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2208     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2209 fi
2210
2211 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2212 AC_TRY_RUN([
2213 #if defined(HAVE_UNISTD_H)
2214 #include <unistd.h>
2215 #endif
2216 #include <sys/types.h>
2217 main() { dev_t dev; int i = minor(dev); return 0; }],
2218 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2219 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2220     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2221 fi
2222
2223 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2224 AC_TRY_RUN([
2225 #if defined(HAVE_UNISTD_H)
2226 #include <unistd.h>
2227 #endif
2228 #include <sys/types.h>
2229 main() { dev_t dev = makedev(1,2); return 0; }],
2230 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2231 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2232     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2233 fi
2234
2235 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2236 AC_TRY_RUN([#include <stdio.h>
2237 main() { char c; c=250; exit((c > 0)?0:1); }],
2238 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2239 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2240     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2241 fi
2242
2243 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2244 AC_TRY_COMPILE([#include <sys/types.h>
2245 #include <dirent.h>
2246 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2247 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2248 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2249     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2250 fi
2251
2252 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2253 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2254 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2255 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2256     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2257 fi
2258
2259 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2260 AC_TRY_LINK([
2261 #include <sys/time.h>
2262 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2263            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2264            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2265 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2266     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2267 fi
2268
2269 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2270
2271     # On some systems (eg. Linux) librt can pull in libpthread. We
2272     # don't want this to happen because libpthreads changes signal delivery
2273     # semantics in ways we are not prepared for. This breaks Linux oplocks
2274     # which rely on signals.
2275
2276     AC_LIBTESTFUNC(rt, clock_gettime,
2277             [
2278                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2279                                 [Whether clock_gettime is available])
2280                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2281                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2282                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2283                         ])
2284
2285 fi
2286
2287 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2288 AC_TRY_RUN([#include <sys/types.h>
2289 #include <dirent.h>
2290 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2291 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2292 di->d_name[0] == 0) exit(0); exit(1);} ],
2293 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2294 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2295     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2296 fi
2297
2298 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2299 AC_TRY_COMPILE([#include <sys/types.h>
2300 #include <utime.h>],
2301 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2302 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2303 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2304     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2305 fi
2306
2307 ##############
2308 # Check utmp details, but only if our OS offers utmp.h
2309 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2310 dnl  utmp and utmpx come in many flavours
2311 dnl  We need to check for many of them
2312 dnl  But we don't need to do each and every one, because our code uses
2313 dnl  mostly just the utmp (not utmpx) fields.
2314
2315 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2316
2317 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2318 AC_TRY_COMPILE([#include <sys/types.h>
2319 #include <utmp.h>],
2320 [struct utmp ut;  ut.ut_name[0] = 'a';],
2321 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2322 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2323     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2324 fi
2325
2326 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2327 AC_TRY_COMPILE([#include <sys/types.h>
2328 #include <utmp.h>],
2329 [struct utmp ut;  ut.ut_user[0] = 'a';],
2330 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2331 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2332     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2333 fi
2334
2335 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2336 AC_TRY_COMPILE([#include <sys/types.h>
2337 #include <utmp.h>],
2338 [struct utmp ut;  ut.ut_id[0] = 'a';],
2339 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2340 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2341     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2342 fi
2343
2344 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2345 AC_TRY_COMPILE([#include <sys/types.h>
2346 #include <utmp.h>],
2347 [struct utmp ut;  ut.ut_host[0] = 'a';],
2348 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2349 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2350     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2351 fi
2352
2353 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2354 AC_TRY_COMPILE([#include <sys/types.h>
2355 #include <utmp.h>],
2356 [struct utmp ut;  time_t t; ut.ut_time = t;],
2357 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2358 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2359     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2360 fi
2361
2362 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2363 AC_TRY_COMPILE([#include <sys/types.h>
2364 #include <utmp.h>],
2365 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2366 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2367 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2368     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2369 fi
2370
2371 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2372 AC_TRY_COMPILE([#include <sys/types.h>
2373 #include <utmp.h>],
2374 [struct utmp ut;  ut.ut_type = 0;],
2375 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2376 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2377     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2378 fi
2379
2380 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2381 AC_TRY_COMPILE([#include <sys/types.h>
2382 #include <utmp.h>],
2383 [struct utmp ut;  ut.ut_pid = 0;],
2384 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2385 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2386     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2387 fi
2388
2389 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2390 AC_TRY_COMPILE([#include <sys/types.h>
2391 #include <utmp.h>],
2392 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2393 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2394 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2395     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2396 fi
2397
2398 dnl Look for the IPv6 varient by preference. Many systems have both.
2399 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2400 AC_TRY_COMPILE([#include <sys/types.h>
2401 #include <utmp.h>],
2402 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2403 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2404 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2405     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2406 fi
2407
2408 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2409 AC_TRY_COMPILE([#include <sys/types.h>
2410 #include <utmp.h>],
2411 [struct utmp ut;  ut.ut_addr = 0;],
2412 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2413 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2414     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2415 fi
2416
2417 if test x$ac_cv_func_pututline = xyes ; then
2418   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2419   AC_TRY_COMPILE([#include <sys/types.h>
2420 #include <utmp.h>],
2421   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2422   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2423   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2424       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2425   fi
2426 fi
2427
2428 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2429 AC_TRY_COMPILE([#include <sys/types.h>
2430 #include <utmpx.h>],
2431 [struct utmpx ux;  ux.ut_syslen = 0;],
2432 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2433 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2434     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2435 fi
2436
2437 fi
2438 # end utmp details
2439
2440
2441 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2442 AC_ARG_WITH(libiconv,
2443 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2444 [
2445   if test "$withval" = "no" ; then
2446     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2447   else
2448      if test "$withval" != "yes" ; then
2449         ICONV_PATH_SPEC=yes
2450         ICONV_LOOK_DIRS="$withval"
2451      fi
2452   fi
2453 ])
2454
2455 for i in $ICONV_LOOK_DIRS ; do
2456
2457     save_LIBS="$LIBS"
2458     save_LDFLAGS="$LDFLAGS"
2459     save_CPPFLAGS="$CPPFLAGS"
2460
2461     iconv_current_LIBS=""
2462     iconv_current_LDFLAGS=""
2463     iconv_current_CPPFLAGS=""
2464
2465     ICONV_FOUND="no"
2466     unset libext
2467
2468     #  This is here to handle -withval stuff for --with-libiconv
2469     #  Perhaps we should always add a -L
2470     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2471
2472     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2473     # installation paths. This gets a little tricky since we might have iconv
2474     # in both libiconv and in libc. In this case the jm_ICONV test will always
2475     # succeed when the header is found. To counter this, make sure the
2476     # library directory is there and check the ABI directory first (which
2477     # should be harmless on other systems, but causes tons of linker warnings on
2478     # 64bit Ubuntu systems).
2479     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2480     # installed, I've decided to fix the linker warnings.
2481     # -- Kai
2482     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2483     for l in "lib" "lib32" "lib/hpux32"; do
2484         if test -d "$i/$l" ; then
2485                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2486                 LIBS=
2487                 export LDFLAGS LIBS CPPFLAGS
2488                 # Try to find iconv(3)
2489                 jm_ICONV($i/$l)
2490                 if test x"$ICONV_FOUND" = "xyes" ; then
2491                     libext="$l"
2492                     break
2493                 fi
2494         fi
2495     done
2496
2497     if test x"$ICONV_FOUND" = "xyes" ; then
2498         iconv_current_LDFLAGS="-L$i/$libext"
2499         iconv_current_CPPFLAGS="-I$i/include"
2500
2501         if test x"$jm_cv_lib_iconv" != x; then
2502             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2503         else
2504             # We found iconv in libc.
2505             iconv_current_LIBS=""
2506         fi
2507
2508     fi
2509
2510     if test x"$ICONV_FOUND" = "xyes" ; then
2511
2512         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2513         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2514         LIBS="$save_LIBS $iconv_current_LIBS"
2515         export LDFLAGS LIBS CPPFLAGS
2516
2517         default_dos_charset=no
2518         default_display_charset=no
2519         default_unix_charset=no
2520
2521         # check for default dos charset name
2522         for j in CP850 IBM850 ; do
2523             rjs_CHARSET($j)
2524             default_dos_charset="$ICONV_CHARSET"
2525             if test x"$default_dos_charset" = x"$j"; then
2526                 break
2527             fi
2528         done
2529
2530         # check for default display charset name
2531         for j in ASCII 646 ; do
2532             rjs_CHARSET($j)
2533             default_display_charset="$ICONV_CHARSET"
2534             if test x"$default_display_charset" = x"$j"; then
2535                 break
2536             fi
2537         done
2538
2539         # check for default unix charset name
2540         for j in UTF-8 UTF8 ; do
2541             rjs_CHARSET($j)
2542             default_unix_charset="$ICONV_CHARSET"
2543             if test x"$default_unix_charset" = x"$j"; then
2544                 break
2545             fi
2546         done
2547
2548         if test "$default_dos_charset" != "no" -a \
2549                 "$default_dos_charset" != "cross" -a \
2550                 "$default_display_charset" != "no" -a \
2551                 "$default_display_charset" != "cross" -a \
2552                 "$default_unix_charset" != "no" -a \
2553                 "$default_unix_charset" != "cross"
2554         then
2555                 samba_cv_HAVE_NATIVE_ICONV=yes
2556         else
2557             if test "$default_dos_charset" = "cross" -o \
2558                      "$default_display_charset" = "cross" -o \
2559                      "$default_unix_charset" = "cross"
2560             then
2561                     samba_cv_HAVE_NATIVE_ICONV=cross
2562             else
2563                     samba_cv_HAVE_NATIVE_ICONV=no
2564             fi
2565         fi
2566
2567         # At this point, we have a libiconv candidate. We know that
2568         # we have the right headers and libraries, but we don't know
2569         # whether it does the conversions we want. We can't test this
2570         # because we are cross-compiling. This is not necessarily a big
2571         # deal, since we can't guarantee that the results we get now will
2572         # match the results we get at runtime anyway.
2573         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2574             default_dos_charset="CP850"
2575             default_display_charset="ASCII"
2576             default_unix_charset="UTF-8"
2577             samba_cv_HAVE_NATIVE_ICONV=yes
2578             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2579             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2580         fi
2581
2582         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2583
2584             CPPFLAGS=$save_CPPFLAGS
2585             LDFLAGS=$save_LDFLAGS
2586             LIBS=$save_LIBS
2587
2588             if test x"$iconv_current_LIBS" != x; then
2589                 LIBS="$LIBS $iconv_current_LIBS"
2590             fi
2591
2592             # Add the flags we need to CPPFLAGS and LDFLAGS
2593             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2594             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2595
2596             # Turn the #defines into string literals
2597             default_dos_charset="\"$default_dos_charset\""
2598             default_display_charset="\"$default_display_charset\""
2599             default_unix_charset="\"$default_unix_charset\""
2600
2601             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2602             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2603             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2604             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2605
2606            break
2607         fi
2608
2609     # We didn't find a working iconv, so keep going
2610     fi
2611
2612     #  We only need to clean these up here for the next pass through the loop
2613     CPPFLAGS=$save_CPPFLAGS
2614     LDFLAGS=$save_LDFLAGS
2615     LIBS=$save_LIBS
2616     export LDFLAGS LIBS CPPFLAGS
2617 done
2618 unset libext
2619
2620
2621 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2622     AC_MSG_WARN([Sufficient support for iconv function was not found.
2623     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2624    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2625    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2626    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2627 fi
2628
2629
2630 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2631 AC_TRY_RUN([
2632 #include <sys/types.h>
2633 #include <fcntl.h>
2634 #ifndef F_GETLEASE
2635 #define F_GETLEASE      1025
2636 #endif
2637 main() {
2638        int fd = open("/dev/null", O_RDONLY);
2639        return fcntl(fd, F_GETLEASE, 0) == -1;
2640 }
2641 ],
2642 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2643 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2644     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2645 fi
2646
2647 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2648 AC_TRY_RUN([
2649 #include <sys/types.h>
2650 #include <fcntl.h>
2651 #include <signal.h>
2652 #ifndef F_NOTIFY
2653 #define F_NOTIFY 1026
2654 #endif
2655 main() {
2656         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2657 }
2658 ],
2659 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2660 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2661     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2662 fi
2663
2664 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2665 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2666 AC_CHECK_FUNCS(inotify_init)
2667 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2668 ],
2669 samba_cv_HAVE_INOTIFY=yes,
2670 samba_cv_HAVE_INOTIFY=no,
2671 samba_cv_HAVE_INOTIFY=cross)
2672
2673 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2674     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2675 fi
2676
2677 #################################################
2678 # Check if FAM notifications are available. For FAM info, see
2679 #       http://oss.sgi.com/projects/fam/
2680 #       http://savannah.nongnu.org/projects/fam/
2681 AC_ARG_ENABLE(fam,
2682 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2683
2684 if test x$enable_fam != xno; then
2685     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2686     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2687         # On IRIX, libfam requires libC, but other FAM implementations
2688         # might not need it.
2689         AC_CHECK_LIB(fam, FAMOpen2,
2690             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2691             [samba_cv_HAVE_LIBFAM=no])
2692
2693         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2694             samba_fam_xtra=-lC
2695             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2696                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2697                 [samba_cv_HAVE_LIBFAM=no])
2698             unset samba_fam_xtra
2699         fi
2700     fi
2701
2702     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2703         default_shared_modules="$default_shared_modules vfs_notify_fam"
2704         AC_TRY_COMPILE([#include <fam.h>],
2705                     [FAMCodes code = FAMChanged;],
2706                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2707                         [Whether fam.h contains a typedef for enum FAMCodes]),
2708                     [])
2709     fi
2710
2711     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2712         AC_MSG_ERROR(FAM support requested but FAM library not available )
2713     fi
2714 fi
2715
2716 AC_SUBST(SMB_FAM_LIBS)
2717
2718 #################################################
2719 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2720
2721 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2722
2723 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2724 # Theoretically it should work with AIX JFS2 too but this needs testing
2725 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2726     default_shared_modules="$default_shared_modules vfs_tsmsm"
2727 fi
2728
2729 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2730 AC_TRY_RUN([
2731 #include <sys/types.h>
2732 #include <fcntl.h>
2733 #include <signal.h>
2734 #include <sys/file.h>
2735 #ifndef LOCK_MAND
2736 #define LOCK_MAND       32
2737 #define LOCK_READ       64
2738 #endif
2739 main() {
2740         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2741 }
2742 ],
2743 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2744 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2745     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2746 fi
2747
2748
2749 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2750 AC_TRY_COMPILE([#include <sys/types.h>
2751 #include <fcntl.h>],
2752 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2753 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2754 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2755     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2756 fi
2757
2758 #################################################
2759 # Check for POSIX capability support
2760
2761 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2762     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2763     [], [])
2764
2765 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2766
2767     ac_save_LIBS=$LIBS
2768     AC_LIBTESTFUNC(cap, cap_get_proc)
2769
2770     AC_CACHE_CHECK([for POSIX capabilities],
2771             samba_cv_HAVE_POSIX_CAPABILITIES,
2772             [
2773                 AC_TRY_RUN([
2774 #include <sys/types.h>
2775 #include <sys/capability.h>
2776 main() {
2777  cap_t cap;
2778  cap_value_t vals[1];
2779  if (!(cap = cap_get_proc()))
2780    exit(1);
2781  vals[0] = CAP_CHOWN;
2782  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2783  cap_set_proc(cap);
2784  exit(0);
2785 }],
2786                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2787                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2788                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2789             ])
2790
2791 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2792     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2793             [Whether POSIX capabilities are available])
2794 else
2795     LIBS=$ac_save_LIBS
2796 fi
2797
2798 fi
2799
2800 #
2801 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2802 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2803 #
2804
2805 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2806 AC_TRY_COMPILE([#include <sys/types.h>
2807 #if defined(HAVE_RPC_RPC_H)
2808 #include <rpc/rpc.h>
2809 #endif],
2810 [int16 testvar;],
2811 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2812 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2813     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2814 fi
2815
2816 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2817 AC_TRY_COMPILE([#include <sys/types.h>
2818 #if defined(HAVE_RPC_RPC_H)
2819 #include <rpc/rpc.h>
2820 #endif],
2821 [uint16 testvar;],
2822 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2823 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2824     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2825 fi
2826
2827 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2828 AC_TRY_COMPILE([#include <sys/types.h>
2829 #if defined(HAVE_RPC_RPC_H)
2830 #include <rpc/rpc.h>
2831 #endif],
2832 [int32 testvar;],
2833 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2834 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2835     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2836 fi
2837
2838 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2839 AC_TRY_COMPILE([#include <sys/types.h>
2840 #if defined(HAVE_RPC_RPC_H)
2841 #include <rpc/rpc.h>
2842 #endif],
2843 [uint32 testvar;],
2844 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2845 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2846     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2847 fi
2848
2849 dnl
2850 dnl Some systems (SCO) have a problem including
2851 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2852 dnl as a #define in <prot.h> and as part of an enum
2853 dnl in <rpc/rpc.h>.
2854 dnl
2855
2856 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2857 AC_TRY_COMPILE([#include <sys/types.h>
2858 #ifdef HAVE_SYS_SECURITY_H
2859 #include <sys/security.h>
2860 #include <prot.h>
2861 #endif  /* HAVE_SYS_SECURITY_H */
2862 #if defined(HAVE_RPC_RPC_H)
2863 #include <rpc/rpc.h>
2864 #endif],
2865 [int testvar;],
2866 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2867 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2868     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2869 fi
2870
2871 AC_MSG_CHECKING([for test routines])
2872 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2873            AC_MSG_RESULT(yes),
2874            AC_MSG_ERROR([cant find test code. Aborting config]),
2875            AC_MSG_WARN([cannot run when cross-compiling]))
2876
2877 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2878 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2879            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2880 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2881     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2882 fi
2883
2884 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2885 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2886            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2887 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2888     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2889 fi
2890
2891 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2892 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2893 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2894 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2895 AC_CHECK_FUNCS(getpagesize)
2896
2897 ################################################
2898 # look for a method of setting the effective uid
2899 seteuid=no;
2900
2901 if test $seteuid = no; then
2902 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2903 AC_TRY_RUN([
2904 #define AUTOCONF_TEST 1
2905 #define USE_SETREUID 1
2906 #include "confdefs.h"
2907 #include "${srcdir-.}/lib/util_sec.c"],
2908            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2909 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2910     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2911 fi
2912 fi
2913
2914 # we check for setresuid second as it conflicts with AIO on Linux. 
2915 # see http://samba.org/~tridge/junkcode/aio_uid.c
2916 if test $seteuid = no; then
2917 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2918 AC_TRY_RUN([
2919 #define AUTOCONF_TEST 1
2920 #define USE_SETRESUID 1
2921 #include "confdefs.h"
2922 #include "${srcdir-.}/lib/util_sec.c"],
2923            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2924 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2925     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2926 fi
2927 fi
2928
2929 if test $seteuid = no; then
2930 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2931 AC_TRY_RUN([
2932 #define AUTOCONF_TEST 1
2933 #define USE_SETEUID 1
2934 #include "confdefs.h"
2935 #include "${srcdir-.}/lib/util_sec.c"],
2936            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2937 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2938     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2939 fi
2940 fi
2941
2942 if test $seteuid = no; then
2943 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2944 AC_TRY_RUN([
2945 #define AUTOCONF_TEST 1
2946 #define USE_SETUIDX 1
2947 #include "confdefs.h"
2948 #include "${srcdir-.}/lib/util_sec.c"],
2949            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2950 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2951     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2952 fi
2953 fi
2954
2955 AC_CACHE_CHECK([for the Darwin initgroups system call],
2956         samba_cv_DARWIN_INITGROUPS,
2957         AC_TRY_LINK([
2958 #include <sys/syscall.h>
2959 #include <unistd.h>
2960         ],
2961         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2962         samba_cv_DARWIN_INITGROUPS=yes,
2963         samba_cv_DARWIN_INITGROUPS=no)
2964 )
2965
2966 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2967     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2968         [Whether to use the Darwin-specific initgroups system call])
2969 fi
2970
2971 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2972 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2973            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2974 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2975     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2976 fi
2977
2978 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2979 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2980            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2981 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2982     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2983
2984 else
2985
2986 dnl
2987 dnl Don't check for 64 bit fcntl locking if we know that the
2988 dnl glibc2.1 broken check has succeeded.
2989 dnl
2990
2991   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2992   AC_TRY_RUN([
2993 #if defined(HAVE_UNISTD_H)
2994 #include <unistd.h>
2995 #endif
2996 #include <stdio.h>
2997 #include <stdlib.h>
2998
2999 #ifdef HAVE_FCNTL_H
3000 #include <fcntl.h>
3001 #endif
3002
3003 #ifdef HAVE_SYS_FCNTL_H
3004 #include <sys/fcntl.h>
3005 #endif
3006 main() { struct flock64 fl64;
3007 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3008 exit(0);
3009 #else
3010 exit(1);
3011 #endif
3012 }],
3013        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3014
3015   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3016       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3017   fi
3018 fi
3019
3020 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3021 AC_TRY_COMPILE([#include <sys/types.h>
3022 #include <sys/stat.h>
3023 #include <unistd.h>],
3024 [struct stat st;  st.st_blocks = 0;],
3025 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3026 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3027     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3028 fi
3029
3030 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3031 AC_TRY_COMPILE([#include <sys/types.h>
3032 #include <sys/stat.h>
3033 #include <unistd.h>],
3034 [struct stat st;  st.st_blksize = 0;],
3035 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3036 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3037     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3038 fi
3039
3040 AC_CACHE_CHECK([for st_flags in struct stat],
3041         samba_cv_HAVE_STAT_ST_FLAGS,
3042         [
3043             AC_TRY_COMPILE([#include <sys/types.h>
3044 #include <sys/stat.h>
3045 #include <unistd.h>],
3046             [struct stat st;  st.st_flags = 0;],
3047             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3048             samba_cv_HAVE_STAT_ST_FLAGS=no,
3049             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3050         ])
3051
3052 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3053     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3054                 [Whether the stat struct has a st_flags member])
3055 fi
3056
3057 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3058 AC_TRY_COMPILE([
3059 #include <sys/types.h>
3060 #include <sys/acl.h>
3061 #if defined(HAVE_RPCSVC_NIS_H)
3062 #include <rpcsvc/nis.h>
3063 #endif],
3064 [int i;],
3065 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3066 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3067         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3068 fi
3069
3070 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3071 AC_TRY_RUN([
3072 #include <stdio.h>
3073 #include <limits.h>
3074 #include <signal.h>
3075
3076 void exit_on_core(int ignored) {
3077         exit(1);
3078 }
3079
3080 main() {
3081         char *newpath;
3082         signal(SIGSEGV, exit_on_core);
3083         newpath = realpath("/tmp", NULL);
3084         exit((newpath != NULL) ? 0 : 1);
3085 }
3086 ],
3087 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3088 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3089     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3090 fi
3091
3092 #################################################
3093 # check for AFS clear-text auth support
3094 samba_cv_WITH_AFS=no
3095 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3096 AC_ARG_WITH(afs,
3097 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3098 [ case "$withval" in
3099   yes|auto)
3100     AC_MSG_RESULT($withval)
3101     samba_cv_WITH_AFS=$withval
3102     ;;
3103   *)
3104     AC_MSG_RESULT(no)
3105     ;;
3106   esac ],
3107   AC_MSG_RESULT(no)
3108 )
3109
3110 ####################################################
3111 # check for Linux-specific AFS fake-kaserver support
3112 samba_cv_WITH_FAKE_KASERVER=no
3113 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3114 AC_ARG_WITH(fake-kaserver,
3115 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3116 [ case "$withval" in
3117   yes|auto)
3118     AC_MSG_RESULT($withval)
3119     samba_cv_WITH_FAKE_KASERVER=$withval
3120     ;;
3121   *)
3122     AC_MSG_RESULT(no)
3123     ;;
3124   esac ],
3125   AC_MSG_RESULT(no)
3126 )
3127
3128 #################################################
3129 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3130 if test x"$samba_cv_WITH_AFS" != x"no" ||
3131    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3132
3133     # see if this box has the afs-headers in /usr/include/afs
3134     AC_MSG_CHECKING(for /usr/include/afs)
3135     if test -d /usr/include/afs; then
3136           CFLAGS="$CFLAGS -I/usr/include/afs"
3137           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3138           AC_MSG_RESULT(yes)
3139     else
3140       AC_MSG_RESULT(no)
3141     fi
3142
3143     # check for afs.h
3144     have_afs_headers=no
3145     AC_CHECK_HEADERS(afs.h afs/afs.h)
3146     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3147         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3148            test x"$samba_cv_WITH_AFS" = x"auto"; then
3149                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3150         else
3151                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3152         fi
3153     else
3154         have_afs_headers=yes
3155     fi
3156 fi
3157
3158 FAKE_KASERVER_OBJ=""
3159 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3160     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3161     FAKE_KASERVER_OBJ="utils/net_afs.o"
3162 fi
3163 AC_SUBST(FAKE_KASERVER_OBJ)
3164
3165 #################################################
3166 # check whether to compile AFS/NT ACL mapping module
3167 samba_cv_WITH_VFS_AFSACL=no
3168 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3169 AC_ARG_WITH(vfs-afsacl,
3170 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3171 [ case "$withval" in
3172   yes|auto)
3173     AC_MSG_RESULT($withval)
3174     samba_cv_WITH_VFS_AFSACL=yes
3175     ;;
3176   *)
3177     AC_MSG_RESULT(no)
3178     ;;
3179   esac ],
3180   AC_MSG_RESULT(no)
3181 )
3182
3183 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3184    default_shared_modules="$default_shared_modules vfs_afsacl"
3185 fi
3186         
3187 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3188     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3189 fi
3190
3191 #################################################
3192 # check for the DFS clear-text auth system
3193 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3194 AC_ARG_WITH(dfs,
3195 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3196 [ case "$withval" in
3197   yes)
3198     AC_MSG_RESULT(yes)
3199     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3200     ;;
3201   *)
3202     AC_MSG_RESULT(no)
3203     ;;
3204   esac ],
3205   AC_MSG_RESULT(no)
3206 )
3207
3208 ########################################################
3209 # Compile with LDAP support?
3210
3211 with_ldap_support=auto
3212 AC_MSG_CHECKING([for LDAP support])
3213
3214 AC_ARG_WITH(ldap,
3215 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3216 [ case "$withval" in
3217     yes|no)
3218         with_ldap_support=$withval
3219         ;;
3220   esac ])
3221
3222 AC_MSG_RESULT($with_ldap_support)
3223
3224 SMBLDAP=""
3225 AC_SUBST(SMBLDAP)
3226 SMBLDAPUTIL=""
3227 AC_SUBST(SMBLDAPUTIL)
3228 LDBLDAP=""
3229 AC_SUBST(LDBLDAP)
3230
3231 if test x"$with_ldap_support" != x"no"; then
3232
3233   ##################################################################
3234   # first test for ldap.h and lber.h
3235   # (ldap.h is required for this test)
3236   AC_CHECK_HEADERS(ldap.h lber.h)
3237
3238   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3239         if test x"$with_ldap_support" = x"yes"; then
3240          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3241         else
3242          AC_MSG_WARN(ldap.h is needed for LDAP support)
3243         fi
3244         
3245         with_ldap_support=no
3246   fi
3247
3248   ##################################################################
3249   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3250   # unsigned int in include/includes.h
3251   case $host_os in
3252         *hpux*)
3253          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3254          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3255         with_ldap_support=yes
3256         ;;
3257         *)
3258         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3259         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3260                 if test x"$with_ldap_support" = x"yes"; then
3261                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3262                 else
3263                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3264                 fi
3265                 with_ldap_support=no
3266         fi
3267         ;;
3268   esac
3269 fi
3270
3271 if test x"$with_ldap_support" != x"no"; then
3272   ac_save_LIBS=$LIBS
3273
3274   ##################################################################
3275   # we might need the lber lib on some systems. To avoid link errors
3276   # this test must be before the libldap test
3277   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3278
3279   ########################################################
3280   # If ber_sockbuf_add_io() is available we can add
3281   # SASL wrapping hooks
3282   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3283
3284   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3285                  AC_TRY_COMPILE([#include <ldap.h>],
3286                                 [int val = LDAP_OPT_SOCKBUF;],
3287                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3288                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3289
3290   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3291           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3292         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3293   fi
3294
3295   #######################################################
3296   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3297   # ldap logging and print it out in the samba logs
3298   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3299                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3300                  [AC_TRY_COMPILE([#include <lber.h>],
3301                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3302                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3303                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3304
3305   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3306         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3307                   [Support for LDAP/LBER logging interception])
3308   fi
3309
3310   ########################################################
3311   # now see if we can find the ldap libs in standard paths
3312   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3313
3314   ########################################################
3315   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3316   # Check found in pam_ldap 145.
3317   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3318
3319   LIBS="$LIBS $LDAP_LIBS"
3320   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3321     AC_TRY_COMPILE([
3322         #include <lber.h>
3323         #include <ldap.h>],
3324         [ldap_set_rebind_proc(0, 0, 0);],
3325         [smb_ldap_cv_ldap_set_rebind_proc=3],
3326         [smb_ldap_cv_ldap_set_rebind_proc=2]
3327     )
3328   ])
3329
3330   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3331
3332   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3333
3334   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3335     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3336     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3337     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3338     default_shared_modules="$default_shared_modules";
3339     SMBLDAP="lib/smbldap.o"
3340     SMBLDAPUTIL="lib/smbldap_util.o"
3341     with_ldap_support=yes
3342     AC_MSG_CHECKING(whether LDAP support is used)
3343     AC_MSG_RESULT(yes)
3344   else
3345     if test x"$with_ldap_support" = x"yes"; then
3346         AC_MSG_ERROR(libldap is needed for LDAP support)
3347     else
3348         AC_MSG_WARN(libldap is needed for LDAP support)
3349     fi
3350
3351     LDAP_LIBS=""
3352     with_ldap_support=no
3353   fi
3354   LIBS=$ac_save_LIBS
3355 fi
3356
3357
3358 #################################################
3359 # active directory support
3360
3361 with_ads_support=auto
3362 AC_MSG_CHECKING([for Active Directory and krb5 support])
3363
3364 AC_ARG_WITH(ads,
3365 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3366 [ case "$withval" in
3367     yes|no)
3368         with_ads_support="$withval"
3369         ;;
3370   esac ])
3371
3372 AC_MSG_RESULT($with_ads_support)
3373
3374 FOUND_KRB5=no
3375 KRB5_LIBS=""
3376
3377 if test x"$with_ldap_support" != x"yes"; then
3378
3379     if test x"$with_ads_support" = x"yes"; then
3380         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3381     elif test x"$with_ads_support" = x"auto"; then
3382         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3383         with_ads_support=no
3384     fi
3385
3386 else
3387
3388     # Check to see whether there is enough LDAP functionality to be able
3389     # to build AD support.
3390
3391 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3392 case "$host_os" in
3393         *hpux*)
3394     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3395
3396     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3397         if test x"$with_ads_support" = x"yes"; then
3398             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3399         elif test x"$with_ads_support" = x"auto"; then
3400             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3401             with_ads_support=no
3402         fi
3403     fi
3404     ;;
3405         *)
3406     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3407
3408     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3409         if test x"$with_ads_support" = x"yes"; then
3410             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3411         elif test x"$with_ads_support" = x"auto"; then
3412             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3413             with_ads_support=no
3414         fi
3415     fi
3416     ;;
3417 esac
3418
3419
3420     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3421
3422     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3423         if test x"$with_ads_support" = x"yes"; then
3424             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3425         elif test x"$with_ads_support" = x"auto"; then
3426             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3427             with_ads_support=no
3428         fi
3429     fi
3430
3431 fi
3432
3433 if test x"$with_ads_support" != x"no"; then
3434
3435   # Do no harm to the values of CFLAGS and LIBS while testing for
3436   # Kerberos support.
3437
3438   if test x$FOUND_KRB5 = x"no"; then
3439     #################################################
3440     # check for location of Kerberos 5 install
3441     AC_MSG_CHECKING(for kerberos 5 install path)
3442     AC_ARG_WITH(krb5,
3443     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3444     [ case "$withval" in
3445       no)
3446         AC_MSG_RESULT(no krb5-path given)
3447         ;;
3448       yes)
3449         AC_MSG_RESULT(/usr)
3450         FOUND_KRB5=yes
3451         ;;
3452       *)
3453         AC_MSG_RESULT($withval)
3454         KRB5_CFLAGS="-I$withval/include"
3455         KRB5_CPPFLAGS="-I$withval/include"
3456         KRB5_LDFLAGS="-L$withval/lib"
3457         FOUND_KRB5=yes
3458         if test -x "$withval/bin/krb5-config"; then
3459                 KRB5CONFIG=$withval/bin/krb5-config
3460         fi
3461         ;;
3462       esac ],
3463       AC_MSG_RESULT(no krb5-path given)
3464     )
3465   fi
3466
3467   #################################################
3468   # check for krb5-config from recent MIT and Heimdal kerberos 5
3469   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3470   AC_MSG_CHECKING(for working krb5-config)
3471   if test -x "$KRB5CONFIG"; then
3472     ac_save_CFLAGS=$CFLAGS
3473     CFLAGS="";export CFLAGS
3474     ac_save_LDFLAGS=$LDFLAGS
3475     LDFLAGS="";export LDFLAGS
3476     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3477     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3478     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3479     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3480     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3481     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3482     FOUND_KRB5=yes
3483     AC_MSG_RESULT(yes)
3484   else
3485     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3486   fi
3487
3488   if test x$FOUND_KRB5 = x"no"; then
3489     #################################################
3490     # see if this box has the SuSE location for the heimdal krb implementation
3491     AC_MSG_CHECKING(for /usr/include/heimdal)
3492     if test -d /usr/include/heimdal; then
3493       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3494           KRB5_CFLAGS="-I/usr/include/heimdal"
3495           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3496           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3497           FOUND_KRB5=yes
3498           AC_MSG_RESULT(yes)
3499       else
3500           KRB5_CFLAGS="-I/usr/include/heimdal"
3501           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3502           FOUND_KRB5=yes
3503           AC_MSG_RESULT(yes)
3504       fi
3505     else
3506       AC_MSG_RESULT(no)
3507     fi
3508   fi
3509
3510   if test x$FOUND_KRB5 = x"no"; then
3511     #################################################
3512     # see if this box has the RedHat location for kerberos
3513     AC_MSG_CHECKING(for /usr/kerberos)
3514     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3515       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3516       KRB5_CFLAGS="-I/usr/kerberos/include"
3517       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3518       FOUND_KRB5=yes
3519       AC_MSG_RESULT(yes)
3520     else
3521       AC_MSG_RESULT(no)
3522     fi
3523   fi
3524
3525   if test x$FOUND_KRB5 = x"no"; then
3526     #################################################
3527     # see if this box has the OpenBSD location for heimdal krb5
3528     AC_MSG_CHECKING(for /usr/include/kerberosV)
3529     if test -d /usr/include/kerberosV; then
3530       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3531       KRB5_LIBS="-lcrypto"
3532       FOUND_KRB5=yes
3533       AC_MSG_RESULT(yes)
3534     else
3535       AC_MSG_RESULT(no)
3536     fi
3537   fi
3538
3539   ac_save_CFLAGS=$CFLAGS
3540   ac_save_CPPFLAGS=$CPPFLAGS
3541   ac_save_LDFLAGS=$LDFLAGS
3542
3543   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3544   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3545   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3546
3547   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3548
3549   # now check for krb5.h. Some systems have the libraries without the headers!
3550   # note that this check is done here to allow for different kerberos
3551   # include paths
3552   AC_CHECK_HEADERS(krb5.h)
3553
3554   if test x"$ac_cv_header_krb5_h" = x"no"; then
3555
3556     # Give a warning if AD support was not explicitly requested,
3557     # i.e with_ads_support = auto, otherwise die with an error.
3558
3559     if test x"$with_ads_support" = x"yes"; then
3560       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3561     else
3562       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3563     fi
3564
3565     # Turn off AD support and restore CFLAGS and LIBS variables
3566
3567     with_ads_support="no"
3568
3569     CFLAGS=$ac_save_CFLAGS
3570     CPPFLAGS=$ac_save_CPPFLAGS
3571     LDFLAGS=$ac_save_LDFLAGS
3572   fi
3573   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3574   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3575         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3576         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3577   fi
3578 fi
3579
3580 # Now we have determined whether we really want ADS support
3581 use_ads=no
3582 if test x"$with_ads_support" != x"no"; then
3583   use_ads=yes
3584   have_gssapi=no
3585   ac_save_LIBS=$LIBS
3586
3587   # now check for gssapi headers.  This is also done here to allow for
3588   # different kerberos include paths
3589   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3590
3591   ##################################################################
3592   # we might need the k5crypto and com_err libraries on some systems
3593   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3594   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3595
3596   # Heimdal checks.
3597   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3598   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3599   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3600
3601   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3602   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3603
3604   ########################################################
3605   # now see if we can find the krb5 libs in standard paths
3606   # or as specified above
3607   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3608   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3609
3610   ########################################################
3611   # now see if we can find the gssapi libs in standard paths
3612   if test x"$have_gssapi" != x"yes"; then
3613      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3614   fi
3615
3616   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3617   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3618   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3619   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3620   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3621   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3622   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3623   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3624   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3625   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3626   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3627   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3628   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3629   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3630   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3631   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3632   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3633   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3634   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3635   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3636   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3637   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3638   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3639   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3640   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3641   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3642   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3643   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3644   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3645   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3646   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3647   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3648   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3649   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3650   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3651   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3652   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3653   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3654   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3655   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3656   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3657   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3658   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3659
3660   LIBS="$KRB5_LIBS $LIBS"
3661
3662   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3663         smb_krb5_cv_ticket_has_keyinfo,
3664         [
3665             AC_TRY_COMPILE(
3666             [
3667                 #include <krb5.h>
3668             ],
3669             [
3670                 krb5_ticket ticket;
3671                 krb5_kvno kvno;
3672                 krb5_enctype enctype;
3673
3674                 enctype = ticket.enc_part.enctype;
3675                 kvno = ticket.enc_part.kvno;
3676             ],
3677             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3678             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3679         ])
3680
3681   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3682         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3683             [Whether the krb5_ticket structure contains the kvno and enctype])
3684   fi
3685
3686   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3687           smb_krb5_cv_creds_opt_free_context,
3688           [
3689                 AC_TRY_COMPILE([
3690                     #include <krb5.h>],
3691                     [
3692                         krb5_context ctx;
3693                         krb5_get_init_creds_opt *opt = NULL;
3694                         krb5_get_init_creds_opt_free(ctx, opt);
3695                     ],
3696                     [smb_krb5_cv_creds_opt_free_context=yes],
3697                     [smb_krb5_cv_creds_opt_free_context=no]
3698                 )
3699           ])
3700
3701   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3702         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3703             [Whether krb5_get_init_creds_opt_free takes a context argument])
3704   fi
3705
3706   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3707     AC_TRY_COMPILE([
3708         #include <krb5.h>],
3709         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3710         [smb_krb5_cv_verify_checksum=7],
3711         [smb_krb5_cv_verify_checksum=6],
3712     )
3713   ])
3714   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3715
3716   AC_CACHE_CHECK([for checksum in krb5_checksum],
3717                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3718     AC_TRY_COMPILE([#include <krb5.h>],
3719       [krb5_checksum cksum; cksum.checksum.length = 0;],
3720       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3721       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3722
3723   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3724     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3725                [Whether the krb5_checksum struct has a checksum property])
3726   fi
3727
3728   AC_CACHE_CHECK([for etype in EncryptedData],
3729                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3730     AC_TRY_COMPILE([#include <krb5.h>],
3731       [EncryptedData edata; edata.etype = 0;],
3732       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3733       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3734
3735   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3736     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3737                [Whether the EncryptedData struct has a etype property])
3738   fi
3739
3740   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3741                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3742     AC_TRY_COMPILE([#include <krb5.h>],
3743       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3744       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3745       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3746
3747   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3748     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3749                [Whether the krb5_ap_req struct has a ticket pointer])
3750   fi
3751
3752   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3753                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3754     AC_TRY_COMPILE([#include <krb5.h>],
3755       [krb5_error err; err.e_data = NULL;],
3756       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3757       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3758
3759   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3760     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3761                [Whether the krb5_error struct has a e_data pointer])
3762   fi
3763
3764   AC_CACHE_CHECK([for krb5_crypto type],
3765                 samba_cv_HAVE_KRB5_CRYPTO,[
3766     AC_TRY_COMPILE([#include <krb5.h>],
3767       [krb5_crypto crypto;],
3768       samba_cv_HAVE_KRB5_CRYPTO=yes,
3769       samba_cv_HAVE_KRB5_CRYPTO=no)])
3770
3771   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3772     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3773                [Whether the type krb5_crypto exists])
3774   fi
3775
3776   AC_CACHE_CHECK([for krb5_encrypt_block type],
3777                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3778     AC_TRY_COMPILE([#include <krb5.h>],
3779       [krb5_encrypt_block block;],
3780       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3781       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3782
3783   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3784     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3785                [Whether the type krb5_encrypt_block exists])
3786   fi
3787
3788   AC_CACHE_CHECK([for addrtype in krb5_address],
3789                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3790     AC_TRY_COMPILE([#include <krb5.h>],
3791       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3792       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3793       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3794
3795   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3796     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3797                [Whether the krb5_address struct has a addrtype property])
3798   fi
3799
3800   AC_CACHE_CHECK([for addr_type in krb5_address],
3801                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3802     AC_TRY_COMPILE([#include <krb5.h>],
3803       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3804       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3805       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3806
3807   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3808     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3809               [Whether the krb5_address struct has a addr_type property])
3810   fi
3811
3812   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3813                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3814                  [AC_TRY_COMPILE([#include <krb5.h>],
3815     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3816     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3817
3818   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3819     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3820               [Whether the krb5_ticket struct has a enc_part2 property])
3821   fi
3822
3823   AC_CACHE_CHECK([for keyblock in krb5_creds],
3824                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3825     AC_TRY_COMPILE([#include <krb5.h>],
3826       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3827       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3828       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3829
3830   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3831     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3832               [Whether the krb5_creds struct has a keyblock property])
3833   fi
3834
3835   AC_CACHE_CHECK([for session in krb5_creds],
3836                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3837     AC_TRY_COMPILE([#include <krb5.h>],
3838       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3839       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3840       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3841
3842   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3843     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3844               [Whether the krb5_creds struct has a session property])
3845   fi
3846
3847   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3848                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3849     AC_TRY_COMPILE([#include <krb5.h>],
3850       [krb5_keyblock key; key.keyvalue.data = NULL;],
3851       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3852       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3853
3854   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3855     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3856               [Whether the krb5_keyblock struct has a keyvalue property])
3857   fi
3858
3859   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3860                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3861     AC_TRY_COMPILE([#include <krb5.h>],
3862       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3863       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3864       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3865   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3866                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3867     AC_TRY_COMPILE([#include <krb5.h>],
3868       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3869       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3870       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3871 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3872 # w.r.t. arcfour and windows, so we must not enable it here
3873   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3874           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3875     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3876               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3877   fi
3878
3879   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3880                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3881     AC_TRY_COMPILE([#include <krb5.h>],
3882       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3883       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3884       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3885
3886   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3887     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3888               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3889   fi
3890
3891   AC_CACHE_CHECK([for KV5M_KEYTAB],
3892                  samba_cv_HAVE_KV5M_KEYTAB,[
3893     AC_TRY_COMPILE([#include <krb5.h>],
3894       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3895       samba_cv_HAVE_KV5M_KEYTAB=yes,
3896       samba_cv_HAVE_KV5M_KEYTAB=no)])
3897
3898   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3899       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3900              [Whether the KV5M_KEYTAB option is available])
3901   fi
3902
3903   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3904                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3905     AC_TRY_COMPILE([#include <krb5.h>],
3906       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3907       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3908       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3909
3910   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3911     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3912               [Whether KRB5_KU_OTHER_CKSUM is available])
3913   fi
3914
3915   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3916                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3917     AC_TRY_COMPILE([#include <krb5.h>],
3918       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3919       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3920       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3921
3922   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3923     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3924               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3925   fi
3926
3927   AC_CACHE_CHECK([for the krb5_princ_component macro],
3928                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3929     AC_TRY_LINK([#include <krb5.h>],
3930       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3931       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3932       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3933
3934   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3935     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3936                [Whether krb5_princ_component is available])
3937   fi
3938
3939   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3940                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3941     AC_TRY_COMPILE([#include <krb5.h>],
3942       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3943       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3944       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3945
3946   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3947     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3948               [Whether krb5_keytab_entry has key member])
3949   fi
3950
3951   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3952                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3953     AC_TRY_COMPILE([#include <krb5.h>],
3954       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3955       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3956       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3957
3958   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3959     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3960               [Whether krb5_keytab_entry has keyblock member])
3961   fi
3962
3963   AC_CACHE_CHECK([for magic in krb5_address],
3964                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3965     AC_TRY_COMPILE([#include <krb5.h>],
3966       [krb5_address addr; addr.magic = 0;],
3967       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3968       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3969
3970   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3971     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3972               [Whether the krb5_address struct has a magic property])
3973   fi
3974
3975   AC_CACHE_CHECK([for WRFILE: keytab support],
3976                 samba_cv_HAVE_WRFILE_KEYTAB,[
3977     AC_TRY_RUN([
3978 #include<krb5.h>
3979   main()
3980   {
3981     krb5_context context;
3982     krb5_keytab keytab;
3983
3984     krb5_init_context(&context);
3985     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3986   }],
3987   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3988   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3989
3990   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3991       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3992                [Whether the WRFILE:-keytab is supported])
3993   fi
3994
3995   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3996                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3997     AC_TRY_COMPILE([#include <krb5.h>],
3998     [
3999     krb5_context context;
4000     krb5_principal principal;
4001     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4002     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4003     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4004
4005   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4006     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4007               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4008   fi
4009
4010   AC_CACHE_CHECK([for krb5_addresses type],
4011                 samba_cv_HAVE_KRB5_ADDRESSES,[
4012     AC_TRY_COMPILE([#include <krb5.h>],
4013       [krb5_addresses addr;],
4014       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4015       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4016
4017   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4018     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4019                [Whether the type krb5_addresses type exists])
4020   fi
4021
4022   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4023                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4024     AC_TRY_COMPILE([#include <krb5.h>],
4025     [
4026     krb5_mk_error(0,0,0);],
4027     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4028     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4029
4030   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4031     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4032               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4033   fi
4034
4035   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4036     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4037         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4038         AC_TRY_RUN_STRICT([
4039                 #include <stdlib.h>
4040                 #include <krb5.h>
4041                 int main(void) {
4042                         krb5_context context = NULL;
4043                         char *str = NULL;
4044                         krb5_enctype_to_string(context, 1, &str);
4045                         if (str) free (str); 
4046                         return 0;
4047                 }
4048                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4049                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4050                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4051
4052     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4053       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4054                 [whether krb5_enctype_to_string takes krb5_context argument])
4055     fi
4056
4057     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4058         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4059         AC_TRY_RUN_STRICT([
4060                 #include <krb5.h>
4061                 int main(void) {
4062                         char buf[256];
4063                         krb5_enctype_to_string(1, buf, 256);
4064                         return 0;
4065                 }
4066                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4067                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4068                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4069
4070     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4071       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4072                 [whether krb5_enctype_to_string takes size_t argument])
4073     fi
4074   fi
4075
4076   AC_CACHE_CHECK([for krb5_principal_get_realm],
4077                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4078     AC_TRY_LINK([#include <krb5.h>],
4079       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4080       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4081       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4082
4083   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4084     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4085                [Whether the function krb5_principal_get_realm is defined])
4086   fi
4087
4088   AC_CACHE_CHECK([for krb5_princ_realm],
4089                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4090     AC_TRY_LINK([#include <krb5.h>],
4091       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4092       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4093       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4094
4095   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4096     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4097                [Whether the macro krb5_princ_realm is defined])
4098   fi
4099
4100   #
4101   #
4102   # Now the decisions whether we can support krb5
4103   #
4104   # NOTE: all tests should be done before this block!
4105   #
4106   #
4107   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4108     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4109     use_ads=no
4110   fi
4111
4112   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4113           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4114   then
4115     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4116     use_ads=no
4117   fi
4118
4119   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4120           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4121   then
4122     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4123     use_ads=no
4124   fi
4125
4126   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4127           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4128   then
4129     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4130     use_ads=no
4131   fi
4132
4133   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4134           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4135   then
4136     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4137     use_ads=no
4138   fi
4139
4140   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4141
4142       # We only need the following functions if we can't get the enctype
4143       # and kvno out of the ticket directly (ie. on Heimdal).
4144
4145       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4146       then
4147         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4148         use_ads=no
4149       fi
4150
4151       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4152       then
4153         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4154         use_ads=no
4155       fi
4156
4157   fi
4158
4159   if test x"$use_ads" = x"yes"; then
4160     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4161     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4162     if test x"$have_gssapi" = x"yes"; then
4163       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4164     fi
4165   else
4166     if test x"$with_ads_support" = x"yes"; then
4167         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4168     else
4169         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4170     fi
4171     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4172     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4173     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4174     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4175     KRB5_LIBS=""
4176     with_ads_support=no
4177   fi
4178   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4179   AC_MSG_RESULT([$use_ads])
4180
4181 LIBS="$ac_save_LIBS"
4182 fi
4183
4184 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4185 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4186
4187
4188 ########################################################
4189 # Compile with DNS Updates support?
4190
4191 with_dnsupdate_support=no
4192 AC_MSG_CHECKING([whether to enable DNS Updates support])
4193
4194 AC_ARG_WITH(dnsupdate,
4195 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4196 [ case "$withval" in
4197     yes|no)
4198         with_dnsupdate_support=$withval
4199         ;;
4200   esac ])
4201
4202 AC_MSG_RESULT($with_dnsupdate_support)
4203
4204 if test x"$with_dnsupdate_support" != x"no"; then
4205
4206   ################################################################
4207   # first test for Active Directory support being enabled
4208   #if test x"$with_ads_support" = x"no"; then
4209   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4210   #             with_dnsupdate_support=no
4211   #fi           
4212   ##################################################################
4213   # then test for uuid.h (necessary to generate unique DNS keynames
4214   # (uuid.h is required for this test)
4215   AC_CHECK_HEADERS(uuid/uuid.h)
4216
4217   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4218         if test x"$with_dnsupdate_support" = x"yes"; then
4219          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4220         else
4221          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4222         fi
4223         with_dnsupdate_support=no
4224   fi
4225 fi
4226
4227 if test x"$with_dnsupdate_support" != x"no"; then
4228
4229   ########################################################
4230   # Now see if we can find the uuid libs in standard paths
4231   # On some systems, the uuid API is in libc,