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