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