NetBSD defines innetgr() in <netgroup.h>
[Samba.git] / source / configure.in
blob4bfb1db02e8e1cbee41d13844c3e78c83ae31bbb
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_samr2 rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
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 vfs_streams_xattr"
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)
968 AC_CHECK_HEADERS(netgroup.h)
970 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
971 #if HAVE_RPC_RPC_H
972 #include <rpc/rpc.h>
973 #endif
976 ## These fail to compile on IRIX so just check for their presence
977 AC_CHECK_HEADERS(sys/mode.h,,,)
979 # Look for Darwin headers
980 old_CPPFLAGS="$CPPFLAGS"
981 CPPFLAGS="-Iinclude $CPPFLAGS"
982 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
983 CPPFLAGS="$old_CPPFLAGS"
985 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
986 # subdirectory of headers.
987 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
989 # check for linux on amd64 since valgrind is not quite there yet
990 case "$host_os" in
991         *linux*)
992                 case "$UNAME_P" in
993                         *x86_64*)
994                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
995                                 ;;
996                 esac
997                 ;;
998 esac
1002 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1003 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1005 case "$host_os" in
1006     *hpux*)
1007                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1008                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1009                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1010                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1011                 fi
1012         ;;
1013 esac
1014 AC_CHECK_HEADERS(shadow.h)
1015 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1016 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1018 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1019 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1021 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1023 # For experimental utmp support (lastlog on some BSD-like systems)
1024 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1026 AC_CHECK_SIZEOF(int,cross)
1027 AC_CHECK_SIZEOF(long,cross)
1028 AC_CHECK_SIZEOF(long long,cross)
1029 AC_CHECK_SIZEOF(short,cross)
1031 AC_C_CONST
1032 AC_C_INLINE
1033 AC_C_BIGENDIAN
1034 AC_C_CHAR_UNSIGNED
1036 AC_TYPE_SIGNAL
1037 AC_TYPE_UID_T
1038 AC_TYPE_MODE_T
1039 AC_TYPE_OFF_T
1040 AC_TYPE_SIZE_T
1041 AC_TYPE_PID_T
1042 AC_STRUCT_ST_RDEV
1043 AC_DIRENT_D_OFF
1044 AC_CHECK_TYPE(ino_t,unsigned)
1045 AC_CHECK_TYPE(loff_t,off_t)
1046 AC_CHECK_TYPE(offset_t,loff_t)
1047 AC_CHECK_TYPE(ssize_t, int)
1048 AC_CHECK_TYPE(wchar_t, unsigned short)
1049 AC_CHECK_TYPE(comparison_fn_t,
1050 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1052 ############################################
1053 # for cups support we need libcups, and a handful of header files
1055 AC_ARG_ENABLE(cups,
1056 [  --enable-cups           Turn on CUPS support (default=auto)])
1058 if test x$enable_cups != xno; then
1059         AC_PATH_PROG(CUPS_CONFIG, cups-config)
1061         if test "x$CUPS_CONFIG" != x; then
1062                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1063                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1064                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1065                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1066         elif test x"$enable_cups" = x"yes"; then
1067                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
1068         fi
1071 AC_ARG_ENABLE(iprint,
1072 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
1074 if test x$enable_iprint != xno; then
1075         if test "x$CUPS_CONFIG" != x; then
1076                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1077         elif test x"$enable_iprint" = x"yes"; then
1078                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
1079         fi
1082 ############################################
1083 # check if the compiler will optimize out function calls
1084 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1085     AC_TRY_LINK([
1086 #include <stdio.h>],
1088                 if (0) {
1089                    this_function_does_not_exist();
1090                 } else {
1091                   return 1;
1092                 }
1095         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1096 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1097    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1100 ############################################
1101 # check for unix domain sockets
1102 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1103     AC_TRY_COMPILE([
1104 #include <sys/types.h>
1105 #include <stdlib.h>
1106 #include <stddef.h>
1107 #include <sys/socket.h>
1108 #include <sys/un.h>],
1110   struct sockaddr_un sunaddr;
1111   sunaddr.sun_family = AF_UNIX;
1113         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1114 if test x"$samba_cv_unixsocket" = x"yes"; then
1115    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1119 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1120     AC_TRY_COMPILE([
1121 #include <sys/types.h>
1122 #if STDC_HEADERS
1123 #include <stdlib.h>
1124 #include <stddef.h>
1125 #endif
1126 #include <signal.h>],[sig_atomic_t i = 0],
1127         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1128 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1129    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1132 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1133     AC_TRY_COMPILE([
1134 #include <sys/types.h>
1135 #if STDC_HEADERS
1136 #include <stdlib.h>
1137 #include <stddef.h>
1138 #endif
1139 #if TIME_WITH_SYS_TIME
1140 # include <sys/time.h>
1141 # include <time.h>
1142 #else
1143 # if HAVE_SYS_TIME_H
1144 #  include <sys/time.h>
1145 # else
1146 #  include <time.h>
1147 # endif
1148 #endif
1149 ],[struct timespec ts;],
1150         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1151 if test x"$samba_cv_struct_timespec" = x"yes"; then
1152    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1155 # stupid headers have the functions but no declaration. grrrr.
1156 AC_HAVE_DECL(errno, [#include <errno.h>])
1157 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1158 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1159 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1160 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1161 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1162 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1164 # and glibc has setresuid under linux but the function does
1165 # nothing until kernel 2.1.44! very dumb.
1166 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1167     AC_TRY_RUN([#include <errno.h>
1168 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1169         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1170 if test x"$samba_cv_have_setresuid" = x"yes"; then
1171     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1174 # Do the same check for setresguid...
1176 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1177     AC_TRY_RUN([#include <unistd.h>
1178 #include <errno.h>
1179 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1180         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1181 if test x"$samba_cv_have_setresgid" = x"yes"; then
1182     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1185 AC_FUNC_MEMCMP
1187 ###############################################
1188 # Readline included by default unless explicitly asked not to
1189 test "${with_readline+set}" != "set" && with_readline=yes
1191 # test for where we get readline() from
1192 AC_MSG_CHECKING(whether to use readline)
1193 AC_ARG_WITH(readline,
1194 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1195 [  case "$with_readline" in
1196   yes)
1197     AC_MSG_RESULT(yes)
1199     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1200     AC_CHECK_HEADERS(readline/history.h)
1202     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1203       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1204        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1205       done
1206       AC_CHECK_LIB(readline, rl_callback_handler_install,
1207        [TERMLIBS="-lreadline $TERMLIBS"
1208        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1209        break], [TERMLIBS=], $TERMLIBS)])
1210     ;;
1211   no)
1212     AC_MSG_RESULT(no)
1213     ;;
1214   *)
1215     AC_MSG_RESULT(yes)
1217     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1218     # alternate readline path
1219     _ldflags=${LDFLAGS}
1220     _cppflags=${CPPFLAGS}
1222     # Add additional search path
1223     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1224     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1226     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1227     AC_CHECK_HEADERS(readline/history.h)
1229     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1230       for termlib in ncurses curses termcap terminfo termlib; do
1231        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1232       done
1233       AC_CHECK_LIB(readline, rl_callback_handler_install,
1234        [TERMLDFLAGS="-L$with_readline/lib"
1235        TERMCPPFLAGS="-I$with_readline/include"
1236        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1237        TERMLIBS="-lreadline $TERMLIBS"
1238        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1239        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1241     LDFLAGS=$_ldflags
1242     ;;
1243   esac],
1244   AC_MSG_RESULT(no)
1246 AC_SUBST(TERMLIBS)
1247 AC_SUBST(TERMLDFLAGS)
1249 # The readline API changed slightly from readline3 to readline4, so
1250 # code will generate warnings on one of them unless we have a few
1251 # special cases.
1252 AC_CHECK_LIB(readline, rl_completion_matches,
1253              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1254                         [Do we have rl_completion_matches?])],
1255              [],
1256              [$TERMLIBS])
1258 # not all readline libs have rl_event_hook or history_list
1259 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1260 AC_CHECK_LIB(readline, history_list,
1261              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1262              [],
1263              [$TERMLIBS])
1265 # The following test taken from the cvs sources
1266 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1267 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1268 # libsocket.so which has a bad implementation of gethostbyname (it
1269 # only looks in /etc/hosts), so we only look for -lsocket if we need
1270 # it.
1271 AC_CHECK_FUNCS(connect)
1272 if test x"$ac_cv_func_connect" = x"no"; then
1273     case "$LIBS" in
1274     *-lnsl*) ;;
1275     *) AC_CHECK_LIB(nsl_s, connect) ;;
1276     esac
1277     case "$LIBS" in
1278     *-lnsl*) ;;
1279     *) AC_CHECK_LIB(nsl, connect) ;;
1280     esac
1281     case "$LIBS" in
1282     *-lsocket*) ;;
1283     *) AC_CHECK_LIB(socket, connect) ;;
1284     esac
1285     case "$LIBS" in
1286     *-linet*) ;;
1287     *) AC_CHECK_LIB(inet, connect) ;;
1288     esac
1289     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1290     dnl has been cached.
1291     if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1292        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1293         # ac_cv_func_connect=yes
1294         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1295         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1296     fi
1299 ###############################################
1300 # test for where we get yp_get_default_domain() from
1301 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1302 AC_CHECK_FUNCS(yp_get_default_domain)
1304 # Check if we have execl, if not we need to compile smbrun.
1305 AC_CHECK_FUNCS(execl)
1306 if test x"$ac_cv_func_execl" = x"no"; then
1307     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1310 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1311 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1312 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1313 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1314 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1315 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1316 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1317 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1318 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1319 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1320 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1321 AC_CHECK_FUNCS(getpwent_r)
1322 AC_CHECK_FUNCS(getdents getdents64)
1323 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1324 AC_CHECK_FUNCS(syslog vsyslog timegm)
1325 AC_CHECK_FUNCS(setlocale nl_langinfo)
1326 AC_CHECK_FUNCS(nanosleep)
1327 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1328 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1329 AC_CHECK_HEADERS(sys/mman.h)
1330 # setbuffer, shmget, shm_open are needed for smbtorture
1331 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1333 # Find a method of generating a stack trace
1334 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1335 AC_CHECK_FUNCS(backtrace_symbols)
1336 AC_CHECK_LIB(exc, trace_back_stack)
1338 echo -n "checking for GPFS GPL libs... "
1339 save_LIBS="$LIBS"
1340 LIBS="$LIBS -lgpfs_gpl"
1341 AC_TRY_LINK([#include <gpfs_gpl.h>],
1342           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1343           samba_cv_HAVE_GPFS=yes,
1344           samba_cv_HAVE_GPFS=no)
1345 echo $samba_cv_HAVE_GPFS
1346 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1347     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1348     default_shared_modules="$default_shared_modules vfs_gpfs"
1350 LIBS="$save_LIBS"
1352 # Note that all the libunwind symbols in the API are defined to internal
1353 # platform-specific version, so we must include libunwind.h before checking
1354 # any of them.
1355 AC_MSG_CHECKING([for libunwind])
1356 save_LIBS=$LIBS
1358 UNWIND_ARCH="unknown"
1359 if test x"$UNAME_I" != x"unknown"; then
1360         UNWIND_ARCH="$UNAME_I"
1361 elif test x"$UNAME_M" != x"unknown"; then
1362         UNWIND_ARCH="$UNAME_M"
1363 elif test x"$UNAME_P" != x"unknown"; then
1364         UNWIND_ARCH="$UNAME_P"
1367 case "$UNWIND_ARCH" in
1368         unknown)
1369                 # This probably won't link without
1370                 # the platform-specific libunwind.
1371                 LIBS="$LIBS -lunwind"
1372                 ;;
1373         i386|i586|i686)
1374                 # Add the platform-specific libunwind module.
1375                 LIBS="$LIBS -lunwind -lunwind-x86"
1376                 ;;
1377         *)
1378                 # Add the platform-specific libunwind module.
1379                 # based on uname -i, uname -m or uname -p
1380                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1381                 ;;
1382 esac
1384 AC_TRY_LINK(
1385     [
1386 #ifdef HAVE_LIBUNWIND_H
1387 #include <libunwind.h>
1388 #endif
1389     ],
1390     [
1391         unw_context_t ctx; unw_cursor_t cur;
1392         char buf[256]; unw_word_t off;
1393         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1394         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1395     ],
1396     [
1397         AC_MSG_RESULT(yes)
1398         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1400         # If we have libunwind, test whether we also have libunwind-ptrace
1401         # which would let us unwind arbitrary processes.
1402         save_LIBS=$LIBS
1403         AC_CHECK_HEADERS(libunwind-ptrace.h)
1404         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1405             [
1406                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1407                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1408                     [Whether libunwind-ptrace.a is available.])
1409             ],
1410             [ LIBUNWIND_PTRACE="" ])
1412         LIBS=$save_LIBS
1413     ],
1414     [
1415         AC_MSG_RESULT(no)
1416         LIBS=$save_LIBS
1417     ])
1419 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1420 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1421     AC_CHECK_HEADERS(sys/ptrace.h)
1422     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1423     AC_TRY_LINK(
1424             [
1425 #if HAVE_SYS_TYPES_H
1426 #include <sys/types.h>
1427 #endif
1428 #if HAVE_SYS_PTRACE_H
1429 #include <sys/ptrace.h>
1430 #endif
1431             ],
1432             [
1433                 int main(int argc, const char ** argv)
1434                 {
1435                         pid_t me = (pid_t)-1;
1436                         ptrace(PTRACE_ATTACH, me, 0, 0);
1437                         ptrace(PTRACE_DETACH, me, 0, 0);
1438                         return 0;
1439                 }
1440             ],
1441             [
1442                 AC_MSG_RESULT(yes)
1443                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1444                     [Whether the Linux ptrace(2) interface is available.])
1445             ],
1446             [
1447                 AC_MSG_RESULT(no)
1448                 LIBUNWIND_PTRACE=""
1449             ])
1452 AC_SUBST(LIBUNWIND_PTRACE)
1454 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1455 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1456 AC_CHECK_FUNCS(__getcwd _getcwd)
1457 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1458 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1459 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1460 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1461 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1462 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1463 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1464 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1465 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1466 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1467 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1468 AC_CHECK_FUNCS(prctl)
1470 AC_TRY_COMPILE([
1471 #ifdef HAVE_SYS_PRCTL_H
1472 #include <sys/prctl.h>
1473 #endif
1475 [int i; i = prtcl(0); ],
1476 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1481 case "$host_os" in
1482     *linux*)
1483        # glibc <= 2.3.2 has a broken getgrouplist
1484        AC_TRY_RUN([
1485 #include <unistd.h>
1486 #include <sys/utsname.h>
1487 main() {
1488        /* glibc up to 2.3 has a broken getgrouplist */
1489 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1490        int libc_major = __GLIBC__;
1491        int libc_minor = __GLIBC_MINOR__;
1493        if (libc_major < 2)
1494               exit(1);
1495        if ((libc_major == 2) && (libc_minor <= 3))
1496               exit(1);
1497 #endif
1498        exit(0);
1500 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1501        if test x"$linux_getgrouplist_ok" = x"yes"; then
1502           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1503        fi
1504        ;;
1505     *)
1506        AC_CHECK_FUNCS(getgrouplist)
1507        ;;
1508 esac
1511 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1514 if test x$ac_cv_func_stat64 = xno ; then
1515   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1516   AC_TRY_LINK([
1517 #if defined(HAVE_UNISTD_H)
1518 #include <unistd.h>
1519 #endif
1520 #include <sys/stat.h>
1521 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1522   AC_MSG_RESULT([$ac_cv_func_stat64])
1523   if test x$ac_cv_func_stat64 = xyes ; then
1524     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1525   fi
1528 if test x$ac_cv_func_lstat64 = xno ; then
1529   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1530   AC_TRY_LINK([
1531 #if defined(HAVE_UNISTD_H)
1532 #include <unistd.h>
1533 #endif
1534 #include <sys/stat.h>
1535 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1536   AC_MSG_RESULT([$ac_cv_func_lstat64])
1537   if test x$ac_cv_func_lstat64 = xyes ; then
1538     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1539   fi
1542 if test x$ac_cv_func_fstat64 = xno ; then
1543   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1544   AC_TRY_LINK([
1545 #if defined(HAVE_UNISTD_H)
1546 #include <unistd.h>
1547 #endif
1548 #include <sys/stat.h>
1549 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1550   AC_MSG_RESULT([$ac_cv_func_fstat64])
1551   if test x$ac_cv_func_fstat64 = xyes ; then
1552     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1553   fi
1556 #################################################
1557 # Check whether struct stat has timestamps with sub-second resolution.
1558 # At least IRIX and Solaris have these.
1560 # We check that
1561 #       all of st_mtim, st_atim and st_ctim exist
1562 #       all of the members are in fact of type struct timespec
1564 # There is some conflicting standards weirdness about whether we should use
1565 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1566 # prefer struct timespec.
1568 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1569     [
1570         AC_TRY_COMPILE(
1571             [
1572 #if TIME_WITH_SYS_TIME
1573 # include <sys/time.h>
1574 # include <time.h>
1575 #else
1576 # if HAVE_SYS_TIME_H
1577 #  include <sys/time.h>
1578 # else
1579 #  include <time.h>
1580 # endif
1581 #endif
1582 #ifdef HAVE_SYS_STAT_H
1583 #include <sys/stat.h>
1584 #endif
1585             ],
1586             [
1587                 struct timespec t;
1588                 struct stat s = {0};
1589                 t.tv_sec = s.st_mtim.tv_sec;
1590                 t.tv_nsec = s.st_mtim.tv_nsec;
1591                 t.tv_sec = s.st_ctim.tv_sec;
1592                 t.tv_nsec = s.st_ctim.tv_nsec;
1593                 t.tv_sec = s.st_atim.tv_sec;
1594                 t.tv_nsec = s.st_atim.tv_nsec;
1595             ],
1596             samba_stat_hires=yes, samba_stat_hires=no)
1597     ])
1599 if test x"$samba_stat_hires" = x"yes" ; then
1600     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1601     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1602     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1603     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1604             [whether struct stat has sub-second timestamps])
1607 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1608     [
1609         AC_TRY_COMPILE(
1610             [
1611 #if TIME_WITH_SYS_TIME
1612 # include <sys/time.h>
1613 # include <time.h>
1614 #else
1615 # if HAVE_SYS_TIME_H
1616 #  include <sys/time.h>
1617 # else
1618 #  include <time.h>
1619 # endif
1620 #endif
1621 #ifdef HAVE_SYS_STAT_H
1622 #include <sys/stat.h>
1623 #endif
1624             ],
1625             [
1626                 struct timespec t;
1627                 struct stat s = {0};
1628                 t.tv_sec = s.st_mtime;
1629                 t.tv_nsec = s.st_mtimensec;
1630                 t.tv_sec = s.st_ctime;
1631                 t.tv_nsec = s.st_ctimensec;
1632                 t.tv_sec = s.st_atime;
1633                 t.tv_nsec = s.st_atimensec;
1634             ],
1635             samba_stat_hires=yes, samba_stat_hires=no)
1636     ])
1638 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1639     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1640     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1641     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1642     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1643             [whether struct stat has sub-second timestamps without struct timespec])
1646 #####################################
1647 # needed for SRV lookups
1648 AC_CHECK_LIB(resolv, dn_expand)
1649 AC_CHECK_LIB(resolv, _dn_expand)
1650 AC_CHECK_LIB(resolv, __dn_expand)
1653 # Check for the functions putprpwnam, set_auth_parameters,
1654 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1655 # Needed for OSF1 and HPUX.
1658 AC_LIBTESTFUNC(security, putprpwnam)
1659 AC_LIBTESTFUNC(sec, putprpwnam)
1661 AC_LIBTESTFUNC(security, set_auth_parameters)
1662 AC_LIBTESTFUNC(sec, set_auth_parameters)
1664 # UnixWare 7.x has its getspnam in -lgen
1665 AC_LIBTESTFUNC(gen, getspnam)
1667 AC_LIBTESTFUNC(security, getspnam)
1668 AC_LIBTESTFUNC(sec, getspnam)
1670 AC_LIBTESTFUNC(security, bigcrypt)
1671 AC_LIBTESTFUNC(sec, bigcrypt)
1673 AC_LIBTESTFUNC(security, getprpwnam)
1674 AC_LIBTESTFUNC(sec, getprpwnam)
1676 AC_CHECK_FUNCS(strsignal)
1678 ############################################
1679 # Check if we have libattr
1680 case "$host_os" in
1681   *osf*)
1682         AC_SEARCH_LIBS(getproplist, [proplist])
1683         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1684         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1685         AC_CHECK_FUNCS(sizeof_proplist_entry)
1686   ;;
1687   *)
1688         AC_SEARCH_LIBS(getxattr, [attr])
1689         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1690         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1691         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1692         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1693         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1694         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1695         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1696   ;;
1697 esac
1699 ########################################################
1700 # Check if attropen() is present if this is Solaris
1701 case "$host_os" in
1702   *solaris*)
1703         AC_CHECK_FUNCS(attropen)
1704   ;;
1705 esac
1707 ########################################################
1708 # Do xattr functions take additional options like on Darwin?
1709 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1710         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1711                 old_LIBS=$LIBS
1712                 LIBS="$LIBS $ACL_LIBS"
1713                 AC_TRY_COMPILE([
1714                         #include <sys/types.h>
1715                         #if HAVE_ATTR_XATTR_H
1716                         #include <attr/xattr.h>
1717                         #elif HAVE_SYS_XATTR_H
1718                         #include <sys/xattr.h>
1719                         #endif
1720                 ],[
1721                         getxattr(0, 0, 0, 0, 0, 0);
1722                 ],
1723                 [smb_attr_cv_xattr_add_opt=yes],
1724                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1725         ])
1726         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1727                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1728         fi
1731 # Check if we have extattr
1732 case "$host_os" in
1733   *freebsd4* | *dragonfly* )
1734     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1735     ;;
1736   *)
1737     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1738     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1739     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1740     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1741     ;;
1742 esac
1744 # Set defaults
1745 PIE_CFLAGS=""
1746 PIE_LDFLAGS=""
1747 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1749 if test "x$enable_pie" != xno
1750 then
1751         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1752         [
1753                 cat > conftest.c <<EOF
1754 int foo;
1755 main () { return 0;}
1757                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1758                 then
1759                         samba_cv_fpie=yes
1760                 else
1761                         samba_cv_fpie=no
1762                 fi
1763                 rm -f conftest*
1764         ])
1765         if test x"${samba_cv_fpie}" = x"yes"
1766         then
1767                 PIE_CFLAGS="-fPIE"
1768                 PIE_LDFLAGS="-pie"
1769         fi
1772 # Assume non-shared by default and override below
1773 BLDSHARED="false"
1775 # these are the defaults, good for lots of systems
1776 HOST_OS="$host_os"
1777 LDSHFLAGS="-shared"
1778 MODULE_EXPORTS=""
1779 SONAMEFLAG="#"
1780 SHLD="\${CC} \${CFLAGS}"
1781 PICFLAG="${PIE_CFLAGS}"
1782 SHLIBEXT="so"
1783 DSO_EXPORTS=""
1785 # this bit needs to be modified for each OS that supports share libs
1786 # You need to specify how to create a shared library and
1787   # how to compile C code to produce PIC object files
1789   AC_MSG_CHECKING([ability to build shared libraries])
1791   # and these are for particular systems
1792   case "$host_os" in
1793                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1794                         BLDSHARED="true"
1795                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1796                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1797                         else
1798                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1799                         fi
1800                         DYNEXP="-Wl,--export-dynamic"
1801                         PICFLAG="-fPIC"
1802                         SONAMEFLAG="-Wl,-soname="
1803                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804                         ;;
1805                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1806                         BLDSHARED="true"
1807                         LDSHFLAGS="-G"
1808                         SONAMEFLAG="-h "
1809                         if test "${GCC}" = "yes"; then
1810                                 PICFLAG="-fPIC"
1811                                 SONAMEFLAG="-Wl,-soname="
1812                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1813                                         DYNEXP="-Wl,-E"
1814                                 fi
1815                         else
1816                                 PICFLAG="-KPIC"
1817                                 ## ${CFLAGS} added for building 64-bit shared
1818                                 ## libs using Sun's Compiler
1819                                 LDSHFLAGS="-G \${CFLAGS}"
1820                         fi
1821                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1822                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1823                         ;;
1824                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1825                         BLDSHARED="true"
1826                         LDSHFLAGS="-G"
1827                         SONAMEFLAG="-Wl,-h,"
1828                         PICFLAG="-KPIC"   # Is this correct for SunOS
1829                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1830                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1831                         ;;
1832                 *netbsd* | *freebsd* | *dragonfly* )
1833                         BLDSHARED="true"
1834                         LDSHFLAGS="-shared"
1835                         DYNEXP="-Wl,--export-dynamic"
1836                         SONAMEFLAG="-Wl,-soname,"
1837                         PICFLAG="-fPIC -DPIC"
1838                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1839                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1840                         ;;
1841                 *openbsd*)  BLDSHARED="true"
1842                         LDSHFLAGS="-shared"
1843                         DYNEXP="-Wl,-Bdynamic"
1844                         SONAMEFLAG="-Wl,-soname,"
1845                         PICFLAG="-fPIC"
1846                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1847                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1848                         ;;
1849                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1850                         case "$host_os" in
1851                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1852                         ;;
1853                         esac
1854                         BLDSHARED="true"
1855                         LDSHFLAGS="-set_version sgi1.0 -shared"
1856                         SONAMEFLAG="-soname "
1857                         SHLD="\${LD}"
1858                         if test "${GCC}" = "yes"; then
1859                                 PICFLAG="-fPIC"
1860                         else
1861                                 PICFLAG="-KPIC"
1862                         fi
1863                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1864                         ;;
1865                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1866                         BLDSHARED="true"
1867                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1868                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1869                         PICFLAG="-O2"
1870                         # as AIX code is always position independent...
1871                         # .po will just create compile warnings, use po.o:
1872                         if test "${GCC}" != "yes"; then
1873                                 ## for funky AIX compiler using strncpy()
1874                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1875                         fi
1877                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1878                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1879                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1880                         ;;
1881                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1882                         # Use special PIC flags for the native HP-UX compiler.
1883                                 BLDSHARED="true"
1884                                 SHLD="cc"
1885                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1886                                 SONAMEFLAG="-Wl,+h "
1887                                 PICFLAG="+z"
1888                         if test "${GCC}" = "yes"; then
1889                                 PICFLAG="-fPIC"
1890                         else
1891                                 PICFLAG="+z +ESnolit"
1892                         fi
1893                         if test "$host_cpu" = "ia64"; then
1894                                 SHLIBEXT="so"
1895                               PICFLAG="+z"
1896                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1897                         else
1898                                 SHLIBEXT="sl"
1899                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1900                         fi
1901                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1902                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1903                         ;;
1904                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1905                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1906                         ;;
1907                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1908                         BLDSHARED="true"
1909                         LDSHFLAGS="-shared"
1910                         SONAMEFLAG="-Wl,-soname,"
1911                         PICFLAG="-fPIC"
1912                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1913                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1914                         ;;
1915                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1916                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1917                         ;;
1918                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1919                         BLDSHARED="true"
1920                         LDSHFLAGS="-shared"
1921                         SONAMEFLAG="-Wl,-soname,"
1922                         PICFLAG="-KPIC"
1923                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1924                         ;;
1925                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1926                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1927                         ;;
1928                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1929                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1930                         ;;
1931                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1932                         case "$host" in
1933                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1934                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1935                                         fi
1936                                         LDSHFLAGS="-G"
1937                                         DYNEXP="-Bexport"
1938                                 ;;
1939                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1940                         esac
1941                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1942                         ;;
1944                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1945                         if [ test "$GCC" != yes ]; then
1946                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1947                         fi
1948                         LDSHFLAGS="-G"
1949                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1950                         ;;
1951                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1952                         BLDSHARED="false"
1953                         LDSHFLAGS=""
1954                         ;;
1956                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1957                         BLDSHARED="true"
1958                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1959                         SHLIBEXT="dylib"
1960                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1961                         SHLIBEXT="dylib"
1962                         # Since gcc doesn't fail on unrecognised options, the
1963                         # PIE test incorrectly succeeds. Darwin gcc does not
1964                         # actually support the PIE stuff.
1965                         PIE_LDFLAGS=
1966                         PIE_CFLAGS=
1967                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1968                         ;;
1970                 *)
1971                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1972                         ;;
1973   esac
1975 if test "$enable_shared" != "yes"; then
1976         BLDSHARED=false
1979 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1980         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1983 AC_MSG_RESULT($BLDSHARED)
1985 AC_MSG_CHECKING([LDFLAGS])
1986 AC_MSG_RESULT([$LDFLAGS])
1987 AC_MSG_CHECKING([DYNEXP])
1988 AC_MSG_RESULT([$DYNEXP])
1990 #######################################################
1991 # test whether building a shared library actually works
1992 if test $BLDSHARED = true; then
1994 AC_MSG_CHECKING([SHLD])
1995 AC_MSG_RESULT([$SHLD])
1996 AC_MSG_CHECKING([LDSHFLAGS])
1997 AC_MSG_RESULT([$LDSHFLAGS])
1999 AC_MSG_CHECKING([SHLIBEXT])
2000 AC_MSG_RESULT([$SHLIBEXT])
2001 AC_MSG_CHECKING([SONAMEFLAG])
2002 AC_MSG_RESULT([$SONAMEFLAG])
2004 AC_MSG_CHECKING([PICFLAG])
2005 AC_MSG_RESULT([$PICFLAG])
2007 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2008 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2010 AC_CACHE_CHECK([whether building shared libraries actually works],
2011                [ac_cv_shlib_works],[
2012    # try building a trivial shared library
2013    ac_cv_shlib_works=no
2014    # The $SHLD and $LDSHFLAGS variables may contain references to other
2015    # variables so they need to be eval'ed.
2016    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2017         shlib.o ${srcdir-.}/tests/shlib.c && \
2018    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2019         shlib.o && ac_cv_shlib_works=yes
2020    rm -f "shlib.$SHLIBEXT" shlib.o
2023 if test $ac_cv_shlib_works = no; then
2024    BLDSHARED=false
2028 if test x"$BLDSHARED" != x"true"; then
2029         LDSHFLAGS="shared-libraries-disabled"
2030         SONAMEFLAG="shared-libraries-disabled"
2031         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2032         SHLD="shared-libraries-disabled"
2033         PICFLAG="${PIE_CFLAGS}"
2034         SHLIBEXT="shared_libraries_disabled"
2037 AC_MSG_CHECKING([used PICFLAG])
2038 AC_MSG_RESULT([$PICFLAG])
2040 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2042 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2044 ################
2046 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2047 AC_TRY_RUN([#include <stdio.h>
2048 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2049 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2050 if test x"$samba_cv_have_longlong" = x"yes"; then
2051     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2052     AC_CHECK_TYPE(intptr_t, unsigned long long)
2053 else
2054     AC_CHECK_TYPE(intptr_t, unsigned long)
2058 # Check if the compiler supports the LL prefix on long long integers.
2059 # AIX needs this.
2061 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2062     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2063         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2064 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2065    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2069 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2070 AC_TRY_RUN([#include <time.h>
2071 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2072 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2073 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2074     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2077 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2078 AC_TRY_RUN([#include <stdio.h>
2079 #include <sys/stat.h>
2080 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2081 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2082 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2083     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2086 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2087 AC_TRY_RUN([
2088 #if defined(HAVE_UNISTD_H)
2089 #include <unistd.h>
2090 #endif
2091 #include <stdio.h>
2092 #include <sys/stat.h>
2093 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2094 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2095 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2096     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2099 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2100 AC_TRY_RUN([
2101 #if defined(HAVE_UNISTD_H)
2102 #include <unistd.h>
2103 #endif
2104 #include <stdio.h>
2105 #include <sys/stat.h>
2106 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2107 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2108 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2109     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2112 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2113 AC_TRY_RUN([
2114 #if defined(HAVE_UNISTD_H)
2115 #include <unistd.h>
2116 #endif
2117 #include <stdio.h>
2118 #include <sys/stat.h>
2119 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2120 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2121 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2122     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2125 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2126 AC_TRY_RUN([
2127 #if defined(HAVE_UNISTD_H)
2128 #include <unistd.h>
2129 #endif
2130 #include <stdio.h>
2131 #include <sys/stat.h>
2132 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2133 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2134 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2135     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2138 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2139 AC_TRY_RUN([
2140 #if defined(HAVE_UNISTD_H)
2141 #include <unistd.h>
2142 #endif
2143 #include <stdio.h>
2144 #include <sys/stat.h>
2145 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2146 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2147 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2148     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2151 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2152 AC_TRY_COMPILE([
2153 #if defined(HAVE_UNISTD_H)
2154 #include <unistd.h>
2155 #endif
2156 #include <sys/types.h>
2157 #include <dirent.h>],
2158 [DIR64 de;],
2159 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2160 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2161     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2164 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2165 AC_TRY_COMPILE([
2166 #if defined(HAVE_UNISTD_H)
2167 #include <unistd.h>
2168 #endif
2169 #include <sys/types.h>
2170 #include <dirent.h>],
2171 [struct dirent64 de;],
2172 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2173 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2174     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2177 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2178 AC_TRY_RUN([
2179 #if defined(HAVE_UNISTD_H)
2180 #include <unistd.h>
2181 #endif
2182 #include <sys/types.h>
2183 main() { dev_t dev; int i = major(dev); return 0; }],
2184 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2185 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2186     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2189 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2190 AC_TRY_RUN([
2191 #if defined(HAVE_UNISTD_H)
2192 #include <unistd.h>
2193 #endif
2194 #include <sys/types.h>
2195 main() { dev_t dev; int i = minor(dev); return 0; }],
2196 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2197 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2198     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2201 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2202 AC_TRY_RUN([
2203 #if defined(HAVE_UNISTD_H)
2204 #include <unistd.h>
2205 #endif
2206 #include <sys/types.h>
2207 main() { dev_t dev = makedev(1,2); return 0; }],
2208 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2209 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2210     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2213 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2214 AC_TRY_RUN([#include <stdio.h>
2215 main() { char c; c=250; exit((c > 0)?0:1); }],
2216 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2217 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2218     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2221 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2222 AC_TRY_COMPILE([#include <sys/types.h>
2223 #include <sys/socket.h>
2224 #include <netinet/in.h>],
2225 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2226 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2227 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2228     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2231 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2232 AC_TRY_COMPILE([#include <sys/types.h>
2233 #include <dirent.h>
2234 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2235 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2236 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2237     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2240 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2241 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2242 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2243 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2244     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2247 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2248 AC_TRY_LINK([
2249 #include <sys/time.h>
2250 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2251            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2252            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2253 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2254     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2257 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2259     # On some systems (eg. Linux) librt can pull in libpthread. We
2260     # don't want this to happen because libpthreads changes signal delivery
2261     # semantics in ways we are not prepared for. This breaks Linux oplocks
2262     # which rely on signals.
2264     AC_LIBTESTFUNC(rt, clock_gettime,
2265             [
2266                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2267                                 [Whether clock_gettime is available])
2268                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2269                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2270                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2271                         ])
2275 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2276 AC_TRY_LINK([#include <stdarg.h>
2277 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2278 samba_cv_HAVE_VA_COPY=yes,
2279 samba_cv_HAVE_VA_COPY=no)])
2280 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2281     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2282 else
2283     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2284     AC_TRY_LINK([#include <stdarg.h>
2285     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2286     samba_cv_HAVE___VA_COPY=yes,
2287     samba_cv_HAVE___VA_COPY=no)])
2288     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2289         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2290     fi
2293 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2294 AC_TRY_RUN([
2295 #include <sys/types.h>
2296 #include <stdarg.h>
2297 void foo(const char *format, ...) {
2298        va_list ap;
2299        int len;
2300        char buf[5];
2302        va_start(ap, format);
2303        len = vsnprintf(buf, 0, format, ap);
2304        va_end(ap);
2305        if (len != 5) exit(1);
2307        va_start(ap, format);
2308        len = vsnprintf(0, 0, format, ap);
2309        va_end(ap);
2310        if (len != 5) exit(1);
2312        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2314        exit(0);
2316 main() { foo("hello"); }
2318 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2319 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2320     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2323 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2324 AC_TRY_RUN([#include <sys/types.h>
2325 #include <dirent.h>
2326 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2327 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2328 di->d_name[0] == 0) exit(0); exit(1);} ],
2329 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2330 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2331     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2334 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2335 AC_TRY_COMPILE([#include <sys/types.h>
2336 #include <utime.h>],
2337 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2338 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2339 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2340     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2343 ##############
2344 # Check utmp details, but only if our OS offers utmp.h
2345 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2346 dnl  utmp and utmpx come in many flavours
2347 dnl  We need to check for many of them
2348 dnl  But we don't need to do each and every one, because our code uses
2349 dnl  mostly just the utmp (not utmpx) fields.
2351 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2353 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2354 AC_TRY_COMPILE([#include <sys/types.h>
2355 #include <utmp.h>],
2356 [struct utmp ut;  ut.ut_name[0] = 'a';],
2357 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2358 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2359     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2362 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2363 AC_TRY_COMPILE([#include <sys/types.h>
2364 #include <utmp.h>],
2365 [struct utmp ut;  ut.ut_user[0] = 'a';],
2366 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2367 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2368     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2371 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2372 AC_TRY_COMPILE([#include <sys/types.h>
2373 #include <utmp.h>],
2374 [struct utmp ut;  ut.ut_id[0] = 'a';],
2375 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2376 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2377     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2380 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2381 AC_TRY_COMPILE([#include <sys/types.h>
2382 #include <utmp.h>],
2383 [struct utmp ut;  ut.ut_host[0] = 'a';],
2384 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2385 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2386     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2389 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2390 AC_TRY_COMPILE([#include <sys/types.h>
2391 #include <utmp.h>],
2392 [struct utmp ut;  time_t t; ut.ut_time = t;],
2393 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2394 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2395     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2398 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2399 AC_TRY_COMPILE([#include <sys/types.h>
2400 #include <utmp.h>],
2401 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2402 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2403 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2404     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2407 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2408 AC_TRY_COMPILE([#include <sys/types.h>
2409 #include <utmp.h>],
2410 [struct utmp ut;  ut.ut_type = 0;],
2411 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2412 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2413     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2416 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2417 AC_TRY_COMPILE([#include <sys/types.h>
2418 #include <utmp.h>],
2419 [struct utmp ut;  ut.ut_pid = 0;],
2420 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2421 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2422     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2425 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2426 AC_TRY_COMPILE([#include <sys/types.h>
2427 #include <utmp.h>],
2428 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2429 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2430 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2431     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2434 dnl Look for the IPv6 varient by preference. Many systems have both.
2435 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2436 AC_TRY_COMPILE([#include <sys/types.h>
2437 #include <utmp.h>],
2438 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2439 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2440 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2441     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2444 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2445 AC_TRY_COMPILE([#include <sys/types.h>
2446 #include <utmp.h>],
2447 [struct utmp ut;  ut.ut_addr = 0;],
2448 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2449 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2450     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2453 if test x$ac_cv_func_pututline = xyes ; then
2454   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2455   AC_TRY_COMPILE([#include <sys/types.h>
2456 #include <utmp.h>],
2457   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2458   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2459   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2460       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2461   fi
2464 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2465 AC_TRY_COMPILE([#include <sys/types.h>
2466 #include <utmpx.h>],
2467 [struct utmpx ux;  ux.ut_syslen = 0;],
2468 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2469 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2470     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2474 # end utmp details
2477 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2478 AC_ARG_WITH(libiconv,
2479 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2481   if test "$withval" = "no" ; then
2482     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2483   else
2484      if test "$withval" != "yes" ; then
2485         ICONV_PATH_SPEC=yes
2486         ICONV_LOOK_DIRS="$withval"
2487      fi
2488   fi
2491 for i in $ICONV_LOOK_DIRS ; do
2493     save_LIBS="$LIBS"
2494     save_LDFLAGS="$LDFLAGS"
2495     save_CPPFLAGS="$CPPFLAGS"
2497     iconv_current_LIBS=""
2498     iconv_current_LDFLAGS=""
2499     iconv_current_CPPFLAGS=""
2501     ICONV_FOUND="no"
2502     unset libext
2504     #  This is here to handle -withval stuff for --with-libiconv
2505     #  Perhaps we should always add a -L
2506     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2508     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2509     # installation paths. This gets a little tricky since we might have iconv
2510     # in both libiconv and in libc. In this case the jm_ICONV test will always
2511     # succeed when the header is found. To counter this, make sure the
2512     # library directory is there and check the ABI directory first (which
2513     # should be harmless on other systems.
2514     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2515     for l in "lib32" "lib" "lib/hpux32"; do
2516         if test -d "$i/$l" ; then
2517                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2518                 LIBS=
2519                 export LDFLAGS LIBS CPPFLAGS
2520                 # Try to find iconv(3)
2521                 jm_ICONV($i/$l)
2522                 if test x"$ICONV_FOUND" = "xyes" ; then
2523                     libext="$l"
2524                     break
2525                 fi
2526         fi
2527     done
2529     if test x"$ICONV_FOUND" = "xyes" ; then
2530         iconv_current_LDFLAGS="-L$i/$libext"
2531         iconv_current_CPPFLAGS="-I$i/include"
2533         if test x"$jm_cv_lib_iconv" != x; then
2534             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2535         else
2536             # We found iconv in libc.
2537             iconv_current_LIBS=""
2538         fi
2540     fi
2542     if test x"$ICONV_FOUND" = "xyes" ; then
2544         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2545         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2546         LIBS="$save_LIBS $iconv_current_LIBS"
2547         export LDFLAGS LIBS CPPFLAGS
2549         default_dos_charset=no
2550         default_display_charset=no
2551         default_unix_charset=no
2553         # check for default dos charset name
2554         for j in CP850 IBM850 ; do
2555             rjs_CHARSET($j)
2556             default_dos_charset="$ICONV_CHARSET"
2557             if test x"$default_dos_charset" = x"$j"; then
2558                 break
2559             fi
2560         done
2562         # check for default display charset name
2563         for j in ASCII 646 ; do
2564             rjs_CHARSET($j)
2565             default_display_charset="$ICONV_CHARSET"
2566             if test x"$default_display_charset" = x"$j"; then
2567                 break
2568             fi
2569         done
2571         # check for default unix charset name
2572         for j in UTF-8 UTF8 ; do
2573             rjs_CHARSET($j)
2574             default_unix_charset="$ICONV_CHARSET"
2575             if test x"$default_unix_charset" = x"$j"; then
2576                 break
2577             fi
2578         done
2580         if test "$default_dos_charset" != "no" -a \
2581                 "$default_dos_charset" != "cross" -a \
2582                 "$default_display_charset" != "no" -a \
2583                 "$default_display_charset" != "cross" -a \
2584                 "$default_unix_charset" != "no" -a \
2585                 "$default_unix_charset" != "cross"
2586         then
2587                 samba_cv_HAVE_NATIVE_ICONV=yes
2588         else
2589             if test "$default_dos_charset" = "cross" -o \
2590                      "$default_display_charset" = "cross" -o \
2591                      "$default_unix_charset" = "cross"
2592             then
2593                     samba_cv_HAVE_NATIVE_ICONV=cross
2594             else
2595                     samba_cv_HAVE_NATIVE_ICONV=no
2596             fi
2597         fi
2599         # At this point, we have a libiconv candidate. We know that
2600         # we have the right headers and libraries, but we don't know
2601         # whether it does the conversions we want. We can't test this
2602         # because we are cross-compiling. This is not necessarily a big
2603         # deal, since we can't guarantee that the results we get now will
2604         # match the results we get at runtime anyway.
2605         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2606             default_dos_charset="CP850"
2607             default_display_charset="ASCII"
2608             default_unix_charset="UTF-8"
2609             samba_cv_HAVE_NATIVE_ICONV=yes
2610             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2611             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2612         fi
2614         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2616             CPPFLAGS=$save_CPPFLAGS
2617             LDFLAGS=$save_LDFLAGS
2618             LIBS=$save_LIBS
2620             if test x"$iconv_current_LIBS" != x; then
2621                 LIBS="$LIBS $iconv_current_LIBS"
2622             fi
2624             # Add the flags we need to CPPFLAGS and LDFLAGS
2625             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2626             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2628             # Turn the #defines into string literals
2629             default_dos_charset="\"$default_dos_charset\""
2630             default_display_charset="\"$default_display_charset\""
2631             default_unix_charset="\"$default_unix_charset\""
2633             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2634             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2635             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2636             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2638            break
2639         fi
2641     # We didn't find a working iconv, so keep going
2642     fi
2644     #  We only need to clean these up here for the next pass through the loop
2645     CPPFLAGS=$save_CPPFLAGS
2646     LDFLAGS=$save_LDFLAGS
2647     LIBS=$save_LIBS
2648     export LDFLAGS LIBS CPPFLAGS
2649 done
2650 unset libext
2653 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2654     AC_MSG_WARN([Sufficient support for iconv function was not found.
2655     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2656    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2657    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2658    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2662 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2663 AC_TRY_RUN([
2664 #include <sys/types.h>
2665 #include <fcntl.h>
2666 #ifndef F_GETLEASE
2667 #define F_GETLEASE      1025
2668 #endif
2669 main() {
2670        int fd = open("/dev/null", O_RDONLY);
2671        return fcntl(fd, F_GETLEASE, 0) == -1;
2674 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2675 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2676     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2679 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2680 AC_TRY_RUN([
2681 #include <sys/types.h>
2682 #include <fcntl.h>
2683 #include <signal.h>
2684 #ifndef F_NOTIFY
2685 #define F_NOTIFY 1026
2686 #endif
2687 main() {
2688         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2691 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2692 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2693     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2696 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2697 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2698 AC_CHECK_FUNC(inotify_init)
2699 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2701 samba_cv_HAVE_INOTIFY=yes,
2702 samba_cv_HAVE_INOTIFY=no,
2703 samba_cv_HAVE_INOTIFY=cross)
2705 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2706     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2709 #################################################
2710 # Check if FAM notifications are available. For FAM info, see
2711 #       http://oss.sgi.com/projects/fam/
2712 #       http://savannah.nongnu.org/projects/fam/
2713 AC_ARG_ENABLE(fam,
2714 [  --enable-fam            Turn on FAM support (default=auto)])
2716 if test x$enable_fam != xno; then
2717     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2718     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2719         # On IRIX, libfam requires libC, but other FAM implementations
2720         # might not need it.
2721         AC_CHECK_LIB(fam, FAMOpen2,
2722             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2723             [samba_cv_HAVE_LIBFAM=no])
2725         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2726             samba_fam_xtra=-lC
2727             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2728                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2729                 [samba_cv_HAVE_LIBFAM=no])
2730             unset samba_fam_xtra
2731         fi
2732     fi
2734     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2735         default_shared_modules="$default_shared_modules vfs_notify_fam"
2736         AC_TRY_COMPILE([#include <fam.h>],
2737                     [FAMCodes code = FAMChanged;],
2738                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2739                         [Whether fam.h contains a typedef for enum FAMCodes]),
2740                     [])
2741     fi
2743     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2744         AC_MSG_ERROR(FAM support requested but FAM library not available )
2745     fi
2748 AC_SUBST(SMB_FAM_LIBS)
2750 #################################################
2751 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2753 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2755 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2756 # Theoretically it should work with AIX JFS2 too but this needs testing
2757 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2758     default_shared_modules="$default_shared_modules vfs_tsmsm"
2761 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2762 AC_TRY_RUN([
2763 #include <sys/types.h>
2764 #include <fcntl.h>
2765 #include <signal.h>
2766 #include <sys/file.h>
2767 #ifndef LOCK_MAND
2768 #define LOCK_MAND       32
2769 #define LOCK_READ       64
2770 #endif
2771 main() {
2772         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2775 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2776 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2777     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2781 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2782 AC_TRY_COMPILE([#include <sys/types.h>
2783 #include <fcntl.h>],
2784 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2785 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2786 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2787     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2790 #################################################
2791 # Check for POSIX capability support
2793 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2794     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2795     [], [])
2797 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2799     ac_save_LIBS=$LIBS
2800     AC_LIBTESTFUNC(cap, cap_get_proc)
2802     AC_CACHE_CHECK([for POSIX capabilities],
2803             samba_cv_HAVE_POSIX_CAPABILITIES,
2804             [
2805                 AC_TRY_RUN([
2806 #include <sys/types.h>
2807 #include <sys/capability.h>
2808 main() {
2809  cap_t cap;
2810  cap_value_t vals[1];
2811  if (!(cap = cap_get_proc()))
2812    exit(1);
2813  vals[0] = CAP_CHOWN;
2814  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2815  cap_set_proc(cap);
2816  exit(0);
2818                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2819                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2820                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2821             ])
2823 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2824     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2825             [Whether POSIX capabilities are available])
2826 else
2827     LIBS=$ac_save_LIBS
2833 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2834 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2837 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2838 AC_TRY_COMPILE([#include <sys/types.h>
2839 #if defined(HAVE_RPC_RPC_H)
2840 #include <rpc/rpc.h>
2841 #endif],
2842 [int16 testvar;],
2843 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2844 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2845     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2848 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2849 AC_TRY_COMPILE([#include <sys/types.h>
2850 #if defined(HAVE_RPC_RPC_H)
2851 #include <rpc/rpc.h>
2852 #endif],
2853 [uint16 testvar;],
2854 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2855 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2856     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2859 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2860 AC_TRY_COMPILE([#include <sys/types.h>
2861 #if defined(HAVE_RPC_RPC_H)
2862 #include <rpc/rpc.h>
2863 #endif],
2864 [int32 testvar;],
2865 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2866 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2867     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2870 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2871 AC_TRY_COMPILE([#include <sys/types.h>
2872 #if defined(HAVE_RPC_RPC_H)
2873 #include <rpc/rpc.h>
2874 #endif],
2875 [uint32 testvar;],
2876 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2877 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2878     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2882 dnl Some systems (SCO) have a problem including
2883 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2884 dnl as a #define in <prot.h> and as part of an enum
2885 dnl in <rpc/rpc.h>.
2888 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2889 AC_TRY_COMPILE([#include <sys/types.h>
2890 #ifdef HAVE_SYS_SECURITY_H
2891 #include <sys/security.h>
2892 #include <prot.h>
2893 #endif  /* HAVE_SYS_SECURITY_H */
2894 #if defined(HAVE_RPC_RPC_H)
2895 #include <rpc/rpc.h>
2896 #endif],
2897 [int testvar;],
2898 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2899 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2900     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2903 AC_MSG_CHECKING([for test routines])
2904 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2905            AC_MSG_RESULT(yes),
2906            AC_MSG_ERROR([cant find test code. Aborting config]),
2907            AC_MSG_WARN([cannot run when cross-compiling]))
2909 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2910 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2911            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2912 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2913     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2916 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2917 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2918            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2919            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2920            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2921 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2922 then
2923     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2926 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2927 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2928            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2929 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2930     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2933 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2934 AC_TRY_RUN([#include <stdlib.h>
2935 #include <sys/types.h>
2936 #include <sys/stat.h>
2937 #include <unistd.h>
2938 main() {
2939   struct stat st;
2940   char tpl[20]="/tmp/test.XXXXXX";
2941   int fd = mkstemp(tpl);
2942   if (fd == -1) exit(1);
2943   unlink(tpl);
2944   if (fstat(fd, &st) != 0) exit(1);
2945   if ((st.st_mode & 0777) != 0600) exit(1);
2946   exit(0);
2948 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2949 samba_cv_HAVE_SECURE_MKSTEMP=no,
2950 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2951 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2952     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2955 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2956         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2957                 [samba_cv_HAVE_BROKEN_READDIR=no],
2958                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2959                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2961 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2962 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2963         AC_TRY_RUN([
2964 #include "${srcdir-.}/lib/repdir.c"
2965 #include "${srcdir-.}/tests/os2_delete.c"],
2966         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2969 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2970         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2973 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2974 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2975 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2976 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2977 AC_CHECK_FUNCS(getpagesize)
2979 dnl test for getifaddrs and freeifaddrs
2980 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2981 AC_TRY_COMPILE([
2982 #include <sys/socket.h>
2983 #include <sys/types.h>
2984 #include <netinet/in.h>
2985 #include <arpa/inet.h>
2986 #include <ifaddrs.h>
2987 #include <netdb.h>],
2989 struct ifaddrs *ifp = NULL;
2990 int ret = getifaddrs (&ifp);
2991 freeifaddrs(ifp);
2993 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
2994 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
2995     AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
2996     AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
2999 ##################
3000 # look for a method of finding the list of network interfaces
3001 iface=no;
3002 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
3003 SAVE_CPPFLAGS="$CPPFLAGS"
3004 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3005 AC_TRY_RUN([
3006 #define NO_CONFIG_H 1
3007 #define HAVE_IFACE_GETIFADDRS 1
3008 #define AUTOCONF_TEST 1
3009 #include "${srcdir-.}/lib/replace/replace.c"
3010 #include "${srcdir-.}/lib/interfaces.c"],
3011            samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3012 CPPFLAGS="$SAVE_CPPFLAGS"
3013 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3014     iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3017 if test $iface = no; then
3018 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3019 SAVE_CPPFLAGS="$CPPFLAGS"
3020 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3021 AC_TRY_RUN([
3022 #define NO_CONFIG_H 1
3023 #define HAVE_IFACE_IFCONF 1
3024 #define AUTOCONF_TEST 1
3025 #define SOCKET_WRAPPER_NOT_REPLACE
3026 #include "${srcdir-.}/lib/replace/replace.c"
3027 #include "${srcdir-.}/lib/interfaces.c"],
3028            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3029 CPPFLAGS="$SAVE_CPPFLAGS"
3030 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3031     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3035 if test $iface = no; then
3036 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3037 SAVE_CPPFLAGS="$CPPFLAGS"
3038 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3039 AC_TRY_RUN([
3040 #define NO_CONFIG_H 1
3041 #define HAVE_IFACE_IFREQ 1
3042 #define AUTOCONF_TEST 1
3043 #define SOCKET_WRAPPER_NOT_REPLACE
3044 #include "${srcdir-.}/lib/replace/replace.c"
3045 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3046 #include "${srcdir-.}/lib/replace/snprintf.c"
3047 #include "${srcdir-.}/lib/interfaces.c"],
3048            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3049 CPPFLAGS="$SAVE_CPPFLAGS"
3050 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3051     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3055 if test $iface = no; then
3056 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3057 SAVE_CPPFLAGS="$CPPFLAGS"
3058 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3059 AC_TRY_RUN([
3060 #define NO_CONFIG_H 1
3061 #define HAVE_IFACE_AIX 1
3062 #define AUTOCONF_TEST 1
3063 #undef _XOPEN_SOURCE_EXTENDED
3064 #define SOCKET_WRAPPER_NOT_REPLACE
3065 #include "${srcdir-.}/lib/replace/replace.c"
3066 #include "${srcdir-.}/lib/replace/snprintf.c"
3067 #include "${srcdir-.}/lib/interfaces.c"],
3068            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3069 CPPFLAGS="$SAVE_CPPFLAGS"
3070 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3071     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3075 dnl test for ipv6
3076 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3077 AC_TRY_COMPILE([
3078 #include <stdlib.h> /* for NULL */
3079 #include <sys/socket.h>
3080 #include <sys/types.h>
3081 #include <netdb.h>],
3083 struct sockaddr_storage sa_store;
3084 struct addrinfo *ai = NULL;
3085 struct in6_addr in6addr;
3086 int s = socket(AF_INET6, SOCK_STREAM, 0);
3087 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3088 if (ret != 0) {
3089         const char *es = gai_strerror(ret);
3091 freeaddrinfo(ai);
3093 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3094 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3095     AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3098 ################################################
3099 # look for a method of setting the effective uid
3100 seteuid=no;
3101 if test $seteuid = no; then
3102 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3103 AC_TRY_RUN([
3104 #define AUTOCONF_TEST 1
3105 #define USE_SETRESUID 1
3106 #include "confdefs.h"
3107 #include "${srcdir-.}/lib/util_sec.c"],
3108            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3109 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3110     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3115 if test $seteuid = no; then
3116 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3117 AC_TRY_RUN([
3118 #define AUTOCONF_TEST 1
3119 #define USE_SETREUID 1
3120 #include "confdefs.h"
3121 #include "${srcdir-.}/lib/util_sec.c"],
3122            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3123 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3124     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3128 if test $seteuid = no; then
3129 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3130 AC_TRY_RUN([
3131 #define AUTOCONF_TEST 1
3132 #define USE_SETEUID 1
3133 #include "confdefs.h"
3134 #include "${srcdir-.}/lib/util_sec.c"],
3135            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3136 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3137     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3141 if test $seteuid = no; then
3142 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3143 AC_TRY_RUN([
3144 #define AUTOCONF_TEST 1
3145 #define USE_SETUIDX 1
3146 #include "confdefs.h"
3147 #include "${srcdir-.}/lib/util_sec.c"],
3148            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3149 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3150     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3154 AC_CACHE_CHECK([for the Darwin initgroups system call],
3155         samba_cv_DARWIN_INITGROUPS,
3156         AC_TRY_LINK([
3157 #include <sys/syscall.h>
3158 #include <unistd.h>
3159         ],
3160         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3161         samba_cv_DARWIN_INITGROUPS=yes,
3162         samba_cv_DARWIN_INITGROUPS=no)
3165 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3166     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3167         [Whether to use the Darwin-specific initgroups system call])
3170 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3171 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3172            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3173 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3174     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3177 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3178 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3179            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3180 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3181     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3184 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3185 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3186            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3187 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3188     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3190 else
3193 dnl Don't check for 64 bit fcntl locking if we know that the
3194 dnl glibc2.1 broken check has succeeded.
3197   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3198   AC_TRY_RUN([
3199 #if defined(HAVE_UNISTD_H)
3200 #include <unistd.h>
3201 #endif
3202 #include <stdio.h>
3203 #include <stdlib.h>
3205 #ifdef HAVE_FCNTL_H
3206 #include <fcntl.h>
3207 #endif
3209 #ifdef HAVE_SYS_FCNTL_H
3210 #include <sys/fcntl.h>
3211 #endif
3212 main() { struct flock64 fl64;
3213 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3214 exit(0);
3215 #else
3216 exit(1);
3217 #endif
3219        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3221   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3222       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3223   fi
3226 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3227 AC_TRY_COMPILE([#include <sys/types.h>
3228 #include <sys/stat.h>
3229 #include <unistd.h>],
3230 [struct stat st;  st.st_blocks = 0;],
3231 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3232 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3233     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3236 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3237 AC_TRY_COMPILE([#include <sys/types.h>
3238 #include <sys/stat.h>
3239 #include <unistd.h>],
3240 [struct stat st;  st.st_blksize = 0;],
3241 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3242 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3243     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3246 AC_CACHE_CHECK([for st_flags in struct stat],
3247         samba_cv_HAVE_STAT_ST_FLAGS,
3248         [
3249             AC_TRY_COMPILE([#include <sys/types.h>
3250 #include <sys/stat.h>
3251 #include <unistd.h>],
3252             [struct stat st;  st.st_flags = 0;],
3253             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3254             samba_cv_HAVE_STAT_ST_FLAGS=no,
3255             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3256         ])
3258 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3259     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3260                 [Whether the stat struct has a st_flags member])
3263 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3264 AC_TRY_COMPILE([
3265 #include <sys/types.h>
3266 #include <sys/acl.h>
3267 #if defined(HAVE_RPCSVC_NIS_H)
3268 #include <rpcsvc/nis.h>
3269 #endif],
3270 [int i;],
3271 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3272 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3273         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3276 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3277 AC_TRY_RUN([
3278 #include <stdio.h>
3279 #include <limits.h>
3280 main() {
3281         char *newpath = realpath("/tmp", NULL);
3282         exit ((newpath != NULL) ? 0 : 1);
3285 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3286 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3287     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3290 #################################################
3291 # check for AFS clear-text auth support
3292 samba_cv_WITH_AFS=no
3293 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3294 AC_ARG_WITH(afs,
3295 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3296 [ case "$withval" in
3297   yes|auto)
3298     AC_MSG_RESULT($withval)
3299     samba_cv_WITH_AFS=$withval
3300     ;;
3301   *)
3302     AC_MSG_RESULT(no)
3303     ;;
3304   esac ],
3305   AC_MSG_RESULT(no)
3308 ####################################################
3309 # check for Linux-specific AFS fake-kaserver support
3310 samba_cv_WITH_FAKE_KASERVER=no
3311 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3312 AC_ARG_WITH(fake-kaserver,
3313 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3314 [ case "$withval" in
3315   yes|auto)
3316     AC_MSG_RESULT($withval)
3317     samba_cv_WITH_FAKE_KASERVER=$withval
3318     ;;
3319   *)
3320     AC_MSG_RESULT(no)
3321     ;;
3322   esac ],
3323   AC_MSG_RESULT(no)
3326 #################################################
3327 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3328 if test x"$samba_cv_WITH_AFS" != x"no" ||
3329    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3331     # see if this box has the afs-headers in /usr/include/afs
3332     AC_MSG_CHECKING(for /usr/include/afs)
3333     if test -d /usr/include/afs; then
3334           CFLAGS="$CFLAGS -I/usr/include/afs"
3335           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3336           AC_MSG_RESULT(yes)
3337     else
3338       AC_MSG_RESULT(no)
3339     fi
3341     # check for afs.h
3342     have_afs_headers=no
3343     AC_CHECK_HEADERS(afs.h afs/afs.h)
3344     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3345         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3346            test x"$samba_cv_WITH_AFS" = x"auto"; then
3347                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3348         else
3349                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3350         fi
3351     else
3352         have_afs_headers=yes
3353     fi
3356 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3357     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3360 #################################################
3361 # check whether to compile AFS/NT ACL mapping module
3362 samba_cv_WITH_VFS_AFSACL=no
3363 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3364 AC_ARG_WITH(vfs-afsacl,
3365 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3366 [ case "$withval" in
3367   yes|auto)
3368     AC_MSG_RESULT($withval)
3369     samba_cv_WITH_VFS_AFSACL=yes
3370     ;;
3371   *)
3372     AC_MSG_RESULT(no)
3373     ;;
3374   esac ],
3375   AC_MSG_RESULT(no)
3378 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3379    default_shared_modules="$default_shared_modules vfs_afsacl"
3381         
3382 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3383     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3386 #################################################
3387 # check for the DFS clear-text auth system
3388 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3389 AC_ARG_WITH(dfs,
3390 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3391 [ case "$withval" in
3392   yes)
3393     AC_MSG_RESULT(yes)
3394     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3395     ;;
3396   *)
3397     AC_MSG_RESULT(no)
3398     ;;
3399   esac ],
3400   AC_MSG_RESULT(no)
3403 ########################################################
3404 # Compile with LDAP support?
3406 with_ldap_support=auto
3407 AC_MSG_CHECKING([for LDAP support])
3409 AC_ARG_WITH(ldap,
3410 [  --with-ldap             LDAP support (default yes)],
3411 [ case "$withval" in
3412     yes|no)
3413         with_ldap_support=$withval
3414         ;;
3415   esac ])
3417 AC_MSG_RESULT($with_ldap_support)
3419 SMBLDAP=""
3420 AC_SUBST(SMBLDAP)
3421 SMBLDAPUTIL=""
3422 AC_SUBST(SMBLDAPUTIL)
3423 LDBLDAP=""
3424 AC_SUBST(LDBLDAP)
3426 if test x"$with_ldap_support" != x"no"; then
3428   ##################################################################
3429   # first test for ldap.h and lber.h
3430   # (ldap.h is required for this test)
3431   AC_CHECK_HEADERS(ldap.h lber.h)
3433   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3434         if test x"$with_ldap_support" = x"yes"; then
3435          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3436         else
3437          AC_MSG_WARN(ldap.h is needed for LDAP support)
3438         fi
3439         
3440         with_ldap_support=no
3441   fi
3443   ##################################################################
3444   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3445   # unsigned int in include/includes.h
3446   case $host_os in
3447         *hpux*)
3448          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3449          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3450         with_ldap_support=yes
3451         ;;
3452         *)
3453         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3454         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3455                 if test x"$with_ldap_support" = x"yes"; then
3456                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3457                 else
3458                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3459                 fi
3460                 with_ldap_support=no
3461         fi
3462         ;;
3463   esac
3466 if test x"$with_ldap_support" != x"no"; then
3467   ac_save_LIBS=$LIBS
3469   ##################################################################
3470   # we might need the lber lib on some systems. To avoid link errors
3471   # this test must be before the libldap test
3472   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3474   ########################################################
3475   # If ber_sockbuf_add_io() is available we can add
3476   # SASL wrapping hooks
3477   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3479   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3480                  AC_TRY_COMPILE([#include <ldap.h>],
3481                                 [int val = LDAP_OPT_SOCKBUF;],
3482                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3483                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3485   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3486           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3487         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3488   fi
3490   ########################################################
3491   # now see if we can find the ldap libs in standard paths
3492   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3494   ########################################################
3495   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3496   # Check found in pam_ldap 145.
3497   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3499   LIBS="$LIBS $LDAP_LIBS"
3500   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3501     AC_TRY_COMPILE([
3502         #include <lber.h>
3503         #include <ldap.h>],
3504         [ldap_set_rebind_proc(0, 0, 0);],
3505         [smb_ldap_cv_ldap_set_rebind_proc=3],
3506         [smb_ldap_cv_ldap_set_rebind_proc=2]
3507     )
3508   ])
3510   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3512   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3514   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3515     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3516     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3517     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3518     default_shared_modules="$default_shared_modules";
3519     SMBLDAP="lib/smbldap.o"
3520     SMBLDAPUTIL="lib/smbldap_util.o"
3521     with_ldap_support=yes
3522     AC_MSG_CHECKING(whether LDAP support is used)
3523     AC_MSG_RESULT(yes)
3524   else
3525     if test x"$with_ldap_support" = x"yes"; then
3526         AC_MSG_ERROR(libldap is needed for LDAP support)
3527     else
3528         AC_MSG_WARN(libldap is needed for LDAP support)
3529     fi
3531     LDAP_LIBS=""
3532     with_ldap_support=no
3533   fi
3534   LIBS=$ac_save_LIBS
3538 #################################################
3539 # active directory support
3541 with_ads_support=auto
3542 AC_MSG_CHECKING([for Active Directory and krb5 support])
3544 AC_ARG_WITH(ads,
3545 [  --with-ads              Active Directory support (default auto)],
3546 [ case "$withval" in
3547     yes|no)
3548         with_ads_support="$withval"
3549         ;;
3550   esac ])
3552 AC_MSG_RESULT($with_ads_support)
3554 FOUND_KRB5=no
3555 KRB5_LIBS=""
3557 if test x"$with_ldap_support" != x"yes"; then
3559     if test x"$with_ads_support" = x"yes"; then
3560         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3561     elif test x"$with_ads_support" = x"auto"; then
3562         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3563         with_ads_support=no
3564     fi
3566 else
3568     # Check to see whether there is enough LDAP functionality to be able
3569     # to build AD support.
3571 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3572 case "$host_os" in
3573         *hpux*)
3574     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3576     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3577         if test x"$with_ads_support" = x"yes"; then
3578             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3579         elif test x"$with_ads_support" = x"auto"; then
3580             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3581             with_ads_support=no
3582         fi
3583     fi
3584     ;;
3585         *)
3586     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3588     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3589         if test x"$with_ads_support" = x"yes"; then
3590             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3591         elif test x"$with_ads_support" = x"auto"; then
3592             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3593             with_ads_support=no
3594         fi
3595     fi
3596     ;;
3597 esac
3600     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3602     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3603         if test x"$with_ads_support" = x"yes"; then
3604             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3605         elif test x"$with_ads_support" = x"auto"; then
3606             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3607             with_ads_support=no
3608         fi
3609     fi
3613 if test x"$with_ads_support" != x"no"; then
3615   # Do no harm to the values of CFLAGS and LIBS while testing for
3616   # Kerberos support.
3618   if test x$FOUND_KRB5 = x"no"; then
3619     #################################################
3620     # check for location of Kerberos 5 install
3621     AC_MSG_CHECKING(for kerberos 5 install path)
3622     AC_ARG_WITH(krb5,
3623     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3624     [ case "$withval" in
3625       no)
3626         AC_MSG_RESULT(no krb5-path given)
3627         ;;
3628       yes)
3629         AC_MSG_RESULT(/usr)
3630         FOUND_KRB5=yes
3631         ;;
3632       *)
3633         AC_MSG_RESULT($withval)
3634         KRB5_CFLAGS="-I$withval/include"
3635         KRB5_CPPFLAGS="-I$withval/include"
3636         KRB5_LDFLAGS="-L$withval/lib"
3637         FOUND_KRB5=yes
3638         if test -x "$withval/bin/krb5-config"; then
3639                 KRB5CONFIG=$withval/bin/krb5-config
3640         fi
3641         ;;
3642       esac ],
3643       AC_MSG_RESULT(no krb5-path given)
3644     )
3645   fi
3647   #################################################
3648   # check for krb5-config from recent MIT and Heimdal kerberos 5
3649   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3650   AC_MSG_CHECKING(for working krb5-config)
3651   if test -x "$KRB5CONFIG"; then
3652     ac_save_CFLAGS=$CFLAGS
3653     CFLAGS="";export CFLAGS
3654     ac_save_LDFLAGS=$LDFLAGS
3655     LDFLAGS="";export LDFLAGS
3656     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3657     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3658     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3659     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3660     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3661     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3662     FOUND_KRB5=yes
3663     AC_MSG_RESULT(yes)
3664   else
3665     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3666   fi
3668   if test x$FOUND_KRB5 = x"no"; then
3669     #################################################
3670     # see if this box has the SuSE location for the heimdal krb implementation
3671     AC_MSG_CHECKING(for /usr/include/heimdal)
3672     if test -d /usr/include/heimdal; then
3673       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3674           KRB5_CFLAGS="-I/usr/include/heimdal"
3675           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3676           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3677           FOUND_KRB5=yes
3678           AC_MSG_RESULT(yes)
3679       else
3680           KRB5_CFLAGS="-I/usr/include/heimdal"
3681           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3682           FOUND_KRB5=yes
3683           AC_MSG_RESULT(yes)
3684       fi
3685     else
3686       AC_MSG_RESULT(no)
3687     fi
3688   fi
3690   if test x$FOUND_KRB5 = x"no"; then
3691     #################################################
3692     # see if this box has the RedHat location for kerberos
3693     AC_MSG_CHECKING(for /usr/kerberos)
3694     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3695       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3696       KRB5_CFLAGS="-I/usr/kerberos/include"
3697       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3698       FOUND_KRB5=yes
3699       AC_MSG_RESULT(yes)
3700     else
3701       AC_MSG_RESULT(no)
3702     fi
3703   fi
3705   if test x$FOUND_KRB5 = x"no"; then
3706     #################################################
3707     # see if this box has the OpenBSD location for heimdal krb5
3708     AC_MSG_CHECKING(for /usr/include/kerberosV)
3709     if test -d /usr/include/kerberosV; then
3710       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3711       KRB5_LIBS="-lcrypto"
3712       FOUND_KRB5=yes
3713       AC_MSG_RESULT(yes)
3714     else
3715       AC_MSG_RESULT(no)
3716     fi
3717   fi
3719   ac_save_CFLAGS=$CFLAGS
3720   ac_save_CPPFLAGS=$CPPFLAGS
3721   ac_save_LDFLAGS=$LDFLAGS
3723   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3724   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3725   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3727   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3729   # now check for krb5.h. Some systems have the libraries without the headers!
3730   # note that this check is done here to allow for different kerberos
3731   # include paths
3732   AC_CHECK_HEADERS(krb5.h)
3734   if test x"$ac_cv_header_krb5_h" = x"no"; then
3736     # Give a warning if AD support was not explicitly requested,
3737     # i.e with_ads_support = auto, otherwise die with an error.
3739     if test x"$with_ads_support" = x"yes"; then
3740       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3741     else
3742       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3743     fi
3745     # Turn off AD support and restore CFLAGS and LIBS variables
3747     with_ads_support="no"
3749     CFLAGS=$ac_save_CFLAGS
3750     CPPFLAGS=$ac_save_CPPFLAGS
3751     LDFLAGS=$ac_save_LDFLAGS
3752   fi
3753   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3754   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3755         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3756         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3757   fi
3760 # Now we have determined whether we really want ADS support
3761 use_ads=no
3762 if test x"$with_ads_support" != x"no"; then
3763   use_ads=yes
3764   have_gssapi=no
3765   ac_save_LIBS=$LIBS
3767   # now check for gssapi headers.  This is also done here to allow for
3768   # different kerberos include paths
3769   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3771   ##################################################################
3772   # we might need the k5crypto and com_err libraries on some systems
3773   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3774   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3776   # Heimdal checks.
3777   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3778   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3779   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3781   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3782   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3784   ########################################################
3785   # now see if we can find the krb5 libs in standard paths
3786   # or as specified above
3787   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3788   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3790   ########################################################
3791   # now see if we can find the gssapi libs in standard paths
3792   if test x"$have_gssapi" != x"yes"; then
3793      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3794   fi
3796   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3797   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3798   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3799   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3800   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3801   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3802   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3803   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3804   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3805   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3806   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3807   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3808   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3809   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3810   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3811   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3812   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3813   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3814   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3815   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3816   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3817   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3818   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3819   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3820   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3821   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3822   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3823   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3824   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3825   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3826   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3827   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3828   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3829   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3830   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3831   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3832   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3833   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3834   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3835   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3836   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3838   LIBS="$KRB5_LIBS $LIBS"
3840   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3841         smb_krb5_ticket_has_keyinfo,
3842         [
3843             AC_TRY_COMPILE(
3844             [
3845                 #include <krb5.h>
3846             ],
3847             [
3848                 krb5_ticket ticket;
3849                 krb5_kvno kvno;
3850                 krb5_enctype enctype;
3852                 enctype = ticket.enc_part.enctype;
3853                 kvno = ticket.enc_part.kvno;
3854             ],
3855             [ smb_krb5_ticket_has_keyinfo=yes ],
3856             [ smb_krb5_ticket_has_keyinfo=no ])
3857         ])
3859   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3860         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3861             [Whether the krb5_ticket structure contains the kvno and enctype])
3862   fi
3864   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3865           smb_krb5_creds_opt_free_context,
3866           [
3867                 AC_TRY_COMPILE([
3868                     #include <krb5.h>],
3869                     [
3870                         krb5_context ctx;
3871                         krb5_get_init_creds_opt *opt = NULL;
3872                         krb5_get_init_creds_opt_free(ctx, opt);
3873                     ],
3874                     [smb_krb5_creds_opt_free_context=yes],
3875                     [smb_krb5_creds_opt_free_context=no]
3876                 )
3877           ])
3879   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3880         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3881             [Whether krb5_get_init_creds_opt_free takes a context argument])
3882   fi
3884   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3885     AC_TRY_COMPILE([
3886         #include <krb5.h>],
3887         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3888         [smb_krb5_verify_checksum=7],
3889         [smb_krb5_verify_checksum=6],
3890     )
3891   ])
3892   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3894   AC_CACHE_CHECK([for checksum in krb5_checksum],
3895                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3896     AC_TRY_COMPILE([#include <krb5.h>],
3897       [krb5_checksum cksum; cksum.checksum.length = 0;],
3898       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3899       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3901   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3902     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3903                [Whether the krb5_checksum struct has a checksum property])
3904   fi
3906   AC_CACHE_CHECK([for etype in EncryptedData],
3907                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3908     AC_TRY_COMPILE([#include <krb5.h>],
3909       [EncryptedData edata; edata.etype = 0;],
3910       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3911       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3913   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3914     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3915                [Whether the EncryptedData struct has a etype property])
3916   fi
3918   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3919                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3920     AC_TRY_COMPILE([#include <krb5.h>],
3921       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3922       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3923       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3925   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3926     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3927                [Whether the krb5_ap_req struct has a ticket pointer])
3928   fi
3930   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3931                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3932     AC_TRY_COMPILE([#include <krb5.h>],
3933       [krb5_error err; err.e_data = NULL;],
3934       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3935       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3937   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3938     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3939                [Whether the krb5_error struct has a e_data pointer])
3940   fi
3942   AC_CACHE_CHECK([for krb5_crypto type],
3943                 samba_cv_HAVE_KRB5_CRYPTO,[
3944     AC_TRY_COMPILE([#include <krb5.h>],
3945       [krb5_crypto crypto;],
3946       samba_cv_HAVE_KRB5_CRYPTO=yes,
3947       samba_cv_HAVE_KRB5_CRYPTO=no)])
3949   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3950     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3951                [Whether the type krb5_crypto exists])
3952   fi
3954   AC_CACHE_CHECK([for krb5_encrypt_block type],
3955                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3956     AC_TRY_COMPILE([#include <krb5.h>],
3957       [krb5_encrypt_block block;],
3958       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3959       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3961   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3962     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3963                [Whether the type krb5_encrypt_block exists])
3964   fi
3966   AC_CACHE_CHECK([for addrtype in krb5_address],
3967                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3968     AC_TRY_COMPILE([#include <krb5.h>],
3969       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3970       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3971       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3973   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3974     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3975                [Whether the krb5_address struct has a addrtype property])
3976   fi
3978   AC_CACHE_CHECK([for addr_type in krb5_address],
3979                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3980     AC_TRY_COMPILE([#include <krb5.h>],
3981       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3982       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3983       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3985   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3986     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3987               [Whether the krb5_address struct has a addr_type property])
3988   fi
3990   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3991                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3992                  [AC_TRY_COMPILE([#include <krb5.h>],
3993     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3994     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3996   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3997     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3998               [Whether the krb5_ticket struct has a enc_part2 property])
3999   fi
4001   AC_CACHE_CHECK([for keyblock in krb5_creds],
4002                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4003     AC_TRY_COMPILE([#include <krb5.h>],
4004       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4005       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4006       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4008   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4009     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4010               [Whether the krb5_creds struct has a keyblock property])
4011   fi
4013   AC_CACHE_CHECK([for session in krb5_creds],
4014                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4015     AC_TRY_COMPILE([#include <krb5.h>],
4016       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4017       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4018       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4020   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4021     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4022               [Whether the krb5_creds struct has a session property])
4023   fi
4025   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4026                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4027     AC_TRY_COMPILE([#include <krb5.h>],
4028       [krb5_keyblock key; key.keyvalue.data = NULL;],
4029       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4030       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4032   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4033     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4034               [Whether the krb5_keyblock struct has a keyvalue property])
4035   fi
4037   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4038                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4039     AC_TRY_COMPILE([#include <krb5.h>],
4040       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4041       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4042       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4043   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4044                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4045     AC_TRY_COMPILE([#include <krb5.h>],
4046       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4047       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4048       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4049 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4050 # w.r.t. arcfour and windows, so we must not enable it here
4051   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4052           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4053     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4054               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4055   fi
4057   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4058                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4059     AC_TRY_COMPILE([#include <krb5.h>],
4060       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4061       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4062       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4064   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4065     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4066               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4067   fi
4069   AC_CACHE_CHECK([for KV5M_KEYTAB],
4070                  samba_cv_HAVE_KV5M_KEYTAB,[
4071     AC_TRY_COMPILE([#include <krb5.h>],
4072       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4073       samba_cv_HAVE_KV5M_KEYTAB=yes,
4074       samba_cv_HAVE_KV5M_KEYTAB=no)])
4076   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4077       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4078              [Whether the KV5M_KEYTAB option is available])
4079   fi
4081   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4082                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4083     AC_TRY_COMPILE([#include <krb5.h>],
4084       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4085       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4086       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4088   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4089     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4090               [Whether KRB5_KU_OTHER_CKSUM is available])
4091   fi
4093   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4094                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4095     AC_TRY_COMPILE([#include <krb5.h>],
4096       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4097       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4098       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4100   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4101     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4102               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4103   fi
4105   AC_CACHE_CHECK([for the krb5_princ_component macro],
4106                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4107     AC_TRY_LINK([#include <krb5.h>],
4108       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4109       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4110       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4112   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4113     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4114                [Whether krb5_princ_component is available])
4115   fi
4117   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4118                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4119     AC_TRY_COMPILE([#include <krb5.h>],
4120       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4121       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4122       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4124   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4125     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4126               [Whether krb5_keytab_entry has key member])
4127   fi
4129   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4130                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4131     AC_TRY_COMPILE([#include <krb5.h>],
4132       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4133       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4134       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4136   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4137     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4138               [Whether krb5_keytab_entry has keyblock member])
4139   fi
4141   AC_CACHE_CHECK([for magic in krb5_address],
4142                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4143     AC_TRY_COMPILE([#include <krb5.h>],
4144       [krb5_address addr; addr.magic = 0;],
4145       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4146       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4148   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4149     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4150               [Whether the krb5_address struct has a magic property])
4151   fi
4153   AC_CACHE_CHECK([for WRFILE: keytab support],
4154                 samba_cv_HAVE_WRFILE_KEYTAB,[
4155     AC_TRY_RUN([
4156 #include<krb5.h>
4157   main()
4158   {
4159     krb5_context context;
4160     krb5_keytab keytab;
4162     krb5_init_context(&context);
4163     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4164   }],
4165   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4166   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4168   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4169       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4170                [Whether the WRFILE:-keytab is supported])
4171   fi
4173   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4174                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4175     AC_TRY_COMPILE([#include <krb5.h>],
4176     [
4177     krb5_context context;
4178     krb5_principal principal;
4179     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4180     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4181     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4183   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4184     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4185               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4186   fi
4188   AC_CACHE_CHECK([for krb5_addresses type],
4189                 samba_cv_HAVE_KRB5_ADDRESSES,[
4190     AC_TRY_COMPILE([#include <krb5.h>],
4191       [krb5_addresses addr;],
4192       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4193       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4195   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4196     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4197                [Whether the type krb5_addresses type exists])
4198   fi
4200   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4201                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4202     AC_TRY_COMPILE([#include <krb5.h>],
4203     [
4204     krb5_mk_error(0,0,0);],
4205     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4206     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4208   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4209     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4210               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4211   fi
4213   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4214     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4215         smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4216         AC_TRY_RUN_STRICT([
4217                 #include <krb5.h>
4218                 int main(void) {
4219                         krb5_context context = NULL;
4220                         char *str = NULL;
4221                         krb5_enctype_to_string(context, 1, &str);
4222                         if (str) free (str); 
4223                         return 0;
4224                 }
4225                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4226                 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4227                 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4229     if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4230       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4231                 [whether krb5_enctype_to_string takes krb5_context argument])
4232     fi
4234     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4235         smb_krb5_enctype_to_string_takes_size_t_arg,[
4236         AC_TRY_RUN_STRICT([
4237                 #include <krb5.h>
4238                 int main(void) {
4239                         char buf[256];
4240                         krb5_enctype_to_string(1, buf, 256);
4241                         return 0;
4242                 }
4243                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4244                 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4245                 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4247     if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4248       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4249                 [whether krb5_enctype_to_string takes size_t argument])
4250     fi
4251   fi
4253   AC_CACHE_CHECK([for krb5_principal_get_realm],
4254                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4255     AC_TRY_LINK([#include <krb5.h>],
4256       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4257       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4258       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4260   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4261     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4262                [Whether the function krb5_principal_get_realm is defined])
4263   fi
4265   AC_CACHE_CHECK([for krb5_princ_realm],
4266                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4267     AC_TRY_LINK([#include <krb5.h>],
4268       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4269       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4270       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4272   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4273     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4274                [Whether the macro krb5_princ_realm is defined])
4275   fi
4277   #
4278   #
4279   # Now the decisions whether we can support krb5
4280   #
4281   # NOTE: all tests should be done before this block!
4282   #
4283   #
4284   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4285     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4286     use_ads=no
4287   fi
4289   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4290           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4291   then
4292     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4293     use_ads=no
4294   fi
4296   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4297           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4298   then
4299     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4300     use_ads=no
4301   fi
4303   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4304           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4305   then
4306     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4307     use_ads=no
4308   fi
4310   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4311           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4312   then
4313     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4314     use_ads=no
4315   fi
4317   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4319       # We only need the following functions if we can't get the enctype
4320       # and kvno out of the ticket directly (ie. on Heimdal).
4322       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4323       then
4324         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4325         use_ads=no
4326       fi
4328       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4329       then
4330         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4331         use_ads=no
4332       fi
4334   fi
4336   if test x"$use_ads" = x"yes"; then
4337     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4338     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4339     if test x"$have_gssapi" = x"yes"; then
4340       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4341     fi
4342   else
4343     if test x"$with_ads_support" = x"yes"; then
4344         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4345     else
4346         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4347     fi
4348     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4349     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4350     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4351     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4352     KRB5_LIBS=""
4353     with_ads_support=no
4354   fi
4355   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4356   AC_MSG_RESULT([$use_ads])
4358 LIBS="$ac_save_LIBS"
4361 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4362 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4365 ########################################################
4366 # Compile with DNS Updates support?
4368 with_dnsupdate_support=no
4369 AC_MSG_CHECKING([whether to enable DNS Updates support])
4371 AC_ARG_WITH(dnsupdate,
4372 [  --with-dnsupdate        Enable DNS Updates support (default no)],
4373 [ case "$withval" in
4374     yes|no)
4375         with_dnsupdate_support=$withval
4376         ;;
4377   esac ])
4379 AC_MSG_RESULT($with_dnsupdate_support)
4381 if test x"$with_dnsupdate_support" != x"no"; then
4383   ################################################################
4384   # first test for Active Directory support being enabled
4385   #if test x"$with_ads_support" = x"no"; then
4386   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4387   #             with_dnsupdate_support=no
4388   #fi           
4389   ##################################################################
4390   # then test for uuid.h (necessary to generate unique DNS keynames
4391   # (uuid.h is required for this test)
4392   AC_CHECK_HEADERS(uuid/uuid.h)
4394   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4395         if test x"$with_dnsupdate_support" = x"yes"; then
4396          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4397         else
4398          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4399         fi
4400         with_dnsupdate_support=no
4401   fi
4404 if test x"$with_dnsupdate_support" != x"no"; then
4406   ########################################################
4407   # Now see if we can find the uuid libs in standard paths
4408   # On some systems, the uuid API is in libc, so we have to
4409   # be careful not to insert a spurious -luuid.
4411   UUID_LIBS=""
4412   AC_LIBTESTFUNC(uuid, uuid_generate,
4413           [
4414             case " $LIBS " in
4415                 *\ -luuid\ *)
4416                 UUID_LIBS="-luuid"
4417                 SMB_REMOVE_LIB(uuid)
4418                 ;;
4419             esac
4421             with_dnsupdate_support=yes
4422             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4423         ],
4424         [
4425             if test x"$with_dnsupdate_support" = x"yes"; then
4426                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4427             else
4428                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4429             fi
4430             with_dnsupdate_support=no
4431         ])
4434 #################################################
4435 # check for automount support
4436 AC_MSG_CHECKING(whether to use automount)
4437 AC_ARG_WITH(automount,
4438 [  --with-automount        Include automount support (default=no)],
4439 [ case "$withval" in
4440   yes)
4441     AC_MSG_RESULT(yes)
4442     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4443     ;;
4444   *)
4445     AC_MSG_RESULT(no)
4446     ;;
4447   esac ],
4448   AC_MSG_RESULT(no)
4451 #################################################
4452 # check for smbmount support
4453 AC_MSG_CHECKING(whether to use smbmount)
4454 AC_ARG_WITH(smbmount,
4455 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
4456 [ case "$withval" in
4457   yes)
4458         case "$host_os" in
4459         *linux*)
4460                 AC_MSG_RESULT(yes)
4461                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4462                 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4463                 ;;
4464         *)
4465                 AC_MSG_ERROR(not on a linux system!)
4466                 ;;
4467         esac
4468     ;;
4469   *)
4470     AC_MSG_RESULT(no)
4471     ;;
4472   esac ],
4473   AC_MSG_RESULT(no)
4476 #################################################
4477 # check for mount- and umount.cifs support
4478 CIFSMOUNT_PROGS=""
4479 INSTALL_CIFSMOUNT=""
4480 UNINSTALL_CIFSMOUNT=""
4481 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4482 AC_ARG_WITH(cifsmount,
4483 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4484 [ case "$withval" in
4485   no)
4486         AC_MSG_RESULT(no)
4487         ;;
4488   *)
4489         case "$host_os" in
4490         *linux*)
4491                 AC_MSG_RESULT(yes)
4492                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4493                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4494                 INSTALL_CIFSMOUNT="installcifsmount"
4495                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4496                 ;;
4497         *)
4498                 AC_MSG_ERROR(not on a linux system!)
4499                 ;;
4500         esac
4501     ;;
4502   esac ],
4503 [ case "$host_os" in
4504   *linux*)
4505         AC_MSG_RESULT(yes)
4506         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4507         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4508         INSTALL_CIFSMOUNT="installcifsmount"
4509         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4510         ;;
4511   *)
4512         AC_MSG_RESULT(no)
4513         ;;
4514   esac ]
4517 #################################################
4518 # check for cifs.spnego support
4519 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4520 CIFSSPNEGO_PROGS=""
4521 INSTALL_CIFSSPNEGO=""
4522 UNINSTALL_CIFSSPNEGO=""
4523 AC_MSG_CHECKING(whether to build cifs.spnego)
4524 AC_ARG_WITH(cifsspnego,
4525 [  --with-cifsspnego       Include cifs.spnego (Linux only) support (default=no)],
4526 [ case "$withval" in
4527   no)
4528         AC_MSG_RESULT(no)
4529         ;;
4530   *)
4531         case "$host_os" in
4532         *linux*)
4533                 if test x"$use_ads" != x"yes"; then
4534                         AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4535                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4536                         AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4537                 else
4538                         AC_MSG_RESULT(yes)
4539                         AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4540                         CIFSSPNEGO_PROGS="bin/cifs.spnego"
4541                         INSTALL_CIFSSPNEGO="installcifsspnego"
4542                         UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4543                 fi
4544                 ;;
4545         *)
4546                 AC_MSG_ERROR(not on a linux system!)
4547                 ;;
4548         esac
4549     ;;
4550   esac ],
4552   AC_MSG_RESULT(no)
4553   ]
4557 #################################################
4558 # Check for a PAM clear-text auth, accounts, password
4559 # and session support. Most PAM implementations keep their
4560 # headers in /usr/include/security. Darwin keeps its in
4561 # /usr/include/pam.
4563 with_pam_for_crypt=no
4564 try_pam=no
4565 AC_MSG_CHECKING(whether to try PAM support)
4566 AC_ARG_WITH(pam,
4567 [  --with-pam              Include PAM support (default=no)],
4568 [ case "$withval" in
4569   yes|no)
4570     try_pam=$withval
4571     ;;
4572   esac
4574 AC_MSG_RESULT([$try_pam])
4576 use_pam=no
4577 create_pam_modules=no
4578 if test x"${try_pam}" != x"no";then
4579         use_pam=yes
4580         create_pam_modules=yes
4582         # Most systems have PAM headers in /usr/include/security, but Darwin
4583         # has them in /usr/include/pam.
4584         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4585         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4586                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4587                 if test x"${try_pam}" = x"yes";then
4588                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4589                 fi
4590                 use_pam=no
4591                 create_pam_modules=no
4592         fi
4594         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4595         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4596                 if test x"${try_pam}" = x"yes";then
4597                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4598                 fi
4599                 use_pam=no
4600                 create_pam_modules=no
4601         fi
4603         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4604                 #if HAVE_SECURITY_PAM_APPL_H
4605                 #include <security/pam_appl.h>
4606                 #endif
4607                 #if HAVE_PAM_PAM_APPL_H
4608                 #include <pam/pam_appl.h>
4609                 #endif
4610         ]])
4611         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4612                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4613                 if test x"${try_pam}" = x"yes";then
4614                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4615        fi
4616                 create_pam_modules=no
4617     fi
4619         if test x"$use_pam" = x"yes"; then
4620     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4621                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4622                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4623     with_pam_for_crypt=yes
4625                 if test x"$create_pam_modules" = x"yes"; then
4626                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4627                         # this checks are optional,
4628                         # we don't care about the results here
4629                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4630                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4631                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4632                 else
4633                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4634                 fi
4635         fi
4636         AC_MSG_CHECKING(whether to use PAM support)
4637         AC_MSG_RESULT([$use_pam])
4639         AC_MSG_CHECKING(whether to have PAM MODULES support)
4640         AC_MSG_RESULT([$create_pam_modules])
4641 fi # try_pam != no
4643 #################################################
4644 # check for pam_smbpass support
4645 PAM_MODULES=""
4646 INSTALL_PAM_MODULES=""
4647 UNINSTALL_PAM_MODULES=""
4648 AC_MSG_CHECKING(whether to use pam_smbpass)
4649 AC_ARG_WITH(pam_smbpass,
4650 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
4651 [ case "$withval" in
4652   yes)
4653     AC_MSG_RESULT(yes)
4655        # Conditions under which pam_smbpass should not be built.
4657        if test x"$BLDSHARED" != x"true"; then
4658           AC_MSG_ERROR([No support for shared modules])
4659        elif test x"$create_pam_modules" != x"yes"; then
4660           AC_MSG_ERROR([No support for PAM MODULES])
4661        else
4662           PAM_MODULES="pam_smbpass"
4663           INSTALL_PAM_MODULES="installpammodules"
4664           UNINSTALL_PAM_MODULES="uninstallpammodules"
4665        fi
4666     ;;
4667   *)
4668     AC_MSG_RESULT(no)
4669     ;;
4670   esac ],
4671   AC_MSG_RESULT(no)
4675 ###############################################
4676 # test for where we get crypt() from
4677 AC_SEARCH_LIBS(crypt, [crypt],
4678   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4679   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4682 ## moved after the check for -lcrypt in order to
4683 ## ensure that the necessary libraries are included
4684 ## check checking for truncated salt.  Wrapped by the
4685 ## $with_pam_for_crypt variable as above   --jerry
4687 if test $with_pam_for_crypt = no; then
4688 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4689 crypt_LIBS="$LIBS"
4690 LIBS="$AUTH_LIBS $LIBS"
4691 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4692         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4693 LIBS="$crypt_LIBS"])
4694 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4695         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4699 #################################################
4700 # check for a NISPLUS_HOME support
4701 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4702 AC_ARG_WITH(nisplus-home,
4703 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4704 [ case "$withval" in
4705   yes)
4706     AC_MSG_RESULT(yes)
4707     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4708     ;;
4709   *)
4710     AC_MSG_RESULT(no)
4711     ;;
4712   esac ],
4713   AC_MSG_RESULT(no)
4716 #################################################
4717 # check for syslog logging
4718 AC_MSG_CHECKING(whether to use syslog logging)
4719 AC_ARG_WITH(syslog,
4720 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4721 [ case "$withval" in
4722   yes)
4723     AC_MSG_RESULT(yes)
4724     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4725     ;;
4726   *)
4727     AC_MSG_RESULT(no)
4728     ;;
4729   esac ],
4730   AC_MSG_RESULT(no)
4733 #################################################
4734 # check for experimental disk-quotas support
4736 samba_cv_WITH_QUOTAS=auto
4737 samba_cv_TRY_QUOTAS=no
4738 samba_cv_RUN_QUOTA_TESTS=auto
4739 samba_cv_WITH_SYS_QUOTAS=auto
4740 samba_cv_TRY_SYS_QUOTAS=auto
4741 samba_cv_SYSQUOTA_FOUND=no
4743 AC_MSG_CHECKING(whether to try disk-quotas support)
4744 AC_ARG_WITH(quotas,
4745 [  --with-quotas           Include disk-quota support (default=no)],
4746 [ case "$withval" in
4747   yes)
4748     AC_MSG_RESULT(yes)
4749     samba_cv_WITH_QUOTAS=yes
4750     samba_cv_TRY_QUOTAS=yes
4751     samba_cv_RUN_QUOTA_TESTS=yes
4752     #set sys quotas to auto in this case
4753     samba_cv_TRY_SYS_QUOTAS=auto
4754     ;;
4755   auto)
4756     AC_MSG_RESULT(auto)
4757     samba_cv_WITH_QUOTAS=auto
4758     samba_cv_TRY_QUOTAS=auto
4759     samba_cv_RUN_QUOTA_TESTS=auto
4760     #set sys quotas to auto in this case
4761     samba_cv_TRY_SYS_QUOTAS=auto
4762     ;;
4763   no)
4764     AC_MSG_RESULT(no)
4765     samba_cv_WITH_QUOTAS=no
4766     samba_cv_TRY_QUOTAS=no
4767     samba_cv_RUN_QUOTA_TESTS=no
4768     ;;
4769   *)
4770     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4771     ;;
4772   esac ],
4773   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4776 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4777 AC_ARG_WITH(sys-quotas,
4778 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4779 [ case "$withval" in
4780   yes)
4781     AC_MSG_RESULT(yes)
4782     samba_cv_WITH_SYS_QUOTAS=yes
4783     samba_cv_TRY_SYS_QUOTAS=yes
4784     samba_cv_RUN_QUOTA_TESTS=yes
4785     ;;
4786   auto)
4787     AC_MSG_RESULT(auto)
4788     samba_cv_WITH_SYS_QUOTAS=auto
4789     samba_cv_TRY_SYS_QUOTAS=auto
4790     samba_cv_RUN_QUOTA_TESTS=auto
4791     ;;
4792   no)
4793     AC_MSG_RESULT(no)
4794     samba_cv_WITH_SYS_QUOTAS=no
4795     samba_cv_TRY_SYS_QUOTAS=no
4796     ;;
4797   *)
4798     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4799     ;;
4800   esac ],
4801   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4804 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4805 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4806   case "$host_os" in
4807         *linux*)
4808             AC_MSG_RESULT(yes)
4809             samba_cv_TRY_SYS_QUOTAS=yes
4810             samba_cv_RUN_QUOTA_TESTS=yes
4811             ;;
4812         *)
4813             AC_MSG_RESULT(no)
4814             samba_cv_TRY_SYS_QUOTAS=no
4815             ;;
4816   esac
4819 #############################################
4820 # only check for quota stuff if --with-quotas
4821 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4823 case "$host_os" in
4824         # on linux we didn't need to test we have builtin support
4825         *linux*)
4826             samba_cv_SYSQUOTA_FOUND=yes
4827             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4828             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4829             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4830             AC_MSG_RESULT(yes)
4832             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4833             samba_cv_found_xfs_header=yes
4834             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4835             AC_MSG_RESULT(yes)
4836             ;;
4837         *solaris*)
4838             # need to set this define when using static linking (BUG 1473)
4839             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4840             ;;
4841         *)
4842             ;;
4843 esac
4845 # some broken header files need this
4846 AC_CHECK_HEADER(asm/types.h,[
4847             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4848             AC_ADD_INCLUDE(<asm/types.h>)
4849             ])
4851 # For quotas on Veritas VxFS filesystems
4852 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4854 # For quotas on Linux XFS filesystems
4855 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4857 # For sys/quota.h and linux/quota.h
4858 AC_CHECK_HEADERS(sys/quota.h)
4860 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4861 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4862 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4863 AC_TRY_COMPILE([
4864 #include "confdefs.h"
4865 #ifdef HAVE_SYS_TYPES_H
4866 #include <sys/types.h>
4867 #endif
4868 #ifdef HAVE_ASM_TYPES_H
4869 #include <asm/types.h>
4870 #endif
4871 #include <sys/quota.h>
4872 ],[int i = Q_XGETQUOTA;],
4873 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4874 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4875         samba_cv_found_xfs_header=yes
4879 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4880 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4881 AC_TRY_COMPILE([
4882 #include "confdefs.h"
4883 #ifdef HAVE_SYS_QUOTA_H
4884 #include <sys/quota.h>
4885 #endif
4887 struct dqblk D;
4888 D.dqb_fsoftlimit = 0;],
4889 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4890 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4891         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4894 ##################
4895 # look for a working quota system
4897 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4898 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4899 AC_TRY_RUN_STRICT([
4900 #define HAVE_QUOTACTL_4A 1
4901 #define AUTOCONF_TEST 1
4902 #include "confdefs.h"
4903 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4904            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4905 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4906     samba_cv_SYSQUOTA_FOUND=yes;
4907     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4908     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4912 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4913 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4914 AC_TRY_RUN_STRICT([
4915 #define HAVE_QUOTACTL_4B 1
4916 #define AUTOCONF_TEST 1
4917 #include "confdefs.h"
4918 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4919            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4920 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4921     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4922     samba_cv_SYSQUOTA_FOUND=yes;
4923     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4924     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4928 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4929 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4930 AC_TRY_RUN_STRICT([
4931 #define HAVE_QUOTACTL_3 1
4932 #define AUTOCONF_TEST 1
4933 #include "confdefs.h"
4934 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4935            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4936 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4937     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4938     samba_cv_SYSQUOTA_FOUND=yes;
4939     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4940     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4944 #################################################
4945 # check for mntent.h and struct mntent
4946 AC_CHECK_HEADERS(mntent.h)
4947 #################################################
4948 # check for setmntent,getmntent,endmntent
4949 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4951 #################################################
4952 # check for devnm.h and struct mntent
4953 AC_CHECK_HEADERS(devnm.h)
4954 #################################################
4955 # check for devnm
4956 AC_CHECK_FUNCS(devnm)
4958 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4959     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4960         # if --with-sys-quotas=yes then build it
4961         # you have can use the get/set quota command smb.conf
4962         # options then
4963         samba_cv_SYSQUOTA_FOUND=auto
4964     fi
4965     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4966         # if --with-sys-quotas=yes then build it
4967         # you have can use the get/set quota command smb.conf
4968         # options then
4969         samba_cv_TRY_SYS_QUOTAS=auto
4970     fi
4973 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4974 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4975 SAVE_CPPFLAGS="$CPPFLAGS"
4976 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4977 AC_TRY_COMPILE([
4978 #include "confdefs.h"
4979 #define NO_PROTO_H 1
4980 #define NO_CONFIG_H 1
4981 #define HAVE_SYS_QUOTAS 1
4982 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4983 #include "${srcdir-.}/lib/sysquotas.c"
4984 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4985 CPPFLAGS="$SAVE_CPPFLAGS"
4987 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4988 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4989     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4990         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4991         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4992         samba_cv_WE_USE_SYS_QUOTAS=yes
4993         AC_MSG_RESULT(yes)
4994     else
4995         AC_MSG_RESULT(no)
4996     fi
5000 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5001 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5002 SAVE_CPPFLAGS="$CPPFLAGS"
5003 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5004 AC_TRY_COMPILE([
5005 #include "confdefs.h"
5006 #define NO_PROTO_H 1
5007 #define NO_CONFIG_H 1
5008 #define HAVE_SYS_QUOTAS 1
5009 #define HAVE_XFS_QUOTAS 1
5010 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5011 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5012 CPPFLAGS="$SAVE_CPPFLAGS"
5014 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5015     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5016         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5017     fi
5021 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5022 SAVE_CPPFLAGS="$CPPFLAGS"
5023 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5024 AC_TRY_COMPILE([
5025 #include "confdefs.h"
5026 #define NO_PROTO_H 1
5027 #define NO_CONFIG_H 1
5028 #include "${srcdir-.}/smbd/quotas.c"
5029 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5030 CPPFLAGS="$SAVE_CPPFLAGS"
5032 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5033 AC_MSG_CHECKING(whether to use the old quota support)
5034     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5035       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5036         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5037         AC_MSG_RESULT(yes)
5038       else
5039         AC_MSG_RESULT(no)
5040       fi
5041     else
5042       AC_MSG_RESULT(no)
5043     fi
5046 ####################
5047 # End of quota check samba_cv_RUN_QUOTA_TESTS
5050 #################################################
5051 # check for experimental utmp accounting
5053 AC_MSG_CHECKING(whether to support utmp accounting)
5054 WITH_UTMP=yes
5055 AC_ARG_WITH(utmp,
5056 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
5057 [ case "$withval" in
5058   no)
5059                 WITH_UTMP=no
5060                 ;;
5061   *)
5062                 WITH_UTMP=yes
5063                 ;;
5064   esac ],
5067 # utmp requires utmp.h
5068 # Note similar check earlier, when checking utmp details.
5070 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5071         utmp_no_reason=", no utmp.h on $host_os"
5072         WITH_UTMP=no
5075 # Display test results
5077 if test x"$WITH_UTMP" = x"yes"; then
5078         AC_MSG_RESULT(yes)
5079         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5080 else
5081         AC_MSG_RESULT(no$utmp_no_reason)
5084 INSTALLLIBCMD_SH=:
5085 INSTALLLIBCMD_A=:
5086 UNINSTALLLIBCMD_SH=:
5087 UNINSTALLLIBCMD_A=:
5089 if test $BLDSHARED = true; then
5090         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5091         UNINSTALLLIBCMD_SH="rm -f"
5093 if test $enable_static = yes; then
5094         INSTALLLIBCMD_A="\$(INSTALLCMD)"
5095         UNINSTALLLIBCMD_A="rm -f"
5098 #################################################
5099 # should we build libnetapi?
5100 INSTALL_LIBNETAPI=
5101 UNINSTALL_LIBNETAPI=
5102 LIBNETAPI_SHARED=
5103 LIBNETAPI=
5104 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5105 AC_ARG_WITH(libnetapi,
5106 [  --with-libnetapi        Build the libnetapi shared library (default=yes if shared libs supported)],
5107 [ case "$withval" in
5108   *)
5109      AC_MSG_RESULT(no)
5110      ;;
5111   yes)
5112      if test $BLDSHARED = true; then
5113         LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5114         LIBNETAPI=libnetapi
5115         AC_MSG_RESULT(yes)
5116      else
5117         enable_static=yes
5118         AC_MSG_RESULT(no shared library support -- will supply static library)
5119      fi
5120      if test $enable_static = yes; then
5121         LIBNETAPI=libnetapi
5122      fi
5123      INSTALL_LIBNETAPI=installlibnetapi
5124      UNINSTALL_LIBNETAPI=uninstalllibnetapi
5125      ;;
5126   esac ],
5128 # if unspecified, default is to built it if possible.
5129   if test $BLDSHARED = true; then
5130      LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5131      LIBNETAPI=libnetapi
5132      AC_MSG_RESULT(yes)
5133    else
5134      enable_static=yes
5135      AC_MSG_RESULT(no shared library support -- will supply static library)
5136    fi
5137    if test $enable_static = yes; then
5138      LIBNETAPI=libnetapi
5139   fi]
5140   INSTALL_LIBNETAPI=installlibnetapi
5143 #################################################
5144 # should we build libaddns?
5145 INSTALL_LIBADDNS=
5146 UNINSTALL_LIBADDNS=
5147 LIBADDNS_SHARED=
5148 LIBADDNS=
5149 AC_MSG_CHECKING(whether to build the libaddns shared library)
5150 AC_ARG_WITH(libaddns,
5151 [  --with-libaddns         Build the libaddns shared library (default=no undefined API)],
5152 [ case "$withval" in
5153   *)
5154      AC_MSG_RESULT(no)
5155      ;;
5156   yes)
5157      if test $BLDSHARED = true; then
5158         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5159         LIBADDNS=libaddns
5160         AC_MSG_RESULT(yes)
5161      else
5162         enable_static=yes
5163         AC_MSG_RESULT(no shared library support -- will supply static library)
5164      fi
5165      if test $enable_static = yes; then
5166         LIBADDNS=libaddns
5167      fi
5168      INSTALL_LIBADDNS=installlibaddns
5169      UNINSTALL_LIBADDNS=uninstalllibaddns
5170      ;;
5171   esac ],
5172 [AC_MSG_RESULT(no)]
5175 #################################################
5176 # should we build libsmbclient?
5178 INSTALL_LIBSMBCLIENT=
5179 UNINSTALL_LIBSMBCLIENT=
5180 LIBSMBCLIENT_SHARED=
5181 LIBSMBCLIENT=
5182 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5183 AC_ARG_WITH(libsmbclient,
5184 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
5185 [ case "$withval" in
5186   no)
5187      AC_MSG_RESULT(no)
5188      ;;
5189   *)
5190      if test $BLDSHARED = true; then
5191         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5192         LIBSMBCLIENT=libsmbclient
5193         AC_MSG_RESULT(yes)
5194      else
5195         enable_static=yes
5196         AC_MSG_RESULT(no shared library support -- will supply static library)
5197      fi
5198      if test $enable_static = yes; then
5199         LIBSMBCLIENT=libsmbclient
5200      fi
5201      INSTALL_LIBSMBCLIENT=installclientlib
5202      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5203      ;;
5204   esac ],
5206 # if unspecified, default is to built it if possible.
5207   if test $BLDSHARED = true; then
5208      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5209      LIBSMBCLIENT=libsmbclient
5210      AC_MSG_RESULT(yes)
5211    else
5212      enable_static=yes
5213      AC_MSG_RESULT(no shared library support -- will supply static library)
5214    fi
5215    if test $enable_static = yes; then
5216      LIBSMBCLIENT=libsmbclient
5217   fi]
5218   INSTALL_LIBSMBCLIENT=installclientlib
5219   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5222 INSTALL_LIBSMBSHAREMODES=
5223 LIBSMBSHAREMODES_SHARED=
5224 LIBSMBSHAREMODES=
5225 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5226 AC_ARG_WITH(libsmbsharemodes,
5227 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
5228 [ case "$withval" in
5229   no)
5230      AC_MSG_RESULT(no)
5231      ;;
5232   *)
5233      if test $BLDSHARED = true; then
5234         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5235         LIBSMBSHAREMODES=libsmbsharemodes
5236         AC_MSG_RESULT(yes)
5237      else
5238         enable_static=yes
5239         AC_MSG_RESULT(no shared library support -- will supply static library)
5240      fi
5241      if test $enable_static = yes; then
5242         LIBSMBSHAREMODES=libsmbsharemodes
5243      fi
5244      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5245      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5246      ;;
5247   esac ],
5249 # if unspecified, default is to built it if possible.
5250   if test $BLDSHARED = true; then
5251      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5252      LIBSMBSHAREMODES=libsmbsharemodes
5253      AC_MSG_RESULT(yes)
5254    else
5255      enable_static=yes
5256      AC_MSG_RESULT(no shared library support -- will supply static library)
5257    fi
5258    if test $enable_static = yes; then
5259      LIBSMBSHAREMODES=libsmbsharemodes
5260   fi]
5261   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5265 #################################################
5266 # these tests are taken from the GNU fileutils package
5267 AC_CHECKING(how to get filesystem space usage)
5268 space=no
5270 # Test for statvfs64.
5271 if test $space = no; then
5272   # SVR4
5273   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5274   [AC_TRY_RUN([
5275 #if defined(HAVE_UNISTD_H)
5276 #include <unistd.h>
5277 #endif
5278 #include <sys/types.h>
5279 #include <sys/statvfs.h>
5280   main ()
5281   {
5282     struct statvfs64 fsd;
5283     exit (statvfs64 (".", &fsd));
5284   }],
5285   fu_cv_sys_stat_statvfs64=yes,
5286   fu_cv_sys_stat_statvfs64=no,
5287   fu_cv_sys_stat_statvfs64=cross)])
5288   if test $fu_cv_sys_stat_statvfs64 = yes; then
5289     space=yes
5290     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5291   fi
5294 # Perform only the link test since it seems there are no variants of the
5295 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
5296 # because that got a false positive on SCO OSR5.  Adding the declaration
5297 # of a `struct statvfs' causes this test to fail (as it should) on such
5298 # systems.  That system is reported to work fine with STAT_STATFS4 which
5299 # is what it gets when this test fails.
5300 if test $space = no; then
5301   # SVR4
5302   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5303                  [AC_TRY_LINK([#include <sys/types.h>
5304 #include <sys/statvfs.h>],
5305                               [struct statvfs fsd; statvfs (0, &fsd);],
5306                               fu_cv_sys_stat_statvfs=yes,
5307                               fu_cv_sys_stat_statvfs=no)])
5308   if test $fu_cv_sys_stat_statvfs = yes; then
5309     space=yes
5310     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5311   fi
5314 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5315 # This is not the case on ancient Linux systems.
5317 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5318     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5319         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5320 if test x"$samba_cv_fsid_int" = x"yes"; then
5321     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5324 if test $space = no; then
5325   # DEC Alpha running OSF/1
5326   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5327   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5328   [AC_TRY_RUN([
5329 #include <sys/param.h>
5330 #include <sys/types.h>
5331 #include <sys/mount.h>
5332   main ()
5333   {
5334     struct statfs fsd;
5335     fsd.f_fsize = 0;
5336     exit (statfs (".", &fsd, sizeof (struct statfs)));
5337   }],
5338   fu_cv_sys_stat_statfs3_osf1=yes,
5339   fu_cv_sys_stat_statfs3_osf1=no,
5340   fu_cv_sys_stat_statfs3_osf1=no)])
5341   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5342   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5343     space=yes
5344     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5345   fi
5348 if test $space = no; then
5349 # AIX
5350   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5351 member (AIX, 4.3BSD)])
5352   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5353   [AC_TRY_RUN([
5354 #ifdef HAVE_SYS_PARAM_H
5355 #include <sys/param.h>
5356 #endif
5357 #ifdef HAVE_SYS_MOUNT_H
5358 #include <sys/mount.h>
5359 #endif
5360 #ifdef HAVE_SYS_VFS_H
5361 #include <sys/vfs.h>
5362 #endif
5363   main ()
5364   {
5365   struct statfs fsd;
5366   fsd.f_bsize = 0;
5367   exit (statfs (".", &fsd));
5368   }],
5369   fu_cv_sys_stat_statfs2_bsize=yes,
5370   fu_cv_sys_stat_statfs2_bsize=no,
5371   fu_cv_sys_stat_statfs2_bsize=no)])
5372   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5373   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5374     space=yes
5375     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5376   fi
5379 if test $space = no; then
5380 # SVR3
5381   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5382   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5383   [AC_TRY_RUN([#include <sys/types.h>
5384 #include <sys/statfs.h>
5385   main ()
5386   {
5387   struct statfs fsd;
5388   exit (statfs (".", &fsd, sizeof fsd, 0));
5389   }],
5390     fu_cv_sys_stat_statfs4=yes,
5391     fu_cv_sys_stat_statfs4=no,
5392     fu_cv_sys_stat_statfs4=no)])
5393   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5394   if test $fu_cv_sys_stat_statfs4 = yes; then
5395     space=yes
5396     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5397   fi
5400 if test $space = no; then
5401 # 4.4BSD and NetBSD
5402   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5403 member (4.4BSD and NetBSD)])
5404   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5405   [AC_TRY_RUN([#include <sys/types.h>
5406 #ifdef HAVE_SYS_PARAM_H
5407 #include <sys/param.h>
5408 #endif
5409 #ifdef HAVE_SYS_MOUNT_H
5410 #include <sys/mount.h>
5411 #endif
5412   main ()
5413   {
5414   struct statfs fsd;
5415   fsd.f_fsize = 0;
5416   exit (statfs (".", &fsd));
5417   }],
5418   fu_cv_sys_stat_statfs2_fsize=yes,
5419   fu_cv_sys_stat_statfs2_fsize=no,
5420   fu_cv_sys_stat_statfs2_fsize=no)])
5421   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5422   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5423     space=yes
5424         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5425   fi
5428 if test $space = no; then
5429   # Ultrix
5430   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5431   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5432   [AC_TRY_RUN([#include <sys/types.h>
5433 #ifdef HAVE_SYS_PARAM_H
5434 #include <sys/param.h>
5435 #endif
5436 #ifdef HAVE_SYS_MOUNT_H
5437 #include <sys/mount.h>
5438 #endif
5439 #ifdef HAVE_SYS_FS_TYPES_H
5440 #include <sys/fs_types.h>
5441 #endif
5442   main ()
5443   {
5444   struct fs_data fsd;
5445   /* Ultrix's statfs returns 1 for success,
5446      0 for not mounted, -1 for failure.  */
5447   exit (statfs (".", &fsd) != 1);
5448   }],
5449   fu_cv_sys_stat_fs_data=yes,
5450   fu_cv_sys_stat_fs_data=no,
5451   fu_cv_sys_stat_fs_data=no)])
5452   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5453   if test $fu_cv_sys_stat_fs_data = yes; then
5454     space=yes
5455     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5456   fi
5460 # As a gating factor for large file support, in order to
5461 # use <4GB files we must have the following minimal support
5462 # available.
5463 # long long, and a 64 bit off_t or off64_t.
5464 # If we don't have all of these then disable large
5465 # file support.
5467 AC_MSG_CHECKING([if large file support can be enabled])
5468 AC_TRY_COMPILE([
5469 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5470 #include <sys/types.h>
5471 #else
5472 __COMPILE_ERROR_
5473 #endif
5475 [int i],
5476 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5477 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5478         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5480 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5482 #################################################
5483 # check for cluster extensions
5485 AC_MSG_CHECKING(whether to include cluster support)
5486 AC_ARG_WITH(cluster-support,
5487 [  --with-cluster-support  Enable cluster extensions (default=no)])
5488 if test "x$with_cluster_support" = "xyes"; then
5489     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5490     AC_MSG_RESULT(yes)
5491 else
5492     AC_MSG_RESULT(no)
5496 #################################################
5497 # check for ACL support
5499 AC_MSG_CHECKING(whether to support ACLs)
5500 AC_ARG_WITH(acl-support,
5501 [  --with-acl-support      Include ACL support (default=auto)],
5502 [ case "$withval" in
5503         yes|no)
5504                 with_acl_support="$withval"
5505                 ;;
5506   esac ])
5508 if test x"$with_acl_support" = x ; then
5509         with_acl_support="auto"
5512 AC_MSG_RESULT($with_acl_support)
5514 if test x"$with_acl_support" = x"no"; then
5515         AC_MSG_RESULT(Disabling ACL support)
5516         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5517 else
5518         AC_MSG_NOTICE(checking whether ACL support is available:)
5519         case "$host_os" in
5520         *sysv5*)
5521                 AC_MSG_NOTICE(Using UnixWare ACLs)
5522                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5523                 default_static_modules="$default_static_modules vfs_solarisacl"
5524                 ;;
5525         *solaris*)
5526                 AC_MSG_NOTICE(Using solaris ACLs)
5527                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5528                 ACL_LIBS="$ACL_LIBS -lsec"
5529                 default_static_modules="$default_static_modules vfs_solarisacl"
5530                 ;;
5531         *hpux*)
5532                 AC_MSG_NOTICE(Using HPUX ACLs)
5533                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5534                 default_static_modules="$default_static_modules vfs_hpuxacl"
5535                 ;;
5536         *irix*)
5537                 AC_MSG_NOTICE(Using IRIX ACLs)
5538                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5539                 default_static_modules="$default_static_modules vfs_irixacl"
5540                 ;;
5541         *aix*)
5542                 AC_MSG_NOTICE(Using AIX ACLs)
5543                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5544                 default_static_modules="$default_static_modules vfs_aixacl"
5545                 ;;
5546         *osf*)
5547                 AC_MSG_NOTICE(Using Tru64 ACLs)
5548                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5549                 ACL_LIBS="$ACL_LIBS -lpacl"
5550                 default_static_modules="$default_static_modules vfs_tru64acl"
5551                 ;;
5552         *darwin*)
5553                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5554                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5555                 ;;
5556         *)
5557                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5558                 case "$host_os" in
5559                 *linux*)
5560                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5561                         ;;
5562                 esac
5563                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5564                         acl_LIBS=$LIBS
5565                         LIBS="$LIBS $ACL_LIBS"
5566                         AC_TRY_LINK([
5567                                 #include <sys/types.h>
5568                                 #include <sys/acl.h>
5569                         ],[
5570                                 acl_t acl;
5571                                 int entry_id;
5572                                 acl_entry_t *entry_p;
5573                                 return acl_get_entry(acl, entry_id, entry_p);
5574                         ],
5575                         [samba_cv_HAVE_POSIX_ACLS=yes],
5576                         [samba_cv_HAVE_POSIX_ACLS=no])
5577                         LIBS=$acl_LIBS
5578                 ])
5579                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5580                         AC_MSG_NOTICE(Using posix ACLs)
5581                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5582                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5583                                 acl_LIBS=$LIBS
5584                                 LIBS="$LIBS $ACL_LIBS"
5585                                 AC_TRY_LINK([
5586                                         #include <sys/types.h>
5587                                         #include <sys/acl.h>
5588                                 ],[
5589                                         acl_permset_t permset_d;
5590                                         acl_perm_t perm;
5591                                         return acl_get_perm_np(permset_d, perm);
5592                                 ],
5593                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5594                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5595                                 LIBS=$acl_LIBS
5596                         ])
5597                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5598                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5599                         fi
5600                         default_static_modules="$default_static_modules vfs_posixacl"
5601                 else
5602                         AC_MSG_NOTICE(ACL support is not avaliable)
5603                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5604                 fi
5605                 ;;
5606         esac
5607 fi # with_acl_support
5611 #################################################
5612 # check for AIO support
5614 AC_MSG_CHECKING(whether to support asynchronous io)
5615 AC_ARG_WITH(aio-support,
5616 [  --with-aio-support      Include asynchronous io support (default=no)],
5617 [ case "$withval" in
5618   yes)
5620         AC_MSG_RESULT(yes)
5621         case "$host_os" in
5622         *)
5623                 AIO_LIBS=$LIBS
5624                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5625                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5626                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5627                 aio_LIBS=$LIBS
5628                 LIBS=$AIO_LIBS
5629                 AC_TRY_LINK([#include <sys/types.h>
5630 #include <aio.h>],
5631 [ struct aiocb a; return aio_read(&a);],
5632 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5633                 LIBS=$aio_LIBS])
5634                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5635                 aio_LIBS=$LIBS
5636                 LIBS=$AIO_LIBS
5637                 AC_TRY_LINK([#include <sys/types.h>
5638 #include <aio.h>],
5639 [ struct aiocb64 a; return aio_read64(&a);],
5640 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5641                 LIBS=$aio_LIBS])
5642                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5643                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5644                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5645                         LIBS=$AIO_LIBS
5646                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5647                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5648                         LIBS=$AIO_LIBS
5649                 fi
5651                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5652                         AC_MSG_CHECKING(for aio_read)
5653                         AC_LINK_IFELSE([#include <aio.h>
5654 int main() { struct aiocb a; return aio_read(&a); }],
5655 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5656 [AC_MSG_RESULT(no)])
5658                         AC_MSG_CHECKING(for aio_write)
5659                         AC_LINK_IFELSE([#include <aio.h>
5660 int main() { struct aiocb a; return aio_write(&a); }],
5661 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5662 [AC_MSG_RESULT(no)])
5664                         AC_MSG_CHECKING(for aio_fsync)
5665                         AC_LINK_IFELSE([#include <aio.h>
5666 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5667 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5668 [AC_MSG_RESULT(no)])
5670                         AC_MSG_CHECKING(for aio_return)
5671                         AC_LINK_IFELSE([#include <aio.h>
5672 int main() { struct aiocb a; return aio_return(&a); }],
5673 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5674 [AC_MSG_RESULT(no)])
5676                         AC_MSG_CHECKING(for aio_error)
5677                         AC_LINK_IFELSE([#include <aio.h>
5678 int main() { struct aiocb a; return aio_error(&a); }],
5679 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5680 [AC_MSG_RESULT(no)])
5682                         AC_MSG_CHECKING(for aio_cancel)
5683                         AC_LINK_IFELSE([#include <aio.h>
5684 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5685 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5686 [AC_MSG_RESULT(no)])
5688                         AC_MSG_CHECKING(for aio_suspend)
5689                         AC_LINK_IFELSE([#include <aio.h>
5690 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5691 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5692 [AC_MSG_RESULT(no)])
5693                 fi
5695                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5696                         AC_MSG_CHECKING(for aio_read64)
5697                         AC_LINK_IFELSE([#include <aio.h>
5698 int main() { struct aiocb a; return aio_read64(&a); }],
5699 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5700 [AC_MSG_RESULT(no)])
5702                         AC_MSG_CHECKING(for aio_write64)
5703                         AC_LINK_IFELSE([#include <aio.h>
5704 int main() { struct aiocb a; return aio_write64(&a); }],
5705 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5706 [AC_MSG_RESULT(no)])
5708                         AC_MSG_CHECKING(for aio_fsync64)
5709                         AC_LINK_IFELSE([#include <aio.h>
5710 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5711 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5712 [AC_MSG_RESULT(no)])
5714                         AC_MSG_CHECKING(for aio_return64)
5715                         AC_LINK_IFELSE([#include <aio.h>
5716 int main() { struct aiocb a; return aio_return64(&a); }],
5717 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5718 [AC_MSG_RESULT(no)])
5720                         AC_MSG_CHECKING(for aio_error64)
5721                         AC_LINK_IFELSE([#include <aio.h>
5722 int main() { struct aiocb a; return aio_error64(&a); }],
5723 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5724 [AC_MSG_RESULT(no)])
5726                         AC_MSG_CHECKING(for aio_cancel64)
5727                         AC_LINK_IFELSE([#include <aio.h>
5728 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5729 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5730 [AC_MSG_RESULT(no)])
5732                         AC_MSG_CHECKING(for aio_suspend64)
5733                         AC_LINK_IFELSE([#include <aio.h>
5734 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5735 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5736 [AC_MSG_RESULT(no)])
5737                 fi
5738             ;;
5739         esac
5740         ;;
5741   *)
5742     AC_MSG_RESULT(no)
5743     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5744     ;;
5745   esac ],
5746   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5747   AC_MSG_RESULT(no)
5750 #################################################
5751 # check for sendfile support
5753 with_sendfile_support=yes
5754 AC_MSG_CHECKING(whether to check to support sendfile)
5755 AC_ARG_WITH(sendfile-support,
5756 [  --with-sendfile-support Check for sendfile support (default=yes)],
5757 [ case "$withval" in
5758   yes)
5760         AC_MSG_RESULT(yes);
5762         case "$host_os" in
5763         *linux*)
5764                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5765                 AC_TRY_LINK([#include <sys/sendfile.h>],
5767 int tofd, fromfd;
5768 off64_t offset;
5769 size_t total;
5770 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5772 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5774                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5775                 AC_TRY_LINK([#include <sys/sendfile.h>],
5777 int tofd, fromfd;
5778 off_t offset;
5779 size_t total;
5780 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5782 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5784 # Try and cope with broken Linux sendfile....
5785                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5786                 AC_TRY_LINK([\
5787 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5788 #undef _FILE_OFFSET_BITS
5789 #endif
5790 #include <sys/sendfile.h>],
5792 int tofd, fromfd;
5793 off_t offset;
5794 size_t total;
5795 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5797 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5799         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5800                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5801                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5802                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5803         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5804                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5805                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5806                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5807         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5808                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5809                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5810         else
5811                 AC_MSG_RESULT(no);
5812         fi
5814         ;;
5815         *freebsd* | *dragonfly* )
5816                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5817                 AC_TRY_LINK([\
5818 #include <sys/types.h>
5819 #include <unistd.h>
5820 #include <sys/socket.h>
5821 #include <sys/uio.h>],
5823         int fromfd, tofd, ret, total=0;
5824         off_t offset, nwritten;
5825         struct sf_hdtr hdr;
5826         struct iovec hdtrl;
5827         hdr.headers = &hdtrl;
5828         hdr.hdr_cnt = 1;
5829         hdr.trailers = NULL;
5830         hdr.trl_cnt = 0;
5831         hdtrl.iov_base = NULL;
5832         hdtrl.iov_len = 0;
5833         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5835 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5837         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5838                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5839                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5840                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5841         else
5842                 AC_MSG_RESULT(no);
5843         fi
5844         ;;
5846         *hpux*)
5847                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5848                 AC_TRY_LINK([\
5849 #include <sys/socket.h>
5850 #include <sys/uio.h>],
5852         int fromfd, tofd;
5853         size_t total=0;
5854         struct iovec hdtrl[2];
5855         ssize_t nwritten;
5856         off64_t offset;
5858         hdtrl[0].iov_base = 0;
5859         hdtrl[0].iov_len = 0;
5861         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5863 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5864         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5865                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5866                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5867                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5868         else
5869                 AC_MSG_RESULT(no);
5870         fi
5872                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5873                 AC_TRY_LINK([\
5874 #include <sys/socket.h>
5875 #include <sys/uio.h>],
5877         int fromfd, tofd;
5878         size_t total=0;
5879         struct iovec hdtrl[2];
5880         ssize_t nwritten;
5881         off_t offset;
5883         hdtrl[0].iov_base = 0;
5884         hdtrl[0].iov_len = 0;
5886         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5888 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5889         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5890                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5891                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5892                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5893         else
5894                 AC_MSG_RESULT(no);
5895         fi
5896         ;;
5898         *solaris*)
5899                 AC_CHECK_LIB(sendfile,sendfilev)
5900                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5901                 AC_TRY_LINK([\
5902 #include <sys/sendfile.h>],
5904         int sfvcnt;
5905         size_t xferred;
5906         struct sendfilevec vec[2];
5907         ssize_t nwritten;
5908         int tofd;
5910         sfvcnt = 2;
5912         vec[0].sfv_fd = SFV_FD_SELF;
5913         vec[0].sfv_flag = 0;
5914         vec[0].sfv_off = 0;
5915         vec[0].sfv_len = 0;
5917         vec[1].sfv_fd = 0;
5918         vec[1].sfv_flag = 0;
5919         vec[1].sfv_off = 0;
5920         vec[1].sfv_len = 0;
5921         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5923 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5925         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5926                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5927                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5928                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5929         else
5930                 AC_MSG_RESULT(no);
5931         fi
5933                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5934                 AC_TRY_LINK([\
5935 #include <sys/sendfile.h>],
5937         int sfvcnt;
5938         size_t xferred;
5939         struct sendfilevec vec[2];
5940         ssize_t nwritten;
5941         int tofd;
5943         sfvcnt = 2;
5945         vec[0].sfv_fd = SFV_FD_SELF;
5946         vec[0].sfv_flag = 0;
5947         vec[0].sfv_off = 0;
5948         vec[0].sfv_len = 0;
5950         vec[1].sfv_fd = 0;
5951         vec[1].sfv_flag = 0;
5952         vec[1].sfv_off = 0;
5953         vec[1].sfv_len = 0;
5954         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5956 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5958         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5959                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5960                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5961                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5962         else
5963                 AC_MSG_RESULT(no);
5964         fi
5965         ;;
5966         *aix*)
5967                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5968                 AC_TRY_LINK([\
5969 #include <sys/socket.h>],
5971         int fromfd, tofd;
5972         size_t total=0;
5973         struct sf_parms hdtrl;
5974         ssize_t nwritten;
5975         off64_t offset;
5977         hdtrl.header_data = 0;
5978         hdtrl.header_length = 0;
5979         hdtrl.file_descriptor = fromfd;
5980         hdtrl.file_offset = 0;
5981         hdtrl.file_bytes = 0;
5982         hdtrl.trailer_data = 0;
5983         hdtrl.trailer_length = 0;
5985         nwritten = send_file(&tofd, &hdtrl, 0);
5987 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5988         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5989                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5990                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5991                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5992         else
5993                 AC_MSG_RESULT(no);
5994         fi
5995         ;;
5996         *)
5997         ;;
5998         esac
5999         ;;
6000   *)
6001     AC_MSG_RESULT(no)
6002     ;;
6003   esac ],
6004   AC_MSG_RESULT(yes)
6007 ############################################
6008 # See if we have the Linux readahead syscall.
6010 AC_CACHE_CHECK([for Linux readahead],
6011                 samba_cv_HAVE_LINUX_READAHEAD,[
6012     AC_TRY_LINK([
6013 #if defined(HAVE_UNISTD_H)
6014 #include <unistd.h>
6015 #endif
6016 #include <fcntl.h>],
6017     [ssize_t err = readahead(0,0,0x80000);],
6018     samba_cv_HAVE_LINUX_READAHEAD=yes,
6019     samba_cv_HAVE_LINUX_READAHEAD=no)])
6021 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6022   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6023              [Whether Linux readahead is available])
6026 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6028 ############################################
6029 # See if we have the posix_fadvise syscall.
6031 AC_CACHE_CHECK([for posix_fadvise],
6032                 samba_cv_HAVE_POSIX_FADVISE,[
6033     AC_TRY_LINK([
6034 #if defined(HAVE_UNISTD_H)
6035 #include <unistd.h>
6036 #endif
6037 #include <fcntl.h>],
6038     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6039     samba_cv_HAVE_POSIX_FADVISE=yes,
6040     samba_cv_HAVE_POSIX_FADVISE=no)])
6042 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6043   AC_DEFINE(HAVE_POSIX_FADVISE,1,
6044              [Whether posix_fadvise is available])
6049 #################################################
6050 # Check whether winbind is supported on this platform.  If so we need to
6051 # build and install client programs, sbin programs and shared libraries
6053 AC_MSG_CHECKING(whether to build winbind)
6055 # Initially, the value of $host_os decides whether winbind is supported
6057 HAVE_WINBIND=yes
6059 # Define the winbind shared library name and any specific linker flags
6060 # it needs to be built with.
6062 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6063 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6064 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6065 NSSSONAMEVERSIONSUFFIX=""
6066 WINBIND_NSS_PTHREAD=""
6068 case "$host_os" in
6069         *linux*)
6070                 NSSSONAMEVERSIONSUFFIX=".2"
6071                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6072                 ;;
6073         *freebsd[[5-9]]*)
6074                 # FreeBSD winbind client is implemented as a wrapper around
6075                 # the Linux version.
6076                 NSSSONAMEVERSIONSUFFIX=".1"
6077                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6078                     nsswitch/winbind_nss_linux.o"
6079                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6080                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6081                 ;;
6083         *netbsd*[[3-9]]*)
6084                 # NetBSD winbind client is implemented as a wrapper
6085                 # around the Linux version. It needs getpwent_r() to
6086                 # indicate libc's use of the correct nsdispatch API.
6087                 #
6088                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6089                         WINBIND_NSS_EXTRA_OBJS="\
6090                             nsswitch/winbind_nss_netbsd.o \
6091                             nsswitch/winbind_nss_linux.o"
6092                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6093                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6094                 else
6095                         HAVE_WINBIND=no
6096                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6097                 fi
6098                 ;;
6099         *irix*)
6100                 # IRIX has differently named shared libraries
6101                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6102                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6103                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6104                 ;;
6105         *solaris*)
6106                 # Solaris winbind client is implemented as a wrapper around
6107                 # the Linux version.
6108                 NSSSONAMEVERSIONSUFFIX=".1"
6109                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6110                     nsswitch/winbind_nss_linux.o"
6111                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6112                 ;;
6113         *hpux11*)
6114                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6115                 ;;
6116         *aix*)
6117                 # AIX has even differently named shared libraries.  No
6118                 # WINS support has been implemented yet.
6119                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6120                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6121                 WINBIND_NSS="nsswitch/WINBIND"
6122                 WINBIND_WINS_NSS=""
6123                 ;;
6124         *)
6125                 HAVE_WINBIND=no
6126                 winbind_no_reason=", unsupported on $host_os"
6127                 ;;
6128 esac
6130 # Check the setting of --with-winbind
6132 AC_ARG_WITH(winbind,
6133 [  --with-winbind          Build winbind (default, if supported by OS)],
6135   case "$withval" in
6136         yes)
6137                 HAVE_WINBIND=yes
6138                 ;;
6139         no)
6140                 HAVE_WINBIND=no
6141                 winbind_reason=""
6142                 ;;
6143   esac ],
6146 # We need unix domain sockets for winbind
6148 if test x"$HAVE_WINBIND" = x"yes"; then
6149         if test x"$samba_cv_unixsocket" = x"no"; then
6150                 winbind_no_reason=", no unix domain socket support on $host_os"
6151                 HAVE_WINBIND=no
6152         fi
6155 # Display test results
6157 if test x"$HAVE_WINBIND" = x"no"; then
6158         WINBIND_NSS=""
6159         WINBIND_WINS_NSS=""
6162 BUILD_LIBWBCLIENT_SHARED=yes
6164 AC_ARG_ENABLE(libwbclient-shared,
6165 [ --enable-libwbclient-shared   Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)],
6166         [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6167                 BUILD_LIBWBCLIENT_SHARED=no
6168         fi])
6170 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6171         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6172         ## Only worry about libwbclient if we have shared library support
6173         ## and winbindd
6174         LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6175         LIBWBCLIENT=libwbclient
6176         INSTALL_LIBWBCLIENT=installlibwbclient
6177         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6178         WINBIND_LIBS="-lwbclient"
6179         LDFLAGS="$LDFLAGS -L./bin"
6180 else
6181         LIBWBCLIENT_STATIC=bin/libwbclient.a
6184 if test x"$HAVE_WINBIND" = x"yes"; then
6185         AC_MSG_RESULT(yes)
6186         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6188         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6189         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6190         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6191                 PAM_MODULES="$PAM_MODULES pam_winbind"
6192                 INSTALL_PAM_MODULES="installpammodules"
6193                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6194         fi
6195 else
6196         AC_MSG_RESULT(no$winbind_no_reason)
6199 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6200                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6202 AC_SUBST(WINBIND_NSS_PTHREAD)
6203 AC_SUBST(WINBIND_NSS)
6204 AC_SUBST(WINBIND_WINS_NSS)
6205 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6206 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6207 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6208 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6210 AC_SUBST(WINBIND_KRB5_LOCATOR)
6212 # Solaris 10 does have new member in nss_XbyY_key
6213 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6214                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6215                 [#include <nss_dbdefs.h>])
6217 # Solaris has some extra fields in struct passwd that need to be
6218 # initialised otherwise nscd crashes.
6220 AC_CHECK_MEMBER(struct passwd.pw_comment,
6221                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6222                 [#include <pwd.h>])
6224 AC_CHECK_MEMBER(struct passwd.pw_age,
6225                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6226                 [#include <pwd.h>])
6228 # AIX 4.3.x and 5.1 do not have as many members in
6229 # struct secmethod_table as AIX 5.2
6230 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6231        [#include <usersec.h>])
6232 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6233        [#include <usersec.h>])
6235 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6236 AC_TRY_COMPILE([#include <sys/types.h>
6237 #include <sys/socket.h>],
6238 [struct ucred cred;
6239  socklen_t cred_len;
6240  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6242 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6243 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6244     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6248 #################################################
6249 # Check to see if we should use the included popt
6251 AC_ARG_WITH(included-popt,
6252 [  --with-included-popt    use bundled popt library, not from system],
6254   case "$withval" in
6255         yes)
6256                 INCLUDED_POPT=yes
6257                 ;;
6258         no)
6259                 INCLUDED_POPT=no
6260                 ;;
6261   esac ],
6263 if test x"$INCLUDED_POPT" != x"yes"; then
6264     AC_CHECK_LIB(popt, poptGetContext,
6265                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6268 AC_MSG_CHECKING(whether to use included popt)
6269 if test x"$INCLUDED_POPT" = x"yes"; then
6270     AC_MSG_RESULT(yes)
6271     BUILD_POPT='$(POPT_OBJ)'
6272     POPTLIBS='$(POPT_OBJ)'
6273     FLAGS1="-I\$(srcdir)/popt"
6274 else
6275     AC_MSG_RESULT(no)
6276         BUILD_POPT=""
6277     POPTLIBS="-lpopt"
6279 AC_SUBST(BUILD_POPT)
6280 AC_SUBST(POPTLIBS)
6281 AC_SUBST(FLAGS1)
6283 #################################################
6284 # Check if user wants DNS service discovery support
6286 AC_ARG_ENABLE(dnssd,
6287 [  --enable-dnssd          Enable DNS service discovery support (default=auto)])
6289 AC_SUBST(DNSSD_LIBS)
6290 if test x"$enable_dnssd" != x"no"; then
6291     have_dnssd_support=yes
6293     AC_CHECK_HEADERS(dns_sd.h)
6294     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6295         have_dnssd_support=no
6296     fi
6298     # On Darwin the DNSSD API is in libc, but on other platforms it's
6299     # probably in -ldns_sd
6300     AC_CHECK_FUNCS(DNSServiceRegister)
6301     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6302     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6303             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6304         have_dnssd_support=no
6305     fi
6307     if test x"$have_dnssd_support" = x"yes"; then
6308         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6309                 [Whether to enable DNS service discovery support])
6310     else
6311         if test x"$enable_dnssd" = x"yes"; then
6312             AC_MSG_ERROR(DNS service discovery support not available)
6313         fi
6314     fi
6318 #################################################
6319 # Check to see if we should use the included iniparser
6321 AC_ARG_WITH(included-iniparser,
6322 [  --with-included-iniparser    use bundled iniparser library, not from system],
6324   case "$withval" in
6325         yes)
6326                 INCLUDED_INIPARSER=yes
6327                 ;;
6328         no)
6329                 INCLUDED_INIPARSER=no
6330                 ;;
6331   esac ],
6333 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6334     AC_CHECK_LIB(iniparser, iniparser_load,
6335                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6338 AC_MSG_CHECKING(whether to use included iniparser)
6339 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6340     AC_MSG_RESULT(yes)
6341     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6342         INIPARSERLIBS=""
6343     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6344 else
6345     AC_MSG_RESULT(no)
6346         BUILD_INIPARSER=""
6347     INIPARSERLIBS="-liniparser"
6349 AC_SUBST(BUILD_INIPARSER)
6350 AC_SUBST(INIPARSERLIBS)
6351 AC_SUBST(FLAGS1)
6355 # Checks for the vfs_fileid module
6356 # Start
6357 AC_CHECK_FUNC(getmntent)
6359 AC_CHECK_HEADERS(sys/statfs.h)
6361 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6362 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6363              AC_TRY_RUN([
6364                 #include <sys/types.h>
6365                 #include <sys/statfs.h>
6366                 int main(void)
6367                 {
6368                         struct statfs fsd;
6369                         fsid_t fsid = fsd.f_fsid;
6370                         return statfs (".", &fsd);
6371                 }],
6372                 vfsfileid_cv_statfs=yes,
6373                 vfsfileid_cv_statfs=no,
6374                 vfsfileid_cv_statfs=cross)
6376 AC_MSG_RESULT($vfsfileid_cv_statfs)
6378 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6379         x"$vfsfileid_cv_statfs" = x"yes"; then
6380         default_shared_modules="$default_shared_modules vfs_fileid"
6382 # End
6383 # Checks for the vfs_fileid module
6386 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6388         eval MODULE_DEFAULT_$i=STATIC
6389 done
6391 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6393         dnl Fall back to static if we cannot build shared libraries
6394         eval MODULE_DEFAULT_$i=STATIC
6396         if test $BLDSHARED = true; then
6397                 eval MODULE_DEFAULT_$i=SHARED
6398         fi
6399 done
6401 dnl Always built these modules static
6402 MODULE_rpc_spoolss=STATIC
6403 MODULE_rpc_srvsvc2=STATIC
6404 MODULE_idmap_tdb=STATIC
6405 MODULE_idmap_passdb=STATIC
6406 MODULE_idmap_nss=STATIC
6408 MODULE_nss_info_template=STATIC
6410 AC_ARG_WITH(static-modules,
6411 [  --with-static-modules=MODULES  Comma-separated list of names of modules to statically link in],
6412 [ if test $withval; then
6413         for i in `echo $withval | sed -e 's/,/ /g'`
6414         do
6415                 eval MODULE_$i=STATIC
6416         done
6417 fi ])
6419 AC_ARG_WITH(shared-modules,
6420 [  --with-shared-modules=MODULES  Comma-separated list of names of modules to build shared],
6421 [ if test $withval; then
6422         for i in `echo $withval | sed -e 's/,/ /g'`
6423         do
6424                         eval MODULE_$i=SHARED
6425         done
6426 fi ])
6428 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6429                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6430 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6431 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6432 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6435 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6436 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6437 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6438 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6439 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6440 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6441 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6442 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6443 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6444 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6445 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6446 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6447 SMB_MODULE(rpc_samr2, \$(RPC_SAMR_OBJ), "bin/librpc_samr2.$SHLIBEXT", RPC)
6448 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6449 SMB_SUBSYSTEM(RPC,smbd/server.o)
6451 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6452 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6453 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6454 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6455 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6456 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6457 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6458 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6460 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6461 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6463 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6464 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6465 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6466 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6467 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6469 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6470 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6471 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6472 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6473 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6474 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6475 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6476 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6478 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6479 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6480 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6481 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6482 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6483 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6484 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6512 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6515 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6517 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6519 #################################################
6520 # do extra things if we are running insure
6522 if test "${ac_cv_prog_CC}" = "insure"; then
6523         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6526 #################################################
6527 # If run from the build farm, enable NASTY hacks
6528 #################################################
6529 AC_MSG_CHECKING(whether to enable build farm hacks)
6530 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6531         AC_MSG_RESULT(yes)
6532         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6533 else
6534         AC_MSG_RESULT(no)
6537 #################################################
6538 # check for bad librt/libpthread interactions
6540 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6541     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6542     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6543     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6545 SMB_IF_RTSIGNAL_BUG(
6546         [
6547             # Have RT_SIGNAL bug, need to check whether the problem will
6548             # affect anything we have configured.
6550             rt_do_error=no
6551             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6552                 if test x"$rt_signal_lease_ok" = x"no" ; then
6553                     rt_do_error=yes
6554                 fi
6555             fi
6557             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6558                 if test x"$rt_signal_notify_ok" = x"no" ; then
6559                     rt_do_error=yes
6560                 fi
6561             fi
6563             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6564                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6565                 if test x"$rt_signal_aio_ok" = x"no" ; then
6566                     rt_do_error=yes
6567                 fi
6568             fi
6570             if test x"$rt_do_error" = x"yes" ; then
6571                 SMB_IS_LIBPTHREAD_LINKED(
6572                     [
6573                         cat<<MSG
6575 *** On this platforms, linking Samba against pthreads causes problems
6576 *** with the oplock and change notification mechanisms. You may be
6577 *** using pthreads as a side-effect of using the --with-aio-support
6578 *** or --with-profiling-data options. Please remove these and try again.
6581                     ],
6582                     [
6583                         cat<<MSG
6585 *** On this platform, the oplock and change notification mechanisms do not
6586 *** appear to work. Please report this problem to samba-technical@samba.org
6587 *** and attach the config.log file from this directory.
6590                     ])
6591                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6592             fi
6593         ],
6594         [
6595             # no RT_SIGNAL bug, we are golden
6596             SMB_IS_LIBPTHREAD_LINKED(
6597                 [
6598                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6599                 ])
6601         ],
6602         [
6603             # cross compiling, I hope you know what you are doing
6604             true
6605         ])
6609 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6610 LIB_REMOVE_USR_LIB(LDFLAGS)
6611 LIB_REMOVE_USR_LIB(LIBS)
6612 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6614 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6615 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6616 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6618 #################################################
6619 # Display summary of libraries detected
6621 AC_MSG_RESULT([Using libraries:])
6622 AC_MSG_RESULT([    LIBS = $LIBS])
6623 if test x"$with_ads_support" != x"no"; then
6624     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6626 if test x"$with_ldap_support" != x"no"; then
6627     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6629 if test x"$with_dnsupdate_support" != x"no"; then
6630     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6632 if test x"$have_dnssd_support" != x"no"; then
6633     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6635 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6637 #################################################
6638 # final configure stuff
6640 AC_MSG_CHECKING([configure summary])
6641 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6642            AC_MSG_RESULT(yes),
6643            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6644            AC_MSG_WARN([cannot run when cross-compiling]))
6646 dnl Merge in developer cflags from now on
6647 AC_SUBST(DEVELOPER_CFLAGS)
6648 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6649     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6652 builddir=`pwd`
6653 AC_SUBST(builddir)
6655 # Stuff the smbd-only libraries at the end of the smbd link
6656 # path (if we have them).
6657 SMBD_LIBS="$samba_dmapi_libs"
6658 AC_SUBST(SMBD_LIBS)
6660 AC_OUTPUT(Makefile library-versions
6661           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6662           lib/netapi/examples/Makefile
6663           pkgconfig/smbclient.pc
6664           pkgconfig/wbclient.pc
6665           pkgconfig/netapi.pc
6666           pkgconfig/smbsharemodes.pc
6667           )
6669 #################################################
6670 # Print very concise instructions on building/use
6671 if test "x$enable_dmalloc" = xyes
6672 then
6673         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6674         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])