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