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