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