r22102: Remove obsoleted SHLIBS_PROGS from {Makefile,configure}.in.
[sfrench/samba-autobuild/.git] / source / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 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(PAM_MODULES)
298 AC_SUBST(INSTALL_PAM_MODULES)
299 AC_SUBST(UNINSTALL_PAM_MODULES)
300 AC_SUBST(SMBWRAPPER)
301 AC_SUBST(SMBWRAP_OBJS)
302 AC_SUBST(SMBWRAP_INC)
303 AC_SUBST(EXTRA_BIN_PROGS)
304 AC_SUBST(SMBMOUNT_PROGS)
305 AC_SUBST(CIFSMOUNT_PROGS)
306 AC_SUBST(INSTALL_CIFSMOUNT)
307 AC_SUBST(UNINSTALL_CIFSMOUNT)
308 AC_SUBST(EXTRA_SBIN_PROGS)
309 AC_SUBST(EXTRA_ALL_TARGETS)
310 AC_SUBST(CONFIG_LIBS)
311 AC_SUBST(NSCD_LIBS)
312
313 ## check for --enable-debug first before checking CFLAGS before
314 ## so that we don't mix -O and -g
315 AC_ARG_ENABLE(debug, 
316 [  --enable-debug          Turn on compiler debugging information (default=no)],
317     [if eval "test x$enable_debug = xyes"; then
318         CFLAGS="${CFLAGS} -g"
319     fi])
320
321 # compile with optimization and without debugging by default, but
322 # allow people to set their own preference.
323 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
324 # if it has no value.  This prevent *very* large debug binaries from occurring
325 # by default.
326 if test "x$CFLAGS" = x; then
327   CFLAGS="-O"
328 fi
329
330 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
331
332 AC_LIBREPLACE_CC_CHECKS
333
334 m4_include(lib/socket_wrapper/config.m4)
335
336 #################################################
337 # set prefix for 'make test'
338 selftest_prefix="./"
339 AC_SUBST(selftest_prefix)
340 AC_ARG_WITH(selftest-prefix,
341 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
342 [ case "$withval" in
343   yes|no)
344     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
345   ;;
346   * )
347     selftest_prefix="$withval"
348     ;;
349   esac
350 ])
351
352 #################################################
353 # set path of samba4's smbtorture
354 smbtorture4_path=""
355 AC_SUBST(smbtorture4_path)
356 AC_ARG_WITH(smbtorture4_path,
357 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
358 [ case "$withval" in
359   yes|no)
360     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
361   ;;
362   * )
363     smbtorture4_path="$withval"
364     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
365         AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
366     fi
367   ;;
368  esac
369 ])
370
371 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
372     [if eval "test x$enable_developer = xyes"; then
373         developer=yes
374         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
375         # Add -Wdeclaration-after-statement if compiler supports it
376         AC_CACHE_CHECK(
377           [that the C compiler understands -Wdeclaration-after-statement],
378           samba_cv_HAVE_Wdeclaration_after_statement, [
379           AC_TRY_RUN_STRICT([
380             int main(void)
381             {
382                 return 0;
383             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
384             samba_cv_HAVE_Wdeclaration_after_statement=yes,
385             samba_cv_HAVE_Wdeclaration_after_statement=no,
386             samba_cv_HAVE_Wdeclaration_after_statement=cross)
387        ])
388        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
389             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
390        fi
391     fi])
392
393 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
394     [if eval "test x$enable_krb5developer = xyes"; then
395         developer=yes
396         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
397     fi])
398
399 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
400
401 if test "x$enable_dmalloc" = xyes
402 then
403         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
404         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
405                   [Define to check invariants around some common functions])
406         LIBS="$LIBS -ldmalloc"  
407 fi
408
409 #################################################
410 # check for a shared memory profiling support
411 AC_MSG_CHECKING(whether to use profiling)
412 AC_ARG_WITH(profiling-data,
413 [  --with-profiling-data   Include gathering source code profile information (default=no)],
414 [ case "$withval" in
415   yes)
416     AC_MSG_RESULT(yes)
417     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
418     samba_cv_WITH_PROFILE=yes
419     ;;
420   *)
421     AC_MSG_RESULT(no)
422     samba_cv_WITH_PROFILE=no
423     ;;
424   esac ],
425   AC_MSG_RESULT(no)
426 )
427
428 dnl Checks for programs.
429
430 AC_PROG_INSTALL
431 AC_PROG_AWK
432 AC_PATH_PROG(PERL, perl)
433
434 AC_CHECK_TOOL(AR, ar)
435
436 dnl Check if we use GNU ld
437 LD=ld
438 AC_PROG_LD_GNU
439
440 dnl Certain versions of GNU ld the default is not to have the 
441 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
442 dnl warnings when building modules.
443 if test "$ac_cv_prog_gnu_ld" = "yes"; then
444         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
445         AC_MSG_CHECKING(GNU ld release date)
446         changequote(,)dnl
447         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'`
448         changequote([,])dnl
449         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
450         if test -n "$ac_cv_gnu_ld_date"; then
451         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
452                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
453         fi
454         else
455            AC_MSG_CHECKING(GNU ld release version)
456            changequote(,)dnl
457            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
458            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
459            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
460            changequote([,])dnl
461            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
462            AC_MSG_CHECKING(GNU ld release version major)
463            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
464            AC_MSG_CHECKING(GNU ld release version minor)
465            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
466            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
467              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
468            fi
469         fi
470 fi
471
472 dnl look for executable suffix
473 AC_EXEEXT
474
475 dnl Check if C compiler understands -c and -o at the same time
476 AC_PROG_CC_C_O
477 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
478       BROKEN_CC=
479 else
480       BROKEN_CC=#
481 fi
482 AC_SUBST(BROKEN_CC)
483
484 dnl Check if the C compiler understands -Werror
485 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
486  AC_TRY_RUN_STRICT([
487   int main(void)
488   {
489         return 0;
490   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
491   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
492 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
493    Werror_FLAGS="-Werror"
494 else 
495 dnl Check if the C compiler understands -w2
496 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
497  AC_TRY_RUN_STRICT([
498   int main(void)
499   {
500         return 0;
501   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
502   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
503 if test x"$samba_cv_HAVE_w2" = x"yes"; then
504    Werror_FLAGS="-w2"
505 fi
506 fi
507
508 dnl Check if the C compiler understands volatile (it should, being ANSI).
509 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
510     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
511         samba_cv_volatile=yes,samba_cv_volatile=no)])
512 if test x"$samba_cv_volatile" = x"yes"; then
513    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
514 fi
515
516 ############################################
517 # check if the compiler can handle negative enum values
518 # and don't truncate the values to INT_MAX
519 # a runtime test is needed here
520 AC_SUBST(PIDL_ARGS)
521 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
522     AC_TRY_RUN(
523 [
524         #include <stdio.h>
525         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
526         int main(void) {
527                 enum negative_values v1 = NEGATIVE_VALUE;
528                 unsigned v2 = NEGATIVE_VALUE;
529
530                 if (v1 != 0xFFFFFFFF) {
531                         printf("%u != 0xFFFFFFFF\n", v1);
532                         return 1;
533                 }
534                 if (v2 != 0xFFFFFFFF) {
535                         printf("%u != 0xFFFFFFFF\n", v2);
536                         return 1;
537                 }
538
539                 return 0;
540         }
541 ],
542         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
543 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
544         AC_MSG_WARN([using --unit-enums for pidl])
545         PIDL_ARGS="$PIDL_ARGS --uint-enums"
546 fi
547
548 dnl Figure out the flags to support named structure initializers
549
550 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
551
552 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
553 AC_MSG_CHECKING(uname -s)
554 AC_MSG_RESULT(${UNAME_S})
555
556 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
557 AC_MSG_CHECKING(uname -r)
558 AC_MSG_RESULT(${UNAME_R})
559
560 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
561 AC_MSG_CHECKING(uname -m)
562 AC_MSG_RESULT(${UNAME_M})
563
564 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
565 AC_MSG_CHECKING(uname -p)
566 AC_MSG_RESULT(${UNAME_P})
567
568 dnl Add #include for broken IRIX header files
569   case "$host_os" in
570         *irix6*)
571                 #TODO add to libreplace
572                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
573                         dnl Fix sensible defaults for MIPSPro compilers. The
574                         dnl error numbers are valid for the 7.3 compilers,
575                         dnl hopefully also valid for the 7.4 series.
576                         dnl
577                         dnl Bugzilla 3801. Force an error on warning 1035
578                         dnl so we don't incorrectly detect stdint.h. This
579                         dnl warning is emitted for #error directives.
580                         CFLAGS="$CFLAGS -diag_error 1035"
581                         dnl 1209: Controlling expression is constant
582                         dnl 1174: Function foo declared but never referenced
583                         dnl 3201: Parameter foo was never referenced
584                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
585                 fi
586         ;;
587 esac
588
589 DYNEXP=
590 AC_SUBST(DYNEXP)
591
592 dnl Add modules that have to be built by default here
593 dnl These have to be built static:
594 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 rpc_epmapper auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
595
596 dnl These are preferably build shared, and static if dlopen() is not available
597 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"
598
599 if test "x$developer" = xyes; then
600    default_static_modules="$default_static_modules rpc_rpcecho"
601    default_shared_modules="$default_shared_modules charset_weird"
602 fi
603
604 #
605 # Config CPPFLAG settings for strange OS's that must be set
606 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
607 # case statement; its first reference must be unconditional.
608 #
609 case "$host_os" in
610     *hpux*)
611 #
612 # Defines needed for HPUX support.
613 # HPUX has bigcrypt but (sometimes?) doesn't use it for
614 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
615 #
616       case `uname -r` in
617                         *9*|*10*)
618                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
619                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
620                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
621                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
622                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
623                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
624                                 ;;
625                         *11*)
626                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
627                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
628                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
629                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
630                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
631                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
632                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
633                                 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11])
634                                 ;;
635       esac
636       ;;
637
638 #
639 # CRAY Unicos has broken const handling
640        *unicos*)
641           AC_MSG_RESULT([disabling const])
642           CPPFLAGS="$CPPFLAGS -Dconst="
643           ;;
644         
645 #
646 # AIX4.x doesn't even admit to having large
647 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
648 #
649     *aix4*)
650           AC_MSG_RESULT([enabling large file support])
651       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
652           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
653       ;;    
654 #
655 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
656 # to the existance of large files..
657 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
658 # recommendations on large file support, however it makes the
659 # compile work using gcc 2.7 and 2.8, whereas using the Sun
660 # recommendation makes the compile fail on gcc2.7. JRA.
661 #
662 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
663 #
664         *solaris*)
665                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
666                 case `uname -r` in
667                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
668                                 AC_MSG_RESULT([no large file support])
669                                 ;;
670                         5.*)
671                         AC_MSG_RESULT([enabling large file support])
672                         if test "$ac_cv_prog_gcc" = yes; then
673                                 ${CC-cc} -v >conftest.c 2>&1
674                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
675                                 rm -fr conftest.c
676                                 case "$ac_cv_gcc_compiler_version_number" in
677                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
678                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
679                                                 LDFLAGS="$LDFLAGS -lthread"
680                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
681                                                 ;;
682                                         *)
683                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
684                                                 LDFLAGS="$LDFLAGS -lthread"
685                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
686                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
687                                                 ;;
688                                 esac
689                         else
690                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
691                                 LDFLAGS="$LDFLAGS -lthread"
692                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
693                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
694                         fi
695                         ;;
696                 esac
697                 ;;
698 #
699 # IRIX uses SYSV printing.  Make sure to set that here
700 #
701         *irix*)
702                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
703                 ;;
704         *freebsd*|*dragonfly*)
705                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
706                 ;;
707 #
708 # VOS may need to have POSIX support and System V compatibility enabled.
709 #
710     *vos*)
711     case "$CPPFLAGS" in
712           *-D_POSIX_C_SOURCE*)
713                 ;;
714           *)
715                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
716                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
717                 ;;
718     esac
719     case "$CPPFLAGS" in
720           *-D_SYSV*|*-D_SVID_SOURCE*)
721                 ;;
722           *)
723                 CPPFLAGS="$CPPFLAGS -D_SYSV"
724                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
725     esac
726     ;;
727 #
728 # Tests needed for SINIX large file support.
729 #
730     *sysv4*)
731       if test $host = mips-sni-sysv4 ; then
732         AC_MSG_CHECKING([for LFS support])
733         old_CPPFLAGS="$CPPFLAGS"
734         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
735         AC_TRY_RUN([
736 #include <unistd.h>
737 main () {
738 #if _LFS64_LARGEFILE == 1
739 exit(0);
740 #else
741 exit(1);
742 #endif
743 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
744         CPPFLAGS="$old_CPPFLAGS"
745         if test x$SINIX_LFS_SUPPORT = xyes ; then
746           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
747                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
748           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
749           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
750           LIBS="`getconf LFS64_LIBS` $LIBS"
751         fi
752       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
753       fi
754     ;;
755
756 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
757 #
758     *linux*)
759         AC_MSG_CHECKING([for LFS support])
760         old_CPPFLAGS="$CPPFLAGS"
761         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
762        AC_TRY_RUN([
763 #include <unistd.h>
764 #include <sys/utsname.h>
765 #include <string.h>
766 #include <stdlib.h>
767 main() {
768 #if _LFS64_LARGEFILE == 1
769        struct utsname uts;
770        char *release;
771        int major, minor;
772
773        /* Ensure this is glibc 2.2 or higher */
774 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
775        int libc_major = __GLIBC__;
776        int libc_minor = __GLIBC_MINOR__;
777
778        if (libc_major < 2)
779               exit(1);
780        if (libc_minor < 2)
781               exit(1);
782 #endif
783
784        /* Ensure this is kernel 2.4 or higher */
785
786        uname(&uts);
787        release = strdup(uts.release);
788        major = atoi(strsep(&release, "."));
789        minor = atoi(strsep(&release, "."));
790
791        if (major > 2 || (major == 2 && minor > 3))
792                exit(0);
793        exit(1);
794 #else
795        exit(1);
796 #endif
797 }
798 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
799         CPPFLAGS="$old_CPPFLAGS"
800         if test x$LINUX_LFS_SUPPORT = xyes ; then
801                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
802                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
803                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
804                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
805         fi
806         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
807         ;;
808
809 #
810 # MacOS X is the *only* system that uses compose character in utf8. This
811 # is so horribly broken....
812 #
813     *darwin*)
814         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
815
816         # Add a system specific charset module.
817         default_shared_modules="$default_shared_modules charset_macosxfs"
818
819         ;;
820     *hurd*)
821         AC_MSG_CHECKING([for LFS support])
822         old_CPPFLAGS="$CPPFLAGS"
823         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
824         AC_TRY_RUN([
825 #include <unistd.h>
826 main () {
827 #if _LFS64_LARGEFILE == 1
828 exit(0);
829 #else
830 exit(1);
831 #endif
832 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
833         CPPFLAGS="$old_CPPFLAGS"
834         if test x$GLIBC_LFS_SUPPORT = xyes ; then
835           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
836                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
837           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
838         fi
839       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
840     ;;
841
842 esac
843
844 AC_LIBREPLACE_BROKEN_CHECKS
845
846 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
847
848 LIBREPLACE_OBJS=""
849 for obj in ${LIBREPLACEOBJ}; do
850         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
851 done
852 AC_SUBST(LIBREPLACE_OBJS)
853
854 # add -ldl to the global LIBS
855 LIBS="${LIBS} ${LIBDL}"
856
857 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)
858 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
859 AC_CHECK_HEADERS(limits.h float.h)
860 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
861 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
862 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
863 AC_CHECK_HEADERS(sys/un.h)
864 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
865 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
866 AC_CHECK_HEADERS(sys/sysmacros.h)
867 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
868 AC_CHECK_HEADERS(langinfo.h locale.h)
869 AC_CHECK_HEADERS(xfs/libxfs.h)
870
871 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
872 #if HAVE_RPC_RPC_H
873 #include <rpc/rpc.h>
874 #endif
875 ]])
876
877 ## These fail to compile on IRIX so just check for their presence
878 AC_CHECK_HEADERS(sys/mode.h,,,)
879
880 # Look for Darwin headers
881 old_CPPFLAGS="$CPPFLAGS"
882 CPPFLAGS="-Iinclude $CPPFLAGS"
883 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
884 CPPFLAGS="$old_CPPFLAGS"
885
886 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
887 # subdirectory of headers.
888 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
889
890 # check for linux on amd64 since valgrind is not quite there yet
891 case "$host_os" in
892         *linux*)
893                 case "$UNAME_P" in
894                         *x86_64*)
895                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
896                                 ;;
897                 esac
898                 ;;
899 esac
900
901
902 #
903 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
904 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
905 #
906 case "$host_os" in
907     *hpux*)
908                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
909                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
910                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
911                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
912                 fi
913         ;;
914 esac
915 AC_CHECK_HEADERS(shadow.h)
916 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
917 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
918
919 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
920 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
921
922 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
923
924 # For experimental utmp support (lastlog on some BSD-like systems)
925 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
926  
927 AC_CHECK_SIZEOF(int,cross)
928 AC_CHECK_SIZEOF(long,cross)
929 AC_CHECK_SIZEOF(long long,cross)
930 AC_CHECK_SIZEOF(short,cross)
931
932 AC_C_CONST
933 AC_C_INLINE
934 AC_C_BIGENDIAN
935 AC_C_CHAR_UNSIGNED
936
937 AC_TYPE_SIGNAL
938 AC_TYPE_UID_T
939 AC_TYPE_MODE_T
940 AC_TYPE_OFF_T
941 AC_TYPE_SIZE_T
942 AC_TYPE_PID_T
943 AC_STRUCT_ST_RDEV
944 AC_DIRENT_D_OFF
945 AC_CHECK_TYPE(ino_t,unsigned)
946 AC_CHECK_TYPE(loff_t,off_t)
947 AC_CHECK_TYPE(offset_t,loff_t)
948 AC_CHECK_TYPE(ssize_t, int)
949 AC_CHECK_TYPE(wchar_t, unsigned short)
950 AC_CHECK_TYPE(comparison_fn_t, 
951 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
952
953 ############################################
954 # for cups support we need libcups, and a handful of header files
955
956 AC_ARG_ENABLE(cups,
957 [  --enable-cups           Turn on CUPS support (default=auto)])
958
959 if test x$enable_cups != xno; then
960         AC_PATH_PROG(CUPS_CONFIG, cups-config)
961
962         if test "x$CUPS_CONFIG" != x; then
963                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
964                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
965                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
966                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
967         elif test x"$enable_cups" = x"yes"; then
968                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
969         fi
970 fi
971
972 AC_ARG_ENABLE(iprint,
973 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
974
975 if test x$enable_iprint != xno; then
976         if test "x$CUPS_CONFIG" != x; then
977                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
978         elif test x"$enable_iprint" = x"yes"; then
979                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
980         fi
981 fi
982
983 ############################################
984 # check if the compiler will optimize out function calls
985 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
986     AC_TRY_LINK([
987 #include <stdio.h>],
988 [
989                 if (0) {
990                    this_function_does_not_exist();
991                 } else {
992                   return 1;
993                 }
994
995 ],
996         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
997 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
998    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
999 fi
1000
1001 ############################################
1002 # check for unix domain sockets
1003 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1004     AC_TRY_COMPILE([
1005 #include <sys/types.h>
1006 #include <stdlib.h>
1007 #include <stddef.h>
1008 #include <sys/socket.h>
1009 #include <sys/un.h>],
1010 [
1011   struct sockaddr_un sunaddr; 
1012   sunaddr.sun_family = AF_UNIX;
1013 ],
1014         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1015 if test x"$samba_cv_unixsocket" = x"yes"; then
1016    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1017 fi
1018
1019
1020 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1021     AC_TRY_COMPILE([
1022 #include <sys/types.h>
1023 #if STDC_HEADERS
1024 #include <stdlib.h>
1025 #include <stddef.h>
1026 #endif
1027 #include <sys/socket.h>],[socklen_t i = 0],
1028         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1029 if test x"$samba_cv_socklen_t" = x"yes"; then
1030    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1031 fi
1032
1033 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1034     AC_TRY_COMPILE([
1035 #include <sys/types.h>
1036 #if STDC_HEADERS
1037 #include <stdlib.h>
1038 #include <stddef.h>
1039 #endif
1040 #include <signal.h>],[sig_atomic_t i = 0],
1041         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1042 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1043    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1044 fi
1045
1046 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1047     AC_TRY_COMPILE([
1048 #include <sys/types.h>
1049 #if STDC_HEADERS
1050 #include <stdlib.h>
1051 #include <stddef.h>
1052 #endif
1053 #if TIME_WITH_SYS_TIME
1054 # include <sys/time.h>
1055 # include <time.h>
1056 #else
1057 # if HAVE_SYS_TIME_H
1058 #  include <sys/time.h>
1059 # else
1060 #  include <time.h>
1061 # endif
1062 #endif
1063 ],[struct timespec ts;],
1064         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1065 if test x"$samba_cv_struct_timespec" = x"yes"; then
1066    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1067 fi
1068
1069 # stupid headers have the functions but no declaration. grrrr.
1070 AC_HAVE_DECL(errno, [#include <errno.h>])
1071 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1072 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1073 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1074 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1075 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1076 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1077
1078 # and glibc has setresuid under linux but the function does
1079 # nothing until kernel 2.1.44! very dumb.
1080 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1081     AC_TRY_RUN([#include <errno.h>
1082 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1083         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1084 if test x"$samba_cv_have_setresuid" = x"yes"; then
1085     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1086 fi
1087
1088 # Do the same check for setresguid...
1089 #
1090 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1091     AC_TRY_RUN([#include <unistd.h>
1092 #include <errno.h>
1093 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1094         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1095 if test x"$samba_cv_have_setresgid" = x"yes"; then
1096     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1097 fi
1098
1099 AC_FUNC_MEMCMP
1100
1101 ###############################################
1102 # Readline included by default unless explicitly asked not to
1103 test "${with_readline+set}" != "set" && with_readline=yes
1104
1105 # test for where we get readline() from
1106 AC_MSG_CHECKING(whether to use readline)
1107 AC_ARG_WITH(readline,
1108 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1109 [  case "$with_readline" in
1110   yes)
1111     AC_MSG_RESULT(yes)
1112
1113     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1114     AC_CHECK_HEADERS(readline/history.h)
1115
1116     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1117       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1118        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1119       done
1120       AC_CHECK_LIB(readline, rl_callback_handler_install,
1121        [TERMLIBS="-lreadline $TERMLIBS"
1122        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1123        break], [TERMLIBS=], $TERMLIBS)])
1124     ;;
1125   no)
1126     AC_MSG_RESULT(no)
1127     ;;
1128   *)
1129     AC_MSG_RESULT(yes)
1130
1131     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1132     # alternate readline path
1133     _ldflags=${LDFLAGS}
1134     _cppflags=${CPPFLAGS}
1135
1136     # Add additional search path
1137     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1138     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1139
1140     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1141     AC_CHECK_HEADERS(readline/history.h)
1142
1143     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1144       for termlib in ncurses curses termcap terminfo termlib; do
1145        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1146       done
1147       AC_CHECK_LIB(readline, rl_callback_handler_install,
1148        [TERMLDFLAGS="-L$with_readline/lib"
1149        TERMCPPFLAGS="-I$with_readline/include"
1150        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1151        TERMLIBS="-lreadline $TERMLIBS"
1152        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1153        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1154
1155     LDFLAGS=$_ldflags
1156     ;;
1157   esac],
1158   AC_MSG_RESULT(no)
1159 )
1160 AC_SUBST(TERMLIBS)
1161 AC_SUBST(TERMLDFLAGS)
1162
1163 # The readline API changed slightly from readline3 to readline4, so
1164 # code will generate warnings on one of them unless we have a few
1165 # special cases.
1166 AC_CHECK_LIB(readline, rl_completion_matches,
1167              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1168                         [Do we have rl_completion_matches?])],
1169              [],
1170              [$TERMLIBS])
1171
1172 # not all readline libs have rl_event_hook or history_list
1173 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1174 AC_CHECK_LIB(readline, history_list,
1175              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1176              [],
1177              [$TERMLIBS])
1178
1179 # The following test taken from the cvs sources
1180 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1181 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1182 # libsocket.so which has a bad implementation of gethostbyname (it
1183 # only looks in /etc/hosts), so we only look for -lsocket if we need
1184 # it.
1185 AC_CHECK_FUNCS(connect)
1186 if test x"$ac_cv_func_connect" = x"no"; then
1187     case "$LIBS" in
1188     *-lnsl*) ;;
1189     *) AC_CHECK_LIB(nsl_s, connect) ;;
1190     esac
1191     case "$LIBS" in
1192     *-lnsl*) ;;
1193     *) AC_CHECK_LIB(nsl, connect) ;;
1194     esac
1195     case "$LIBS" in
1196     *-lsocket*) ;;
1197     *) AC_CHECK_LIB(socket, connect) ;;
1198     esac
1199     case "$LIBS" in
1200     *-linet*) ;;
1201     *) AC_CHECK_LIB(inet, connect) ;;
1202     esac
1203     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1204     dnl has been cached.
1205     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1206        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1207         # ac_cv_func_connect=yes
1208         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1209         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1210     fi
1211 fi
1212
1213 ###############################################
1214 # test for where we get yp_get_default_domain() from
1215 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1216 AC_CHECK_FUNCS(yp_get_default_domain)
1217
1218 # Check if we have execl, if not we need to compile smbrun.
1219 AC_CHECK_FUNCS(execl)
1220 if test x"$ac_cv_func_execl" = x"no"; then
1221     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1222 fi
1223
1224 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
1225 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1226 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1227 AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
1228 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1229 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1230 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1231 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1232 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1233 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1234 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1235 AC_CHECK_FUNCS(getpwent_r)
1236 AC_CHECK_FUNCS(getdents getdents64)
1237 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1238 AC_CHECK_FUNCS(syslog vsyslog timegm)
1239 AC_CHECK_FUNCS(setlocale nl_langinfo)
1240 AC_CHECK_FUNCS(nanosleep)
1241 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1242 AC_CHECK_FUNCS(memalign posix_memalign)
1243 AC_CHECK_HEADERS(sys/mman.h)
1244 # setbuffer, shmget, shm_open are needed for smbtorture
1245 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1246 AC_CHECK_FUNCS(makecontext getcontext setcontext swapcontext)
1247
1248 # Find a method of generating a stack trace
1249 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1250 AC_CHECK_FUNCS(backtrace_symbols)
1251 AC_CHECK_LIB(exc, trace_back_stack)
1252
1253 echo -n "checking for GPFS GPL libs... "
1254 save_LIBS="$LIBS"
1255 LIBS="$LIBS -lgpfs_gpl"
1256 AC_TRY_LINK([#include <gpfs_gpl.h>],
1257           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1258           samba_cv_HAVE_GPFS=yes,
1259           samba_cv_HAVE_GPFS=no)
1260 echo $samba_cv_HAVE_GPFS
1261 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1262     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1263     default_shared_modules="$default_shared_modules vfs_gpfs"
1264 fi
1265 LIBS="$save_LIBS"
1266
1267 # Note that all the libunwind symbols in the API are defined to internal
1268 # platform-specific version, so we must include libunwind.h before checking
1269 # any of them.
1270 AC_MSG_CHECKING([for libunwind])
1271 save_LIBS=$LIBS
1272 if test x"$UNAME_P" = xunknown ; then
1273     # This probably won't link without the platform-specific libunwind.
1274     LIBS="$LIBS -lunwind"
1275 else
1276     # Add the platform-specific libunwind module. uname -p seems the most
1277     # plausible option and works for ia64, where libunwind is most useful.
1278     LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1279 fi
1280
1281 AC_TRY_LINK(
1282     [
1283 #ifdef HAVE_LIBUNWIND_H
1284 #include <libunwind.h>
1285 #endif
1286     ],
1287     [
1288         unw_context_t ctx; unw_cursor_t cur;
1289         char buf[256]; unw_word_t off; 
1290         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1291         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1292     ],
1293     [
1294         AC_MSG_RESULT(yes)
1295         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1296
1297         # If we have libunwind, test whether we also have libunwind-ptrace
1298         # which would let us unwind arbitrary processes.
1299         save_LIBS=$LIBS
1300         AC_CHECK_HEADERS(libunwind-ptrace.h)
1301         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1302             [
1303                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1304                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1305                     [Whether libunwind-ptrace.a is available.])
1306             ],
1307             [ LIBUNWIND_PTRACE="" ])
1308
1309         LIBS=$save_LIBS
1310     ],
1311     [
1312         AC_MSG_RESULT(no)
1313         LIBS=$save_LIBS
1314     ])
1315
1316 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1317 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1318     AC_CHECK_HEADERS(sys/ptrace.h)
1319     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1320     AC_TRY_LINK(
1321             [
1322 #if HAVE_SYS_TYPES_H
1323 #include <sys/types.h>
1324 #endif
1325 #if HAVE_SYS_PTRACE_H
1326 #include <sys/ptrace.h>
1327 #endif
1328             ],
1329             [
1330                 int main(int argc, const char ** argv)
1331                 {
1332                         pid_t me = (pid_t)-1;
1333                         ptrace(PTRACE_ATTACH, me, 0, 0);
1334                         ptrace(PTRACE_DETACH, me, 0, 0);
1335                         return 0;
1336                 }
1337             ],
1338             [
1339                 AC_MSG_RESULT(yes)
1340                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1341                     [Whether the Linux ptrace(2) interface is available.])
1342             ],
1343             [
1344                 AC_MSG_RESULT(no)
1345                 LIBUNWIND_PTRACE=""
1346             ])
1347 fi
1348
1349 AC_SUBST(LIBUNWIND_PTRACE)
1350
1351 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1352 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1353 AC_CHECK_FUNCS(__getcwd _getcwd)
1354 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1355 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1356 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1357 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1358 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1359 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1360 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1361 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1362 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1363 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1364 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1365 AC_CHECK_FUNCS(prctl)
1366
1367 AC_TRY_COMPILE([
1368 #ifdef HAVE_SYS_PRCTL_H
1369 #include <sys/prctl.h>
1370 #endif
1371 ],
1372 [int i; i = prtcl(0); ],
1373 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1374
1375 #
1376
1377 #
1378 case "$host_os" in
1379     *linux*)
1380        # glibc <= 2.3.2 has a broken getgrouplist
1381        AC_TRY_RUN([
1382 #include <unistd.h>
1383 #include <sys/utsname.h>
1384 main() {
1385        /* glibc up to 2.3 has a broken getgrouplist */
1386 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1387        int libc_major = __GLIBC__;
1388        int libc_minor = __GLIBC_MINOR__;
1389
1390        if (libc_major < 2)
1391               exit(1);
1392        if ((libc_major == 2) && (libc_minor <= 3))
1393               exit(1);
1394 #endif
1395        exit(0);
1396 }
1397 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1398        if test x"$linux_getgrouplist_ok" = x"yes"; then
1399           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1400        fi
1401        ;;
1402     *)
1403        AC_CHECK_FUNCS(getgrouplist)
1404        ;;
1405 esac
1406
1407 #
1408 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1409 #
1410
1411 if test x$ac_cv_func_stat64 = xno ; then
1412   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1413   AC_TRY_LINK([
1414 #if defined(HAVE_UNISTD_H)
1415 #include <unistd.h>
1416 #endif
1417 #include <sys/stat.h>
1418 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1419   AC_MSG_RESULT([$ac_cv_func_stat64])
1420   if test x$ac_cv_func_stat64 = xyes ; then
1421     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1422   fi
1423 fi
1424
1425 if test x$ac_cv_func_lstat64 = xno ; then
1426   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1427   AC_TRY_LINK([
1428 #if defined(HAVE_UNISTD_H)
1429 #include <unistd.h>
1430 #endif
1431 #include <sys/stat.h>
1432 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1433   AC_MSG_RESULT([$ac_cv_func_lstat64])
1434   if test x$ac_cv_func_lstat64 = xyes ; then
1435     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1436   fi
1437 fi
1438
1439 if test x$ac_cv_func_fstat64 = xno ; then
1440   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1441   AC_TRY_LINK([
1442 #if defined(HAVE_UNISTD_H)
1443 #include <unistd.h>
1444 #endif
1445 #include <sys/stat.h>
1446 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1447   AC_MSG_RESULT([$ac_cv_func_fstat64])
1448   if test x$ac_cv_func_fstat64 = xyes ; then
1449     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1450   fi
1451 fi
1452
1453 #################################################
1454 # Check whether struct stat has timestamps with sub-second resolution.
1455 # At least IRIX and Solaris have these.
1456 #
1457 # We check that 
1458 #       all of st_mtim, st_atim and st_ctim exist
1459 #       all of the members are in fact of type struct timespec
1460 #
1461 # There is some conflicting standards weirdness about whether we should use
1462 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1463 # prefer struct timespec.
1464
1465 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1466     [
1467         AC_TRY_COMPILE(
1468             [
1469 #if TIME_WITH_SYS_TIME
1470 # include <sys/time.h>
1471 # include <time.h>
1472 #else
1473 # if HAVE_SYS_TIME_H
1474 #  include <sys/time.h>
1475 # else
1476 #  include <time.h>
1477 # endif
1478 #endif
1479 #ifdef HAVE_SYS_STAT_H
1480 #include <sys/stat.h>
1481 #endif
1482             ],
1483             [
1484                 struct timespec t;
1485                 struct stat s = {0};
1486                 t.tv_sec = s.st_mtim.tv_sec;
1487                 t.tv_nsec = s.st_mtim.tv_nsec;
1488                 t.tv_sec = s.st_ctim.tv_sec;
1489                 t.tv_nsec = s.st_ctim.tv_nsec;
1490                 t.tv_sec = s.st_atim.tv_sec;
1491                 t.tv_nsec = s.st_atim.tv_nsec;
1492             ],
1493             samba_stat_hires=yes, samba_stat_hires=no)
1494     ])
1495
1496 if test x"$samba_stat_hires" = x"yes" ; then
1497     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1498     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1499     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1500     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1501             [whether struct stat has sub-second timestamps])
1502 fi
1503
1504 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1505     [
1506         AC_TRY_COMPILE(
1507             [
1508 #if TIME_WITH_SYS_TIME
1509 # include <sys/time.h>
1510 # include <time.h>
1511 #else
1512 # if HAVE_SYS_TIME_H
1513 #  include <sys/time.h>
1514 # else
1515 #  include <time.h>
1516 # endif
1517 #endif
1518 #ifdef HAVE_SYS_STAT_H
1519 #include <sys/stat.h>
1520 #endif
1521             ],
1522             [
1523                 struct timespec t;
1524                 struct stat s = {0};
1525                 t.tv_sec = s.st_mtime;
1526                 t.tv_nsec = s.st_mtimensec;
1527                 t.tv_sec = s.st_ctime;
1528                 t.tv_nsec = s.st_ctimensec;
1529                 t.tv_sec = s.st_atime;
1530                 t.tv_nsec = s.st_atimensec;
1531             ],
1532             samba_stat_hires=yes, samba_stat_hires=no)
1533     ])
1534
1535 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1536     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1537     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1538     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1539     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1540             [whether struct stat has sub-second timestamps without struct timespec])
1541 fi
1542
1543 #####################################
1544 # needed for SRV lookups
1545 AC_CHECK_LIB(resolv, dn_expand)
1546 AC_CHECK_LIB(resolv, _dn_expand)
1547 AC_CHECK_LIB(resolv, __dn_expand)
1548
1549 #
1550 # Check for the functions putprpwnam, set_auth_parameters,
1551 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1552 # Needed for OSF1 and HPUX.
1553 #
1554
1555 AC_LIBTESTFUNC(security, putprpwnam)
1556 AC_LIBTESTFUNC(sec, putprpwnam)
1557
1558 AC_LIBTESTFUNC(security, set_auth_parameters)
1559 AC_LIBTESTFUNC(sec, set_auth_parameters)
1560
1561 # UnixWare 7.x has its getspnam in -lgen
1562 AC_LIBTESTFUNC(gen, getspnam)
1563
1564 AC_LIBTESTFUNC(security, getspnam)
1565 AC_LIBTESTFUNC(sec, getspnam)
1566
1567 AC_LIBTESTFUNC(security, bigcrypt)
1568 AC_LIBTESTFUNC(sec, bigcrypt)
1569
1570 AC_LIBTESTFUNC(security, getprpwnam)
1571 AC_LIBTESTFUNC(sec, getprpwnam)
1572
1573 AC_CHECK_FUNCS(strsignal)
1574
1575 ############################################
1576 # Check if we have libattr
1577 case "$host_os" in
1578   *osf*)
1579         AC_SEARCH_LIBS(getproplist, [proplist])
1580         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1581         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1582         AC_CHECK_FUNCS(sizeof_proplist_entry)
1583   ;;
1584   *)
1585         AC_SEARCH_LIBS(getxattr, [attr])
1586         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1587         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1588         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1589         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1590         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1591         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1592         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1593   ;;
1594 esac
1595
1596 ########################################################
1597 # Do xattr functions take additional options like on Darwin?
1598 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1599         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1600                 old_LIBS=$LIBS
1601                 LIBS="$LIBS $ACL_LIBS"
1602                 AC_TRY_COMPILE([
1603                         #include <sys/types.h>
1604                         #if HAVE_ATTR_XATTR_H
1605                         #include <attr/xattr.h>
1606                         #elif HAVE_SYS_XATTR_H
1607                         #include <sys/xattr.h>
1608                         #endif
1609                 ],[
1610                         getxattr(0, 0, 0, 0, 0, 0);
1611                 ],
1612                 [smb_attr_cv_xattr_add_opt=yes],
1613                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1614         ])
1615         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1616                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1617         fi
1618 fi
1619
1620 # Check if we have extattr
1621 case "$host_os" in
1622   *freebsd4* | *dragonfly* )
1623     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1624     ;;
1625   *)
1626     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1627     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1628     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1629     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1630     ;;
1631 esac
1632
1633 # Set defaults
1634 PIE_CFLAGS=""
1635 PIE_LDFLAGS=""
1636 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1637
1638 if test "x$enable_pie" != xno
1639 then
1640         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1641         [
1642                 cat > conftest.c <<EOF
1643 int foo;
1644 main () { return 0;}
1645 EOF
1646                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1647                 then
1648                         samba_cv_fpie=yes
1649                 else
1650                         samba_cv_fpie=no
1651                 fi
1652                 rm -f conftest*
1653         ])
1654         if test x"${samba_cv_fpie}" = x"yes"
1655         then
1656                 PIE_CFLAGS="-fPIE"
1657                 PIE_LDFLAGS="-pie"
1658         fi
1659 fi
1660
1661 # Assume non-shared by default and override below
1662 BLDSHARED="false"
1663
1664 # these are the defaults, good for lots of systems
1665 HOST_OS="$host_os"
1666 LDSHFLAGS="-shared"
1667 SONAMEFLAG="#"
1668 SHLD="\${CC} \${CFLAGS}"
1669 PICFLAG="${PIE_CFLAGS}"
1670 SHLIBEXT="so"
1671
1672 # this bit needs to be modified for each OS that supports share libs
1673 # You need to specify how to create a shared library and
1674 # how to compile C code to produce PIC object files
1675
1676 AC_MSG_CHECKING([ability to build shared libraries])
1677
1678 # and these are for particular systems
1679 case "$host_os" in
1680                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1681                         BLDSHARED="true"
1682                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1683                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1684                         else
1685                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1686                         fi
1687                         DYNEXP="-Wl,--export-dynamic"
1688                         PICFLAG="-fPIC"
1689                         SONAMEFLAG="-Wl,-soname="
1690                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1691                         ;;
1692                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1693                         BLDSHARED="true"
1694                         LDSHFLAGS="-G"
1695                         SONAMEFLAG="-h "
1696                         if test "${GCC}" = "yes"; then
1697                                 PICFLAG="-fPIC"
1698                                 SONAMEFLAG="-Wl,-soname="
1699                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1700                                         DYNEXP="-Wl,-E"
1701                                 fi
1702                         else
1703                                 PICFLAG="-KPIC"
1704                                 ## ${CFLAGS} added for building 64-bit shared 
1705                                 ## libs using Sun's Compiler
1706                                 LDSHFLAGS="-G \${CFLAGS}"
1707                         fi
1708                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1709                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1710                         ;;
1711                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1712                         BLDSHARED="true"
1713                         LDSHFLAGS="-G"
1714                         SONAMEFLAG="-Wl,-h,"
1715                         PICFLAG="-KPIC"   # Is this correct for SunOS
1716                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1717                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1718                         ;;
1719                 *netbsd* | *freebsd* | *dragonfly* )  
1720                         BLDSHARED="true"
1721                         LDSHFLAGS="-shared"
1722                         DYNEXP="-Wl,--export-dynamic"
1723                         SONAMEFLAG="-Wl,-soname,"
1724                         PICFLAG="-fPIC -DPIC"
1725                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1726                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1727                         ;;
1728                 *openbsd*)  BLDSHARED="true"
1729                         LDSHFLAGS="-shared"
1730                         DYNEXP="-Wl,-Bdynamic"
1731                         SONAMEFLAG="-Wl,-soname,"
1732                         PICFLAG="-fPIC"
1733                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1734                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1735                         ;;
1736                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1737                         case "$host_os" in
1738                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1739                         ;;
1740                         esac
1741                         BLDSHARED="true"
1742                         LDSHFLAGS="-set_version sgi1.0 -shared"
1743                         SONAMEFLAG="-soname "
1744                         SHLD="\${LD}"
1745                         if test "${GCC}" = "yes"; then
1746                                 PICFLAG="-fPIC"
1747                         else 
1748                                 PICFLAG="-KPIC"
1749                         fi
1750                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1751                         ;;
1752                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1753                         BLDSHARED="true"
1754                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1755                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1756                         PICFLAG="-O2"
1757                         # as AIX code is always position independent...
1758                         # .po will just create compile warnings, use po.o:
1759                         if test "${GCC}" != "yes"; then
1760                                 ## for funky AIX compiler using strncpy()
1761                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1762                         fi
1763
1764                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1765                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1766                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1767                         ;;
1768                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1769                         # Use special PIC flags for the native HP-UX compiler.
1770                                 BLDSHARED="true"
1771                                 SHLD="cc"
1772                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1773                                 SONAMEFLAG="-Wl,+h "
1774                                 PICFLAG="+z"
1775                         if test "${GCC}" = "yes"; then
1776                                 PICFLAG="-fPIC"
1777                         else 
1778                                 PICFLAG="+z"
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 in lber.h - it must be configured as
3196   # unsigned int in include/includes.h
3197   case $host_os in
3198         *hpux*)
3199          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3200          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3201         with_ldap_support=yes
3202         ;;
3203         *)
3204         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3205         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3206                 if test x"$with_ldap_support" = x"yes"; then
3207                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3208                 else
3209                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3210                 fi
3211                 with_ldap_support=no
3212         fi
3213         ;;
3214   esac
3215 fi
3216
3217 if test x"$with_ldap_support" != x"no"; then
3218   ac_save_LIBS=$LIBS
3219
3220   ##################################################################
3221   # we might need the lber lib on some systems. To avoid link errors
3222   # this test must be before the libldap test
3223   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3224
3225   ########################################################
3226   # now see if we can find the ldap libs in standard paths
3227   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3228
3229   ########################################################
3230   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3231   # Check found in pam_ldap 145.
3232   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3233
3234   LIBS="$LIBS $LDAP_LIBS"
3235   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3236     AC_TRY_COMPILE([
3237         #include <lber.h>
3238         #include <ldap.h>], 
3239         [ldap_set_rebind_proc(0, 0, 0);], 
3240         [smb_ldap_cv_ldap_set_rebind_proc=3], 
3241         [smb_ldap_cv_ldap_set_rebind_proc=2]
3242     ) 
3243   ])
3244   
3245   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3246
3247   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3248   
3249   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3250     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3251     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3252     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3253     default_shared_modules="$default_shared_modules";
3254     SMBLDAP="lib/smbldap.o"
3255     SMBLDAPUTIL="lib/smbldap_util.o"
3256     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3257       AC_MSG_WARN(Disabling ldb_ldap support (requires ldap_initialize))
3258     else
3259       AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
3260       LDBLDAP="lib/ldb/ldb_ldap/ldb_ldap.o"
3261     fi
3262     with_ldap_support=yes
3263     AC_MSG_CHECKING(whether LDAP support is used)
3264     AC_MSG_RESULT(yes)
3265   else
3266     if test x"$with_ldap_support" = x"yes"; then
3267         AC_MSG_ERROR(libldap is needed for LDAP support)
3268     else
3269         AC_MSG_WARN(libldap is needed for LDAP support)
3270     fi
3271     
3272     LDAP_LIBS=""
3273     with_ldap_support=no
3274   fi
3275   LIBS=$ac_save_LIBS
3276 fi
3277
3278
3279 #################################################
3280 # active directory support
3281
3282 with_ads_support=auto
3283 AC_MSG_CHECKING([for Active Directory and krb5 support])
3284
3285 AC_ARG_WITH(ads,
3286 [  --with-ads              Active Directory support (default auto)],
3287 [ case "$withval" in
3288     yes|no)
3289         with_ads_support="$withval"
3290         ;;
3291   esac ])
3292
3293 AC_MSG_RESULT($with_ads_support)
3294
3295 FOUND_KRB5=no
3296 KRB5_LIBS=""
3297
3298 if test x"$with_ldap_support" != x"yes"; then
3299
3300     if test x"$with_ads_support" = x"yes"; then
3301         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3302     elif test x"$with_ads_support" = x"auto"; then
3303         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3304         with_ads_support=no
3305     fi
3306
3307 else
3308
3309     # Check to see whether there is enough LDAP functionality to be able
3310     # to build AD support.
3311
3312 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3313 case "$host_os" in
3314         *hpux*)
3315     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3316
3317     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3318         if test x"$with_ads_support" = x"yes"; then
3319             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3320         elif test x"$with_ads_support" = x"auto"; then
3321             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3322             with_ads_support=no
3323         fi
3324     fi
3325     ;;
3326         *)
3327     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3328
3329     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3330         if test x"$with_ads_support" = x"yes"; then
3331             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3332         elif test x"$with_ads_support" = x"auto"; then
3333             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3334             with_ads_support=no
3335         fi
3336     fi
3337     ;;
3338 esac
3339
3340
3341     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3342
3343     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3344         if test x"$with_ads_support" = x"yes"; then
3345             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3346         elif test x"$with_ads_support" = x"auto"; then
3347             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3348             with_ads_support=no
3349         fi
3350     fi
3351
3352 fi
3353
3354 if test x"$with_ads_support" != x"no"; then
3355
3356   # Do no harm to the values of CFLAGS and LIBS while testing for
3357   # Kerberos support.
3358  
3359   if test x$FOUND_KRB5 = x"no"; then
3360     #################################################
3361     # check for location of Kerberos 5 install
3362     AC_MSG_CHECKING(for kerberos 5 install path)
3363     AC_ARG_WITH(krb5,
3364     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3365     [ case "$withval" in
3366       no)
3367         AC_MSG_RESULT(no krb5-path given)
3368         ;;
3369       yes)
3370         AC_MSG_RESULT(/usr)
3371         FOUND_KRB5=yes
3372         ;;
3373       *)
3374         AC_MSG_RESULT($withval)
3375         KRB5_CFLAGS="-I$withval/include"
3376         KRB5_CPPFLAGS="-I$withval/include"
3377         KRB5_LDFLAGS="-L$withval/lib"
3378         FOUND_KRB5=yes
3379         if test -x "$withval/bin/krb5-config"; then
3380                 KRB5CONFIG=$withval/bin/krb5-config
3381         fi
3382         ;;
3383       esac ],
3384       AC_MSG_RESULT(no krb5-path given)
3385     )
3386   fi
3387
3388   #################################################
3389   # check for krb5-config from recent MIT and Heimdal kerberos 5
3390   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3391   AC_MSG_CHECKING(for working krb5-config)
3392   if test -x "$KRB5CONFIG"; then
3393     ac_save_CFLAGS=$CFLAGS
3394     CFLAGS="";export CFLAGS
3395     ac_save_LDFLAGS=$LDFLAGS
3396     LDFLAGS="";export LDFLAGS
3397     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3398     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3399     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
3400     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3401     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3402     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3403     FOUND_KRB5=yes
3404     AC_MSG_RESULT(yes)
3405   else
3406     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3407   fi
3408  
3409   if test x$FOUND_KRB5 = x"no"; then
3410     #################################################
3411     # see if this box has the SuSE location for the heimdal krb implementation
3412     AC_MSG_CHECKING(for /usr/include/heimdal)
3413     if test -d /usr/include/heimdal; then
3414       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3415           KRB5_CFLAGS="-I/usr/include/heimdal"
3416           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3417           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3418           AC_MSG_RESULT(yes)
3419       else
3420           KRB5_CFLAGS="-I/usr/include/heimdal"
3421           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3422           AC_MSG_RESULT(yes)
3423       fi
3424     else
3425       AC_MSG_RESULT(no)
3426     fi
3427   fi
3428
3429   if test x$FOUND_KRB5 = x"no"; then
3430     #################################################
3431     # see if this box has the RedHat location for kerberos
3432     AC_MSG_CHECKING(for /usr/kerberos)
3433     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3434       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3435       KRB5_CFLAGS="-I/usr/kerberos/include"
3436       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3437       AC_MSG_RESULT(yes)
3438     else
3439       AC_MSG_RESULT(no)
3440     fi
3441   fi
3442
3443   ac_save_CFLAGS=$CFLAGS
3444   ac_save_CPPFLAGS=$CPPFLAGS
3445   ac_save_LDFLAGS=$LDFLAGS
3446
3447   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3448   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3449   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3450
3451   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3452
3453   # now check for krb5.h. Some systems have the libraries without the headers!
3454   # note that this check is done here to allow for different kerberos
3455   # include paths
3456   AC_CHECK_HEADERS(krb5.h)
3457
3458   if test x"$ac_cv_header_krb5_h" = x"no"; then
3459
3460     # Give a warning if AD support was not explicitly requested,
3461     # i.e with_ads_support = auto, otherwise die with an error.
3462
3463     if test x"$with_ads_support" = x"yes"; then
3464       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3465     else
3466       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3467     fi
3468
3469     # Turn off AD support and restore CFLAGS and LIBS variables
3470
3471     with_ads_support="no"
3472     
3473     CFLAGS=$ac_save_CFLAGS
3474     CPPFLAGS=$ac_save_CPPFLAGS
3475     LDFLAGS=$ac_save_LDFLAGS
3476   fi
3477   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3478 fi
3479
3480 # Now we have determined whether we really want ADS support
3481 use_ads=no
3482 if test x"$with_ads_support" != x"no"; then
3483   use_ads=yes
3484   have_gssapi=no
3485   ac_save_LIBS=$LIBS
3486
3487   # now check for gssapi headers.  This is also done here to allow for
3488   # different kerberos include paths
3489   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3490
3491   ##################################################################
3492   # we might need the k5crypto and com_err libraries on some systems
3493   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3494   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3495
3496   # Heimdal checks.
3497   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3498   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3499   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3500
3501   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3502   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3503
3504   ########################################################
3505   # now see if we can find the krb5 libs in standard paths
3506   # or as specified above
3507   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3508   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3509
3510   ########################################################
3511   # now see if we can find the gssapi libs in standard paths
3512   if test x"$have_gssapi" != x"yes"; then
3513      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3514   fi
3515
3516   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3517   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3518   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3519   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3520   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3521   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3522   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3523   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3524   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3525   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3526   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3527   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3528   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3529   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3530   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3531   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3532   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3533   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3534   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3535   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3536   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3537   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3538   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3539   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3540   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3541   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3542   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3543   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3544   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3545   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3546   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3547   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3548   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3549   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3550   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3551   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3552   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3553   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3554
3555   LIBS="$KRB5_LIBS $LIBS"
3556
3557   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3558         smb_krb5_ticket_has_keyinfo,
3559         [
3560             AC_TRY_COMPILE(
3561             [
3562                 #include <krb5.h>
3563             ],
3564             [
3565                 krb5_ticket ticket;
3566                 krb5_kvno kvno;
3567                 krb5_enctype enctype;
3568
3569                 enctype = ticket.enc_part.enctype;
3570                 kvno = ticket.enc_part.kvno;
3571             ],
3572             [ smb_krb5_ticket_has_keyinfo=yes ],
3573             [ smb_krb5_ticket_has_keyinfo=no ])
3574         ])
3575
3576   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3577         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3578             [Whether the krb5_ticket structure contains the kvno and enctype])
3579   fi
3580
3581   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3582           smb_krb5_creds_opt_free_context,
3583           [
3584                 AC_TRY_COMPILE([
3585                     #include <krb5.h>],
3586                     [
3587                         krb5_context ctx;
3588                         krb5_get_init_creds_opt *opt = NULL;
3589                         krb5_get_init_creds_opt_free(ctx, opt);
3590                     ],
3591                     [smb_krb5_creds_opt_free_context=yes],
3592                     [smb_krb5_creds_opt_free_context=no]
3593                 )
3594           ])
3595
3596   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3597         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3598             [Whether krb5_get_init_creds_opt_free takes a context argument])
3599   fi
3600
3601   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3602     AC_TRY_COMPILE([
3603         #include <krb5.h>], 
3604         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 
3605         [smb_krb5_verify_checksum=7], 
3606         [smb_krb5_verify_checksum=6], 
3607     ) 
3608   ])
3609   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3610
3611   AC_CACHE_CHECK([for checksum in krb5_checksum],
3612                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3613     AC_TRY_COMPILE([#include <krb5.h>],
3614       [krb5_checksum cksum; cksum.checksum.length = 0;],
3615       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3616       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3617
3618   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3619     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3620                [Whether the krb5_checksum struct has a checksum property])
3621   fi
3622
3623   AC_CACHE_CHECK([for etype in EncryptedData],
3624                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3625     AC_TRY_COMPILE([#include <krb5.h>],
3626       [EncryptedData edata; edata.etype = 0;],
3627       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3628       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3629
3630   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3631     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3632                [Whether the EncryptedData struct has a etype property])
3633   fi
3634
3635   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3636                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3637     AC_TRY_COMPILE([#include <krb5.h>],
3638       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3639       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3640       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3641
3642   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3643     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3644                [Whether the krb5_ap_req struct has a ticket pointer])
3645   fi
3646
3647   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3648                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3649     AC_TRY_COMPILE([#include <krb5.h>],
3650       [krb5_error err; err.e_data = NULL;],
3651       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3652       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3653
3654   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3655     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3656                [Whether the krb5_error struct has a e_data pointer])
3657   fi
3658
3659   AC_CACHE_CHECK([for krb5_crypto type],
3660                 samba_cv_HAVE_KRB5_CRYPTO,[
3661     AC_TRY_COMPILE([#include <krb5.h>],
3662       [krb5_crypto crypto;],
3663       samba_cv_HAVE_KRB5_CRYPTO=yes,
3664       samba_cv_HAVE_KRB5_CRYPTO=no)])
3665
3666   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3667     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3668                [Whether the type krb5_crypto exists])
3669   fi
3670
3671   AC_CACHE_CHECK([for krb5_encrypt_block type],
3672                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3673     AC_TRY_COMPILE([#include <krb5.h>],
3674       [krb5_encrypt_block block;],
3675       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3676       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3677
3678   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3679     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3680                [Whether the type krb5_encrypt_block exists])
3681   fi
3682
3683   AC_CACHE_CHECK([for addrtype in krb5_address],
3684                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3685     AC_TRY_COMPILE([#include <krb5.h>],
3686       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3687       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3688       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3689
3690   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3691     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3692                [Whether the krb5_address struct has a addrtype property])
3693   fi
3694
3695   AC_CACHE_CHECK([for addr_type in krb5_address],
3696                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3697     AC_TRY_COMPILE([#include <krb5.h>],
3698       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3699       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3700       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3701
3702   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3703     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3704               [Whether the krb5_address struct has a addr_type property])
3705   fi
3706
3707   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3708                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3709                  [AC_TRY_COMPILE([#include <krb5.h>],
3710     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3711     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3712
3713   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3714     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3715               [Whether the krb5_ticket struct has a enc_part2 property])
3716   fi
3717
3718   AC_CACHE_CHECK([for keyblock in krb5_creds],
3719                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3720     AC_TRY_COMPILE([#include <krb5.h>],
3721       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3722       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3723       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3724
3725   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3726     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3727               [Whether the krb5_creds struct has a keyblock property])
3728   fi
3729
3730   AC_CACHE_CHECK([for session in krb5_creds],
3731                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3732     AC_TRY_COMPILE([#include <krb5.h>],
3733       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3734       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3735       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3736
3737   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3738     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3739               [Whether the krb5_creds struct has a session property])
3740   fi
3741
3742   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3743                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3744     AC_TRY_COMPILE([#include <krb5.h>],
3745       [krb5_keyblock key; key.keyvalue.data = NULL;],
3746       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3747       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3748
3749   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3750     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3751               [Whether the krb5_keyblock struct has a keyvalue property])
3752   fi
3753
3754   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3755                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3756     AC_TRY_COMPILE([#include <krb5.h>],
3757       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3758       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3759       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3760   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3761                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3762     AC_TRY_COMPILE([#include <krb5.h>],
3763       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3764       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3765       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3766 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3767 # w.r.t. arcfour and windows, so we must not enable it here
3768   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3769           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3770     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3771               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3772   fi
3773
3774   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3775                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3776     AC_TRY_COMPILE([#include <krb5.h>],
3777       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3778       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3779       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3780
3781   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3782     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3783               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3784   fi
3785
3786   AC_CACHE_CHECK([for KV5M_KEYTAB],
3787                  samba_cv_HAVE_KV5M_KEYTAB,[
3788     AC_TRY_COMPILE([#include <krb5.h>],
3789       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3790       samba_cv_HAVE_KV5M_KEYTAB=yes,
3791       samba_cv_HAVE_KV5M_KEYTAB=no)])
3792
3793   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3794       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3795              [Whether the KV5M_KEYTAB option is available])
3796   fi
3797
3798   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3799                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3800     AC_TRY_COMPILE([#include <krb5.h>],
3801       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3802       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3803       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3804
3805   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3806     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3807               [Whether KRB5_KU_OTHER_CKSUM is available])
3808   fi
3809   
3810   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3811                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3812     AC_TRY_COMPILE([#include <krb5.h>],
3813       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3814       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3815       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3816
3817   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3818     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3819               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3820   fi
3821
3822   AC_CACHE_CHECK([for the krb5_princ_component macro],
3823                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3824     AC_TRY_LINK([#include <krb5.h>],
3825       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3826       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3827       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3828
3829   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3830     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3831                [Whether krb5_princ_component is available])
3832   fi
3833
3834   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3835                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3836     AC_TRY_COMPILE([#include <krb5.h>],
3837       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3838       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3839       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3840
3841   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3842     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3843               [Whether krb5_keytab_entry has key member])
3844   fi
3845
3846   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3847                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3848     AC_TRY_COMPILE([#include <krb5.h>],
3849       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3850       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3851       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3852
3853   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3854     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3855               [Whether krb5_keytab_entry has keyblock member])
3856   fi
3857
3858   AC_CACHE_CHECK([for magic in krb5_address],
3859                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3860     AC_TRY_COMPILE([#include <krb5.h>],
3861       [krb5_address addr; addr.magic = 0;],
3862       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3863       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3864
3865   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3866     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3867               [Whether the krb5_address struct has a magic property])
3868   fi
3869
3870   AC_CACHE_CHECK([for WRFILE: keytab support],
3871                 samba_cv_HAVE_WRFILE_KEYTAB,[
3872     AC_TRY_RUN([
3873 #include<krb5.h>
3874   main()
3875   {
3876     krb5_context context;
3877     krb5_keytab keytab;
3878
3879     krb5_init_context(&context);
3880     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3881   }],
3882   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3883   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3884
3885   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3886       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3887                [Whether the WRFILE:-keytab is supported])
3888   fi
3889
3890   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3891                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3892     AC_TRY_COMPILE([#include <krb5.h>],
3893     [
3894     krb5_context context;
3895     krb5_principal principal;
3896     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3897     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3898     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3899
3900   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3901     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3902               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3903   fi
3904
3905   AC_CACHE_CHECK([for krb5_addresses type],
3906                 samba_cv_HAVE_KRB5_ADDRESSES,[
3907     AC_TRY_COMPILE([#include <krb5.h>],
3908       [krb5_addresses addr;],
3909       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3910       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3911
3912   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3913     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3914                [Whether the type krb5_addresses type exists])
3915   fi
3916
3917   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3918                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3919     AC_TRY_COMPILE([#include <krb5.h>],
3920     [
3921     krb5_mk_error(0,0,0);],
3922     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3923     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3924
3925   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3926     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3927               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3928   fi
3929
3930
3931   #
3932   #
3933   # Now the decisions whether we can support krb5
3934   # 
3935   # NOTE: all tests should be done before this block!
3936   #
3937   #
3938   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3939     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3940     use_ads=no
3941   fi
3942
3943   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3944           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3945   then
3946     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3947     use_ads=no
3948   fi
3949
3950   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3951           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3952   then
3953     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3954     use_ads=no
3955   fi
3956
3957   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3958           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3959   then
3960     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3961     use_ads=no
3962   fi
3963
3964   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3965           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3966   then
3967     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3968     use_ads=no
3969   fi
3970
3971   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3972
3973       # We only need the following functions if we can't get the enctype
3974       # and kvno out of the ticket directly (ie. on Heimdal).
3975
3976       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3977       then
3978         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3979         use_ads=no
3980       fi
3981
3982       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3983       then
3984         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3985         use_ads=no
3986       fi
3987
3988   fi
3989
3990   if test x"$use_ads" = x"yes"; then
3991     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3992     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3993     if test x"$have_gssapi" = x"yes"; then
3994       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3995     fi
3996   else
3997     if test x"$with_ads_support" = x"yes"; then
3998         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3999     else
4000         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4001     fi
4002     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4003     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4004     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4005     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4006     KRB5_LIBS=""
4007     with_ads_support=no 
4008   fi
4009   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4010   AC_MSG_RESULT([$use_ads])
4011
4012 LIBS="$ac_save_LIBS"
4013 fi
4014
4015 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4016 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4017
4018
4019 ########################################################
4020 # Compile with DNS Updates support?
4021
4022 with_dnsupdate_support=no
4023 AC_MSG_CHECKING([whether to enable DNS Updates support])
4024
4025 AC_ARG_WITH(dnsupdate,
4026 [  --with-dnsupdate        Enable DNS Updates support (default no)],
4027 [ case "$withval" in
4028     yes|no)
4029         with_dnsupdate_support=$withval
4030         ;;
4031   esac ])
4032
4033 AC_MSG_RESULT($with_dnsupdate_support)
4034
4035 if test x"$with_dnsupdate_support" != x"no"; then
4036
4037   ################################################################
4038   # first test for Active Directory support being enabled
4039   #if test x"$with_ads_support" = x"no"; then
4040   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4041   #             with_dnsupdate_support=no
4042   #fi           
4043   ##################################################################
4044   # then test for uuid.h (necessary to generate unique DNS keynames
4045   # (uuid.h is required for this test)
4046   AC_CHECK_HEADERS(uuid/uuid.h)
4047   
4048   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4049         if test x"$with_dnsupdate_support" = x"yes"; then
4050          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4051         else
4052          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4053         fi
4054         with_dnsupdate_support=no
4055   fi
4056 fi
4057
4058 if test x"$with_dnsupdate_support" != x"no"; then
4059
4060   ########################################################
4061   # Now see if we can find the uuid libs in standard paths
4062   # On some systems, the uuid API is in libc, so we have to
4063   # be careful not to insert a spurious -luuid.
4064   
4065   UUID_LIBS=""
4066   AC_LIBTESTFUNC(uuid, uuid_generate,
4067           [
4068             case " $LIBS " in
4069                 *\ -luuid\ *)
4070                 UUID_LIBS="-luuid"
4071                 SMB_REMOVE_LIB(uuid)
4072                 ;;
4073             esac
4074
4075             with_dnsupdate_support=yes
4076             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4077         ],
4078         [
4079             if test x"$with_dnsupdate_support" = x"yes"; then
4080                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4081             else
4082                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4083             fi
4084             with_dnsupdate_support=no
4085         ])
4086 fi
4087
4088 #################################################
4089 # check for automount support
4090 AC_MSG_CHECKING(whether to use automount)
4091 AC_ARG_WITH(automount,
4092 [  --with-automount        Include automount support (default=no)],
4093 [ case "$withval" in
4094   yes)
4095     AC_MSG_RESULT(yes)
4096     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4097     ;;
4098   *)
4099     AC_MSG_RESULT(no)
4100     ;;
4101   esac ],
4102   AC_MSG_RESULT(no)
4103 )
4104
4105 #################################################
4106 # check for smbmount support
4107 AC_MSG_CHECKING(whether to use smbmount)
4108 AC_ARG_WITH(smbmount,
4109 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
4110 [ case "$withval" in
4111   yes)
4112         case "$host_os" in
4113         *linux*)
4114                 AC_MSG_RESULT(yes)
4115                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4116                 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4117                 ;;
4118         *)
4119                 AC_MSG_ERROR(not on a linux system!)
4120                 ;;
4121         esac
4122     ;;
4123   *)
4124     AC_MSG_RESULT(no)
4125     ;;
4126   esac ],
4127   AC_MSG_RESULT(no)
4128 )
4129
4130 #################################################
4131 # check for mount- and umount.cifs support
4132 CIFSMOUNT_PROGS=""
4133 INSTALL_CIFSMOUNT=""
4134 UNINSTALL_CIFSMOUNT=""
4135 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4136 AC_ARG_WITH(cifsmount,
4137 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4138 [ case "$withval" in
4139   no)
4140         AC_MSG_RESULT(no)
4141         ;;
4142   *)
4143         case "$host_os" in
4144         *linux*)
4145                 AC_MSG_RESULT(yes)
4146                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4147                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4148                 INSTALL_CIFSMOUNT="installcifsmount"
4149                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4150                 ;;
4151         *)
4152                 AC_MSG_ERROR(not on a linux system!)
4153                 ;;
4154         esac
4155     ;;
4156   esac ],
4157 [ case "$host_os" in
4158   *linux*)
4159         AC_MSG_RESULT(yes)
4160         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4161         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4162         INSTALL_CIFSMOUNT="installcifsmount"
4163         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4164         ;;
4165   *)
4166         AC_MSG_RESULT(no)
4167         ;;
4168   esac ]
4169 )
4170
4171
4172 #################################################
4173 # check for a PAM clear-text auth, accounts, password and session support
4174 with_pam_for_crypt=no
4175 try_pam=no
4176 AC_MSG_CHECKING(whether to try PAM support)
4177 AC_ARG_WITH(pam,
4178 [  --with-pam              Include PAM support (default=no)],
4179 [ case "$withval" in
4180   yes|no)
4181     try_pam=$withval
4182     ;;
4183   esac
4184 ])
4185 AC_MSG_RESULT([$try_pam])
4186
4187 use_pam=no
4188 create_pam_modules=no
4189 if test x"${try_pam}" != x"no";then
4190         use_pam=yes
4191         create_pam_modules=yes
4192
4193         AC_CHECK_HEADERS(security/pam_appl.h)
4194         if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
4195                 if test x"${try_pam}" = x"yes";then
4196                         AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
4197                 fi
4198                 use_pam=no
4199                 create_pam_modules=no
4200         fi
4201
4202         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4203         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4204                 if test x"${try_pam}" = x"yes";then
4205                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4206                 fi
4207                 use_pam=no
4208                 create_pam_modules=no
4209         fi
4210
4211         AC_CHECK_HEADERS(security/pam_modules.h,,,[[
4212                 #if HAVE_SECURITY_PAM_APPL_H
4213                 #include <security/pam_appl.h>
4214                 #endif
4215         ]])
4216         if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
4217                 if test x"${try_pam}" = x"yes";then
4218                         AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
4219                 fi
4220                 create_pam_modules=no
4221         fi
4222
4223         if test x"$use_pam" = x"yes"; then
4224                 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4225                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4226                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4227                 with_pam_for_crypt=yes
4228
4229                 if test x"$create_pam_modules" = x"yes"; then
4230                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4231                         # this checks are optional,
4232                         # we don't care about the results here
4233                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4234                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4235                 else
4236                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4237                 fi
4238         fi
4239         AC_MSG_CHECKING(whether to use PAM support)
4240         AC_MSG_RESULT([$use_pam])
4241
4242         AC_MSG_CHECKING(whether to have PAM MODULES support)
4243         AC_MSG_RESULT([$create_pam_modules])
4244 fi # try_pam != no
4245
4246 #################################################
4247 # check for pam_smbpass support
4248 PAM_MODULES=""
4249 INSTALL_PAM_MODULES=""
4250 UNINSTALL_PAM_MODULES=""
4251 AC_MSG_CHECKING(whether to use pam_smbpass)
4252 AC_ARG_WITH(pam_smbpass,
4253 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
4254 [ case "$withval" in
4255   yes)
4256     AC_MSG_RESULT(yes)
4257
4258        # Conditions under which pam_smbpass should not be built.
4259
4260        if test x"$BLDSHARED" != x"true"; then
4261           AC_MSG_ERROR([No support for shared modules])
4262        elif test x"$create_pam_modules" != x"yes"; then
4263           AC_MSG_ERROR([No support for PAM MODULES])
4264        else
4265           PAM_MODULES="pam_smbpass"
4266           INSTALL_PAM_MODULES="installpammodules"
4267           UNINSTALL_PAM_MODULES="uninstallpammodules"
4268        fi
4269     ;;
4270   *)
4271     AC_MSG_RESULT(no)
4272     ;;
4273   esac ],
4274   AC_MSG_RESULT(no)
4275 )
4276
4277
4278 ###############################################
4279 # test for where we get crypt() from
4280 AC_SEARCH_LIBS(crypt, [crypt],
4281   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4282   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4283
4284 ##
4285 ## moved after the check for -lcrypt in order to
4286 ## ensure that the necessary libraries are included
4287 ## check checking for truncated salt.  Wrapped by the
4288 ## $with_pam_for_crypt variable as above   --jerry
4289 ##
4290 if test $with_pam_for_crypt = no; then
4291 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4292 crypt_LIBS="$LIBS"
4293 LIBS="$AUTH_LIBS $LIBS"
4294 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4295         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4296 LIBS="$crypt_LIBS"])
4297 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4298         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4299 fi
4300 fi
4301
4302 #################################################
4303 # check for a NISPLUS_HOME support 
4304 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4305 AC_ARG_WITH(nisplus-home,
4306 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4307 [ case "$withval" in
4308   yes)
4309     AC_MSG_RESULT(yes)
4310     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4311     ;;
4312   *)
4313     AC_MSG_RESULT(no)
4314     ;;
4315   esac ],
4316   AC_MSG_RESULT(no)
4317 )
4318
4319 #################################################
4320 # check for syslog logging
4321 AC_MSG_CHECKING(whether to use syslog logging)
4322 AC_ARG_WITH(syslog,
4323 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4324 [ case "$withval" in
4325   yes)
4326     AC_MSG_RESULT(yes)
4327     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4328     ;;
4329   *)
4330     AC_MSG_RESULT(no)
4331     ;;
4332   esac ],
4333   AC_MSG_RESULT(no)
4334 )
4335
4336 #################################################
4337 # check for experimental disk-quotas support
4338
4339 samba_cv_WITH_QUOTAS=auto
4340 samba_cv_TRY_QUOTAS=no
4341 samba_cv_RUN_QUOTA_TESTS=auto
4342 samba_cv_WITH_SYS_QUOTAS=auto
4343 samba_cv_TRY_SYS_QUOTAS=auto
4344 samba_cv_SYSQUOTA_FOUND=no
4345
4346 AC_MSG_CHECKING(whether to try disk-quotas support)
4347 AC_ARG_WITH(quotas,
4348 [  --with-quotas           Include disk-quota support (default=no)],
4349 [ case "$withval" in
4350   yes)
4351     AC_MSG_RESULT(yes)
4352     samba_cv_WITH_QUOTAS=yes
4353     samba_cv_TRY_QUOTAS=yes
4354     samba_cv_RUN_QUOTA_TESTS=yes
4355     #set sys quotas to auto in this case
4356     samba_cv_TRY_SYS_QUOTAS=auto
4357     ;;
4358   auto)
4359     AC_MSG_RESULT(auto)
4360     samba_cv_WITH_QUOTAS=auto
4361     samba_cv_TRY_QUOTAS=auto
4362     samba_cv_RUN_QUOTA_TESTS=auto
4363     #set sys quotas to auto in this case
4364     samba_cv_TRY_SYS_QUOTAS=auto
4365     ;;
4366   no)
4367     AC_MSG_RESULT(no)
4368     samba_cv_WITH_QUOTAS=no
4369     samba_cv_TRY_QUOTAS=no
4370     samba_cv_RUN_QUOTA_TESTS=no
4371     ;;
4372   *)
4373     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4374     ;;
4375   esac ],
4376   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4377 )
4378
4379 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4380 AC_ARG_WITH(sys-quotas,
4381 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4382 [ case "$withval" in
4383   yes)
4384     AC_MSG_RESULT(yes)
4385     samba_cv_WITH_SYS_QUOTAS=yes
4386     samba_cv_TRY_SYS_QUOTAS=yes
4387     samba_cv_RUN_QUOTA_TESTS=yes
4388     ;;
4389   auto)
4390     AC_MSG_RESULT(auto)
4391     samba_cv_WITH_SYS_QUOTAS=auto
4392     samba_cv_TRY_SYS_QUOTAS=auto
4393     samba_cv_RUN_QUOTA_TESTS=auto
4394     ;;
4395   no)
4396     AC_MSG_RESULT(no)
4397     samba_cv_WITH_SYS_QUOTAS=no
4398     samba_cv_TRY_SYS_QUOTAS=no
4399     ;;
4400   *)
4401     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4402     ;;
4403   esac ],
4404   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4405 )
4406
4407 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4408 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4409   case "$host_os" in
4410         *linux*)
4411             AC_MSG_RESULT(yes)
4412             samba_cv_TRY_SYS_QUOTAS=yes
4413             samba_cv_RUN_QUOTA_TESTS=yes
4414             ;;
4415         *)
4416             AC_MSG_RESULT(no)
4417             samba_cv_TRY_SYS_QUOTAS=no
4418             ;;
4419   esac
4420 fi
4421
4422 #############################################
4423 # only check for quota stuff if --with-quotas
4424 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4425
4426 case "$host_os" in
4427         # on linux we didn't need to test we have builtin support
4428         *linux*)
4429             samba_cv_SYSQUOTA_FOUND=yes
4430             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4431             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4432             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4433             AC_MSG_RESULT(yes)
4434
4435             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4436             samba_cv_found_xfs_header=yes
4437             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4438             AC_MSG_RESULT(yes)
4439             ;;
4440         *solaris*)
4441             # need to set this define when using static linking (BUG 1473)
4442             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4443             ;;
4444         *)
4445             ;;
4446 esac
4447
4448 # some broken header files need this
4449 AC_CHECK_HEADER(asm/types.h,[
4450             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4451             AC_ADD_INCLUDE(<asm/types.h>)
4452             ])
4453
4454 # For quotas on Veritas VxFS filesystems
4455 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4456
4457 # For sys/quota.h and linux/quota.h
4458 AC_CHECK_HEADERS(sys/quota.h)
4459
4460 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4461 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4462 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4463 AC_TRY_COMPILE([
4464 #include "confdefs.h"
4465 #ifdef HAVE_SYS_TYPES_H
4466 #include <sys/types.h>
4467 #endif
4468 #ifdef HAVE_ASM_TYPES_H
4469 #include <asm/types.h>
4470 #endif
4471 #include <sys/quota.h>
4472 ],[int i = Q_XGETQUOTA;],
4473 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4474 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4475         samba_cv_found_xfs_header=yes
4476 fi
4477 fi
4478
4479 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
4480 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4481 AC_TRY_COMPILE([
4482 #include "confdefs.h"
4483 #ifdef HAVE_SYS_QUOTA_H
4484 #include <sys/quota.h>
4485 #endif
4486 ],[
4487 struct dqblk D;
4488 D.dqb_fsoftlimit = 0;],
4489 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4490 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4491         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4492 fi
4493
4494 ##################
4495 # look for a working quota system
4496
4497 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4498 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4499 AC_TRY_RUN_STRICT([
4500 #define HAVE_QUOTACTL_4A 1
4501 #define AUTOCONF_TEST 1
4502 #include "confdefs.h"
4503 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4504            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4505 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4506     samba_cv_SYSQUOTA_FOUND=yes;
4507     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4508     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4509 fi
4510 fi
4511
4512 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4513 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4514 AC_TRY_RUN_STRICT([
4515 #define HAVE_QUOTACTL_4B 1
4516 #define AUTOCONF_TEST 1
4517 #include "confdefs.h"
4518 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4519            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4520 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4521     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4522     samba_cv_SYSQUOTA_FOUND=yes;
4523     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4524     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4525 fi
4526 fi
4527
4528 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4529 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4530 AC_TRY_RUN_STRICT([
4531 #define HAVE_QUOTACTL_3 1
4532 #define AUTOCONF_TEST 1
4533 #include "confdefs.h"
4534 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4535            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4536 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4537     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4538     samba_cv_SYSQUOTA_FOUND=yes;
4539     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4540     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4541 fi
4542 fi
4543
4544 #################################################
4545 # check for mntent.h and struct mntent
4546 AC_CHECK_HEADERS(mntent.h)
4547 #################################################
4548 # check for setmntent,getmntent,endmntent
4549 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4550
4551 #################################################
4552 # check for devnm.h and struct mntent
4553 AC_CHECK_HEADERS(devnm.h)
4554 #################################################
4555 # check for devnm
4556 AC_CHECK_FUNCS(devnm)
4557
4558 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4559     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4560         # if --with-sys-quotas=yes then build it 
4561         # you have can use the get/set quota command smb.conf
4562         # options then
4563         samba_cv_SYSQUOTA_FOUND=auto
4564     fi
4565     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4566         # if --with-sys-quotas=yes then build it 
4567         # you have can use the get/set quota command smb.conf
4568         # options then
4569         samba_cv_TRY_SYS_QUOTAS=auto
4570     fi
4571 fi
4572
4573 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4574 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4575 SAVE_CPPFLAGS="$CPPFLAGS"
4576 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4577 AC_TRY_COMPILE([
4578 #include "confdefs.h"
4579 #define NO_PROTO_H 1
4580 #define NO_CONFIG_H 1
4581 #define HAVE_SYS_QUOTAS 1
4582 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4583 #include "${srcdir-.}/lib/sysquotas.c"
4584 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4585 CPPFLAGS="$SAVE_CPPFLAGS"
4586 ])
4587 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4588 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4589     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
4590         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4591         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4592         samba_cv_WE_USE_SYS_QUOTAS=yes
4593         AC_MSG_RESULT(yes)
4594     else
4595         AC_MSG_RESULT(no)
4596     fi
4597 fi
4598 fi
4599
4600 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4601 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4602 SAVE_CPPFLAGS="$CPPFLAGS"
4603 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4604 AC_TRY_COMPILE([
4605 #include "confdefs.h"
4606 #define NO_PROTO_H 1
4607 #define NO_CONFIG_H 1
4608 #define HAVE_SYS_QUOTAS 1
4609 #define HAVE_XFS_QUOTAS 1
4610 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4611 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4612 CPPFLAGS="$SAVE_CPPFLAGS"
4613 ])
4614 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4615     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4616         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4617     fi
4618 fi
4619 fi
4620
4621 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4622 SAVE_CPPFLAGS="$CPPFLAGS"
4623 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4624 AC_TRY_COMPILE([
4625 #include "confdefs.h"
4626 #define NO_PROTO_H 1
4627 #define NO_CONFIG_H 1
4628 #include "${srcdir-.}/smbd/quotas.c"
4629 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4630 CPPFLAGS="$SAVE_CPPFLAGS"
4631 ])
4632 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4633 AC_MSG_CHECKING(whether to use the old quota support)
4634     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4635       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4636         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4637         AC_MSG_RESULT(yes)
4638       else
4639         AC_MSG_RESULT(no)
4640       fi
4641     else
4642       AC_MSG_RESULT(no)
4643     fi
4644 fi
4645
4646 ####################
4647 # End of quota check samba_cv_RUN_QUOTA_TESTS
4648 fi
4649
4650 #################################################
4651 # check for experimental utmp accounting
4652
4653 AC_MSG_CHECKING(whether to support utmp accounting)
4654 WITH_UTMP=yes
4655 AC_ARG_WITH(utmp,
4656 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4657 [ case "$withval" in
4658   no)
4659                 WITH_UTMP=no
4660                 ;;
4661   *)
4662                 WITH_UTMP=yes
4663                 ;;
4664   esac ],
4665 )
4666
4667 # utmp requires utmp.h
4668 # Note similar check earlier, when checking utmp details.
4669
4670 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4671         utmp_no_reason=", no utmp.h on $host_os"
4672         WITH_UTMP=no
4673 fi
4674
4675 # Display test results
4676
4677 if test x"$WITH_UTMP" = x"yes"; then
4678         AC_MSG_RESULT(yes)
4679         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4680 else
4681         AC_MSG_RESULT(no$utmp_no_reason)
4682 fi
4683
4684 INSTALLLIBCMD_SH=:
4685 INSTALLLIBCMD_A=:
4686 UNINSTALLLIBCMD_SH=:
4687 UNINSTALLLIBCMD_A=:
4688
4689 if test $BLDSHARED = true; then
4690         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4691         UNINSTALLLIBCMD_SH="rm -f"
4692 fi
4693 if test $enable_static = yes; then
4694         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4695         UNINSTALLLIBCMD_A="rm -f"
4696 fi
4697
4698 #################################################
4699 # should we build libmsrpc?
4700 INSTALL_LIBMSRPC=
4701 UNINSTALL_LIBMSRPC=
4702 LIBMSRPC_SHARED=
4703 LIBMSRPC=
4704 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4705 AC_ARG_WITH(libmsrpc,
4706 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4707 [ case "$withval" in
4708   no) 
4709      AC_MSG_RESULT(no)
4710      ;;
4711   *)
4712      if test $BLDSHARED = true; then
4713         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4714         LIBMSRPC=libmsrpc
4715         AC_MSG_RESULT(yes)
4716      else
4717         enable_static=yes
4718         AC_MSG_RESULT(no shared library support -- will supply static library)
4719      fi
4720      if test $enable_static = yes; then
4721         LIBMSRPC=libmsrpc
4722      fi
4723      INSTALL_LIBMSRPC=installlibmsrpc
4724      UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4725      ;;
4726   esac ],
4727 [
4728 # if unspecified, default is to built it if possible.
4729   if test $BLDSHARED = true; then
4730      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4731      LIBMSRPC=libmsrpc
4732      AC_MSG_RESULT(yes)
4733    else
4734      enable_static=yes
4735      AC_MSG_RESULT(no shared library support -- will supply static library)
4736    fi
4737    if test $enable_static = yes; then
4738      LIBMSRPC=libmsrpc
4739   fi]
4740   INSTALL_LIBMSRPC=installlibmsrpc
4741   UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4742 )
4743
4744
4745 #################################################
4746 # should we build libaddns?
4747 INSTALL_LIBADDNS=
4748 UNINSTALL_LIBADDNS=
4749 LIBADDNS_SHARED=
4750 LIBADDNS=
4751 AC_MSG_CHECKING(whether to build the libaddns shared library)
4752 AC_ARG_WITH(libaddns,
4753 [  --with-libaddns         Build the libaddns shared library (default=yes if shared libs supported)],
4754 [ case "$withval" in
4755   no) 
4756      AC_MSG_RESULT(no)
4757      ;;
4758   *)
4759      if test $BLDSHARED = true; then
4760         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4761         LIBADDNS=libaddns
4762         AC_MSG_RESULT(yes)
4763      else
4764         enable_static=yes
4765         AC_MSG_RESULT(no shared library support -- will supply static library)
4766      fi
4767      if test $enable_static = yes; then
4768         LIBADDNS=libaddns
4769      fi
4770      INSTALL_LIBADDNS=installlibaddns
4771      UNINSTALL_LIBADDNS=uninstalllibaddns
4772      ;;
4773   esac ],
4774 [
4775 # if unspecified, default is to built it if possible.
4776   if test $BLDSHARED = true; then
4777      LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4778      LIBADDNS=libaddns
4779      AC_MSG_RESULT(yes)
4780    else
4781      enable_static=yes
4782      AC_MSG_RESULT(no shared library support -- will supply static library)
4783    fi
4784    if test $enable_static = yes; then
4785      LIBADDNS=libaddns
4786   fi]
4787   INSTALL_LIBADDNS=installlibaddns
4788   UNINSTALL_LIBADDNS=uninstalllibaddns
4789 )
4790
4791 #################################################
4792 # should we build libsmbclient?
4793 INSTALL_LIBSMBCLIENT=
4794 UNINSTALL_LIBSMBCLIENT=
4795 LIBSMBCLIENT_SHARED=
4796 LIBSMBCLIENT=
4797 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4798 AC_ARG_WITH(libsmbclient,
4799 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4800 [ case "$withval" in
4801   no) 
4802      AC_MSG_RESULT(no)
4803      ;;
4804   *)
4805      if test $BLDSHARED = true; then
4806         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4807         LIBSMBCLIENT=libsmbclient
4808         AC_MSG_RESULT(yes)
4809      else
4810         enable_static=yes
4811         AC_MSG_RESULT(no shared library support -- will supply static library)
4812      fi
4813      if test $enable_static = yes; then
4814         LIBSMBCLIENT=libsmbclient
4815      fi
4816      INSTALL_LIBSMBCLIENT=installclientlib
4817      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4818      ;;
4819   esac ],
4820 [
4821 # if unspecified, default is to built it if possible.
4822   if test $BLDSHARED = true; then
4823      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4824      LIBSMBCLIENT=libsmbclient
4825      AC_MSG_RESULT(yes)
4826    else
4827      enable_static=yes
4828      AC_MSG_RESULT(no shared library support -- will supply static library)
4829    fi
4830    if test $enable_static = yes; then
4831      LIBSMBCLIENT=libsmbclient
4832   fi]
4833   INSTALL_LIBSMBCLIENT=installclientlib
4834   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4835 )
4836
4837 INSTALL_LIBSMBSHAREMODES=
4838 LIBSMBSHAREMODES_SHARED=
4839 LIBSMBSHAREMODES=
4840 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4841 AC_ARG_WITH(libsmbsharemodes,
4842 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4843 [ case "$withval" in
4844   no)
4845      AC_MSG_RESULT(no)
4846      ;;
4847   *)
4848      if test $BLDSHARED = true; then
4849         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4850         LIBSMBSHAREMODES=libsmbsharemodes
4851         AC_MSG_RESULT(yes)
4852      else
4853         enable_static=yes
4854         AC_MSG_RESULT(no shared library support -- will supply static library)
4855      fi
4856      if test $enable_static = yes; then
4857         LIBSMBSHAREMODES=libsmbsharemodes
4858      fi
4859      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4860      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4861      ;;
4862   esac ],
4863 [
4864 # if unspecified, default is to built it if possible.
4865   if test $BLDSHARED = true; then
4866      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4867      LIBSMBSHAREMODES=libsmbsharemodes
4868      AC_MSG_RESULT(yes)
4869    else
4870      enable_static=yes
4871      AC_MSG_RESULT(no shared library support -- will supply static library)
4872    fi
4873    if test $enable_static = yes; then
4874      LIBSMBSHAREMODES=libsmbsharemodes
4875   fi]
4876   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4877 )
4878
4879 #################################################
4880 # these tests are taken from the GNU fileutils package
4881 AC_CHECKING(how to get filesystem space usage)
4882 space=no
4883
4884 # Test for statvfs64.
4885 if test $space = no; then
4886   # SVR4
4887   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4888   [AC_TRY_RUN([
4889 #if defined(HAVE_UNISTD_H)
4890 #include <unistd.h>
4891 #endif
4892 #include <sys/types.h>
4893 #include <sys/statvfs.h>
4894   main ()
4895   {
4896     struct statvfs64 fsd;
4897     exit (statvfs64 (".", &fsd));
4898   }],
4899   fu_cv_sys_stat_statvfs64=yes,
4900   fu_cv_sys_stat_statvfs64=no,
4901   fu_cv_sys_stat_statvfs64=cross)])
4902   if test $fu_cv_sys_stat_statvfs64 = yes; then
4903     space=yes
4904     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4905   fi
4906 fi
4907
4908 # Perform only the link test since it seems there are no variants of the
4909 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4910 # because that got a false positive on SCO OSR5.  Adding the declaration
4911 # of a `struct statvfs' causes this test to fail (as it should) on such
4912 # systems.  That system is reported to work fine with STAT_STATFS4 which
4913 # is what it gets when this test fails.
4914 if test $space = no; then
4915   # SVR4
4916   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4917                  [AC_TRY_LINK([#include <sys/types.h>
4918 #include <sys/statvfs.h>],
4919                               [struct statvfs fsd; statvfs (0, &fsd);],
4920                               fu_cv_sys_stat_statvfs=yes,
4921                               fu_cv_sys_stat_statvfs=no)])
4922   if test $fu_cv_sys_stat_statvfs = yes; then
4923     space=yes
4924     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4925   fi
4926 fi
4927
4928 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4929 # This is not the case on ancient Linux systems.
4930
4931 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4932     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4933         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4934 if test x"$samba_cv_fsid_int" = x"yes"; then
4935     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4936 fi
4937
4938 if test $space = no; then
4939   # DEC Alpha running OSF/1
4940   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4941   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4942   [AC_TRY_RUN([
4943 #include <sys/param.h>
4944 #include <sys/types.h>
4945 #include <sys/mount.h>
4946   main ()
4947   {
4948     struct statfs fsd;
4949     fsd.f_fsize = 0;
4950     exit (statfs (".", &fsd, sizeof (struct statfs)));
4951   }],
4952   fu_cv_sys_stat_statfs3_osf1=yes,
4953   fu_cv_sys_stat_statfs3_osf1=no,
4954   fu_cv_sys_stat_statfs3_osf1=no)])
4955   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4956   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4957     space=yes
4958     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4959   fi
4960 fi
4961
4962 if test $space = no; then
4963 # AIX
4964   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4965 member (AIX, 4.3BSD)])
4966   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4967   [AC_TRY_RUN([
4968 #ifdef HAVE_SYS_PARAM_H
4969 #include <sys/param.h>
4970 #endif
4971 #ifdef HAVE_SYS_MOUNT_H
4972 #include <sys/mount.h>
4973 #endif
4974 #ifdef HAVE_SYS_VFS_H
4975 #include <sys/vfs.h>
4976 #endif
4977   main ()
4978   {
4979   struct statfs fsd;
4980   fsd.f_bsize = 0;
4981   exit (statfs (".", &fsd));
4982   }],
4983   fu_cv_sys_stat_statfs2_bsize=yes,
4984   fu_cv_sys_stat_statfs2_bsize=no,
4985   fu_cv_sys_stat_statfs2_bsize=no)])
4986   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4987   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4988     space=yes
4989     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4990   fi
4991 fi
4992
4993 if test $space = no; then
4994 # SVR3
4995   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4996   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4997   [AC_TRY_RUN([#include <sys/types.h>
4998 #include <sys/statfs.h>
4999   main ()
5000   {
5001   struct statfs fsd;
5002   exit (statfs (".", &fsd, sizeof fsd, 0));
5003   }],
5004     fu_cv_sys_stat_statfs4=yes,
5005     fu_cv_sys_stat_statfs4=no,
5006     fu_cv_sys_stat_statfs4=no)])
5007   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5008   if test $fu_cv_sys_stat_statfs4 = yes; then
5009     space=yes
5010     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5011   fi
5012 fi
5013
5014 if test $space = no; then
5015 # 4.4BSD and NetBSD
5016   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5017 member (4.4BSD and NetBSD)])
5018   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5019   [AC_TRY_RUN([#include <sys/types.h>
5020 #ifdef HAVE_SYS_PARAM_H
5021 #include <sys/param.h>
5022 #endif
5023 #ifdef HAVE_SYS_MOUNT_H
5024 #include <sys/mount.h>
5025 #endif
5026   main ()
5027   {
5028   struct statfs fsd;
5029   fsd.f_fsize = 0;
5030   exit (statfs (".", &fsd));
5031   }],
5032   fu_cv_sys_stat_statfs2_fsize=yes,
5033   fu_cv_sys_stat_statfs2_fsize=no,
5034   fu_cv_sys_stat_statfs2_fsize=no)])
5035   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5036   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5037     space=yes
5038         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5039   fi
5040 fi
5041
5042 if test $space = no; then
5043   # Ultrix
5044   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5045   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5046   [AC_TRY_RUN([#include <sys/types.h>
5047 #ifdef HAVE_SYS_PARAM_H
5048 #include <sys/param.h>
5049 #endif
5050 #ifdef HAVE_SYS_MOUNT_H
5051 #include <sys/mount.h>
5052 #endif
5053 #ifdef HAVE_SYS_FS_TYPES_H
5054 #include <sys/fs_types.h>
5055 #endif
5056   main ()
5057   {
5058   struct fs_data fsd;
5059   /* Ultrix's statfs returns 1 for success,
5060      0 for not mounted, -1 for failure.  */
5061   exit (statfs (".", &fsd) != 1);
5062   }],
5063   fu_cv_sys_stat_fs_data=yes,
5064   fu_cv_sys_stat_fs_data=no,
5065   fu_cv_sys_stat_fs_data=no)])
5066   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5067   if test $fu_cv_sys_stat_fs_data = yes; then
5068     space=yes
5069     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5070   fi
5071 fi
5072
5073 #
5074 # As a gating factor for large file support, in order to
5075 # use <4GB files we must have the following minimal support
5076 # available.
5077 # long long, and a 64 bit off_t or off64_t.
5078 # If we don't have all of these then disable large
5079 # file support.
5080 #
5081 AC_MSG_CHECKING([if large file support can be enabled])
5082 AC_TRY_COMPILE([
5083 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5084 #include <sys/types.h>
5085 #else
5086 __COMPILE_ERROR_
5087 #endif
5088 ],
5089 [int i],
5090 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5091 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5092         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5093 fi
5094 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5095
5096 #################################################
5097 # check for cluster extensions
5098
5099 AC_MSG_CHECKING(whether to include cluster support)
5100 AC_ARG_WITH(cluster-support, 
5101 [  --with-cluster-support  Enable cluster extensions (default=no)])
5102 if test "x$with_cluster_support" = "xyes"; then
5103     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5104     AC_MSG_RESULT(yes)
5105 else
5106     AC_MSG_RESULT(no)
5107 fi
5108
5109
5110 #################################################
5111 # check for ACL support
5112
5113 AC_MSG_CHECKING(whether to support ACLs)
5114 AC_ARG_WITH(acl-support,
5115 [  --with-acl-support      Include ACL support (default=no)],
5116 [ case "$withval" in
5117   yes)
5118
5119         case "$host_os" in
5120         *sysv5*)
5121                 AC_MSG_RESULT(Using UnixWare ACLs)
5122                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5123                 default_static_modules="$default_static_modules vfs_solarisacl"
5124                 ;;
5125         *solaris*)
5126                 AC_MSG_RESULT(Using solaris ACLs)
5127                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5128                 ACL_LIBS="$ACL_LIBS -lsec"
5129                 default_static_modules="$default_static_modules vfs_solarisacl"
5130                 ;;
5131         *hpux*)
5132                 AC_MSG_RESULT(Using HPUX ACLs)
5133                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5134                 default_static_modules="$default_static_modules vfs_hpuxacl"
5135                 ;;
5136         *irix*)
5137                 AC_MSG_RESULT(Using IRIX ACLs)
5138                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5139                 default_static_modules="$default_static_modules vfs_irixacl"
5140                 ;;
5141         *aix*)
5142                 AC_MSG_RESULT(Using AIX ACLs)
5143                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5144                 default_static_modules="$default_static_modules vfs_aixacl"
5145                 ;;
5146         *osf*)
5147                 AC_MSG_RESULT(Using Tru64 ACLs)
5148                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5149                 ACL_LIBS="$ACL_LIBS -lpacl"
5150                 default_static_modules="$default_static_modules vfs_tru64acl"
5151                 ;;
5152         *freebsd[[5-9]]*)
5153                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
5154                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
5155                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5156                 ;;
5157         *linux*)
5158                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5159                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5160                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5161                         acl_LIBS=$LIBS
5162                         LIBS="$LIBS -lacl"
5163                         AC_TRY_LINK([
5164                                 #include <sys/types.h>
5165                                 #include <sys/acl.h>
5166                         ],[
5167                                 acl_t acl;
5168                                 int entry_id;
5169                                 acl_entry_t *entry_p;
5170                                 return acl_get_entry(acl, entry_id, entry_p);
5171                         ],
5172                         [samba_cv_HAVE_POSIX_ACLS=yes],
5173                         [samba_cv_HAVE_POSIX_ACLS=no])
5174                         LIBS=$acl_LIBS
5175                 ])
5176                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5177                         AC_MSG_RESULT(Using posix ACLs)
5178                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5179                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5180                                 acl_LIBS=$LIBS
5181                                 LIBS="$LIBS -lacl"
5182                                 AC_TRY_LINK([
5183                                         #include <sys/types.h>
5184                                         #include <sys/acl.h>
5185                                 ],[
5186                                         acl_permset_t permset_d;
5187                                         acl_perm_t perm;
5188                                         return acl_get_perm_np(permset_d, perm);
5189                                 ],
5190                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5191                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5192                                 LIBS=$acl_LIBS
5193                         ])
5194                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5195                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5196                         fi
5197                 fi
5198             ;;
5199          *)
5200                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5201                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5202                         acl_LIBS=$LIBS
5203                         LIBS="$LIBS -lacl"
5204                         AC_TRY_LINK([
5205                                 #include <sys/types.h>
5206                                 #include <sys/acl.h>
5207                         ],[
5208                                 acl_t acl;
5209                                 int entry_id;
5210                                 acl_entry_t *entry_p;
5211                                 return acl_get_entry( acl, entry_id, entry_p);
5212                         ],
5213                         [samba_cv_HAVE_POSIX_ACLS=yes],
5214                         [samba_cv_HAVE_POSIX_ACLS=no])
5215                         LIBS=$acl_LIBS
5216                 ])
5217                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5218                         AC_MSG_RESULT(Using posix ACLs)
5219                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5220                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5221                                 acl_LIBS=$LIBS
5222                                 LIBS="$LIBS -lacl"
5223                                 AC_TRY_LINK([
5224                                         #include <sys/types.h>
5225                                         #include <sys/acl.h>
5226                                 ],[
5227                                         acl_permset_t permset_d;
5228                                         acl_perm_t perm;
5229                                         return acl_get_perm_np( permset_d, perm);
5230                                 ],
5231                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5232                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5233                                 LIBS=$acl_LIBS
5234                         ])
5235                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5236                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5237                         fi
5238                 fi
5239             ;;
5240         esac
5241         ;;
5242   *)
5243     AC_MSG_RESULT(no)
5244     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5245     ;;
5246   esac ],
5247   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5248   AC_MSG_RESULT(no)
5249 )
5250
5251 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5252    default_static_modules="$default_static_modules vfs_posixacl"
5253 fi
5254
5255 #################################################
5256 # check for AIO support
5257
5258 AC_MSG_CHECKING(whether to support asynchronous io)
5259 AC_ARG_WITH(aio-support,
5260 [  --with-aio-support      Include asynchronous io support (default=no)],
5261 [ case "$withval" in
5262   yes)
5263
5264         AC_MSG_RESULT(yes)
5265         case "$host_os" in
5266         *)
5267                 AIO_LIBS=$LIBS
5268                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5269                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5270                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5271                 aio_LIBS=$LIBS
5272                 LIBS=$AIO_LIBS
5273                 AC_TRY_LINK([#include <sys/types.h>
5274 #include <aio.h>],
5275 [ struct aiocb a; return aio_read(&a);],
5276 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5277                 LIBS=$aio_LIBS])
5278                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5279                 aio_LIBS=$LIBS
5280                 LIBS=$AIO_LIBS
5281                 AC_TRY_LINK([#include <sys/types.h>
5282 #include <aio.h>],
5283 [ struct aiocb64 a; return aio_read64(&a);],
5284 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5285                 LIBS=$aio_LIBS])
5286                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5287                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5288                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5289                         LIBS=$AIO_LIBS
5290                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5291                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5292                         LIBS=$AIO_LIBS
5293                 fi
5294
5295                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5296                         AC_MSG_CHECKING(for aio_read)
5297                         AC_LINK_IFELSE([#include <aio.h>
5298 int main() { struct aiocb a; return aio_read(&a); }],
5299 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5300 [AC_MSG_RESULT(no)])
5301
5302                         AC_MSG_CHECKING(for aio_write)
5303                         AC_LINK_IFELSE([#include <aio.h>
5304 int main() { struct aiocb a; return aio_write(&a); }],
5305 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5306 [AC_MSG_RESULT(no)])
5307
5308                         AC_MSG_CHECKING(for aio_fsync)
5309                         AC_LINK_IFELSE([#include <aio.h>
5310 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5311 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5312 [AC_MSG_RESULT(no)])
5313
5314                         AC_MSG_CHECKING(for aio_return)
5315                         AC_LINK_IFELSE([#include <aio.h>
5316 int main() { struct aiocb a; return aio_return(&a); }],
5317 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5318 [AC_MSG_RESULT(no)])
5319
5320                         AC_MSG_CHECKING(for aio_error)
5321                         AC_LINK_IFELSE([#include <aio.h>
5322 int main() { struct aiocb a; return aio_error(&a); }],
5323 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5324 [AC_MSG_RESULT(no)])
5325
5326                         AC_MSG_CHECKING(for aio_cancel)
5327                         AC_LINK_IFELSE([#include <aio.h>
5328 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5329 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5330 [AC_MSG_RESULT(no)])
5331
5332                         AC_MSG_CHECKING(for aio_suspend)
5333                         AC_LINK_IFELSE([#include <aio.h>
5334 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5335 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5336 [AC_MSG_RESULT(no)])
5337                 fi
5338
5339                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5340                         AC_MSG_CHECKING(for aio_read64)
5341                         AC_LINK_IFELSE([#include <aio.h>
5342 int main() { struct aiocb a; return aio_read64(&a); }],
5343 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5344 [AC_MSG_RESULT(no)])
5345
5346                         AC_MSG_CHECKING(for aio_write64)
5347                         AC_LINK_IFELSE([#include <aio.h>
5348 int main() { struct aiocb a; return aio_write64(&a); }],
5349 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5350 [AC_MSG_RESULT(no)])
5351
5352                         AC_MSG_CHECKING(for aio_fsync64)
5353                         AC_LINK_IFELSE([#include <aio.h>
5354 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5355 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5356 [AC_MSG_RESULT(no)])
5357
5358                         AC_MSG_CHECKING(for aio_return64)
5359                         AC_LINK_IFELSE([#include <aio.h>
5360 int main() { struct aiocb a; return aio_return64(&a); }],
5361 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5362 [AC_MSG_RESULT(no)])
5363
5364                         AC_MSG_CHECKING(for aio_error64)
5365                         AC_LINK_IFELSE([#include <aio.h>
5366 int main() { struct aiocb a; return aio_error64(&a); }],
5367 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5368 [AC_MSG_RESULT(no)])
5369
5370                         AC_MSG_CHECKING(for aio_cancel64)
5371                         AC_LINK_IFELSE([#include <aio.h>
5372 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5373 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5374 [AC_MSG_RESULT(no)])
5375
5376                         AC_MSG_CHECKING(for aio_suspend64)
5377                         AC_LINK_IFELSE([#include <aio.h>
5378 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5379 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5380 [AC_MSG_RESULT(no)])
5381                 fi
5382             ;;
5383         esac
5384         ;;
5385   *)
5386     AC_MSG_RESULT(no)
5387     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5388     ;;
5389   esac ],
5390   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5391   AC_MSG_RESULT(no)
5392 )
5393
5394 #################################################
5395 # check for sendfile support
5396
5397 with_sendfile_support=yes
5398 AC_MSG_CHECKING(whether to check to support sendfile)
5399 AC_ARG_WITH(sendfile-support,
5400 [  --with-sendfile-support Check for sendfile support (default=yes)],
5401 [ case "$withval" in
5402   yes)
5403
5404         AC_MSG_RESULT(yes);
5405
5406         case "$host_os" in
5407         *linux*)
5408                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5409                 AC_TRY_LINK([#include <sys/sendfile.h>],
5410 [\
5411 int tofd, fromfd;
5412 off64_t offset;
5413 size_t total;
5414 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5415 ],
5416 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5417
5418                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5419                 AC_TRY_LINK([#include <sys/sendfile.h>],
5420 [\
5421 int tofd, fromfd;
5422 off_t offset;
5423 size_t total;
5424 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5425 ],
5426 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5427
5428 # Try and cope with broken Linux sendfile....
5429                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5430                 AC_TRY_LINK([\
5431 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5432 #undef _FILE_OFFSET_BITS
5433 #endif
5434 #include <sys/sendfile.h>],
5435 [\
5436 int tofd, fromfd;
5437 off_t offset;
5438 size_t total;
5439 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5440 ],
5441 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5442
5443         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5444                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5445                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5446                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5447         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5448                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5449                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5450                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5451         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5452                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5453                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5454         else
5455                 AC_MSG_RESULT(no);
5456         fi
5457
5458         ;;
5459         *freebsd* | *dragonfly* )
5460                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5461                 AC_TRY_LINK([\
5462 #include <sys/types.h>
5463 #include <unistd.h>
5464 #include <sys/socket.h>
5465 #include <sys/uio.h>],
5466 [\
5467         int fromfd, tofd, ret, total=0;
5468         off_t offset, nwritten;
5469         struct sf_hdtr hdr;
5470         struct iovec hdtrl;
5471         hdr.headers = &hdtrl;
5472         hdr.hdr_cnt = 1;
5473         hdr.trailers = NULL;
5474         hdr.trl_cnt = 0;
5475         hdtrl.iov_base = NULL;
5476         hdtrl.iov_len = 0;
5477         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5478 ],
5479 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5480
5481         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5482                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5483                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5484                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5485         else
5486                 AC_MSG_RESULT(no);
5487         fi
5488         ;;
5489
5490         *hpux*)
5491                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5492                 AC_TRY_LINK([\
5493 #include <sys/socket.h>
5494 #include <sys/uio.h>],
5495 [\
5496         int fromfd, tofd;
5497         size_t total=0;
5498         struct iovec hdtrl[2];
5499         ssize_t nwritten;
5500         off64_t offset;
5501
5502         hdtrl[0].iov_base = 0;
5503         hdtrl[0].iov_len = 0;
5504
5505         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5506 ],
5507 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5508         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5509                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5510                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5511                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5512         else
5513                 AC_MSG_RESULT(no);
5514         fi
5515
5516                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5517                 AC_TRY_LINK([\
5518 #include <sys/socket.h>
5519 #include <sys/uio.h>],
5520 [\
5521         int fromfd, tofd;
5522         size_t total=0;
5523         struct iovec hdtrl[2];
5524         ssize_t nwritten;
5525         off_t offset;
5526
5527         hdtrl[0].iov_base = 0;
5528         hdtrl[0].iov_len = 0;
5529
5530         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5531 ],
5532 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5533         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5534                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5535                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5536                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5537         else
5538                 AC_MSG_RESULT(no);
5539         fi
5540         ;;
5541
5542         *solaris*)
5543                 AC_CHECK_LIB(sendfile,sendfilev)
5544                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5545                 AC_TRY_LINK([\
5546 #include <sys/sendfile.h>],
5547 [\
5548         int sfvcnt;
5549         size_t xferred;
5550         struct sendfilevec vec[2];
5551         ssize_t nwritten;
5552         int tofd;
5553
5554         sfvcnt = 2;
5555
5556         vec[0].sfv_fd = SFV_FD_SELF;
5557         vec[0].sfv_flag = 0;
5558         vec[0].sfv_off = 0;
5559         vec[0].sfv_len = 0;
5560
5561         vec[1].sfv_fd = 0;
5562         vec[1].sfv_flag = 0;
5563         vec[1].sfv_off = 0;
5564         vec[1].sfv_len = 0;
5565         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5566 ],
5567 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5568
5569         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5570                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5571                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5572                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5573         else
5574                 AC_MSG_RESULT(no);
5575         fi
5576
5577                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5578                 AC_TRY_LINK([\
5579 #include <sys/sendfile.h>],
5580 [\
5581         int sfvcnt;
5582         size_t xferred;
5583         struct sendfilevec vec[2];
5584         ssize_t nwritten;
5585         int tofd;
5586
5587         sfvcnt = 2;
5588
5589         vec[0].sfv_fd = SFV_FD_SELF;
5590         vec[0].sfv_flag = 0;
5591         vec[0].sfv_off = 0;
5592         vec[0].sfv_len = 0;
5593
5594         vec[1].sfv_fd = 0;
5595         vec[1].sfv_flag = 0;
5596         vec[1].sfv_off = 0;
5597         vec[1].sfv_len = 0;
5598         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5599 ],
5600 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5601
5602         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5603                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5604                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5605                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5606         else
5607                 AC_MSG_RESULT(no);
5608         fi
5609         ;;
5610         *aix*)
5611                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5612                 AC_TRY_LINK([\
5613 #include <sys/socket.h>],
5614 [\
5615         int fromfd, tofd;
5616         size_t total=0;
5617         struct sf_parms hdtrl;
5618         ssize_t nwritten;
5619         off64_t offset;
5620
5621         hdtrl.header_data = 0;
5622         hdtrl.header_length = 0;
5623         hdtrl.file_descriptor = fromfd;
5624         hdtrl.file_offset = 0;
5625         hdtrl.file_bytes = 0;
5626         hdtrl.trailer_data = 0;
5627         hdtrl.trailer_length = 0;
5628
5629         nwritten = send_file(&tofd, &hdtrl, 0);
5630 ],
5631 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5632         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5633                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5634                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5635                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5636         else
5637                 AC_MSG_RESULT(no);
5638         fi
5639         ;;
5640         *)
5641         ;;
5642         esac
5643         ;;
5644   *)
5645     AC_MSG_RESULT(no)
5646     ;;
5647   esac ],
5648   AC_MSG_RESULT(yes)
5649 )
5650
5651 ############################################
5652 # See if we have the Linux readahead syscall.
5653
5654 AC_CACHE_CHECK([for Linux readahead],
5655                 samba_cv_HAVE_LINUX_READAHEAD,[
5656     AC_TRY_LINK([
5657 #if defined(HAVE_UNISTD_H)
5658 #include <unistd.h>
5659 #endif
5660 #include <fcntl.h>],
5661     [ssize_t err = readahead(0,0,0x80000);],
5662     samba_cv_HAVE_LINUX_READAHEAD=yes,
5663     samba_cv_HAVE_LINUX_READAHEAD=no)])
5664
5665 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5666   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5667              [Whether Linux readahead is available])
5668 fi
5669
5670
5671 #################################################
5672 # Check whether winbind is supported on this platform.  If so we need to
5673 # build and install client programs, sbin programs and shared libraries
5674
5675 AC_MSG_CHECKING(whether to build winbind)
5676
5677 # Initially, the value of $host_os decides whether winbind is supported
5678
5679 HAVE_WINBIND=yes
5680
5681 # Define the winbind shared library name and any specific linker flags
5682 # it needs to be built with.
5683
5684 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5685 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5686 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5687 NSSSONAMEVERSIONSUFFIX=""
5688
5689 SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
5690
5691 case "$host_os" in
5692         *linux*)
5693                 NSSSONAMEVERSIONSUFFIX=".2"
5694                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5695                 ;;
5696         *freebsd[[5-9]]*)
5697                 # FreeBSD winbind client is implemented as a wrapper around
5698                 # the Linux version.
5699                 NSSSONAMEVERSIONSUFFIX=".1"
5700                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5701                     nsswitch/winbind_nss_linux.o"
5702                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5703                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5704                 ;;
5705
5706         *netbsd*[[3-9]]*)
5707                 # NetBSD winbind client is implemented as a wrapper
5708                 # around the Linux version. It needs getpwent_r() to
5709                 # indicate libc's use of the correct nsdispatch API.
5710                 #
5711                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5712                         WINBIND_NSS_EXTRA_OBJS="\
5713                             nsswitch/winbind_nss_netbsd.o \
5714                             nsswitch/winbind_nss_linux.o"
5715                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5716                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5717                 else
5718                         HAVE_WINBIND=no
5719                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5720                 fi
5721                 ;;
5722         *irix*)
5723                 # IRIX has differently named shared libraries
5724                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5725                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5726                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5727                 ;;
5728         *solaris*)
5729                 # Solaris winbind client is implemented as a wrapper around
5730                 # the Linux version.
5731                 NSSSONAMEVERSIONSUFFIX=".1"
5732                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5733                     nsswitch/winbind_nss_linux.o"
5734                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5735                 ;;
5736         *hpux11*)
5737                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5738                 ;;
5739         *aix*)
5740                 # AIX has even differently named shared libraries.  No
5741                 # WINS support has been implemented yet.
5742                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5743                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5744                 WINBIND_NSS="nsswitch/WINBIND"
5745                 WINBIND_WINS_NSS=""
5746                 ;;
5747         *)
5748                 HAVE_WINBIND=no
5749                 winbind_no_reason=", unsupported on $host_os"
5750                 ;;
5751 esac
5752
5753 AC_SUBST(WINBIND_NSS)
5754 AC_SUBST(WINBIND_WINS_NSS)
5755 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5756 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5757 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5758 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5759
5760 AC_SUBST(SMB_KRB5_LOCATOR)
5761
5762 # Check the setting of --with-winbind
5763
5764 AC_ARG_WITH(winbind,
5765 [  --with-winbind          Build winbind (default, if supported by OS)],
5766
5767   case "$withval" in
5768         yes)
5769                 HAVE_WINBIND=yes
5770                 ;;
5771         no)
5772                 HAVE_WINBIND=no
5773                 winbind_reason=""
5774                 ;;
5775   esac ],
5776 )
5777
5778 # We need unix domain sockets for winbind
5779
5780 if test x"$HAVE_WINBIND" = x"yes"; then
5781         if test x"$samba_cv_unixsocket" = x"no"; then
5782                 winbind_no_reason=", no unix domain socket support on $host_os"
5783                 HAVE_WINBIND=no
5784         fi
5785 fi
5786
5787 # Display test results
5788
5789 if test x"$HAVE_WINBIND" = x"no"; then
5790         WINBIND_NSS=""
5791         WINBIND_WINS_NSS=""
5792 fi
5793
5794 if test x"$HAVE_WINBIND" = x"yes"; then
5795         AC_MSG_RESULT(yes)
5796         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5797
5798         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5799         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5800         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5801                 PAM_MODULES="$PAM_MODULES pam_winbind"
5802                 INSTALL_PAM_MODULES="installpammodules"
5803                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5804         fi
5805 else
5806         AC_MSG_RESULT(no$winbind_no_reason)
5807 fi
5808
5809 # Solaris 10 does have new member in nss_XbyY_key
5810 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5811                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5812                 [#include <nss_dbdefs.h>])
5813
5814 # Solaris has some extra fields in struct passwd that need to be
5815 # initialised otherwise nscd crashes.  
5816  
5817 AC_CHECK_MEMBER(struct passwd.pw_comment,
5818                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5819                 [#include <pwd.h>])
5820
5821 AC_CHECK_MEMBER(struct passwd.pw_age,
5822                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5823                 [#include <pwd.h>])
5824
5825 # AIX 4.3.x and 5.1 do not have as many members in
5826 # struct secmethod_table as AIX 5.2
5827 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5828        [#include <usersec.h>])
5829 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5830        [#include <usersec.h>])
5831
5832 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5833 AC_TRY_COMPILE([#include <sys/types.h>
5834 #include <sys/socket.h>],
5835 [struct ucred cred;
5836  socklen_t cred_len;
5837  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5838 ],
5839 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5840 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5841     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5842 fi
5843
5844
5845 #################################################
5846 # Check to see if we should use the included popt 
5847
5848 AC_ARG_WITH(included-popt,
5849 [  --with-included-popt    use bundled popt library, not from system],
5850
5851   case "$withval" in
5852         yes)
5853                 INCLUDED_POPT=yes
5854                 ;;
5855         no)
5856                 INCLUDED_POPT=no
5857                 ;;
5858   esac ],
5859 )
5860 if test x"$INCLUDED_POPT" != x"yes"; then
5861     AC_CHECK_LIB(popt, poptGetContext,
5862                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5863 fi
5864
5865 AC_MSG_CHECKING(whether to use included popt)
5866 if test x"$INCLUDED_POPT" = x"yes"; then
5867     AC_MSG_RESULT(yes)
5868     BUILD_POPT='$(POPT_OBJ)'
5869     POPTLIBS='$(POPT_OBJ)'
5870     FLAGS1="-I\$(srcdir)/popt"
5871 else
5872     AC_MSG_RESULT(no)
5873     BUILD_POPT=""
5874     POPTLIBS="-lpopt"
5875 fi
5876 AC_SUBST(BUILD_POPT)
5877 AC_SUBST(POPTLIBS)
5878 AC_SUBST(FLAGS1)
5879
5880 #################################################
5881 # Check to see if we should use the included iniparser 
5882
5883 AC_ARG_WITH(included-iniparser,
5884 [  --with-included-iniparser    use bundled iniparser library, not from system],
5885
5886   case "$withval" in
5887         yes)
5888                 INCLUDED_INIPARSER=yes
5889                 ;;
5890         no)
5891                 INCLUDED_INIPARSER=no
5892                 ;;
5893   esac ],
5894 )
5895 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5896     AC_CHECK_LIB(iniparser, iniparser_load,
5897                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5898 fi
5899
5900 AC_MSG_CHECKING(whether to use included iniparser)
5901 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5902     AC_MSG_RESULT(yes)
5903     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5904         INIPARSERLIBS=""
5905     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5906 else
5907     AC_MSG_RESULT(no)
5908         BUILD_INIPARSER=""
5909     INIPARSERLIBS="-liniparser"
5910 fi
5911 AC_SUBST(BUILD_INIPARSER)
5912 AC_SUBST(INIPARSERLIBS)
5913 AC_SUBST(FLAGS1)
5914
5915
5916
5917 #################################################
5918 # Check if the user wants Python
5919
5920 # At the moment, you can use this to set which Python binary to link
5921 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5922 # though they can coexist in different directories.)  In the future
5923 # this might make the Python stuff be built by default.
5924
5925 # Defaulting python breaks the clean target if python isn't installed
5926
5927 PYTHON=
5928
5929 AC_ARG_WITH(python,
5930 [  --with-python=PYTHONNAME  build Python libraries],
5931 [ case "${withval-python}" in
5932   yes)
5933         PYTHON=python
5934         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5935         ;;
5936   no)
5937         PYTHON=
5938         ;;
5939   *)
5940         PYTHON=${withval-python}
5941         ;;
5942   esac ])
5943 AC_SUBST(PYTHON)
5944
5945 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5946 do
5947         eval MODULE_DEFAULT_$i=STATIC
5948 done
5949
5950 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5951 do
5952         dnl Fall back to static if we cannot build shared libraries
5953         eval MODULE_DEFAULT_$i=STATIC
5954
5955         if test $BLDSHARED = true; then
5956                 eval MODULE_DEFAULT_$i=SHARED
5957         fi
5958 done
5959
5960 dnl Always built these modules static
5961 MODULE_rpc_spoolss=STATIC
5962 MODULE_rpc_srvsvc=STATIC
5963 MODULE_idmap_tdb=STATIC
5964 MODULE_idmap_passdb=STATIC
5965 MODULE_idmap_nss=STATIC
5966
5967 MODULE_nss_info_template=STATIC
5968
5969 AC_ARG_WITH(static-modules,
5970 [  --with-static-modules=MODULES  Comma-separated list of names of modules to statically link in],
5971 [ if test $withval; then
5972         for i in `echo $withval | sed -e 's/,/ /g'`
5973         do
5974                 eval MODULE_$i=STATIC
5975         done
5976 fi ])
5977
5978 AC_ARG_WITH(shared-modules,
5979 [  --with-shared-modules=MODULES  Comma-separated list of names of modules to build shared],
5980 [ if test $withval; then
5981         for i in `echo $withval | sed -e 's/,/ /g'`
5982         do
5983                         eval MODULE_$i=SHARED
5984         done
5985 fi ])
5986
5987 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
5988                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5989 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5990 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5991 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5992
5993
5994 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5995 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5996 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
5997 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5998 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5999 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6000 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6001 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6002 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6003 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
6004 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6005 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6006 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6007 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
6008 SMB_MODULE(rpc_unixinfo, \$(RPC_UNIXINFO_OBJ), "bin/librpc_unixinfo.$SHLIBEXT", RPC)
6009 SMB_MODULE(rpc_epmapper, \$(RPC_EPMAPPER_OBJ), "bin/librpc_epmapper.$SHLIBEXT", RPC)
6010 SMB_SUBSYSTEM(RPC,smbd/server.o)
6011
6012 SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6013 SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6014 SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6015 SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6016 SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6017 SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6018 SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o)
6019
6020 SMB_MODULE(nss_info_template, nsswitch/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6021 SMB_SUBSYSTEM(NSS_INFO, nsswitch/nss_info.o)
6022
6023 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6024 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6025 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6026 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6027 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6028
6029 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6030 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6031 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6032 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6033 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6034 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6035 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6036 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6037
6038 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6039 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6040 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6041 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6042 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6043 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6044 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6045 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6046 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6047 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6048 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6049 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6050 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6051 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6052 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6053 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6054 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6055 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6056 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6057 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6058 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6059 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6060 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6061 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6062 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6063 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6064
6065 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6066
6067 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6068
6069 #################################################
6070 # do extra things if we are running insure
6071
6072 if test "${ac_cv_prog_CC}" = "insure"; then
6073         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6074 fi
6075
6076 #################################################
6077 # If run from the build farm, enable NASTY hacks
6078 #################################################
6079 AC_MSG_CHECKING(whether to enable build farm hacks)
6080 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6081         AC_MSG_RESULT(yes)
6082         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6083 else
6084         AC_MSG_RESULT(no)
6085 fi
6086
6087 #################################################
6088 # check for bad librt/libpthread interactions
6089
6090 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6091     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6092     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6093     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6094
6095 SMB_IF_RTSIGNAL_BUG(
6096         [
6097             # Have RT_SIGNAL bug, need to check whether the problem will
6098             # affect anything we have configured.
6099
6100             rt_do_error=no
6101             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6102                 if test x"$rt_signal_lease_ok" = x"no" ; then
6103                     rt_do_error=yes
6104                 fi
6105             fi
6106
6107             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6108                 if test x"$rt_signal_notify_ok" = x"no" ; then
6109                     rt_do_error=yes
6110                 fi
6111             fi
6112
6113             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6114                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6115                 if test x"$rt_signal_aio_ok" = x"no" ; then
6116                     rt_do_error=yes
6117                 fi
6118             fi
6119
6120             if test x"$rt_do_error" = x"yes" ; then
6121                 SMB_IS_LIBPTHREAD_LINKED(
6122                     [
6123                         cat<<MSG
6124
6125 *** On this platforms, linking Samba against pthreads causes problems
6126 *** with the oplock and change notification mechanisms. You may be
6127 *** using pthreads as a side-effect of using the --with-aio-support
6128 *** or --with-profiling-data options. Please remove these and try again.
6129
6130 MSG
6131                     ],
6132                     [
6133                         cat<<MSG
6134
6135 *** On this platform, the oplock and change notification mechanisms do not
6136 *** appear to work. Please report this problem to samba-technical@samba.org
6137 *** and attach the config.log file from this directory.
6138
6139 MSG
6140                     ])
6141                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6142             fi
6143         ],
6144         [
6145             # no RT_SIGNAL bug, we are golden
6146             SMB_IS_LIBPTHREAD_LINKED(
6147                 [
6148                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6149                 ])
6150
6151         ],
6152         [
6153             # cross compiling, I hope you know what you are doing
6154             true
6155         ])
6156
6157 fi
6158
6159 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6160 LIB_REMOVE_USR_LIB(LDFLAGS)
6161 LIB_REMOVE_USR_LIB(LIBS)
6162 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6163
6164 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6165 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6166 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6167
6168 #################################################
6169 # Display summary of libraries detected
6170
6171 AC_MSG_RESULT([Using libraries:])
6172 AC_MSG_RESULT([    LIBS = $LIBS])
6173 if test x"$with_ads_support" != x"no"; then
6174     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6175 fi
6176 if test x"$with_ldap_support" != x"no"; then
6177     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6178 fi
6179 if test x"$with_dnsupdate_support" != x"no"; then
6180     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6181 fi
6182 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6183
6184 #################################################
6185 # final configure stuff
6186
6187 AC_MSG_CHECKING([configure summary])
6188 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6189            AC_MSG_RESULT(yes),
6190            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6191            AC_MSG_WARN([cannot run when cross-compiling]))
6192
6193 builddir=`pwd`
6194 AC_SUBST(builddir)
6195
6196 # Stuff the smbd-only libraries at the end of the smbd link
6197 # path (if we have them).
6198 SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs"
6199 AC_SUBST(SMBD_LIBS)
6200
6201 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
6202
6203 #################################################
6204 # Print very concise instructions on building/use
6205 if test "x$enable_dmalloc" = xyes
6206 then
6207         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6208         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
6209 fi