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