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