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