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