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