r13420: Support profile-guided optimisation in the build system. This is
[Samba/nascimento.git] / source3 / configure.in
blob6dedbd3441524ac7053b1bc62c8805370c4c4ae6
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
8 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
9 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
11 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
12 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
13         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
16 #################################################
17 # Figure out what type of system we are building on.
19 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
20 AC_MSG_CHECKING(uname -s)
21 AC_MSG_RESULT(${UNAME_S})
23 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
24 AC_MSG_CHECKING(uname -r)
25 AC_MSG_RESULT(${UNAME_R})
27 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
28 AC_MSG_CHECKING(uname -m)
29 AC_MSG_RESULT(${UNAME_M})
31 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
32 AC_MSG_CHECKING(uname -p)
33 AC_MSG_RESULT(${UNAME_P})
35 AC_CANONICAL_SYSTEM
37 #################################################
38 # Detect the compiler early so we know how to run
39 # feature tests correctly.
41 sinclude(compiler.m4)
44 ## for some reason this macro resets the CFLAGS
45 ## so save and restore
47 OLD_CFLAGS=${CFLAGS}
48 AC_PROG_CC
49 CFLAGS=${OLD_CFLAGS}
51 OLD_CFLAGS=${CFLAGS}
52 AC_PROG_CPP
53 CFLAGS=${OLD_CFLAGS}
55 dnl Check if we use GNU ld
56 LD=${LD-ld}
57 AC_PROG_LD_GNU
59 AC_DISABLE_STATIC
60 AC_ENABLE_SHARED
62 #################################################
63 # Directory handling stuff to support both the
64 # legacy SAMBA directories and FHS compliant
65 # ones...
66 AC_PREFIX_DEFAULT(/usr/local/samba)
68 lockdir="\${VARDIR}/locks"
69 piddir="\${VARDIR}/locks"
70 mandir="\${prefix}/man"
71 logfilebase="\${VARDIR}"
72 privatedir="\${prefix}/private"
73 libdir="\${prefix}/lib"
74 configdir="\${LIBDIR}"
75 swatdir="\${prefix}/swat"
77 AC_ARG_WITH(fhs, 
78 [  --with-fhs              Use FHS-compliant paths (default=no)],
79 [ case "$withval" in
80   yes)
81     lockdir="\${VARDIR}/lib/samba"
82     piddir="\${VARDIR}/run"
83     mandir="\${prefix}/share/man"
84     logfilebase="\${VARDIR}/log/samba"
85     privatedir="\${CONFIGDIR}/private"
86     libdir="\${prefix}/lib/samba"
87     configdir="${sysconfdir}/samba"
88     swatdir="\${DATADIR}/samba/swat"
89     ;;
90   esac])
92 #################################################
93 # set private directory location
94 AC_ARG_WITH(privatedir,
95 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
96 [ case "$withval" in
97   yes|no)
98   #
99   # Just in case anybody calls it without argument
100   #
101     AC_MSG_WARN([--with-privatedir called without argument - will use default])
102   ;;
103   * )
104     privatedir="$withval"
105     ;;
106   esac])
108 #################################################
109 # set lock directory location
110 AC_ARG_WITH(lockdir,
111 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
112 [ case "$withval" in
113   yes|no)
114   #
115   # Just in case anybody calls it without argument
116   #
117     AC_MSG_WARN([--with-lockdir called without argument - will use default])
118   ;;
119   * )
120     lockdir="$withval"
121     ;;
122   esac])
124 #################################################
125 # set pid directory location
126 AC_ARG_WITH(piddir,
127 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
128 [ case "$withval" in
129   yes|no)
130   #
131   # Just in case anybody calls it without argument
132   #
133     AC_MSG_WARN([--with-piddir called without argument - will use default])
134   ;;
135   * )
136     piddir="$withval"
137     ;;
138   esac])
140 #################################################
141 # set SWAT directory location
142 AC_ARG_WITH(swatdir,
143 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
144 [ case "$withval" in
145   yes|no)
146   #
147   # Just in case anybody does it
148   #
149     AC_MSG_WARN([--with-swatdir called without argument - will use default])
150   ;;
151   * )
152     swatdir="$withval"
153     ;;
154   esac])
156 #################################################
157 # set configuration directory location
158 AC_ARG_WITH(configdir,
159 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
160 [ case "$withval" in
161   yes|no)
162   #
163   # Just in case anybody does it
164   #
165     AC_MSG_WARN([--with-configdir called without argument - will use default])
166   ;;
167   * )
168     configdir="$withval"
169     ;;
170   esac])
172 #################################################
173 # set log directory location
174 AC_ARG_WITH(logfilebase,
175 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
176 [ case "$withval" in
177   yes|no)
178   #
179   # Just in case anybody does it
180   #
181     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
182   ;;
183   * )
184     logfilebase="$withval"
185     ;;
186   esac])
188 #################################################
189 # set lib directory location
190 AC_ARG_WITH(libdir,
191 [  --with-libdir=DIR       Where to put libdir ($libdir)],
192 [ case "$withval" in
193   yes|no)
194   #
195   # Just in case anybody does it
196   #
197     AC_MSG_WARN([--with-libdir without argument - will use default])
198   ;;
199   * )
200     libdir="$withval"
201     ;;
202   esac])
204 #################################################
205 # set lib directory location
206 AC_ARG_WITH(mandir,
207 [  --with-mandir=DIR       Where to put man pages ($mandir)],
208 [ case "$withval" in
209   yes|no)
210   #
211   # Just in case anybody does it
212   #
213     AC_MSG_WARN([--with-mandir without argument - will use default])
214   ;;
215   * )
216     mandir="$withval"
217     ;;
218   esac])
220 AC_ARG_WITH(cfenc,
221 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
222                           for optimization (Mac OS X/Darwin only)],
224 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
225 # Should have been in framework $withval/CoreFoundation.framework/Headers.
226 for d in \
227     $withval/CoreFoundation/StringEncodings.subproj \
228     $withval/StringEncodings.subproj \
229     $withval/CoreFoundation.framework/Headers \
230     $withval/Headers \
231     $withval
233     if test -r $d/CFStringEncodingConverter.h; then
234         ln -sfh $d include/CoreFoundation
235     fi
236 done
239 AC_SUBST(configdir)
240 AC_SUBST(lockdir)
241 AC_SUBST(piddir)
242 AC_SUBST(logfilebase)
243 AC_SUBST(privatedir)
244 AC_SUBST(swatdir)
245 AC_SUBST(bindir)
246 AC_SUBST(sbindir)
248 dnl Unique-to-Samba variables we'll be playing with.
249 AC_SUBST(SHELL)
250 AC_SUBST(LDSHFLAGS)
251 AC_SUBST(SONAMEFLAG)
252 AC_SUBST(SONAMEVERSIONSUFFIX)
253 AC_SUBST(SHLD)
254 AC_SUBST(HOST_OS)
255 AC_SUBST(PICFLAGS)
256 AC_SUBST(PICSUFFIX)
257 AC_SUBST(libc_cv_fpie)
258 AC_SUBST(PIE_CFLAGS)
259 AC_SUBST(PIE_LDFLAGS)
260 AC_SUBST(SHLIBEXT)
261 AC_SUBST(INSTALLLIBCMD_SH)
262 AC_SUBST(INSTALLLIBCMD_A)
263 AC_SUBST(INSTALL_LIBMSRPC)
264 AC_SUBST(LIBMSRPC_SHARED)
265 AC_SUBST(LIBMSRPC)
266 AC_SUBST(INSTALL_LIBSMBCLIENT)
267 AC_SUBST(LIBSMBCLIENT_SHARED)
268 AC_SUBST(LIBSMBCLIENT)
269 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
270 AC_SUBST(LIBSMBSHAREMODES_SHARED)
271 AC_SUBST(LIBSMBSHAREMODES)
272 AC_SUBST(PRINT_LIBS)
273 AC_SUBST(AUTH_LIBS)
274 AC_SUBST(ACL_LIBS)
275 AC_SUBST(PASSDB_LIBS)
276 AC_SUBST(IDMAP_LIBS)
277 AC_SUBST(KRB5_LIBS)
278 AC_SUBST(LDAP_LIBS)
279 AC_SUBST(SHLIB_PROGS)
280 AC_SUBST(SMBWRAPPER)
281 AC_SUBST(SMBWRAP_OBJS)
282 AC_SUBST(SMBWRAP_INC)
283 AC_SUBST(EXTRA_BIN_PROGS)
284 AC_SUBST(EXTRA_SBIN_PROGS)
285 AC_SUBST(EXTRA_ALL_TARGETS)
286 AC_SUBST(CONFIG_LIBS)
288 # Set defaults
289 PIE_CFLAGS=""
290 PIE_LDFLAGS=""
291 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
293 if test "x$enable_pie" != xno
294 then
295         AC_CACHE_CHECK(for -fPIE, libc_cv_fpie, [dnl
296                 cat > conftest.c <<EOF
297 int foo;
298 main () { return 0;}
300                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
301                 then
302                         libc_cv_fpie=yes
303                         PIE_CFLAGS="-fPIE"
304                         PIE_LDFLAGS="-pie"
305                 fi
306                 rm -f conftest*])
308 if test "x$PIE_CFLAGS" = x
309 then
310         libc_cv_fpie=no
313 AC_ARG_ENABLE(debug, 
314 [  --enable-debug          Turn on compiler debugging information (default=no)],
315     [if eval "test x$enable_debug = xyes"; then
316         CFLAGS="${CFLAGS} -g"
317     fi])
319 AC_SUBST(SOCKWRAP)
320 AC_ARG_ENABLE(socket-wrapper, 
321 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)],
322     [if eval "test x$enable_socket_wrapper = xyes"; then
323         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
324         SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
325     fi])
327 # compile with optimization and without debugging by default, but
328 # allow people to set their own preference.
329 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
330 # if it has no value.  This prevent *very* large debug binaries from occurring
331 # by default.
332 if test "x$CFLAGS" = x; then
333     AX_CFLAGS_GCC_OPTION(-O2, CFLAGS)
334     AX_CFLAGS_IRIX_OPTION(-O2, CFLAGS)
335     # Make sure the MIPSPro compiler will never decide functions are too
336     # big to optimise
337     AX_CFLAGS_IRIX_OPTION(-OPT:Olimit=0, CFLAGS)
338     AX_CFLAGS_HPUX_OPTION(-O2, CFLAGS)
339     AX_CFLAGS_SUN_OPTION(-O2, CFLAGS)
340     AX_CFLAGS_AIX_OPTION(-O2, CFLAGS)
343 CPPFLAGS="${CPPFLAGS} -D_SAMBA_BUILD_"
345 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
346     [if eval "test x$enable_developer = xyes"; then
347         developer=yes
348         AX_CFLAGS_WARN_ALL(CFLAGS)
349         AX_CFLAGS_GCC_OPTION(-gstabs, CFLAGS)
350         AX_CFLAGS_GCC_OPTION(-Wshadow, CFLAGS)
351         AX_CFLAGS_GCC_OPTION(-Wstrict-prototypes, CFLAGS)
352         AX_CFLAGS_GCC_OPTION(-Wpointer-arith, CFLAGS)
353         AX_CFLAGS_GCC_OPTION(-Wcast-align, CFLAGS)
354         AX_CFLAGS_GCC_OPTION(-Wwrite-strings, CFLAGS)
355         AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement, CFLAGS)
356         CPPFLAGS="${CPPFLAGS} -DDEBUG_PASSWORD -DDEVELOPER"
357     fi])
359 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
360     [if eval "test x$enable_krb5developer = xyes"; then
361         developer=yes
362         AX_CFLAGS_WARN_ALL(CFLAGS)
363         AX_CFLAGS_GCC_OPTION(-gstabs, CFLAGS)
364         AX_CFLAGS_GCC_OPTION(-Wshadow, CFLAGS)
365         AX_CFLAGS_GCC_OPTION(-Wpointer-arith, CFLAGS)
366         AX_CFLAGS_GCC_OPTION(-Wcast-align, CFLAGS)
367         AX_CFLAGS_GCC_OPTION(-Wcast-qual, CFLAGS)
368         AX_CFLAGS_GCC_OPTION(-Wwrite-strings, CFLAGS)
369         AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement, CFLAGS)
370         CPPFLAGS="${CPPFLAGS} -DDEBUG_PASSWORD -DDEVELOPER"
371     fi])
373 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
375 if test "x$enable_dmalloc" = xyes
376 then
377         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
378         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
379                   [Define to check invariants around some common functions])
380         LIBS="$LIBS -ldmalloc"  
383 # Check for profile guided optimisation (PGO) support.
385 AC_ARG_ENABLE(pgo,
386 [  --enable-pgo=SCRIPT     Compile with PGO (default=no)],
388     case $enableval in
389         yes|no)
390             AC_MSG_ERROR(the argument to --enable-pgo must be an executable script)
391     esac
393     samba_cv_have_pgo=no
395     # Test for IRIX PGO first. Unfortunately, some of the later GCC option
396     # tests can spuriously succeed with the MIPSPro compilers. Despite the
397     # test succeeding, the GCC options don't work.
398     if test "x$samba_cv_have_pgo" = "xno" ; then
399         samba_cv_have_pgo=yes
400         # The backslash below is horrible but necessary -- jpeach
401         AX_CFLAGS_IRIX_OPTION("-fb_create\ samba.feedback",
402                 PGO_GENERATE_CFLAGS, [], [samba_cv_have_pgo=no])
403         AX_CFLAGS_IRIX_OPTION("-fb_opt\ samba.feedback",
404                 PGO_USE_CFLAGS, [], [samba_cv_have_pgo=no])
405     fi
407     # Test GCC 4.x style profile flags.
408     if test "x$samba_cv_have_pgo" = "xno" ; then
409         samba_cv_have_pgo=yes
410         AX_CFLAGS_GCC_OPTION(-fprofile-generate, PGO_GENERATE_CFLAGS,
411                 [], [samba_cv_have_pgo=no])
412         AX_CFLAGS_GCC_OPTION(-fprofile-use, PGO_USE_CFLAGS,
413                 [], [samba_cv_have_pgo=no])
414     fi
416     # Test GCC 3.x style profile flags. This is rather more complicated so
417     # we only require a minimal set of options to enable PGO.
418     if test "x$samba_cv_have_pgo" = "xno" ; then
419         samba_cv_have_pgo=yes
420         AX_CFLAGS_GCC_OPTION(-fprofile-arcs, PGO_GENERATE_CFLAGS,
421                 [], [samba_cv_have_pgo=no])
422         AX_CFLAGS_GCC_OPTION(-fvpt, PGO_GENERATE_CFLAGS, [], [])
423         AX_CFLAGS_GCC_OPTION(-fspeculative-prefetching, PGO_GENERATE_CFLAGS,
424                 [], [])
425         AX_CFLAGS_GCC_OPTION(-fprofile-values, PGO_GENERATE_CFLAGS, [], [])
426         AX_CFLAGS_GCC_OPTION(-fbranch-probabilities, PGO_USE_CFLAGS,
427                 [], [samba_cv_have_pgo=no])
428         AX_CFLAGS_GCC_OPTION(-fvpt, PGO_USE_CFLAGS, [], [])
429         AX_CFLAGS_GCC_OPTION(-freorder-functions, PGO_USE_CFLAGS, [], [])
430         AX_CFLAGS_GCC_OPTION(-fprofile-values, PGO_USE_CFLAGS, [], [])
431         AX_CFLAGS_GCC_OPTION(-fspeculative-prefetching, PGO_USE_CFLAGS, [], [])
432         AX_CFLAGS_GCC_OPTION(-funroll-loops, PGO_USE_CFLAGS, [], [])
433         AX_CFLAGS_GCC_OPTION(-fpeel-loops, PGO_USE_CFLAGS, [], [])
434         AX_CFLAGS_GCC_OPTION(-ftracer, PGO_USE_CFLAGS, [], [])
435     fi
437     if test -r "$enableval" ; then
438         PGO_EXPERIMENT_SCRIPT="$enableval"
439     else
440         AC_MSG_ERROR(cannot find PGO experiment script $enableval)
441     fi
443     if test "x$samba_cv_have_pgo" = "xno" ; then
444         ifPGO="#"
445     else
446         # Enable PGO targets in Makefile
447         ifPGO=""
448         # System-specific profiling tweaks
449         case "$host_os" in
450             *irix*) PGO_LIBS="$PGO_LIBS -linstr" ;;
451         esac
452     fi
455     ifPGO="#"
459 AC_SUBST(ifPGO)
460 AC_SUBST(PGO_GENERATE_CFLAGS)
461 AC_SUBST(PGO_USE_CFLAGS)
462 AC_SUBST(PGO_EXPERIMENT_SCRIPT)
463 AC_SUBST(PGO_LIBS)
465 dnl Checks for programs.
467 AC_PROG_INSTALL
468 AC_PROG_AWK
469 AC_PATH_PROG(PERL, perl)
471 AC_CHECK_TOOL(AR, ar)
473 dnl Certain versions of GNU ld the default is not to have the 
474 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
475 dnl warnings when building modules.
476 if test "$ac_cv_prog_gnu_ld" = "yes"; then
477         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
478         AC_MSG_CHECKING(GNU ld release date)
479         changequote(,)dnl
480         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'`
481         changequote([,])dnl
482         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
483         if test -n "$ac_cv_gnu_ld_date"; then
484         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
485                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
486         fi
487         else
488            AC_MSG_CHECKING(GNU ld release version)
489            changequote(,)dnl
490            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
491            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
492            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
493            changequote([,])dnl
494            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
495            AC_MSG_CHECKING(GNU ld release version major)
496            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
497            AC_MSG_CHECKING(GNU ld release version minor)
498            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
499            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
500              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
501            fi
502         fi
505 dnl needed before AC_TRY_COMPILE
506 AC_ISC_POSIX
508 dnl look for executable suffix
509 AC_EXEEXT
511 dnl Check if C compiler understands -c and -o at the same time
512 AC_PROG_CC_C_O
513 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
514       BROKEN_CC=
515 else
516       BROKEN_CC=#
518 AC_SUBST(BROKEN_CC)
520 dnl Check if the C compiler understands -Werror
521 AX_CFLAGS_GCC_OPTION(-Werror, Werror_FLAGS)
523 dnl Check if the C compiler understands -w2
524 AX_CFLAGS_IRIX_OPTION(-w2, Werror_FLAGS)
526 dnl Check if the C compiler understands volatile (it should, being ANSI).
527 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
528     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
529         samba_cv_volatile=yes,samba_cv_volatile=no)])
530 if test x"$samba_cv_volatile" = x"yes"; then
531    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
534 dnl Add #include for broken IRIX header files
535   case "$host_os" in
536         *irix6*) AC_ADD_INCLUDE(<standards.h>)
537         ;;
538 esac
540 AC_VALIDATE_CACHE_SYSTEM_TYPE
542 DYNEXP=
544 dnl Add modules that have to be built by default here
545 dnl These have to be built static:
546 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srv rpc_spoolss rpc_eventlog auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
548 dnl These are preferably build shared, and static if dlopen() is not available
549 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"
551 if test "x$developer" = xyes; then
552    default_static_modules="$default_static_modules rpc_echo"
553    default_shared_modules="$default_shared_modules charset_weird"
557 # Config CPPFLAG settings for strange OS's that must be set
558 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
559 # case statement; its first reference must be unconditional.
561 case "$host_os" in
562 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
563     *hpux*)
564     
565       AX_CFLAGS_HPUX_OPTION(Ae, CFLAGS,
566               [ac_cv_prog_cc_Ae=yes], [ac_cv_prog_cc_Ae=no])
567       # mmap on HPUX is completely broken...
568       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
571 # Defines needed for HPUX support.
572 # HPUX has bigcrypt but (sometimes?) doesn't use it for
573 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
575       case `uname -r` in
576                         *9*|*10*)
577                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
578                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
579                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
580                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
581                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
582                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
583                                 ;;
584                         *11*)
585                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
586                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
587                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
588                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
589                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
590                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
591                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
592                                 ;;
593       esac
594       ;;
597 # CRAY Unicos has broken const handling
598        *unicos*)
599           AC_MSG_RESULT([disabling const])
600           CPPFLAGS="$CPPFLAGS -Dconst="
601           ;;
602         
604 # AIX4.x doesn't even admit to having large
605 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
607     *aix4*)
608           AC_MSG_RESULT([enabling large file support])
609       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
610           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
611       ;;    
613 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
614 # to the existance of large files..
615 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
616 # recommendations on large file support, however it makes the
617 # compile work using gcc 2.7 and 2.8, whereas using the Sun
618 # recommendation makes the compile fail on gcc2.7. JRA.
620 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
622         *solaris*)
623                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
624                 case `uname -r` in
625                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
626                                 AC_MSG_RESULT([no large file support])
627                                 ;;
628                         5.*)
629                         AC_MSG_RESULT([enabling large file support])
630                         if test "$ac_cv_prog_gcc" = yes; then
631                                 ${CC-cc} -v >conftest.c 2>&1
632                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
633                                 rm -fr conftest.c
634                                 case "$ac_cv_gcc_compiler_version_number" in
635                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
636                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
637                                                 LDFLAGS="$LDFLAGS -lthread"
638                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
639                                                 ;;
640                                         *)
641                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
642                                                 LDFLAGS="$LDFLAGS -lthread"
643                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
644                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
645                                                 ;;
646                                 esac
647                         else
648                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
649                                 LDFLAGS="$LDFLAGS -lthread"
650                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
651                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
652                         fi
653                         ;;
654                 esac
655                 ;;
657 # IRIX uses SYSV printing.  Make sure to set that here
659         *irix*)
660                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
661                 ;;
662         *freebsd*|*dragonfly*)
663                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
664                 ;;
666 # VOS may need to have POSIX support and System V compatibility enabled.
668     *vos*)
669     case "$CPPFLAGS" in
670           *-D_POSIX_C_SOURCE*)
671                 ;;
672           *)
673                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
674                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
675                 ;;
676     esac
677     case "$CPPFLAGS" in
678           *-D_SYSV*|*-D_SVID_SOURCE*)
679                 ;;
680           *)
681                 CPPFLAGS="$CPPFLAGS -D_SYSV"
682                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
683     esac
684     ;;
686 # Tests needed for SINIX large file support.
688     *sysv4*)
689       if test $host = mips-sni-sysv4 ; then
690         AC_MSG_CHECKING([for LFS support])
691         old_CPPFLAGS="$CPPFLAGS"
692         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
693         AC_TRY_RUN([
694 #include <unistd.h>
695 main () {
696 #if _LFS64_LARGEFILE == 1
697 exit(0);
698 #else
699 exit(1);
700 #endif
701 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
702         CPPFLAGS="$old_CPPFLAGS"
703         if test x$SINIX_LFS_SUPPORT = xyes ; then
704           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
705                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
706           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
707           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
708           LIBS="`getconf LFS64_LIBS` $LIBS"
709         fi
710       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
711       fi
712     ;;
714 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
716     *linux*)
717         AC_MSG_CHECKING([for LFS support])
718         old_CPPFLAGS="$CPPFLAGS"
719         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
720        AC_TRY_RUN([
721 #include <unistd.h>
722 #include <sys/utsname.h>
723 #include <string.h>
724 #include <stdlib.h>
725 main() {
726 #if _LFS64_LARGEFILE == 1
727        struct utsname uts;
728        char *release;
729        int major, minor;
731        /* Ensure this is glibc 2.2 or higher */
732 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
733        int libc_major = __GLIBC__;
734        int libc_minor = __GLIBC_MINOR__;
736        if (libc_major < 2)
737               exit(1);
738        if (libc_minor < 2)
739               exit(1);
740 #endif
742        /* Ensure this is kernel 2.4 or higher */
744        uname(&uts);
745        release = strdup(uts.release);
746        major = atoi(strsep(&release, "."));
747        minor = atoi(strsep(&release, "."));
749        if (major > 2 || (major == 2 && minor > 3))
750                exit(0);
751        exit(1);
752 #else
753        exit(1);
754 #endif
756 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
757         CPPFLAGS="$old_CPPFLAGS"
758         if test x$LINUX_LFS_SUPPORT = xyes ; then
759                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
760                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
761                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
762                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
763         fi
764         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
765         ;;
768 # MacOS X is the *only* system that uses compose character in utf8. This
769 # is so horribly broken....
771     *darwin*)
772         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
773 # Add Fink directories for various packages, like dlcompat.
774 # Note: iconv does that explicitly below, but other packages
775 # don't.
776         CPPFLAGS="$CPPFLAGS -I/sw/include"
777         LDFLAGS="$LDFLAGS -L/sw/lib"
779 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
780 # use that instead of plain dlsym.
782         AC_CHECK_LIB(dl,dlopen)
783         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
785 # Add a system specific charset module.
787         default_shared_modules="$default_shared_modules charset_macosxfs"
788         ;;
789     *hurd*)
790         AC_MSG_CHECKING([for LFS support])
791         old_CPPFLAGS="$CPPFLAGS"
792         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
793         AC_TRY_RUN([
794 #include <unistd.h>
795 main () {
796 #if _LFS64_LARGEFILE == 1
797 exit(0);
798 #else
799 exit(1);
800 #endif
801 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
802         CPPFLAGS="$old_CPPFLAGS"
803         if test x$GLIBC_LFS_SUPPORT = xyes ; then
804           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
805                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
806           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
807         fi
808       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
809     ;;
811 esac
813 AC_INLINE
814 AC_HEADER_STDC
815 AC_HEADER_DIRENT
816 AC_HEADER_TIME
817 AC_HEADER_SYS_WAIT
818 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)
819 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h alloca.h)
820 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
821 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
822 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
823 AC_CHECK_HEADERS(sys/un.h)
824 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
825 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
826 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
827 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
828 AC_CHECK_HEADERS(langinfo.h locale.h)
830 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
831 #if HAVE_RPC_RPC_H
832 #include <rpc/rpc.h>
833 #endif
836 ## These fail to compile on IRIX so just check for their presence
837 AC_CHECK_HEADERS(sys/mode.h,,,)
839 # Look for Darwin headers
840 old_CPPFLAGS="$CPPFLAGS"
841 CPPFLAGS="-Iinclude $CPPFLAGS"
842 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
843 CPPFLAGS="$old_CPPFLAGS"
845 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
846 # subdirectory of headers.
847 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
849 # check for linux on amd64 since valgrind is not quite there yet
850 case "$host_os" in
851         *linux*)
852                 case "$UNAME_P" in
853                         *x86_64*)
854                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
855                                 ;;
856                 esac
857                 ;;
858 esac
862 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
863 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
865 case "$host_os" in
866     *hpux*)
867                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
868                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
869                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
870                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
871                 fi
872         ;;
873 esac
874 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
875 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
876 AC_CHECK_HEADERS(stropts.h poll.h)
877 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
878 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h sys/proplist.h)
879 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
881 AC_CHECK_HEADERS(netinet/ip.h,,,[[
882 #include <sys/types.h>
883 #if HAVE_SYS_SOCKET_H
884 #include <sys/socket.h>
885 #endif
886 #include <netinet/in.h>
887 #if HAVE_NETINET_IN_SYSTM_H
888 #include <netinet/in_systm.h>
889 #endif
892 AC_CHECK_HEADERS(net/if.h,,,[[
893 #include <sys/types.h>
894 #if HAVE_SYS_SOCKET_H
895 #include <sys/socket.h>
896 #endif
899 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
900 #if HAVE_SECURITY_PAM_APPL_H
901 #include <security/pam_appl.h>
902 #endif
905 # For experimental utmp support (lastlog on some BSD-like systems)
906 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
908 AC_CHECK_SIZEOF(int,cross)
909 AC_CHECK_SIZEOF(long,cross)
910 AC_CHECK_SIZEOF(short,cross)
912 AC_C_CONST
913 AC_C_INLINE
914 AC_C_BIGENDIAN
915 AC_C_CHAR_UNSIGNED
917 AC_TYPE_SIGNAL
918 AC_TYPE_UID_T
919 AC_TYPE_MODE_T
920 AC_TYPE_OFF_T
921 AC_TYPE_SIZE_T
922 AC_TYPE_PID_T
923 AC_STRUCT_ST_RDEV
924 AC_DIRENT_D_OFF
925 AC_CHECK_TYPE(ino_t,unsigned)
926 AC_CHECK_TYPE(loff_t,off_t)
927 AC_CHECK_TYPE(offset_t,loff_t)
928 AC_CHECK_TYPE(ssize_t, int)
929 AC_CHECK_TYPE(wchar_t, unsigned short)
931 ############################################
932 # for cups support we need libcups, and a handful of header files
934 AC_ARG_ENABLE(cups,
935 [  --enable-cups           Turn on CUPS support (default=auto)])
937 if test x$enable_cups != xno; then
938         AC_PATH_PROG(CUPS_CONFIG, cups-config)
940         if test "x$CUPS_CONFIG" != x; then
941                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
942                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
943                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
944                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
945         elif test x"$enable_cups" = x"yes"; then
946                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
947         fi
950 AC_ARG_ENABLE(iprint,
951 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
953 if test x$enable_iprint != xno; then
954         if test "x$CUPS_CONFIG" != x; then
955                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
956         elif test x"$enable_iprint" = x"yes"; then
957                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
958         fi
961 ############################################
962 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
963 AC_SEARCH_LIBS(dlopen, [dl])
964 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
966 ############################################
967 # check if the compiler can do immediate structures
968 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
969     AC_TRY_COMPILE([
970 #include <stdio.h>],
972    typedef struct {unsigned x;} FOOBAR;
973    #define X_FOOBAR(x) ((FOOBAR) { x })
974    #define FOO_ONE X_FOOBAR(1)
975    FOOBAR f = FOO_ONE;   
976    static struct {
977         FOOBAR y; 
978         } f2[] = {
979                 {FOO_ONE}
980         };   
982         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
983 if test x"$samba_cv_immediate_structures" = x"yes"; then
984    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
987 ############################################
988 # check if the compiler can do immediate structures
989 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
990     AC_TRY_LINK([
991 #include <stdio.h>],
993                 if (0) {
994                    this_function_does_not_exist();
995                 } else {
996                   return 1;
997                 }
1000         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1001 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1002    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1005 ############################################
1006 # check for unix domain sockets
1007 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1008     AC_TRY_COMPILE([
1009 #include <sys/types.h>
1010 #include <stdlib.h>
1011 #include <stddef.h>
1012 #include <sys/socket.h>
1013 #include <sys/un.h>],
1015   struct sockaddr_un sunaddr; 
1016   sunaddr.sun_family = AF_UNIX;
1018         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1019 if test x"$samba_cv_unixsocket" = x"yes"; then
1020    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1024 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1025     AC_TRY_COMPILE([
1026 #include <sys/types.h>
1027 #if STDC_HEADERS
1028 #include <stdlib.h>
1029 #include <stddef.h>
1030 #endif
1031 #include <sys/socket.h>],[socklen_t i = 0],
1032         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1033 if test x"$samba_cv_socklen_t" = x"yes"; then
1034    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1037 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1038     AC_TRY_COMPILE([
1039 #include <sys/types.h>
1040 #if STDC_HEADERS
1041 #include <stdlib.h>
1042 #include <stddef.h>
1043 #endif
1044 #include <signal.h>],[sig_atomic_t i = 0],
1045         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1046 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1047    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1050 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1051     AC_TRY_COMPILE([
1052 #include <sys/types.h>
1053 #if STDC_HEADERS
1054 #include <stdlib.h>
1055 #include <stddef.h>
1056 #endif
1057 #if TIME_WITH_SYS_TIME
1058 # include <sys/time.h>
1059 # include <time.h>
1060 #else
1061 # if HAVE_SYS_TIME_H
1062 #  include <sys/time.h>
1063 # else
1064 #  include <time.h>
1065 # endif
1066 #endif
1067 #if HAVE_AIO_H
1068 #include <aio.h>
1069 #endif
1070 ],[struct timespec ts;],
1071         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1072 if test x"$samba_cv_struct_timespec" = x"yes"; then
1073    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1076 # stupid headers have the functions but no declaration. grrrr.
1077 AC_HAVE_DECL(errno, [#include <errno.h>])
1078 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1079 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1080 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1081 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1082 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1083 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1085 # and glibc has setresuid under linux but the function does
1086 # nothing until kernel 2.1.44! very dumb.
1087 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1088     AC_TRY_RUN([#include <errno.h>
1089 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1090         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1091 if test x"$samba_cv_have_setresuid" = x"yes"; then
1092     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1095 # Do the same check for setresguid...
1097 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1098     AC_TRY_RUN([#include <unistd.h>
1099 #include <errno.h>
1100 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1101         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1102 if test x"$samba_cv_have_setresgid" = x"yes"; then
1103     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1106 AC_FUNC_MEMCMP
1108 ###############################################
1109 # Readline included by default unless explicitly asked not to
1110 test "${with_readline+set}" != "set" && with_readline=yes
1112 # test for where we get readline() from
1113 AC_MSG_CHECKING(whether to use readline)
1114 AC_ARG_WITH(readline,
1115 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1116 [  case "$with_readline" in
1117   yes)
1118     AC_MSG_RESULT(yes)
1120     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1121     AC_CHECK_HEADERS(readline/history.h)
1123     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1124       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1125        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1126       done
1127       AC_CHECK_LIB(readline, rl_callback_handler_install,
1128        [TERMLIBS="-lreadline $TERMLIBS"
1129        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1130        break], [TERMLIBS=], $TERMLIBS)])
1131     ;;
1132   no)
1133     AC_MSG_RESULT(no)
1134     ;;
1135   *)
1136     AC_MSG_RESULT(yes)
1138     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1139     # alternate readline path
1140     _ldflags=${LDFLAGS}
1141     _cppflags=${CPPFLAGS}
1143     # Add additional search path
1144     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1145     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1147     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1148     AC_CHECK_HEADERS(readline/history.h)
1150     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1151       for termlib in ncurses curses termcap terminfo termlib; do
1152        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1153       done
1154       AC_CHECK_LIB(readline, rl_callback_handler_install,
1155        [TERMLDFLAGS="-L$with_readline/lib"
1156        TERMCPPFLAGS="-I$with_readline/include"
1157        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1158        TERMLIBS="-lreadline $TERMLIBS"
1159        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1160        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1162     LDFLAGS=$_ldflags
1163     ;;
1164   esac],
1165   AC_MSG_RESULT(no)
1167 AC_SUBST(TERMLIBS)
1168 AC_SUBST(TERMLDFLAGS)
1170 # The readline API changed slightly from readline3 to readline4, so
1171 # code will generate warnings on one of them unless we have a few
1172 # special cases.
1173 AC_CHECK_LIB(readline, rl_completion_matches,
1174              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1175                         [Do we have rl_completion_matches?])],
1176              [],
1177              [$TERMLIBS])
1179 # The following test taken from the cvs sources
1180 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1181 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1182 # libsocket.so which has a bad implementation of gethostbyname (it
1183 # only looks in /etc/hosts), so we only look for -lsocket if we need
1184 # it.
1185 AC_CHECK_FUNCS(connect)
1186 if test x"$ac_cv_func_connect" = x"no"; then
1187     case "$LIBS" in
1188     *-lnsl*) ;;
1189     *) AC_CHECK_LIB(nsl_s, connect) ;;
1190     esac
1191     case "$LIBS" in
1192     *-lnsl*) ;;
1193     *) AC_CHECK_LIB(nsl, connect) ;;
1194     esac
1195     case "$LIBS" in
1196     *-lsocket*) ;;
1197     *) AC_CHECK_LIB(socket, connect) ;;
1198     esac
1199     case "$LIBS" in
1200     *-linet*) ;;
1201     *) AC_CHECK_LIB(inet, connect) ;;
1202     esac
1203     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1204     dnl has been cached.
1205     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1206        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1207         # ac_cv_func_connect=yes
1208         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1209         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1210     fi
1213 ###############################################
1214 # test for where we get yp_get_default_domain() from
1215 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1216 AC_CHECK_FUNCS(yp_get_default_domain)
1218 # Check if we have execl, if not we need to compile smbrun.
1219 AC_CHECK_FUNCS(execl)
1220 if test x"$ac_cv_func_execl" = x"no"; then
1221     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1224 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1225 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1226 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1227 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1228 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1229 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1230 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1231 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1232 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1233 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1234 AC_CHECK_FUNCS(syslog vsyslog timegm)
1235 AC_CHECK_FUNCS(setlocale nl_langinfo)
1236 AC_CHECK_FUNCS(nanosleep)
1237 # setbuffer, shmget, shm_open are needed for smbtorture
1238 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1239 AC_CHECK_HEADERS(libexc.h)
1240 AC_CHECK_LIB(exc, trace_back_stack)
1242 # syscall() is needed for smbwrapper.
1243 AC_CHECK_FUNCS(syscall)
1245 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1246 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1247 AC_CHECK_FUNCS(__getcwd _getcwd)
1248 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1249 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1250 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1251 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1252 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1253 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1254 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1255 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1256 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1257 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1258 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1259 AC_CHECK_FUNCS(prctl)
1261 AC_TRY_COMPILE([
1262 #ifdef HAVE_SYS_PRCTL_H
1263 #include <sys/prctl.h>
1264 #endif
1266 [int i; i = prtcl(0); ],
1267 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1272 case "$host_os" in
1273     *linux*)
1274        # glibc <= 2.3.2 has a broken getgrouplist
1275        AC_TRY_RUN([
1276 #include <unistd.h>
1277 #include <sys/utsname.h>
1278 main() {
1279        /* glibc up to 2.3 has a broken getgrouplist */
1280 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1281        int libc_major = __GLIBC__;
1282        int libc_minor = __GLIBC_MINOR__;
1284        if (libc_major < 2)
1285               exit(1);
1286        if ((libc_major == 2) && (libc_minor <= 3))
1287               exit(1);
1288 #endif
1289        exit(0);
1291 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1292        if test x"$linux_getgrouplist_ok" = x"yes"; then
1293           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1294        fi
1295        ;;
1296     *)
1297        AC_CHECK_FUNCS(getgrouplist)
1298        ;;
1299 esac
1302 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1305 if test x$ac_cv_func_stat64 = xno ; then
1306   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1307   AC_TRY_LINK([
1308 #if defined(HAVE_UNISTD_H)
1309 #include <unistd.h>
1310 #endif
1311 #include <sys/stat.h>
1312 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1313   AC_MSG_RESULT([$ac_cv_func_stat64])
1314   if test x$ac_cv_func_stat64 = xyes ; then
1315     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1316   fi
1319 if test x$ac_cv_func_lstat64 = xno ; then
1320   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1321   AC_TRY_LINK([
1322 #if defined(HAVE_UNISTD_H)
1323 #include <unistd.h>
1324 #endif
1325 #include <sys/stat.h>
1326 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1327   AC_MSG_RESULT([$ac_cv_func_lstat64])
1328   if test x$ac_cv_func_lstat64 = xyes ; then
1329     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1330   fi
1333 if test x$ac_cv_func_fstat64 = xno ; then
1334   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1335   AC_TRY_LINK([
1336 #if defined(HAVE_UNISTD_H)
1337 #include <unistd.h>
1338 #endif
1339 #include <sys/stat.h>
1340 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1341   AC_MSG_RESULT([$ac_cv_func_fstat64])
1342   if test x$ac_cv_func_fstat64 = xyes ; then
1343     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1344   fi
1347 #################################################
1348 # Check whether struct stat has timestamps with sub-second resolution.
1349 # At least IRIX and Solaris have these.
1351 # We check that 
1352 #       all of st_mtim, st_atim and st_ctim exist
1353 #       all of the members are in fact of type struct timespec
1355 # There is some conflicting standards weirdness about whether we should use
1356 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1357 # prefer struct timespec.
1359 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1360     [
1361         AC_TRY_COMPILE(
1362             [
1363 #if TIME_WITH_SYS_TIME
1364 # include <sys/time.h>
1365 # include <time.h>
1366 #else
1367 # if HAVE_SYS_TIME_H
1368 #  include <sys/time.h>
1369 # else
1370 #  include <time.h>
1371 # endif
1372 #endif
1373 #ifdef HAVE_SYS_STAT_H
1374 #include <sys/stat.h>
1375 #endif
1376             ],
1377             [
1378                 struct timespec t;
1379                 struct stat s = {0};
1380                 t.tv_sec = s.st_mtim.tv_sec;
1381                 t.tv_nsec = s.st_mtim.tv_nsec;
1382                 t.tv_sec = s.st_ctim.tv_sec;
1383                 t.tv_nsec = s.st_ctim.tv_nsec;
1384                 t.tv_sec = s.st_atim.tv_sec;
1385                 t.tv_nsec = s.st_atim.tv_nsec;
1386             ],
1387             samba_stat_hires=yes, samba_stat_hires=no)
1388     ])
1390 if test x"$samba_stat_hires" = x"yes" ; then
1391     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1392     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1393     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1394     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1395             [whether struct stat has sub-second timestamps])
1398 #####################################
1399 # we might need the resolv library on some systems
1400 AC_CHECK_LIB(resolv, dn_expand)
1403 # Check for the functions putprpwnam, set_auth_parameters,
1404 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1405 # Needed for OSF1 and HPUX.
1408 AC_LIBTESTFUNC(security, putprpwnam)
1409 AC_LIBTESTFUNC(sec, putprpwnam)
1411 AC_LIBTESTFUNC(security, set_auth_parameters)
1412 AC_LIBTESTFUNC(sec, set_auth_parameters)
1414 # UnixWare 7.x has its getspnam in -lgen
1415 AC_LIBTESTFUNC(gen, getspnam)
1417 AC_LIBTESTFUNC(security, getspnam)
1418 AC_LIBTESTFUNC(sec, getspnam)
1420 AC_LIBTESTFUNC(security, bigcrypt)
1421 AC_LIBTESTFUNC(sec, bigcrypt)
1423 AC_LIBTESTFUNC(security, getprpwnam)
1424 AC_LIBTESTFUNC(sec, getprpwnam)
1426 ############################################
1427 # Check if we have libattr
1428 case "$host_os" in
1429   *osf*)
1430         AC_SEARCH_LIBS(getproplist, [proplist])
1431         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1432         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1433         AC_CHECK_FUNCS(sizeof_proplist_entry)
1434   ;;
1435   *)
1436         AC_SEARCH_LIBS(getxattr, [attr])
1437         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1438         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1439         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1440         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1441         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1442   ;;
1443 esac
1445 # Check if we have extattr
1446 case "$host_os" in
1447   *freebsd4* | *dragonfly* )
1448     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1449     ;;
1450   *)
1451     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1452     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1453     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1454     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1455     ;;
1456 esac
1458 # Assume non-shared by default and override below
1459 BLDSHARED="false"
1461 # these are the defaults, good for lots of systems
1462 HOST_OS="$host_os"
1463 LDSHFLAGS="-shared"
1464 SONAMEFLAG="#"
1465 SONAMEVERSIONSUFFIX=""
1466 SHLD="\${CC} \${CFLAGS}"
1467 PICFLAGS=""
1468 PICSUFFIX="po"
1469 SHLIBEXT="so"
1471 if test "$enable_shared" = "yes"; then
1472   # this bit needs to be modified for each OS that is suported by
1473   # smbwrapper. You need to specify how to create a shared library and
1474   # how to compile C code to produce PIC object files
1476   AC_MSG_CHECKING([ability to build shared libraries])
1478   # and these are for particular systems
1479   case "$host_os" in
1480                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1481                         BLDSHARED="true"
1482                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1483                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1484                         else
1485                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1486                         fi
1487                         DYNEXP="-Wl,--export-dynamic"
1488                         PICFLAGS="-fPIC"
1489                         SONAMEFLAG="-Wl,-soname="
1490                         SONAMEVERSIONSUFFIX=".2"
1491                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1492                         ;;
1493                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1494                         BLDSHARED="true"
1495                         LDSHFLAGS="-G"
1496                         SONAMEFLAG="-h "
1497                         if test "${GCC}" = "yes"; then
1498                                 PICFLAGS="-fPIC"
1499                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1500                                         DYNEXP="-Wl,-E"
1501                                 fi
1502                         else
1503                                 PICFLAGS="-KPIC"
1504                                 ## ${CFLAGS} added for building 64-bit shared 
1505                                 ## libs using Sun's Compiler
1506                                 LDSHFLAGS="-G \${CFLAGS}"
1507                                 PICSUFFIX="po.o"
1508                         fi
1509                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1510                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1511                         ;;
1512                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1513                         BLDSHARED="true"
1514                         LDSHFLAGS="-G"
1515                         SONAMEFLAG="-Wl,-h,"
1516                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1517                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1518                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1519                         ;;
1520                 *netbsd* | *freebsd* | *dragonfly* )  
1521                         BLDSHARED="true"
1522                         LDSHFLAGS="-shared"
1523                         DYNEXP="-Wl,--export-dynamic"
1524                         SONAMEFLAG="-Wl,-soname,"
1525                         PICFLAGS="-fPIC -DPIC"
1526                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1527                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1528                         ;;
1529                 *openbsd*)  BLDSHARED="true"
1530                         LDSHFLAGS="-shared"
1531                         DYNEXP="-Wl,-Bdynamic"
1532                         SONAMEFLAG="-Wl,-soname,"
1533                         PICFLAGS="-fPIC"
1534                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1535                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1536                         ;;
1537                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1538                         case "$host_os" in
1539                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1540                         ;;
1541                         esac
1542                         BLDSHARED="true"
1543                         LDSHFLAGS="-set_version sgi1.0 -shared"
1544                         SONAMEFLAG="-soname "
1545                         SHLD="\${LD}"
1546                         if test "${GCC}" = "yes"; then
1547                                 PICFLAGS="-fPIC"
1548                         else 
1549                                 PICFLAGS="-KPIC"
1550                         fi
1551                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1552                         ;;
1553                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1554                         BLDSHARED="true"
1555                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1556                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1557                         PICFLAGS="-O2"
1558                         if test "${GCC}" != "yes"; then
1559                                 ## for funky AIX compiler using strncpy()
1560                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1561                         fi
1563                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1564                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1565                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1566                         ;;
1567                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1568                         # Use special PIC flags for the native HP-UX compiler.
1569                         if test $ac_cv_prog_cc_Ae = yes; then
1570                                 BLDSHARED="true"
1571                                 SHLD="cc"
1572                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1573                                 SONAMEFLAG="-Wl,+h "
1574                                 PICFLAGS="+z"
1575                         elif test "${GCC}" = "yes"; then
1576                                 PICFLAGS="-fPIC"
1577                         fi
1578                         if test "$host_cpu" = "ia64"; then
1579                                 SHLIBEXT="so"
1580                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1581                         else
1582                                 SHLIBEXT="sl"
1583                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1584                         fi
1585                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1586                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1587                         ;;
1588                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1589                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1590                         ;;
1591                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1592                         BLDSHARED="true"
1593                         LDSHFLAGS="-shared"
1594                         SONAMEFLAG="-Wl,-soname,"
1595                         PICFLAGS="-fPIC"
1596                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1597                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1598                         ;;
1599                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1600                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1601                         ;;
1602                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1603                         BLDSHARED="true"
1604                         LDSHFLAGS="-shared"
1605                         SONAMEFLAG="-Wl,-soname,"
1606                         PICFLAGS="-KPIC"
1607                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1608                         ;;
1609                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1610                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1611                         ;;
1612                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1613                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1614                         ;;
1615                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1616                         case "$host" in
1617                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1618                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1619                                         fi
1620                                         LDSHFLAGS="-G"
1621                                         DYNEXP="-Bexport"
1622                                 ;;
1623                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1624                         esac
1625                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1626                         ;;
1628                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1629                         if [ test "$GCC" != yes ]; then
1630                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1631                         fi
1632                         LDSHFLAGS="-G"
1633                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1634                         ;;
1635                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1636                         BLDSHARED="false"
1637                         LDSHFLAGS=""
1638                         ;;
1640                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1641                         BLDSHARED="true"
1642                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1643                         SHLIBEXT="dylib"
1644                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1645                         ;;
1647                 *)
1648                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1649                         ;;
1650   esac
1651   AC_SUBST(DYNEXP)
1652   AC_MSG_RESULT($BLDSHARED)
1653   AC_MSG_CHECKING([linker flags for shared libraries])
1654   AC_MSG_RESULT([$LDSHFLAGS])
1655   AC_MSG_CHECKING([compiler flags for position-independent code])
1656   AC_MSG_RESULT([$PICFLAGS])
1659 #######################################################
1660 # test whether building a shared library actually works
1661 if test $BLDSHARED = true; then
1662 AC_CACHE_CHECK([whether building shared libraries actually works], 
1663                [ac_cv_shlib_works],[
1664    # try building a trivial shared library
1665    ac_cv_shlib_works=no
1666    # The $SHLD and $LDSHFLAGS variables may contain references to other
1667    # variables so they need to be eval'ed.
1668    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1669         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1670    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1671         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1672    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1674 if test $ac_cv_shlib_works = no; then
1675    BLDSHARED=false
1679 ################
1681 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1682 AC_TRY_RUN([#include <stdio.h>
1683 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1684 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1685 if test x"$samba_cv_have_longlong" = x"yes"; then
1686     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1690 # Check if the compiler supports the LL prefix on long long integers.
1691 # AIX needs this.
1693 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1694     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1695         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1696 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1697    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1700   
1701 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1702 AC_TRY_RUN([#include <stdio.h>
1703 #include <sys/stat.h>
1704 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1705 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1706 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1707     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1710 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1711 AC_TRY_RUN([
1712 #if defined(HAVE_UNISTD_H)
1713 #include <unistd.h>
1714 #endif
1715 #include <stdio.h>
1716 #include <sys/stat.h>
1717 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1718 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1719 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1720     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1723 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1724 AC_TRY_RUN([
1725 #if defined(HAVE_UNISTD_H)
1726 #include <unistd.h>
1727 #endif
1728 #include <stdio.h>
1729 #include <sys/stat.h>
1730 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1731 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1732 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1733     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1736 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1737 AC_TRY_RUN([
1738 #if defined(HAVE_UNISTD_H)
1739 #include <unistd.h>
1740 #endif
1741 #include <stdio.h>
1742 #include <sys/stat.h>
1743 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1744 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1745 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1746     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1749 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1750 AC_TRY_RUN([
1751 #if defined(HAVE_UNISTD_H)
1752 #include <unistd.h>
1753 #endif
1754 #include <stdio.h>
1755 #include <sys/stat.h>
1756 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1757 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1758 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1759     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1762 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1763 AC_TRY_RUN([
1764 #if defined(HAVE_UNISTD_H)
1765 #include <unistd.h>
1766 #endif
1767 #include <stdio.h>
1768 #include <sys/stat.h>
1769 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1770 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1771 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1772     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1775 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1776 AC_TRY_COMPILE([
1777 #if defined(HAVE_UNISTD_H)
1778 #include <unistd.h>
1779 #endif
1780 #include <sys/types.h>
1781 #include <dirent.h>],
1782 [DIR64 de;],
1783 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1784 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1785     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1788 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1789 AC_TRY_COMPILE([
1790 #if defined(HAVE_UNISTD_H)
1791 #include <unistd.h>
1792 #endif
1793 #include <sys/types.h>
1794 #include <dirent.h>],
1795 [struct dirent64 de;],
1796 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1797 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1798     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1801 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1802 AC_TRY_RUN([
1803 #if defined(HAVE_UNISTD_H)
1804 #include <unistd.h>
1805 #endif
1806 #include <sys/types.h>
1807 main() { dev_t dev; int i = major(dev); return 0; }],
1808 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1809 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1810     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1813 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1814 AC_TRY_RUN([
1815 #if defined(HAVE_UNISTD_H)
1816 #include <unistd.h>
1817 #endif
1818 #include <sys/types.h>
1819 main() { dev_t dev; int i = minor(dev); return 0; }],
1820 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1821 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1822     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1825 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1826 AC_TRY_RUN([
1827 #if defined(HAVE_UNISTD_H)
1828 #include <unistd.h>
1829 #endif
1830 #include <sys/types.h>
1831 main() { dev_t dev = makedev(1,2); return 0; }],
1832 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1833 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1834     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1837 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1838 AC_TRY_RUN([#include <stdio.h>
1839 main() { char c; c=250; exit((c > 0)?0:1); }],
1840 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1841 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1842     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1845 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1846 AC_TRY_COMPILE([#include <sys/types.h>
1847 #include <sys/socket.h>
1848 #include <netinet/in.h>],
1849 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1850 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1851 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1852     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1855 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1856 AC_TRY_COMPILE([#include <sys/types.h>
1857 #include <dirent.h>
1858 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1859 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1860 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1861     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1864 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1865 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1866 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1867 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1868     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1871 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1872 AC_TRY_RUN([
1873 #include <sys/time.h>
1874 #include <unistd.h>
1875 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1876            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1877 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1878     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1881 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1882 AC_TRY_LINK([#include <stdarg.h>
1883 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1884 samba_cv_HAVE_VA_COPY=yes,
1885 samba_cv_HAVE_VA_COPY=no)])
1886 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1887     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1888 else
1889     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1890     AC_TRY_LINK([#include <stdarg.h>
1891     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1892     samba_cv_HAVE___VA_COPY=yes,
1893     samba_cv_HAVE___VA_COPY=no)])
1894     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1895         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1896     fi
1899 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1900 AC_TRY_RUN([
1901 #include <sys/types.h>
1902 #include <stdarg.h>
1903 void foo(const char *format, ...) { 
1904        va_list ap;
1905        int len;
1906        char buf[5];
1908        va_start(ap, format);
1909        len = vsnprintf(buf, 0, format, ap);
1910        va_end(ap);
1911        if (len != 5) exit(1);
1913        va_start(ap, format);
1914        len = vsnprintf(0, 0, format, ap);
1915        va_end(ap);
1916        if (len != 5) exit(1);
1918        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1920        exit(0);
1922 main() { foo("hello"); }
1924 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1925 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1926     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1929 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1930 AC_TRY_RUN([#include <sys/types.h>
1931 #include <dirent.h>
1932 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1933 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1934 di->d_name[0] == 0) exit(0); exit(1);} ],
1935 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1936 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1937     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1940 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1941 AC_TRY_COMPILE([#include <sys/types.h>
1942 #include <utime.h>],
1943 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1944 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1945 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1946     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1949 ##############
1950 # Check utmp details, but only if our OS offers utmp.h
1951 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1952 dnl  utmp and utmpx come in many flavours
1953 dnl  We need to check for many of them
1954 dnl  But we don't need to do each and every one, because our code uses
1955 dnl  mostly just the utmp (not utmpx) fields.
1957 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1959 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1960 AC_TRY_COMPILE([#include <sys/types.h>
1961 #include <utmp.h>],
1962 [struct utmp ut;  ut.ut_name[0] = 'a';],
1963 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1964 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1965     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1966 fi 
1968 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1969 AC_TRY_COMPILE([#include <sys/types.h>
1970 #include <utmp.h>],
1971 [struct utmp ut;  ut.ut_user[0] = 'a';],
1972 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1973 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1974     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1975 fi 
1977 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1978 AC_TRY_COMPILE([#include <sys/types.h>
1979 #include <utmp.h>],
1980 [struct utmp ut;  ut.ut_id[0] = 'a';],
1981 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1982 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1983     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1984 fi 
1986 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1987 AC_TRY_COMPILE([#include <sys/types.h>
1988 #include <utmp.h>],
1989 [struct utmp ut;  ut.ut_host[0] = 'a';],
1990 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1991 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1992     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1993 fi 
1995 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1996 AC_TRY_COMPILE([#include <sys/types.h>
1997 #include <utmp.h>],
1998 [struct utmp ut;  time_t t; ut.ut_time = t;],
1999 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2000 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2001     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2002 fi 
2004 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2005 AC_TRY_COMPILE([#include <sys/types.h>
2006 #include <utmp.h>],
2007 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2008 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2009 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2010     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2011 fi 
2013 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2014 AC_TRY_COMPILE([#include <sys/types.h>
2015 #include <utmp.h>],
2016 [struct utmp ut;  ut.ut_type = 0;],
2017 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2018 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2019     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2020 fi 
2022 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2023 AC_TRY_COMPILE([#include <sys/types.h>
2024 #include <utmp.h>],
2025 [struct utmp ut;  ut.ut_pid = 0;],
2026 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2027 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2028     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2029 fi 
2031 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2032 AC_TRY_COMPILE([#include <sys/types.h>
2033 #include <utmp.h>],
2034 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2035 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2036 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2037     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2038 fi 
2040 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2041 AC_TRY_COMPILE([#include <sys/types.h>
2042 #include <utmp.h>],
2043 [struct utmp ut;  ut.ut_addr = 0;],
2044 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2045 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2046     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2047 fi 
2049 if test x$ac_cv_func_pututline = xyes ; then
2050   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2051   AC_TRY_COMPILE([#include <sys/types.h>
2052 #include <utmp.h>],
2053   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2054   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2055   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2056       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2057   fi
2060 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2061 AC_TRY_COMPILE([#include <sys/types.h>
2062 #include <utmpx.h>],
2063 [struct utmpx ux;  ux.ut_syslen = 0;],
2064 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2065 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2066     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2067 fi 
2070 # end utmp details
2073 ICONV_LOCATION=standard
2074 LOOK_DIRS="/usr /usr/local /sw /opt"
2075 AC_ARG_WITH(libiconv,
2076 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2078   if test "$withval" = "no" ; then
2079     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2080   else
2081      if test "$withval" != "yes" ; then
2082         ICONV_PATH_SPEC=yes
2083         LOOK_DIRS="$withval"
2084      fi
2085   fi
2088 for i in $LOOK_DIRS ; do
2089     save_LIBS=$LIBS
2090     save_LDFLAGS=$LDFLAGS
2091     save_CPPFLAGS=$CPPFLAGS
2092     ICONV_FOUND="no"
2093     unset libext
2094     CPPFLAGS="$CPPFLAGS -I$i/include"
2095 dnl This is here to handle -withval stuff for --with-libiconv
2096 dnl Perhaps we should always add a -L
2098 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2099 dnl installation paths. This gets a little tricky since we might have iconv
2100 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2101 dnl succeed when the header is found. To counter this, make sure the 
2102 dnl library directory is there and check the ABI directory first (which
2103 dnl should be harmless on other systems.
2104 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2105     for l in "lib32" "lib" "lib/hpux32"; do
2106         if test -d "$i/$l" ; then
2107                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2108         LIBS=
2109         export LDFLAGS LIBS CPPFLAGS
2110 dnl Try to find iconv(3)
2111                 jm_ICONV($i/$l)
2112                 if test x"$ICONV_FOUND" = "xyes" ; then
2113             libext="$l"
2114             break;
2115         fi
2116         fi
2117     done
2119     if test x"$ICONV_FOUND" = "xyes" ; then
2120         LDFLAGS=$save_LDFLAGS
2121         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2122         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2123         LIBS="$save_LIBS"
2124         ICONV_LOCATION=$i
2125         export LDFLAGS LIBS CPPFLAGS
2126 dnl Now, check for a working iconv ... we want to do it here because
2127 dnl there might be a working iconv further down the list of LOOK_DIRS
2129         ############
2130         # check for iconv in libc
2131         ic_save_LIBS="$LIBS"
2132         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2133            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2134         fi
2135         if test x"$jm_cv_lib_iconv" != x; then
2136            LIBS="$LIBS -l$jm_cv_lib_iconv"
2137         fi
2138 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2139         default_dos_charset=no
2140         default_display_charset=no
2141         default_unix_charset=no
2143         # check for default dos charset name
2144         for j in CP850 IBM850 ; do
2145             rjs_CHARSET($j)
2146             if test x"$ICONV_CHARSET" = x"$j"; then
2147                 default_dos_charset="\"$j\""
2148                 break
2149             fi
2150         done
2151         # check for default display charset name
2152         for j in ASCII 646 ; do
2153             rjs_CHARSET($j)
2154             if test x"$ICONV_CHARSET" = x"$j"; then
2155                 default_display_charset="\"$j\""
2156                 break
2157             fi
2158         done
2159         # check for default unix charset name
2160         for j in UTF-8 UTF8 ; do
2161             rjs_CHARSET($j)
2162             if test x"$ICONV_CHARSET" = x"$j"; then
2163                 default_unix_charset="\"$j\""
2164                 break
2165             fi
2166         done
2167         
2168         if test "$default_dos_charset" != "no" -a \
2169                 "$default_dos_charset" != "cross" -a \
2170                 "$default_display_charset" != "no" -a \ 
2171                 "$default_display_charset" != "cross" -a \
2172                 "$default_unix_charset" != "no" -a \
2173                 "$default_unix_charset" != "cross"
2174         then
2175                 samba_cv_HAVE_NATIVE_ICONV=yes
2176         else if test "$default_dos_charset" = "cross" -o \
2177                      "$default_display_charset" = "cross" -o \
2178                      "$default_unix_charset" = "cross"
2179         then
2180                 samba_cv_HAVE_NATIVE_ICONV=cross
2181         else
2182                 samba_cv_HAVE_NATIVE_ICONV=no
2183         fi
2184         fi
2185 dnl ])
2187         LIBS="$ic_save_LIBS"
2188         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2189            CPPFLAGS=$save_CPPFLAGS
2190            LDFLAGS=$save_LDFLAGS
2191            LIBS=$save_LIBS
2192            if test x"$jm_cv_lib_iconv" != x; then
2193               LIBS="$LIBS -l$jm_cv_lib_iconv"
2194            fi
2195            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2196            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2197            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2198            export CPPFLAGS
2199            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2200            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2201            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2202            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2203            break
2204         fi
2205 dnl We didn't find a working iconv, so keep going
2206     fi
2207 dnl We only need to clean these up here for the next pass through the loop
2208     CPPFLAGS=$save_CPPFLAGS
2209     LDFLAGS=$save_LDFLAGS
2210     LIBS=$save_LIBS
2211     export LDFLAGS LIBS CPPFLAGS
2212 done
2213 unset libext
2216 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2217     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2218     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2219    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2220    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2221    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2225 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2226 AC_TRY_RUN([
2227 #include <sys/types.h>
2228 #include <fcntl.h>
2229 #ifndef F_GETLEASE
2230 #define F_GETLEASE      1025
2231 #endif
2232 main() {
2233        int fd = open("/dev/null", O_RDONLY);
2234        return fcntl(fd, F_GETLEASE, 0) == -1;
2237 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2238 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2239     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2242 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2243 AC_TRY_RUN([
2244 #include <sys/types.h>
2245 #include <fcntl.h>
2246 #include <signal.h>
2247 #ifndef F_NOTIFY
2248 #define F_NOTIFY 1026
2249 #endif
2250 main() {
2251         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2254 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2255 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2256     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2259 #################################################
2260 # Check if FAM notifications are available. For FAM info, see
2261 #       http://oss.sgi.com/projects/fam/
2262 #       http://savannah.nongnu.org/projects/fam/
2264 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2265 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2266     # On IRIX, libfam requires libC, but other FAM implementations might not
2267     # need it.
2268     AC_CHECK_LIB(fam, FAMOpen2,
2269             [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2270             [samba_cv_HAVE_LIBFAM=no])
2272     if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2273         samba_fam_xtra=-lC
2274         AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2275                 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2276                 [samba_cv_HAVE_LIBFAM=no])
2277         unset samba_fam_xtra
2278     fi
2281 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2282     AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1,
2283             [Whether FAM is file notifications are available])
2286 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2287 AC_TRY_RUN([
2288 #include <sys/types.h>
2289 #include <fcntl.h>
2290 #include <signal.h>
2291 #include <sys/file.h>
2292 #ifndef LOCK_MAND
2293 #define LOCK_MAND       32
2294 #define LOCK_READ       64
2295 #endif
2296 main() {
2297         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2300 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2301 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2302     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2306 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2307 AC_TRY_COMPILE([#include <sys/types.h>
2308 #include <fcntl.h>],
2309 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2310 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2311 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2312     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2315 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
2316 AC_TRY_RUN([#include <sys/types.h>
2317 #include <sys/capability.h>
2318 main() {
2319  cap_t cap;
2320  if ((cap = cap_get_proc()) == NULL)
2321    exit(1);
2322  cap->cap_effective |= CAP_NETWORK_MGT;
2323  cap->cap_inheritable |= CAP_NETWORK_MGT;
2324  cap_set_proc(cap);
2325  exit(0);
2328 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
2329 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
2330     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
2334 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2335 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2338 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2339 AC_TRY_COMPILE([#include <sys/types.h>
2340 #if defined(HAVE_RPC_RPC_H)
2341 #include <rpc/rpc.h>
2342 #endif],
2343 [int16 testvar;],
2344 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2345 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2346     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2349 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2350 AC_TRY_COMPILE([#include <sys/types.h>
2351 #if defined(HAVE_RPC_RPC_H)
2352 #include <rpc/rpc.h>
2353 #endif],
2354 [uint16 testvar;],
2355 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2356 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2357     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2360 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2361 AC_TRY_COMPILE([#include <sys/types.h>
2362 #if defined(HAVE_RPC_RPC_H)
2363 #include <rpc/rpc.h>
2364 #endif],
2365 [int32 testvar;],
2366 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2367 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2368     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2371 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2372 AC_TRY_COMPILE([#include <sys/types.h>
2373 #if defined(HAVE_RPC_RPC_H)
2374 #include <rpc/rpc.h>
2375 #endif],
2376 [uint32 testvar;],
2377 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2378 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2379     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2383 dnl Some systems (SCO) have a problem including
2384 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2385 dnl as a #define in <prot.h> and as part of an enum
2386 dnl in <rpc/rpc.h>.
2389 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2390 AC_TRY_COMPILE([#include <sys/types.h>
2391 #ifdef HAVE_SYS_SECURITY_H
2392 #include <sys/security.h>
2393 #include <prot.h>
2394 #endif  /* HAVE_SYS_SECURITY_H */
2395 #if defined(HAVE_RPC_RPC_H)
2396 #include <rpc/rpc.h>
2397 #endif],
2398 [int testvar;],
2399 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2400 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2401     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2404 AC_MSG_CHECKING([for test routines])
2405 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2406            AC_MSG_RESULT(yes),
2407            AC_MSG_ERROR([cant find test code. Aborting config]),
2408            AC_MSG_WARN([cannot run when cross-compiling]))
2410 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2411 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2412            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2413 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2414     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2417 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2418 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2419            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2420            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2421            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2422 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2423 then
2424     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2427 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2428 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2429            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2430 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2431     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2434 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2435 SAVE_CPPFLAGS="$CPPFLAGS"
2436 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2437 AC_TRY_COMPILE([
2438 #define REPLACE_GETPASS 1
2439 #define NO_PROTO_H 1
2440 #define NO_CONFIG_H 1
2441 #define main dont_declare_main
2442 #include "${srcdir-.}/lib/getsmbpass.c"
2443 #undef main
2444 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2445 CPPFLAGS="$SAVE_CPPFLAGS"
2447 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2448         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2451 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2452 AC_TRY_RUN([
2453 #include <stdio.h>
2454 #include <sys/types.h>
2455 #include <netinet/in.h>
2456 #ifdef HAVE_ARPA_INET_H
2457 #include <arpa/inet.h>
2458 #endif
2459 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2460 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2461     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2462 exit(1);}],
2463            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2464 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2465     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2468 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2469 AC_TRY_RUN([#include <stdlib.h>
2470 #include <sys/types.h>
2471 #include <sys/stat.h>
2472 #include <unistd.h>
2473 main() { 
2474   struct stat st;
2475   char tpl[20]="/tmp/test.XXXXXX"; 
2476   int fd = mkstemp(tpl); 
2477   if (fd == -1) exit(1);
2478   unlink(tpl);
2479   if (fstat(fd, &st) != 0) exit(1);
2480   if ((st.st_mode & 0777) != 0600) exit(1);
2481   exit(0);
2483 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2484 samba_cv_HAVE_SECURE_MKSTEMP=no,
2485 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2486 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2487     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2490 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2491 AC_TRY_RUN([#include <unistd.h>
2492 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2493 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2494 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2495     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2498 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2499 AC_TRY_RUN([#include <unistd.h>
2500 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2501 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2502 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2503     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2506 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2507 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2508            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2509 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2510     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2511 else
2512     AC_MSG_WARN(running as non-root will disable some tests)
2515 ##################
2516 # look for a method of finding the list of network interfaces
2517 iface=no;
2518 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2519 AC_TRY_RUN([
2520 #define HAVE_IFACE_AIX 1
2521 #define AUTOCONF_TEST 1
2522 #include "confdefs.h"
2523 #include "${srcdir-.}/lib/interfaces.c"],
2524            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2525 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2526     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2529 if test $iface = no; then
2530 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2531 AC_TRY_RUN([
2532 #define HAVE_IFACE_IFCONF 1
2533 #define AUTOCONF_TEST 1
2534 #include "confdefs.h"
2535 #include "${srcdir-.}/lib/interfaces.c"],
2536            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2537 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2538     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2542 if test $iface = no; then
2543 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2544 AC_TRY_RUN([
2545 #define HAVE_IFACE_IFREQ 1
2546 #define AUTOCONF_TEST 1
2547 #include "confdefs.h"
2548 #include "${srcdir-.}/lib/interfaces.c"],
2549            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2550 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2551     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2556 ################################################
2557 # look for a method of setting the effective uid
2558 seteuid=no;
2559 if test $seteuid = no; then
2560 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2561 AC_TRY_RUN([
2562 #define AUTOCONF_TEST 1
2563 #define USE_SETRESUID 1
2564 #include "confdefs.h"
2565 #include "${srcdir-.}/lib/util_sec.c"],
2566            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2567 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2568     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2573 if test $seteuid = no; then
2574 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2575 AC_TRY_RUN([
2576 #define AUTOCONF_TEST 1
2577 #define USE_SETREUID 1
2578 #include "confdefs.h"
2579 #include "${srcdir-.}/lib/util_sec.c"],
2580            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2581 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2582     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2586 if test $seteuid = no; then
2587 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2588 AC_TRY_RUN([
2589 #define AUTOCONF_TEST 1
2590 #define USE_SETEUID 1
2591 #include "confdefs.h"
2592 #include "${srcdir-.}/lib/util_sec.c"],
2593            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2594 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2595     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2599 if test $seteuid = no; then
2600 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2601 AC_TRY_RUN([
2602 #define AUTOCONF_TEST 1
2603 #define USE_SETUIDX 1
2604 #include "confdefs.h"
2605 #include "${srcdir-.}/lib/util_sec.c"],
2606            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2607 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2608     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2613 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2614 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2615            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2616 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2617     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2620 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2621 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2622            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2623 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2624     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2627 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2628 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2629            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2630 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2631     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2633 else
2636 dnl Don't check for 64 bit fcntl locking if we know that the
2637 dnl glibc2.1 broken check has succeeded.
2638 dnl 
2640   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2641   AC_TRY_RUN([
2642 #if defined(HAVE_UNISTD_H)
2643 #include <unistd.h>
2644 #endif
2645 #include <stdio.h>
2646 #include <stdlib.h>
2648 #ifdef HAVE_FCNTL_H
2649 #include <fcntl.h>
2650 #endif
2652 #ifdef HAVE_SYS_FCNTL_H
2653 #include <sys/fcntl.h>
2654 #endif
2655 main() { struct flock64 fl64;
2656 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2657 exit(0);
2658 #else
2659 exit(1);
2660 #endif
2662        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2664   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2665       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2666   fi
2669 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2670 AC_TRY_COMPILE([#include <sys/types.h>
2671 #include <sys/stat.h>
2672 #include <unistd.h>],
2673 [struct stat st;  st.st_blocks = 0;],
2674 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2675 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2676     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2677 fi 
2679 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2680 AC_TRY_COMPILE([#include <sys/types.h>
2681 #include <sys/stat.h>
2682 #include <unistd.h>],
2683 [struct stat st;  st.st_blksize = 0;],
2684 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2685 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2686     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2689 case "$host_os" in
2690 *linux*)
2691 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2692 AC_TRY_COMPILE([
2693 #ifdef HAVE_SYS_VFS_H
2694 #include <sys/vfs.h>
2695 #endif
2696 #ifdef HAVE_SYS_CAPABILITY_H
2697 #include <sys/capability.h>
2698 #endif
2699 ],[int i;],
2700    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2701 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2702    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2705 esac
2707 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2708 AC_TRY_COMPILE([
2709 #include <sys/types.h>
2710 #include <sys/acl.h>
2711 #if defined(HAVE_RPCSVC_NIS_H)
2712 #include <rpcsvc/nis.h>
2713 #endif],
2714 [int i;],
2715 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2716 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2717         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2720 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2721 AC_TRY_RUN([
2722 #include <stdio.h>
2723 #include <limits.h>
2724 main() {
2725         char *newpath = realpath("/tmp", NULL);
2726         exit ((newpath != NULL) ? 0 : 1);
2729 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2730 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2731     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2734 #################################################
2735 # check for smbwrapper support
2736 AC_MSG_CHECKING(whether to use smbwrapper)
2737 AC_ARG_WITH(smbwrapper,
2738 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2739 [ case "$withval" in
2740   yes)
2741     AC_MSG_RESULT(yes)
2742     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2743         WRAPPROG="bin/smbsh\$(EXEEXT)"
2744         WRAP="bin/smbwrapper.$SHLIBEXT"
2745         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
2746         WRAP_INC="-I\$(srcdir)/smbwrapper"
2748 # Conditions under which smbwrapper should not be built.
2750         if test x$PICFLAGS = x; then
2751            echo No support for PIC code - disabling smbwrapper and smbsh
2752            WRAPPROG=""
2753            WRAP=""
2754            WRAP_OBJS=""
2755            WRAP_INC=""
2756         elif test x$ac_cv_func_syscall = xno; then
2757            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2758            WRAPPROG=""
2759            WRAP=""
2760            WRAP_OBJS=""
2761            WRAP_INC=""
2762         fi
2763         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2764         SMBWRAPPER="$WRAPPROG $WRAP"
2765         SMBWRAP_OBJS="$WRAP_OBJS"
2766         SMBWRAP_INC="$WRAP_INC"
2767     ;;
2768   *)
2769     AC_MSG_RESULT(no)
2770     ;;
2771   esac ],
2772   AC_MSG_RESULT(no)
2775 #################################################
2776 # check for AFS clear-text auth support
2777 samba_cv_WITH_AFS=no
2778 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2779 AC_ARG_WITH(afs,
2780 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2781 [ case "$withval" in
2782   yes|auto)
2783     AC_MSG_RESULT($withval)
2784     samba_cv_WITH_AFS=$withval
2785     ;;
2786   *)
2787     AC_MSG_RESULT(no)
2788     ;;
2789   esac ],
2790   AC_MSG_RESULT(no)
2793 ####################################################
2794 # check for Linux-specific AFS fake-kaserver support
2795 samba_cv_WITH_FAKE_KASERVER=no
2796 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2797 AC_ARG_WITH(fake-kaserver,
2798 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2799 [ case "$withval" in
2800   yes|auto)
2801     AC_MSG_RESULT($withval)
2802     samba_cv_WITH_FAKE_KASERVER=$withval
2803     ;;
2804   *)
2805     AC_MSG_RESULT(no)
2806     ;;
2807   esac ],
2808   AC_MSG_RESULT(no)
2811 #################################################
2812 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2813 if test x"$samba_cv_WITH_AFS" != x"no" ||
2814    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2816     # see if this box has the afs-headers in /usr/include/afs
2817     AC_MSG_CHECKING(for /usr/include/afs)
2818     if test -d /usr/include/afs; then
2819           CFLAGS="$CFLAGS -I/usr/include/afs"
2820           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2821           AC_MSG_RESULT(yes)
2822     else
2823       AC_MSG_RESULT(no)
2824     fi
2825    
2826     # check for afs.h
2827     have_afs_headers=no
2828     AC_CHECK_HEADERS(afs.h afs/afs.h)
2829     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2830         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2831            test x"$samba_cv_WITH_AFS" = x"auto"; then
2832                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2833         else
2834                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2835         fi
2836     else
2837         have_afs_headers=yes
2838     fi
2841 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2842     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2845 #################################################
2846 # check whether to compile AFS/NT ACL mapping module
2847 samba_cv_WITH_VFS_AFSACL=no
2848 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2849 AC_ARG_WITH(vfs-afsacl,
2850 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2851 [ case "$withval" in
2852   yes|auto)
2853     AC_MSG_RESULT($withval)
2854     samba_cv_WITH_VFS_AFSACL=yes
2855     ;;
2856   *)
2857     AC_MSG_RESULT(no)
2858     ;;
2859   esac ],
2860   AC_MSG_RESULT(no)
2863 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2864    default_shared_modules="$default_shared_modules vfs_afsacl"
2866         
2867 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2868     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2871 #################################################
2872 # check for the DFS clear-text auth system
2873 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2874 AC_ARG_WITH(dfs,
2875 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2876 [ case "$withval" in
2877   yes)
2878     AC_MSG_RESULT(yes)
2879     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2880     ;;
2881   *)
2882     AC_MSG_RESULT(no)
2883     ;;
2884   esac ],
2885   AC_MSG_RESULT(no)
2888 ########################################################
2889 # Compile with LDAP support?
2891 with_ldap_support=auto
2892 AC_MSG_CHECKING([for LDAP support])
2894 AC_ARG_WITH(ldap,
2895 [  --with-ldap             LDAP support (default yes)],
2896 [ case "$withval" in
2897     yes|no)
2898         with_ldap_support=$withval
2899         ;;
2900   esac ])
2902 AC_MSG_RESULT($with_ldap_support)
2904 SMBLDAP=""
2905 AC_SUBST(SMBLDAP)
2906 SMBLDAPUTIL=""
2907 AC_SUBST(SMBLDAPUTIL)
2908 if test x"$with_ldap_support" != x"no"; then
2910   ##################################################################
2911   # first test for ldap.h and lber.h
2912   # (ldap.h is required for this test)
2913   AC_CHECK_HEADERS(ldap.h lber.h)
2914   
2915   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2916         if test x"$with_ldap_support" = x"yes"; then
2917          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2918         else
2919          AC_MSG_WARN(ldap.h is needed for LDAP support)
2920         fi
2921         
2922         with_ldap_support=no
2923   fi
2926 if test x"$with_ldap_support" != x"no"; then
2927   ac_save_LIBS=$LIBS
2929   ##################################################################
2930   # we might need the lber lib on some systems. To avoid link errors
2931   # this test must be before the libldap test
2932   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2934   ########################################################
2935   # now see if we can find the ldap libs in standard paths
2936   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2938   ########################################################
2939   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2940   # Check found in pam_ldap 145.
2941   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2943   LIBS="$LIBS $LDAP_LIBS"
2944   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2945     AC_TRY_COMPILE([
2946         #include <lber.h>
2947         #include <ldap.h>], 
2948         [ldap_set_rebind_proc(0, 0, 0);], 
2949         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2950         [smb_ldap_cv_ldap_set_rebind_proc=2]
2951     ) 
2952   ])
2953   
2954   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2956   AC_CHECK_FUNC_EXT(ldap_dn2ad_canonical,$LDAP_LIBS)    
2957   
2958   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
2959     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2960     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
2961     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2962     default_shared_modules="$default_shared_modules";
2963     SMBLDAP="lib/smbldap.o"
2964     SMBLDAPUTIL="lib/smbldap_util.o"
2965     with_ldap_support=yes
2966     AC_MSG_CHECKING(whether LDAP support is used)
2967     AC_MSG_RESULT(yes)
2968   else
2969     if test x"$with_ldap_support" = x"yes"; then
2970         AC_MSG_ERROR(libldap is needed for LDAP support)
2971     else
2972         AC_MSG_WARN(libldap is needed for LDAP support)
2973     fi
2974     
2975     LDAP_LIBS=""
2976     with_ldap_support=no
2977   fi
2978   LIBS=$ac_save_LIBS
2982 #################################################
2983 # active directory support
2985 with_ads_support=auto
2986 AC_MSG_CHECKING([for Active Directory and krb5 support])
2988 AC_ARG_WITH(ads,
2989 [  --with-ads              Active Directory support (default auto)],
2990 [ case "$withval" in
2991     yes|no)
2992         with_ads_support="$withval"
2993         ;;
2994   esac ])
2996 AC_MSG_RESULT($with_ads_support)
2998 FOUND_KRB5=no
2999 KRB5_LIBS=""
3001 if test x"$with_ldap_support" != x"yes"; then
3002     if test x"$with_ads_support" = x"yes"; then
3003         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3004     elif test x"$with_ads_support" != x"no"; then
3005         AC_MSG_WARN(Active Directory Support requires LDAP support)
3006     fi
3007     with_ads_support=no
3010 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3012 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3013     if test x"$with_ads_support" = x"yes"; then
3014         AC_MSG_ERROR(Active Directory Support requires ldap_initialize)
3015     fi
3016     AC_MSG_WARN(Active Directory Support requires ldap_initialize)
3017     with_ads_support=no
3020 AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
3022 if test x"$ac_cv_func_ext_ldap_domain2hostlist" != x"yes"; then
3023     if test x"$with_ads_support" = x"yes"; then
3024         AC_MSG_ERROR(Active Directory Support requires ldap_domain2hostlist)
3025     fi
3026     AC_MSG_WARN(Active Directory Support requires ldap_domain2hostlist)
3027     with_ads_support=no
3030 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3032 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3033     if test x"$with_ads_support" = x"yes"; then
3034         AC_MSG_ERROR(Active Directory Support requires ldap_add_result_entry)
3035     fi
3036     AC_MSG_WARN(Active Directory Support requires ldap_add_result_entry)
3037     with_ads_support=no
3040 if test x"$with_ads_support" != x"no"; then
3042   # Do no harm to the values of CFLAGS and LIBS while testing for
3043   # Kerberos support.
3045   if test x$FOUND_KRB5 = x"no"; then
3046     #################################################
3047     # check for location of Kerberos 5 install
3048     AC_MSG_CHECKING(for kerberos 5 install path)
3049     AC_ARG_WITH(krb5,
3050     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3051     [ case "$withval" in
3052       no)
3053         AC_MSG_RESULT(no krb5-path given)
3054         ;;
3055       yes)
3056         AC_MSG_RESULT(/usr)
3057         FOUND_KRB5=yes
3058         ;;
3059       *)
3060         AC_MSG_RESULT($withval)
3061         KRB5_CFLAGS="-I$withval/include"
3062         KRB5_CPPFLAGS="-I$withval/include"
3063         KRB5_LDFLAGS="-L$withval/lib"
3064         FOUND_KRB5=yes
3065         if test -x "$withval/bin/krb5-config"; then
3066                 KRB5CONFIG=$withval/bin/krb5-config
3067         fi
3068         ;;
3069       esac ],
3070       AC_MSG_RESULT(no krb5-path given)
3071     )
3072   fi
3074   #################################################
3075   # check for krb5-config from recent MIT and Heimdal kerberos 5
3076   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3077   AC_MSG_CHECKING(for working krb5-config)
3078   if test -x "$KRB5CONFIG"; then
3079     ac_save_CFLAGS=$CFLAGS
3080     CFLAGS="";export CFLAGS
3081     ac_save_LDFLAGS=$LDFLAGS
3082     LDFLAGS="";export LDFLAGS
3083     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3084     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3085     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
3086     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3087     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3088     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3089     FOUND_KRB5=yes
3090     AC_MSG_RESULT(yes)
3091   else
3092     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3093   fi
3095   if test x$FOUND_KRB5 = x"no"; then
3096     #################################################
3097     # see if this box has the SuSE location for the heimdal krb implementation
3098     AC_MSG_CHECKING(for /usr/include/heimdal)
3099     if test -d /usr/include/heimdal; then
3100       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3101           KRB5_CFLAGS="-I/usr/include/heimdal"
3102           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3103           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3104           AC_MSG_RESULT(yes)
3105       else
3106           KRB5_CFLAGS="-I/usr/include/heimdal"
3107           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3108           AC_MSG_RESULT(yes)
3109       fi
3110     else
3111       AC_MSG_RESULT(no)
3112     fi
3113   fi
3115   if test x$FOUND_KRB5 = x"no"; then
3116     #################################################
3117     # see if this box has the RedHat location for kerberos
3118     AC_MSG_CHECKING(for /usr/kerberos)
3119     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3120       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3121       KRB5_CFLAGS="-I/usr/kerberos/include"
3122       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3123       AC_MSG_RESULT(yes)
3124     else
3125       AC_MSG_RESULT(no)
3126     fi
3127   fi
3129   ac_save_CFLAGS=$CFLAGS
3130   ac_save_CPPFLAGS=$CPPFLAGS
3131   ac_save_LDFLAGS=$LDFLAGS
3133   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3134   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3135   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3137   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3139   # now check for krb5.h. Some systems have the libraries without the headers!
3140   # note that this check is done here to allow for different kerberos
3141   # include paths
3142   AC_CHECK_HEADERS(krb5.h)
3144   if test x"$ac_cv_header_krb5_h" = x"no"; then
3146     # Give a warning if AD support was not explicitly requested,
3147     # i.e with_ads_support = auto, otherwise die with an error.
3149     if test x"$with_ads_support" = x"yes"; then
3150       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3151     else
3152       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3153     fi
3155     # Turn off AD support and restore CFLAGS and LIBS variables
3157     with_ads_support="no"
3158     
3159     CFLAGS=$ac_save_CFLAGS
3160     CPPFLAGS=$ac_save_CPPFLAGS
3161     LDFLAGS=$ac_save_LDFLAGS
3162   fi
3165 # Now we have determined whether we really want ADS support
3167 if test x"$with_ads_support" != x"no"; then
3168   ac_save_LIBS=$LIBS
3170   # now check for gssapi headers.  This is also done here to allow for
3171   # different kerberos include paths
3172   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3174   ##################################################################
3175   # we might need the k5crypto and com_err libraries on some systems
3176   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3177   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3179   # Heimdal checks.
3180   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3181   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3182   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3184   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3185   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
3186                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3188   ########################################################
3189   # now see if we can find the krb5 libs in standard paths
3190   # or as specified above
3191   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3192   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3194   ########################################################
3195   # now see if we can find the gssapi libs in standard paths
3196   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3197             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3199   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3200   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3201   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3202   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3203   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3204   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3205   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3206   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3207   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3208   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3209   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3210   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3211   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3212   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3213   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3214   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3215   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3216   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3217   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3218   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3219   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3220   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3221   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3222   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3223   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3224   AC_CHECK_FUNC_EXT(decode_krb5_ap_req, $KRB5_LIBS)
3225   AC_CHECK_FUNC_EXT(krb5_free_ap_req, $KRB5_LIBS)
3226   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3227   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3228   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3229   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3230   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3231   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3232   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3233   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3235   LIBS="$KRB5_LIBS $LIBS"
3237   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3238     AC_TRY_COMPILE([
3239         #include <krb5.h>], 
3240         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 
3241         [smb_krb5_verify_checksum=7], 
3242         [smb_krb5_verify_checksum=6], 
3243     ) 
3244   ])
3245   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3247   AC_CACHE_CHECK([for checksum in krb5_checksum],
3248                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3249     AC_TRY_COMPILE([#include <krb5.h>],
3250       [krb5_checksum cksum; cksum.checksum.length = 0;],
3251       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3252       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3254   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3255     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3256                [Whether the krb5_checksum struct has a checksum property])
3257   fi
3259   AC_CACHE_CHECK([for etype in EncryptedData],
3260                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3261     AC_TRY_COMPILE([#include <krb5.h>],
3262       [EncryptedData edata; edata.etype = 0;],
3263       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3264       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3266   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3267     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3268                [Whether the EncryptedData struct has a etype property])
3269   fi
3271   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3272                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3273     AC_TRY_COMPILE([#include <krb5.h>],
3274       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3275       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3276       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3278   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3279     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3280                [Whether the krb5_ap_req struct has a ticket pointer])
3281   fi
3283   AC_CACHE_CHECK([for krb5_crypto type],
3284                 samba_cv_HAVE_KRB5_CRYPTO,[
3285     AC_TRY_COMPILE([#include <krb5.h>],
3286       [krb5_crypto crypto;],
3287       samba_cv_HAVE_KRB5_CRYPTO=yes,
3288       samba_cv_HAVE_KRB5_CRYPTO=no)])
3290   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3291     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3292                [Whether the type krb5_crypto exists])
3293   fi
3295   AC_CACHE_CHECK([for krb5_encrypt_block type],
3296                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3297     AC_TRY_COMPILE([#include <krb5.h>],
3298       [krb5_encrypt_block block;],
3299       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3300       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3302   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3303     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3304                [Whether the type krb5_encrypt_block exists])
3305   fi
3307   AC_CACHE_CHECK([for addrtype in krb5_address],
3308                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3309     AC_TRY_COMPILE([#include <krb5.h>],
3310       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3311       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3312       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3314   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3315     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3316                [Whether the krb5_address struct has a addrtype property])
3317   fi
3319   AC_CACHE_CHECK([for addr_type in krb5_address],
3320                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3321     AC_TRY_COMPILE([#include <krb5.h>],
3322       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3323       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3324       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3326   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3327     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3328               [Whether the krb5_address struct has a addr_type property])
3329   fi
3331   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3332                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3333                  [AC_TRY_COMPILE([#include <krb5.h>],
3334     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3335     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3337   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3338     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3339               [Whether the krb5_ticket struct has a enc_part2 property])
3340   fi
3342   AC_CACHE_CHECK([for keyblock in krb5_creds],
3343                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3344     AC_TRY_COMPILE([#include <krb5.h>],
3345       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3346       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3347       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3349   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3350     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3351               [Whether the krb5_creds struct has a keyblock property])
3352   fi
3354   AC_CACHE_CHECK([for session in krb5_creds],
3355                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3356     AC_TRY_COMPILE([#include <krb5.h>],
3357       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3358       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3359       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3361   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3362     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3363               [Whether the krb5_creds struct has a session property])
3364   fi
3366   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3367                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3368     AC_TRY_COMPILE([#include <krb5.h>],
3369       [krb5_keyblock key; key.keyvalue.data = NULL;],
3370       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3371       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3373   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3374     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3375               [Whether the krb5_keyblock struct has a keyvalue property])
3376   fi
3378   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3379                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3380     AC_TRY_COMPILE([#include <krb5.h>],
3381       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3382       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3383       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3384   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3385                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3386     AC_TRY_COMPILE([#include <krb5.h>],
3387       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3388       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3389       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3390 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3391 # w.r.t. arcfour and windows, so we must not enable it here
3392   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3393           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3394     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3395               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3396   fi
3398   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3399                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3400     AC_TRY_COMPILE([#include <krb5.h>],
3401       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3402       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3403       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3405   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3406     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3407               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3408   fi
3410   AC_CACHE_CHECK([for KV5M_KEYTAB],
3411                  samba_cv_HAVE_KV5M_KEYTAB,[
3412     AC_TRY_COMPILE([#include <krb5.h>],
3413       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3414       samba_cv_HAVE_KV5M_KEYTAB=yes,
3415       samba_cv_HAVE_KV5M_KEYTAB=no)])
3417   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3418       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3419              [Whether the KV5M_KEYTAB option is available])
3420   fi
3422   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3423                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3424     AC_TRY_COMPILE([#include <krb5.h>],
3425       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3426       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3427       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3429   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3430     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3431               [Whether KRB5_KU_OTHER_CKSUM is available])
3432   fi
3433   
3434   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3435                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3436     AC_TRY_COMPILE([#include <krb5.h>],
3437       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3438       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3439       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3441   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3442     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3443               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3444   fi
3446   AC_CACHE_CHECK([for the krb5_princ_component macro],
3447                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3448     AC_TRY_LINK([#include <krb5.h>],
3449       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3450       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3451       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3453   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3454     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3455                [Whether krb5_princ_component is available])
3456   fi
3458   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3459                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3460     AC_TRY_COMPILE([#include <krb5.h>],
3461       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3462       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3463       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3465   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3466     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3467               [Whether krb5_keytab_entry has key member])
3468   fi
3470   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3471                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3472     AC_TRY_COMPILE([#include <krb5.h>],
3473       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3474       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3475       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3477   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3478     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3479               [Whether krb5_keytab_entry has keyblock member])
3480   fi
3482   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3483     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3484     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3485     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3486     AC_MSG_RESULT(yes)
3487   else
3488     if test x"$with_ads_support" = x"yes"; then
3489         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3490     else
3491         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3492     fi
3493     KRB5_LIBS=""
3494     with_ads_support=no 
3495   fi
3497   AC_CACHE_CHECK([for WRFILE: keytab support],
3498                 samba_cv_HAVE_WRFILE_KEYTAB,[
3499     AC_TRY_RUN([
3500 #include<krb5.h>
3501   main()
3502   {
3503     krb5_context context;
3504     krb5_keytab keytab;
3506     krb5_init_context(&context);
3507     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3508   }],
3509   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3510   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3512   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3513       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3514                [Whether the WRFILE:-keytab is supported])
3515   fi
3517   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3518                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3519     AC_TRY_COMPILE([#include <krb5.h>],
3520     [
3521     krb5_context context;
3522     krb5_principal principal;
3523     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3524     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3525     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3527   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3528     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3529               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3530   fi
3532 LIBS="$ac_save_LIBS"
3535 #################################################
3536 # check for KCM support
3538 with_kcm_support=no
3539 AC_MSG_CHECKING([for KCM support])
3541 AC_ARG_WITH(kcm,
3542 [  --with-kcm              KCM support (default no)],
3543 [ case "$withval" in
3544     yes)
3545         if test x$FOUND_KRB5 = x"no"; then
3546                 AC_MSG_ERROR(libkrb5 is needed for KCM support)
3547         fi
3548         with_kcm_support="$withval"
3549         AC_DEFINE(WITH_KCM,1,[Whether to include KCM support])
3550         ;;
3551     *)
3552         with_kcm_support="no"
3553         AC_DEFINE(WITH_KCM,0,[Whether to include KCM support])
3554         ;;
3555   esac ])
3557 AC_MSG_RESULT($with_kcm_support)
3558 #################################################
3559 # check for automount support
3560 AC_MSG_CHECKING(whether to use automount)
3561 AC_ARG_WITH(automount,
3562 [  --with-automount        Include automount support (default=no)],
3563 [ case "$withval" in
3564   yes)
3565     AC_MSG_RESULT(yes)
3566     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3567     ;;
3568   *)
3569     AC_MSG_RESULT(no)
3570     ;;
3571   esac ],
3572   AC_MSG_RESULT(no)
3575 #################################################
3576 # check for smbmount support
3577 AC_MSG_CHECKING(whether to use smbmount)
3578 AC_ARG_WITH(smbmount,
3579 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3580 [ case "$withval" in
3581   yes)
3582         case "$host_os" in
3583         *linux*)
3584                 AC_MSG_RESULT(yes)
3585                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3586                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3587                 ;;
3588         *)
3589                 AC_MSG_ERROR(not on a linux system!)
3590                 ;;
3591         esac
3592     ;;
3593   *)
3594     AC_MSG_RESULT(no)
3595     ;;
3596   esac ],
3597   AC_MSG_RESULT(no)
3602 #################################################
3603 # check for a PAM clear-text auth, accounts, password and session support
3604 with_pam_for_crypt=no
3605 AC_MSG_CHECKING(whether to use PAM)
3606 AC_ARG_WITH(pam,
3607 [  --with-pam              Include PAM support (default=no)],
3608 [ case "$withval" in
3609   yes)
3610     AC_MSG_RESULT(yes)
3611     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3612        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3613           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3614              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3615           fi
3616        fi
3617     fi
3618     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3619     AUTH_LIBS="$AUTH_LIBS -lpam"
3620     with_pam_for_crypt=yes
3621     ;;
3622   *)
3623     AC_MSG_RESULT(no)
3624     ;;
3625   esac ],
3626   AC_MSG_RESULT(no)
3629 # we can't build a pam module if we don't have pam.
3630 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3632 #################################################
3633 # check for pam_smbpass support
3634 AC_MSG_CHECKING(whether to use pam_smbpass)
3635 AC_ARG_WITH(pam_smbpass,
3636 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3637 [ case "$withval" in
3638   yes)
3639     AC_MSG_RESULT(yes)
3641        # Conditions under which pam_smbpass should not be built.
3643        if test x$PICFLAGS = x; then
3644           AC_MSG_ERROR([No support for PIC code])
3645        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3646           AC_MSG_ERROR([No security/pam_appl.h found])
3647        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3648           AC_MSG_ERROR([No libpam found])
3649        else
3650           AUTH_LIBS="$AUTH_LIBS -lpam"
3651           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3652        fi
3653     ;;
3654   *)
3655     AC_MSG_RESULT(no)
3656     ;;
3657   esac ],
3658   AC_MSG_RESULT(no)
3662 ###############################################
3663 # test for where we get crypt() from
3664 AC_SEARCH_LIBS(crypt, [crypt],
3665   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3666   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3669 ## moved after the check for -lcrypt in order to
3670 ## ensure that the necessary libraries are included
3671 ## check checking for truncated salt.  Wrapped by the
3672 ## $with_pam_for_crypt variable as above   --jerry
3674 if test $with_pam_for_crypt = no; then
3675 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3676 crypt_LIBS="$LIBS"
3677 LIBS="$AUTH_LIBS $LIBS"
3678 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3679         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3680 LIBS="$crypt_LIBS"])
3681 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3682         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3687 ########################################################################################
3689 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3691 ########################################################################################
3693 #################################################
3694 # check for a LDAP password database configuration backwards compatibility
3695 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3696 AC_ARG_WITH(ldapsam,
3697 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3698 [ case "$withval" in
3699   yes)
3700     AC_MSG_RESULT(yes)
3701     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3702     ;;
3703   *)
3704     AC_MSG_RESULT(no)
3705     ;;
3706   esac ],
3707   AC_MSG_RESULT(no)
3710 ########################################################################################
3712 ## END OF TESTS FOR SAM BACKENDS.  
3714 ########################################################################################
3716 #################################################
3717 # check for a NISPLUS_HOME support 
3718 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3719 AC_ARG_WITH(nisplus-home,
3720 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3721 [ case "$withval" in
3722   yes)
3723     AC_MSG_RESULT(yes)
3724     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3725     ;;
3726   *)
3727     AC_MSG_RESULT(no)
3728     ;;
3729   esac ],
3730   AC_MSG_RESULT(no)
3733 #################################################
3734 # check for syslog logging
3735 AC_MSG_CHECKING(whether to use syslog logging)
3736 AC_ARG_WITH(syslog,
3737 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3738 [ case "$withval" in
3739   yes)
3740     AC_MSG_RESULT(yes)
3741     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3742     ;;
3743   *)
3744     AC_MSG_RESULT(no)
3745     ;;
3746   esac ],
3747   AC_MSG_RESULT(no)
3750 #################################################
3751 # check for a shared memory profiling support
3752 AC_MSG_CHECKING(whether to use profiling)
3753 AC_ARG_WITH(profiling-data,
3754 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3755 [ case "$withval" in
3756   yes)
3757     AC_MSG_RESULT(yes)
3758     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3759     ;;
3760   *)
3761     AC_MSG_RESULT(no)
3762     ;;
3763   esac ],
3764   AC_MSG_RESULT(no)
3768 #################################################
3769 # check for experimental disk-quotas support
3771 samba_cv_WITH_QUOTAS=auto
3772 samba_cv_TRY_QUOTAS=no
3773 samba_cv_RUN_QUOTA_TESTS=auto
3774 samba_cv_WITH_SYS_QUOTAS=auto
3775 samba_cv_TRY_SYS_QUOTAS=auto
3776 samba_cv_SYSQUOTA_FOUND=no
3778 AC_MSG_CHECKING(whether to try disk-quotas support)
3779 AC_ARG_WITH(quotas,
3780 [  --with-quotas           Include disk-quota support (default=no)],
3781 [ case "$withval" in
3782   yes)
3783     AC_MSG_RESULT(yes)
3784     samba_cv_WITH_QUOTAS=yes
3785     samba_cv_TRY_QUOTAS=yes
3786     samba_cv_RUN_QUOTA_TESTS=yes
3787     #set sys quotas to auto in this case
3788     samba_cv_TRY_SYS_QUOTAS=auto
3789     ;;
3790   auto)
3791     AC_MSG_RESULT(auto)
3792     samba_cv_WITH_QUOTAS=auto
3793     samba_cv_TRY_QUOTAS=auto
3794     samba_cv_RUN_QUOTA_TESTS=auto
3795     #set sys quotas to auto in this case
3796     samba_cv_TRY_SYS_QUOTAS=auto
3797     ;;
3798   no)
3799     AC_MSG_RESULT(no)
3800     samba_cv_WITH_QUOTAS=no
3801     samba_cv_TRY_QUOTAS=no
3802     samba_cv_RUN_QUOTA_TESTS=no
3803     ;;
3804   *)
3805     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3806     ;;
3807   esac ],
3808   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3811 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3812 AC_ARG_WITH(sys-quotas,
3813 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3814 [ case "$withval" in
3815   yes)
3816     AC_MSG_RESULT(yes)
3817     samba_cv_WITH_SYS_QUOTAS=yes
3818     samba_cv_TRY_SYS_QUOTAS=yes
3819     samba_cv_RUN_QUOTA_TESTS=yes
3820     ;;
3821   auto)
3822     AC_MSG_RESULT(auto)
3823     samba_cv_WITH_SYS_QUOTAS=auto
3824     samba_cv_TRY_SYS_QUOTAS=auto
3825     samba_cv_RUN_QUOTA_TESTS=auto
3826     ;;
3827   no)
3828     AC_MSG_RESULT(no)
3829     samba_cv_WITH_SYS_QUOTAS=no
3830     samba_cv_TRY_SYS_QUOTAS=no
3831     ;;
3832   *)
3833     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3834     ;;
3835   esac ],
3836   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3839 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3840 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3841   case "$host_os" in
3842         *linux*)
3843             AC_MSG_RESULT(yes)
3844             samba_cv_TRY_SYS_QUOTAS=yes
3845             samba_cv_RUN_QUOTA_TESTS=yes
3846             ;;
3847         *)
3848             AC_MSG_RESULT(no)
3849             samba_cv_TRY_SYS_QUOTAS=no
3850             ;;
3851   esac
3854 #############################################
3855 # only check for quota stuff if --with-quotas
3856 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3858 case "$host_os" in
3859         # on linux we didn't need to test we have builtin support
3860         *linux*)
3861             samba_cv_SYSQUOTA_FOUND=yes
3862             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3863             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3864             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
3865             AC_MSG_RESULT(yes)
3867             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3868             samba_cv_found_xfs_header=yes
3869             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
3870             AC_MSG_RESULT(yes)
3871             ;;
3872         *solaris*)
3873             # need to set this define when using static linking (BUG 1473)
3874             CPPFLAGS="$CPPFLAGS -DSUNOS5"
3875             ;;
3876         *)
3877             ;;
3878 esac
3880 # some broken header files need this
3881 AC_CHECK_HEADER(asm/types.h,[
3882             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3883             AC_ADD_INCLUDE(<asm/types.h>)
3884             ])
3886 # For quotas on Veritas VxFS filesystems
3887 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3889 # For sys/quota.h and linux/quota.h
3890 AC_CHECK_HEADERS(sys/quota.h)
3892 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3893 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3894 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3895 AC_TRY_COMPILE([
3896 #include "confdefs.h"
3897 #ifdef HAVE_SYS_TYPES_H
3898 #include <sys/types.h>
3899 #endif
3900 #ifdef HAVE_ASM_TYPES_H
3901 #include <asm/types.h>
3902 #endif
3903 #include <sys/quota.h>
3904 ],[int i = Q_XGETQUOTA;],
3905 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3906 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3907         samba_cv_found_xfs_header=yes
3911 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3912 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3913 AC_TRY_COMPILE([
3914 #include "confdefs.h"
3915 #ifdef HAVE_SYS_QUOTA_H
3916 #include <sys/quota.h>
3917 #endif
3919 struct dqblk D;
3920 D.dqb_fsoftlimit = 0;],
3921 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3922 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3923         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3926 ##################
3927 # look for a working quota system
3929 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3930 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3931 AC_TRY_RUN_STRICT([
3932 #define HAVE_QUOTACTL_4A 1
3933 #define AUTOCONF_TEST 1
3934 #include "confdefs.h"
3935 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3936            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3937 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3938     samba_cv_SYSQUOTA_FOUND=yes;
3939     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3940     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3944 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3945 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3946 AC_TRY_RUN_STRICT([
3947 #define HAVE_QUOTACTL_4B 1
3948 #define AUTOCONF_TEST 1
3949 #include "confdefs.h"
3950 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3951            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3952 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3953     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3954     samba_cv_SYSQUOTA_FOUND=yes;
3955     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3956     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3960 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3961 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3962 AC_TRY_RUN_STRICT([
3963 #define HAVE_QUOTACTL_3 1
3964 #define AUTOCONF_TEST 1
3965 #include "confdefs.h"
3966 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3967            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3968 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3969     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3970     samba_cv_SYSQUOTA_FOUND=yes;
3971     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3972     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3976 #################################################
3977 # check for mntent.h and struct mntent
3978 AC_CHECK_HEADERS(mntent.h)
3979 #################################################
3980 # check for setmntent,getmntent,endmntent
3981 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3983 #################################################
3984 # check for devnm.h and struct mntent
3985 AC_CHECK_HEADERS(devnm.h)
3986 #################################################
3987 # check for devnm
3988 AC_CHECK_FUNCS(devnm)
3990 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3991     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3992         # if --with-sys-quotas=yes then build it 
3993         # you have can use the get/set quota command smb.conf
3994         # options then
3995         samba_cv_SYSQUOTA_FOUND=auto
3996     fi
3997     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3998         # if --with-sys-quotas=yes then build it 
3999         # you have can use the get/set quota command smb.conf
4000         # options then
4001         samba_cv_TRY_SYS_QUOTAS=auto
4002     fi
4005 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4006 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4007 SAVE_CPPFLAGS="$CPPFLAGS"
4008 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4009 AC_TRY_COMPILE([
4010 #include "confdefs.h"
4011 #define NO_PROTO_H 1
4012 #define NO_CONFIG_H 1
4013 #define HAVE_SYS_QUOTAS 1
4014 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4015 #include "${srcdir-.}/lib/sysquotas.c"
4016 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4017 CPPFLAGS="$SAVE_CPPFLAGS"
4019 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4020 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4021     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
4022         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4023         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4024         samba_cv_WE_USE_SYS_QUOTAS=yes
4025         AC_MSG_RESULT(yes)
4026     else
4027         AC_MSG_RESULT(no)
4028     fi
4032 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4033 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4034 SAVE_CPPFLAGS="$CPPFLAGS"
4035 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4036 AC_TRY_COMPILE([
4037 #include "confdefs.h"
4038 #define NO_PROTO_H 1
4039 #define NO_CONFIG_H 1
4040 #define HAVE_SYS_QUOTAS 1
4041 #define HAVE_XFS_QUOTAS 1
4042 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4043 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4044 CPPFLAGS="$SAVE_CPPFLAGS"
4046 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4047     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4048         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4049     fi
4053 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4054 SAVE_CPPFLAGS="$CPPFLAGS"
4055 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch -I${srcdir-.}/smbwrapper"
4056 AC_TRY_COMPILE([
4057 #include "confdefs.h"
4058 #define NO_PROTO_H 1
4059 #define NO_CONFIG_H 1
4060 #include "${srcdir-.}/smbd/quotas.c"
4061 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4062 CPPFLAGS="$SAVE_CPPFLAGS"
4064 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4065 AC_MSG_CHECKING(whether to use the old quota support)
4066     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4067       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4068         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4069         AC_MSG_RESULT(yes)
4070       else
4071         AC_MSG_RESULT(no)
4072       fi
4073     else
4074       AC_MSG_RESULT(no)
4075     fi
4078 ####################
4079 # End of quota check samba_cv_RUN_QUOTA_TESTS
4082 #################################################
4083 # check for experimental utmp accounting
4085 AC_MSG_CHECKING(whether to support utmp accounting)
4086 WITH_UTMP=yes
4087 AC_ARG_WITH(utmp,
4088 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4089 [ case "$withval" in
4090   no)
4091                 WITH_UTMP=no
4092                 ;;
4093   *)
4094                 WITH_UTMP=yes
4095                 ;;
4096   esac ],
4099 # utmp requires utmp.h
4100 # Note similar check earlier, when checking utmp details.
4102 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4103         utmp_no_reason=", no utmp.h on $host_os"
4104         WITH_UTMP=no
4107 # Display test results
4109 if test x"$WITH_UTMP" = x"yes"; then
4110         AC_MSG_RESULT(yes)
4111         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4112 else
4113         AC_MSG_RESULT(no$utmp_no_reason)
4116 INSTALLLIBCMD_SH=:
4117 INSTALLLIBCMD_A=:
4119 if test $BLDSHARED = true; then
4120         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4122 if test $enable_static = yes; then
4123         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4126 #################################################
4127 # should we build libmsrpc?
4128 INSTALL_LIBMSRPC=
4129 LIBMSRPC_SHARED=
4130 LIBMSRPC=
4131 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4132 AC_ARG_WITH(libmsrpc,
4133 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4134 [ case "$withval" in
4135   no) 
4136      AC_MSG_RESULT(no)
4137      ;;
4138   *)
4139      if test $BLDSHARED = true; then
4140         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4141         LIBMSRPC=libmsrpc
4142         AC_MSG_RESULT(yes)
4143      else
4144         enable_static=yes
4145         AC_MSG_RESULT(no shared library support -- will supply static library)
4146      fi
4147      if test $enable_static = yes; then
4148         LIBMSRPC=libmsrpc
4149      fi
4150      INSTALL_LIBMSRPC=installlibmsrpc
4151      ;;
4152   esac ],
4154 # if unspecified, default is to built it if possible.
4155   if test $BLDSHARED = true; then
4156      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4157      LIBMSRPC=libmsrpc
4158      AC_MSG_RESULT(yes)
4159    else
4160      enable_static=yes
4161      AC_MSG_RESULT(no shared library support -- will supply static library)
4162    fi
4163    if test $enable_static = yes; then
4164      LIBMSRPC=libmsrpc
4165   fi]
4166   INSTALL_LIBMSRPC=installlibmsrpc
4169 #################################################
4170 # should we build libsmbclient?
4171 INSTALL_LIBSMBCLIENT=
4172 LIBSMBCLIENT_SHARED=
4173 LIBSMBCLIENT=
4174 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4175 AC_ARG_WITH(libsmbclient,
4176 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4177 [ case "$withval" in
4178   no) 
4179      AC_MSG_RESULT(no)
4180      ;;
4181   *)
4182      if test $BLDSHARED = true; then
4183         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4184         LIBSMBCLIENT=libsmbclient
4185         AC_MSG_RESULT(yes)
4186      else
4187         enable_static=yes
4188         AC_MSG_RESULT(no shared library support -- will supply static library)
4189      fi
4190      if test $enable_static = yes; then
4191         LIBSMBCLIENT=libsmbclient
4192      fi
4193      INSTALL_LIBSMBCLIENT=installclientlib
4194      ;;
4195   esac ],
4197 # if unspecified, default is to built it if possible.
4198   if test $BLDSHARED = true; then
4199      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4200      LIBSMBCLIENT=libsmbclient
4201      AC_MSG_RESULT(yes)
4202    else
4203      enable_static=yes
4204      AC_MSG_RESULT(no shared library support -- will supply static library)
4205    fi
4206    if test $enable_static = yes; then
4207      LIBSMBCLIENT=libsmbclient
4208   fi]
4209   INSTALL_LIBSMBCLIENT=installclientlib
4212 INSTALL_LIBSMBSHAREMODES=
4213 LIBSMBSHAREMODES_SHARED=
4214 LIBSMBSHAREMODES=
4215 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4216 AC_ARG_WITH(libsmbsharemodes,
4217 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4218 [ case "$withval" in
4219   no)
4220      AC_MSG_RESULT(no)
4221      ;;
4222   *)
4223      if test $BLDSHARED = true; then
4224         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4225         LIBSMBSHAREMODES=libsmbsharemodes
4226         AC_MSG_RESULT(yes)
4227      else
4228         enable_static=yes
4229         AC_MSG_RESULT(no shared library support -- will supply static library)
4230      fi
4231      if test $enable_static = yes; then
4232         LIBSMBSHAREMODES=libsmbsharemodes
4233      fi
4234      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4235      ;;
4236   esac ],
4238 # if unspecified, default is to built it if possible.
4239   if test $BLDSHARED = true; then
4240      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4241      LIBSMBSHAREMODES=libsmbsharemodes
4242      AC_MSG_RESULT(yes)
4243    else
4244      enable_static=yes
4245      AC_MSG_RESULT(no shared library support -- will supply static library)
4246    fi
4247    if test $enable_static = yes; then
4248      LIBSMBSHAREMODES=libsmbsharemodes
4249   fi]
4250   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4253 #################################################
4254 # these tests are taken from the GNU fileutils package
4255 AC_CHECKING(how to get filesystem space usage)
4256 space=no
4258 # Test for statvfs64.
4259 if test $space = no; then
4260   # SVR4
4261   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4262   [AC_TRY_RUN([
4263 #if defined(HAVE_UNISTD_H)
4264 #include <unistd.h>
4265 #endif
4266 #include <sys/types.h>
4267 #include <sys/statvfs.h>
4268   main ()
4269   {
4270     struct statvfs64 fsd;
4271     exit (statvfs64 (".", &fsd));
4272   }],
4273   fu_cv_sys_stat_statvfs64=yes,
4274   fu_cv_sys_stat_statvfs64=no,
4275   fu_cv_sys_stat_statvfs64=cross)])
4276   if test $fu_cv_sys_stat_statvfs64 = yes; then
4277     space=yes
4278     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4279   fi
4282 # Perform only the link test since it seems there are no variants of the
4283 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4284 # because that got a false positive on SCO OSR5.  Adding the declaration
4285 # of a `struct statvfs' causes this test to fail (as it should) on such
4286 # systems.  That system is reported to work fine with STAT_STATFS4 which
4287 # is what it gets when this test fails.
4288 if test $space = no; then
4289   # SVR4
4290   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4291                  [AC_TRY_LINK([#include <sys/types.h>
4292 #include <sys/statvfs.h>],
4293                               [struct statvfs fsd; statvfs (0, &fsd);],
4294                               fu_cv_sys_stat_statvfs=yes,
4295                               fu_cv_sys_stat_statvfs=no)])
4296   if test $fu_cv_sys_stat_statvfs = yes; then
4297     space=yes
4298     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4299   fi
4302 if test $space = no; then
4303   # DEC Alpha running OSF/1
4304   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4305   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4306   [AC_TRY_RUN([
4307 #include <sys/param.h>
4308 #include <sys/types.h>
4309 #include <sys/mount.h>
4310   main ()
4311   {
4312     struct statfs fsd;
4313     fsd.f_fsize = 0;
4314     exit (statfs (".", &fsd, sizeof (struct statfs)));
4315   }],
4316   fu_cv_sys_stat_statfs3_osf1=yes,
4317   fu_cv_sys_stat_statfs3_osf1=no,
4318   fu_cv_sys_stat_statfs3_osf1=no)])
4319   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4320   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4321     space=yes
4322     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4323   fi
4326 if test $space = no; then
4327 # AIX
4328   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4329 member (AIX, 4.3BSD)])
4330   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4331   [AC_TRY_RUN([
4332 #ifdef HAVE_SYS_PARAM_H
4333 #include <sys/param.h>
4334 #endif
4335 #ifdef HAVE_SYS_MOUNT_H
4336 #include <sys/mount.h>
4337 #endif
4338 #ifdef HAVE_SYS_VFS_H
4339 #include <sys/vfs.h>
4340 #endif
4341   main ()
4342   {
4343   struct statfs fsd;
4344   fsd.f_bsize = 0;
4345   exit (statfs (".", &fsd));
4346   }],
4347   fu_cv_sys_stat_statfs2_bsize=yes,
4348   fu_cv_sys_stat_statfs2_bsize=no,
4349   fu_cv_sys_stat_statfs2_bsize=no)])
4350   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4351   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4352     space=yes
4353     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4354   fi
4357 if test $space = no; then
4358 # SVR3
4359   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4360   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4361   [AC_TRY_RUN([#include <sys/types.h>
4362 #include <sys/statfs.h>
4363   main ()
4364   {
4365   struct statfs fsd;
4366   exit (statfs (".", &fsd, sizeof fsd, 0));
4367   }],
4368     fu_cv_sys_stat_statfs4=yes,
4369     fu_cv_sys_stat_statfs4=no,
4370     fu_cv_sys_stat_statfs4=no)])
4371   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4372   if test $fu_cv_sys_stat_statfs4 = yes; then
4373     space=yes
4374     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4375   fi
4378 if test $space = no; then
4379 # 4.4BSD and NetBSD
4380   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4381 member (4.4BSD and NetBSD)])
4382   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4383   [AC_TRY_RUN([#include <sys/types.h>
4384 #ifdef HAVE_SYS_PARAM_H
4385 #include <sys/param.h>
4386 #endif
4387 #ifdef HAVE_SYS_MOUNT_H
4388 #include <sys/mount.h>
4389 #endif
4390   main ()
4391   {
4392   struct statfs fsd;
4393   fsd.f_fsize = 0;
4394   exit (statfs (".", &fsd));
4395   }],
4396   fu_cv_sys_stat_statfs2_fsize=yes,
4397   fu_cv_sys_stat_statfs2_fsize=no,
4398   fu_cv_sys_stat_statfs2_fsize=no)])
4399   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4400   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4401     space=yes
4402         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4403   fi
4406 if test $space = no; then
4407   # Ultrix
4408   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4409   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4410   [AC_TRY_RUN([#include <sys/types.h>
4411 #ifdef HAVE_SYS_PARAM_H
4412 #include <sys/param.h>
4413 #endif
4414 #ifdef HAVE_SYS_MOUNT_H
4415 #include <sys/mount.h>
4416 #endif
4417 #ifdef HAVE_SYS_FS_TYPES_H
4418 #include <sys/fs_types.h>
4419 #endif
4420   main ()
4421   {
4422   struct fs_data fsd;
4423   /* Ultrix's statfs returns 1 for success,
4424      0 for not mounted, -1 for failure.  */
4425   exit (statfs (".", &fsd) != 1);
4426   }],
4427   fu_cv_sys_stat_fs_data=yes,
4428   fu_cv_sys_stat_fs_data=no,
4429   fu_cv_sys_stat_fs_data=no)])
4430   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4431   if test $fu_cv_sys_stat_fs_data = yes; then
4432     space=yes
4433     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4434   fi
4438 # As a gating factor for large file support, in order to
4439 # use <4GB files we must have the following minimal support
4440 # available.
4441 # long long, and a 64 bit off_t or off64_t.
4442 # If we don't have all of these then disable large
4443 # file support.
4445 AC_MSG_CHECKING([if large file support can be enabled])
4446 AC_TRY_COMPILE([
4447 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4448 #include <sys/types.h>
4449 #else
4450 __COMPILE_ERROR_
4451 #endif
4453 [int i],
4454 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4455 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4456         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4458 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4460 AC_ARG_WITH(spinlocks, 
4461 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4462 if test "x$with_spinlocks" = "xyes"; then
4463     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4465     case "$host_cpu" in
4466         sparc)
4467             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4468             ;;
4470         i386|i486|i586|i686)
4471             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4472             ;;
4474         mips)
4475             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4476             ;;
4478         powerpc)
4479             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4480             ;;
4481     esac
4484 #################################################
4485 # check for ACL support
4487 AC_MSG_CHECKING(whether to support ACLs)
4488 AC_ARG_WITH(acl-support,
4489 [  --with-acl-support      Include ACL support (default=no)],
4490 [ case "$withval" in
4491   yes)
4493         case "$host_os" in
4494         *sysv5*)
4495                 AC_MSG_RESULT(Using UnixWare ACLs)
4496                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4497                 ;;
4498         *solaris*)
4499                 AC_MSG_RESULT(Using solaris ACLs)
4500                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4501                 ACL_LIBS="$ACL_LIBS -lsec"
4502                 ;;
4503         *hpux*)
4504                 AC_MSG_RESULT(Using HPUX ACLs)
4505                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4506                 ;;
4507         *irix*)
4508                 AC_MSG_RESULT(Using IRIX ACLs)
4509                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4510                 ;;
4511         *aix*)
4512                 AC_MSG_RESULT(Using AIX ACLs)
4513                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4514                 ;;
4515         *osf*)
4516                 AC_MSG_RESULT(Using Tru64 ACLs)
4517                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4518                 ACL_LIBS="$ACL_LIBS -lpacl"
4519                 ;;
4520         *freebsd[[5-9]]*)
4521                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4522                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4523                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4524                 ;;
4525         *linux*)
4526                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4527                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4528                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4529                 acl_LIBS=$LIBS
4530                 LIBS="$LIBS -lacl"
4531                 AC_TRY_LINK([#include <sys/types.h>
4532 #include <sys/acl.h>],
4533 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4534 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4535                 LIBS=$acl_LIBS])
4536                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4537                                 AC_MSG_RESULT(Using posix ACLs)
4538                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4539                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4540                                 acl_LIBS=$LIBS
4541                                 LIBS="$LIBS -lacl"
4542                                 AC_TRY_LINK([#include <sys/types.h>
4543 #include <sys/acl.h>],
4544 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4545 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4546                                 LIBS=$acl_LIBS])
4547                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4548                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4549                                 fi
4550                         fi
4551             ;;
4552          *)
4553                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4554                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4555                 acl_LIBS=$LIBS
4556                 LIBS="$LIBS -lacl"
4557                 AC_TRY_LINK([#include <sys/types.h>
4558 #include <sys/acl.h>],
4559 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4560 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4561                 LIBS=$acl_LIBS])
4562                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4563                                 AC_MSG_RESULT(Using posix ACLs)
4564                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4565                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4566                                 acl_LIBS=$LIBS
4567                                 LIBS="$LIBS -lacl"
4568                                 AC_TRY_LINK([#include <sys/types.h>
4569 #include <sys/acl.h>],
4570 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4571 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4572                                 LIBS=$acl_LIBS])
4573                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4574                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4575                                 fi
4576                         fi
4577             ;;
4578         esac
4579         ;;
4580   *)
4581     AC_MSG_RESULT(no)
4582     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4583     ;;
4584   esac ],
4585   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4586   AC_MSG_RESULT(no)
4589 #################################################
4590 # check for AIO support
4592 AC_MSG_CHECKING(whether to support asynchronous io)
4593 AC_ARG_WITH(aio-support,
4594 [  --with-aio-support      Include asynchronous io support (default=no)],
4595 [ case "$withval" in
4596   yes)
4598         AC_MSG_RESULT(yes)
4599         case "$host_os" in
4600         *)
4601                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
4602                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
4603                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4604                 aio_LIBS=$LIBS
4605                 LIBS=$AIO_LIBS
4606                 AC_TRY_LINK([#include <sys/types.h>
4607 #include <aio.h>],
4608 [ struct aiocb a; return aio_read(&a);],
4609 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4610                 LIBS=$aio_LIBS])
4611                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4612                 aio_LIBS=$LIBS
4613                 LIBS=$AIO_LIBS
4614                 AC_TRY_LINK([#include <sys/types.h>
4615 #include <aio.h>],
4616 [ struct aiocb64 a; return aio_read64(&a);],
4617 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4618                 LIBS=$aio_LIBS])
4619                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4620                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4621                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4622                         LIBS=$AIO_LIBS
4623                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4624                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4625                         LIBS=$AIO_LIBS
4626                 fi
4628                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4629                         AC_MSG_CHECKING(for aio_read)
4630                         AC_LINK_IFELSE([#include <aio.h>
4631 int main() { struct aiocb a; return aio_read(&a); }],
4632 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4633 [AC_MSG_RESULT(no)])
4635                         AC_MSG_CHECKING(for aio_write)
4636                         AC_LINK_IFELSE([#include <aio.h>
4637 int main() { struct aiocb a; return aio_write(&a); }],
4638 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4639 [AC_MSG_RESULT(no)])
4641                         AC_MSG_CHECKING(for aio_fsync)
4642                         AC_LINK_IFELSE([#include <aio.h>
4643 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4644 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4645 [AC_MSG_RESULT(no)])
4647                         AC_MSG_CHECKING(for aio_return)
4648                         AC_LINK_IFELSE([#include <aio.h>
4649 int main() { struct aiocb a; return aio_return(&a); }],
4650 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4651 [AC_MSG_RESULT(no)])
4653                         AC_MSG_CHECKING(for aio_error)
4654                         AC_LINK_IFELSE([#include <aio.h>
4655 int main() { struct aiocb a; return aio_error(&a); }],
4656 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4657 [AC_MSG_RESULT(no)])
4659                         AC_MSG_CHECKING(for aio_cancel)
4660                         AC_LINK_IFELSE([#include <aio.h>
4661 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4662 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4663 [AC_MSG_RESULT(no)])
4665                         AC_MSG_CHECKING(for aio_suspend)
4666                         AC_LINK_IFELSE([#include <aio.h>
4667 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
4668 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
4669 [AC_MSG_RESULT(no)])
4670                 fi
4672                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4673                         AC_MSG_CHECKING(for aio_read64)
4674                         AC_LINK_IFELSE([#include <aio.h>
4675 int main() { struct aiocb a; return aio_read64(&a); }],
4676 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
4677 [AC_MSG_RESULT(no)])
4679                         AC_MSG_CHECKING(for aio_write64)
4680                         AC_LINK_IFELSE([#include <aio.h>
4681 int main() { struct aiocb a; return aio_write64(&a); }],
4682 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
4683 [AC_MSG_RESULT(no)])
4685                         AC_MSG_CHECKING(for aio_fsync64)
4686                         AC_LINK_IFELSE([#include <aio.h>
4687 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
4688 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
4689 [AC_MSG_RESULT(no)])
4691                         AC_MSG_CHECKING(for aio_return64)
4692                         AC_LINK_IFELSE([#include <aio.h>
4693 int main() { struct aiocb a; return aio_return64(&a); }],
4694 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
4695 [AC_MSG_RESULT(no)])
4697                         AC_MSG_CHECKING(for aio_error64)
4698                         AC_LINK_IFELSE([#include <aio.h>
4699 int main() { struct aiocb a; return aio_error64(&a); }],
4700 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
4701 [AC_MSG_RESULT(no)])
4703                         AC_MSG_CHECKING(for aio_cancel64)
4704                         AC_LINK_IFELSE([#include <aio.h>
4705 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
4706 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
4707 [AC_MSG_RESULT(no)])
4709                         AC_MSG_CHECKING(for aio_suspend64)
4710                         AC_LINK_IFELSE([#include <aio.h>
4711 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
4712 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
4713 [AC_MSG_RESULT(no)])
4714                 fi
4715             ;;
4716         esac
4717         ;;
4718   *)
4719     AC_MSG_RESULT(no)
4720     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
4721     ;;
4722   esac ],
4723   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
4724   AC_MSG_RESULT(no)
4727 #################################################
4728 # check for sendfile support
4730 with_sendfile_support=yes
4731 AC_MSG_CHECKING(whether to check to support sendfile)
4732 AC_ARG_WITH(sendfile-support,
4733 [  --with-sendfile-support Check for sendfile support (default=yes)],
4734 [ case "$withval" in
4735   yes)
4737         AC_MSG_RESULT(yes);
4739         case "$host_os" in
4740         *linux*)
4741                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4742                 AC_TRY_LINK([#include <sys/sendfile.h>],
4744 int tofd, fromfd;
4745 off64_t offset;
4746 size_t total;
4747 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4749 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4751                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4752                 AC_TRY_LINK([#include <sys/sendfile.h>],
4754 int tofd, fromfd;
4755 off_t offset;
4756 size_t total;
4757 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4759 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4761 # Try and cope with broken Linux sendfile....
4762                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4763                 AC_TRY_LINK([\
4764 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4765 #undef _FILE_OFFSET_BITS
4766 #endif
4767 #include <sys/sendfile.h>],
4769 int tofd, fromfd;
4770 off_t offset;
4771 size_t total;
4772 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4774 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4776         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4777                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4778                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4779                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4780         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4781                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4782                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4783                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4784         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4785                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4786                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4787         else
4788                 AC_MSG_RESULT(no);
4789         fi
4791         ;;
4792         *freebsd* | *dragonfly* )
4793                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4794                 AC_TRY_LINK([\
4795 #include <sys/types.h>
4796 #include <unistd.h>
4797 #include <sys/socket.h>
4798 #include <sys/uio.h>],
4800         int fromfd, tofd, ret, total=0;
4801         off_t offset, nwritten;
4802         struct sf_hdtr hdr;
4803         struct iovec hdtrl;
4804         hdr.headers = &hdtrl;
4805         hdr.hdr_cnt = 1;
4806         hdr.trailers = NULL;
4807         hdr.trl_cnt = 0;
4808         hdtrl.iov_base = NULL;
4809         hdtrl.iov_len = 0;
4810         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4812 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4814         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4815                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4816                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4817                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4818         else
4819                 AC_MSG_RESULT(no);
4820         fi
4821         ;;
4823         *hpux*)
4824                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4825                 AC_TRY_LINK([\
4826 #include <sys/socket.h>
4827 #include <sys/uio.h>],
4829         int fromfd, tofd;
4830         size_t total=0;
4831         struct iovec hdtrl[2];
4832         ssize_t nwritten;
4833         off64_t offset;
4835         hdtrl[0].iov_base = 0;
4836         hdtrl[0].iov_len = 0;
4838         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4840 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4841         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4842                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4843                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4844                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4845         else
4846                 AC_MSG_RESULT(no);
4847         fi
4849                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4850                 AC_TRY_LINK([\
4851 #include <sys/socket.h>
4852 #include <sys/uio.h>],
4854         int fromfd, tofd;
4855         size_t total=0;
4856         struct iovec hdtrl[2];
4857         ssize_t nwritten;
4858         off_t offset;
4860         hdtrl[0].iov_base = 0;
4861         hdtrl[0].iov_len = 0;
4863         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4865 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4866         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4867                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4868                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4869                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4870         else
4871                 AC_MSG_RESULT(no);
4872         fi
4873         ;;
4875         *solaris*)
4876                 AC_CHECK_LIB(sendfile,sendfilev)
4877                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4878                 AC_TRY_LINK([\
4879 #include <sys/sendfile.h>],
4881         int sfvcnt;
4882         size_t xferred;
4883         struct sendfilevec vec[2];
4884         ssize_t nwritten;
4885         int tofd;
4887         sfvcnt = 2;
4889         vec[0].sfv_fd = SFV_FD_SELF;
4890         vec[0].sfv_flag = 0;
4891         vec[0].sfv_off = 0;
4892         vec[0].sfv_len = 0;
4894         vec[1].sfv_fd = 0;
4895         vec[1].sfv_flag = 0;
4896         vec[1].sfv_off = 0;
4897         vec[1].sfv_len = 0;
4898         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4900 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4902         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4903                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4904                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4905                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4906         else
4907                 AC_MSG_RESULT(no);
4908         fi
4910                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4911                 AC_TRY_LINK([\
4912 #include <sys/sendfile.h>],
4914         int sfvcnt;
4915         size_t xferred;
4916         struct sendfilevec vec[2];
4917         ssize_t nwritten;
4918         int tofd;
4920         sfvcnt = 2;
4922         vec[0].sfv_fd = SFV_FD_SELF;
4923         vec[0].sfv_flag = 0;
4924         vec[0].sfv_off = 0;
4925         vec[0].sfv_len = 0;
4927         vec[1].sfv_fd = 0;
4928         vec[1].sfv_flag = 0;
4929         vec[1].sfv_off = 0;
4930         vec[1].sfv_len = 0;
4931         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4933 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4935         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4936                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4937                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4938                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4939         else
4940                 AC_MSG_RESULT(no);
4941         fi
4942         ;;
4943         *aix*)
4944                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
4945                 AC_TRY_LINK([\
4946 #include <sys/socket.h>],
4948         int fromfd, tofd;
4949         size_t total=0;
4950         struct sf_parms hdtrl;
4951         ssize_t nwritten;
4952         off64_t offset;
4954         hdtrl.header_data = 0;
4955         hdtrl.header_length = 0;
4956         hdtrl.file_descriptor = fromfd;
4957         hdtrl.file_offset = 0;
4958         hdtrl.file_bytes = 0;
4959         hdtrl.trailer_data = 0;
4960         hdtrl.trailer_length = 0;
4962         nwritten = send_file(&tofd, &hdtrl, 0);
4964 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4965         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4966                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4967                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
4968                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4969         else
4970                 AC_MSG_RESULT(no);
4971         fi
4972         ;;
4973         *)
4974         ;;
4975         esac
4976         ;;
4977   *)
4978     AC_MSG_RESULT(no)
4979     ;;
4980   esac ],
4981   AC_MSG_RESULT(yes)
4985 #################################################
4986 # Check whether winbind is supported on this platform.  If so we need to
4987 # build and install client programs, sbin programs and shared libraries
4989 AC_MSG_CHECKING(whether to build winbind)
4991 # Initially, the value of $host_os decides whether winbind is supported
4993 HAVE_WINBIND=yes
4995 # Define the winbind shared library name and any specific linker flags
4996 # it needs to be built with.
4998 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4999 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5000 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5002 case "$host_os" in
5003         *linux*)
5004                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5005                 ;;
5006         *freebsd[[5-9]]*)
5007                 # FreeBSD winbind client is implemented as a wrapper around
5008                 # the Linux version.
5009                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5010                     nsswitch/winbind_nss_linux.o"
5011                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5012                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5013                 ;;
5014         *irix*)
5015                 # IRIX has differently named shared libraries
5016                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5017                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5018                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5019                 ;;
5020         *solaris*)
5021                 # Solaris winbind client is implemented as a wrapper around
5022                 # the Linux version.
5023                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5024                     nsswitch/winbind_nss_linux.o"
5025                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5026                 ;;
5027         *hpux11*)
5028                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5029                 ;;
5030         *aix*)
5031                 # AIX has even differently named shared libraries.  No
5032                 # WINS support has been implemented yet.
5033                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5034                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5035                 WINBIND_NSS="nsswitch/WINBIND"
5036                 WINBIND_WINS_NSS=""
5037                 ;;
5038         *)
5039                 HAVE_WINBIND=no
5040                 winbind_no_reason=", unsupported on $host_os"
5041                 ;;
5042 esac
5044 AC_SUBST(WINBIND_NSS)
5045 AC_SUBST(WINBIND_WINS_NSS)
5046 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5047 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5048 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5050 # Check the setting of --with-winbind
5052 AC_ARG_WITH(winbind,
5053 [  --with-winbind          Build winbind (default, if supported by OS)],
5055   case "$withval" in
5056         yes)
5057                 HAVE_WINBIND=yes
5058                 ;;
5059         no)
5060                 HAVE_WINBIND=no
5061                 winbind_reason=""
5062                 ;;
5063   esac ],
5066 # We need unix domain sockets for winbind
5068 if test x"$HAVE_WINBIND" = x"yes"; then
5069         if test x"$samba_cv_unixsocket" = x"no"; then
5070                 winbind_no_reason=", no unix domain socket support on $host_os"
5071                 HAVE_WINBIND=no
5072         fi
5075 # Display test results
5077 if test x"$HAVE_WINBIND" = x"yes"; then
5078         AC_MSG_RESULT(yes)
5079         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5081         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5082         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5083         if test $BLDSHARED = true; then
5084                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
5086                 if test x"$with_pam" = x"yes"; then
5087                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
5088                 fi
5089         fi
5090 else
5091         AC_MSG_RESULT(no$winbind_no_reason)
5094 # Solaris 10 does have new member in nss_XbyY_key
5095 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5096                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5097                 [#include <nss_dbdefs.h>])
5099 # Solaris has some extra fields in struct passwd that need to be
5100 # initialised otherwise nscd crashes.  
5102 AC_CHECK_MEMBER(struct passwd.pw_comment,
5103                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5104                 [#include <pwd.h>])
5106 AC_CHECK_MEMBER(struct passwd.pw_age,
5107                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5108                 [#include <pwd.h>])
5110 # AIX 4.3.x and 5.1 do not have as many members in
5111 # struct secmethod_table as AIX 5.2
5112 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5113        [#include <usersec.h>])
5114 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5115        [#include <usersec.h>])
5118 #################################################
5119 # Check to see if we should use the included popt 
5121 AC_ARG_WITH(included-popt,
5122 [  --with-included-popt    use bundled popt library, not from system],
5124   case "$withval" in
5125         yes)
5126                 INCLUDED_POPT=yes
5127                 ;;
5128         no)
5129                 INCLUDED_POPT=no
5130                 ;;
5131   esac ],
5133 if test x"$INCLUDED_POPT" != x"yes"; then
5134     AC_CHECK_LIB(popt, poptGetContext,
5135                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5138 AC_MSG_CHECKING(whether to use included popt)
5139 if test x"$INCLUDED_POPT" = x"yes"; then
5140     AC_MSG_RESULT(yes)
5141     BUILD_POPT='$(POPT_OBJS)'
5142         POPTLIBS='$(POPT_OBJS)'
5143     FLAGS1="-I$srcdir/popt"
5144 else
5145     AC_MSG_RESULT(no)
5146         BUILD_POPT=""
5147     POPTLIBS="-lpopt"
5149 AC_SUBST(BUILD_POPT)
5150 AC_SUBST(POPTLIBS)
5151 AC_SUBST(FLAGS1)
5153 #################################################
5154 # Check if the user wants Python
5156 # At the moment, you can use this to set which Python binary to link
5157 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5158 # though they can coexist in different directories.)  In the future
5159 # this might make the Python stuff be built by default.
5161 # Defaulting python breaks the clean target if python isn't installed
5163 PYTHON=
5165 AC_ARG_WITH(python,
5166 [  --with-python=PYTHONNAME  build Python libraries],
5167 [ case "${withval-python}" in
5168   yes)
5169         PYTHON=python
5170         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5171         ;;
5172   no)
5173         PYTHON=
5174         ;;
5175   *)
5176         PYTHON=${withval-python}
5177         ;;
5178   esac ])
5179 AC_SUBST(PYTHON)
5181 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5183         eval MODULE_DEFAULT_$i=STATIC
5184 done
5186 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5188         dnl Fall back to static if we cannot build shared libraries
5189         eval MODULE_DEFAULT_$i=STATIC
5191         if test $BLDSHARED = true; then
5192                 eval MODULE_DEFAULT_$i=SHARED
5193         fi
5194 done
5196 dnl Always built these modules static
5197 MODULE_pdb_guest=STATIC
5198 MODULE_rpc_spoolss=STATIC
5199 MODULE_rpc_srv=STATIC
5200 MODULE_idmap_tdb=STATIC
5202 AC_ARG_WITH(static-modules,
5203 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
5204 [ if test $withval; then
5205         for i in `echo $withval | sed -e 's/,/ /g'`
5206         do
5207                 eval MODULE_$i=STATIC
5208         done
5209 fi ])
5211 AC_ARG_WITH(shared-modules,
5212 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
5213 [ if test $withval; then
5214         for i in `echo $withval | sed -e 's/,/ /g'`
5215         do
5216                         eval MODULE_$i=SHARED
5217         done
5218 fi ])
5220 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
5221                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5222 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5223 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5224 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
5225 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5228 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5229 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5230 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5231 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5232 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
5233 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
5234 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5235 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5236 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
5237 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5238 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
5239 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5240 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
5241 SMB_SUBSYSTEM(RPC,smbd/server.o)
5243 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
5244 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
5245 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
5246 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
5247 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
5249 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5250 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5251 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5252 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5253 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5255 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
5256 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5257 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5258 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5259 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5260 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5261 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5262 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5263 SMB_SUBSYSTEM(AUTH,auth/auth.o)
5265 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
5266 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
5267 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
5268 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
5269 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
5270 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
5271 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
5272 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
5273 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
5274 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
5275 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
5276 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
5277 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
5278 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
5280 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5282 #################################################
5283 # do extra things if we are running insure
5285 if test "${ac_cv_prog_CC}" = "insure"; then
5286         CPPFLAGS="$CPPFLAGS -D__INSURE__"
5289 #################################################
5290 # Display summary of libraries detected
5292 AC_MSG_RESULT([Using libraries:])
5293 AC_MSG_RESULT([    LIBS = $LIBS])
5294 if test x"$with_ads_support" != x"no"; then
5295    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
5297 if test x"$with_ldap_support" != x"no"; then
5298    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
5300 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
5302 #################################################
5303 # final configure stuff
5305 AC_MSG_CHECKING([configure summary])
5306 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
5307            AC_MSG_RESULT(yes),
5308            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5309            AC_MSG_WARN([cannot run when cross-compiling]))
5311 builddir=`pwd`
5312 AC_SUBST(builddir)
5314 # Stuff the FAM libraries at the end of the smbd link path (if we have them).
5315 SMBD_LIBS="$samba_fam_libs"
5316 AC_SUBST(SMBD_LIBS)
5318 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5319 LIB_REMOVE_USR_LIB(LDFLAGS)
5320 LIB_REMOVE_USR_LIB(LIBS)
5322 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5323 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5324 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5326 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
5328 #################################################
5329 # Print very concise instructions on building/use
5330 if test "x$enable_dmalloc" = xyes
5331 then
5332         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5333         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])