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