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