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