Enable checking/resetting of account lockout and bad password based on policy
[Samba/gebeck_regimport.git] / source / configure.in
blob27d39d13ca7d27cac923189b52fd539a20a9ca4e
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 AC_DISABLE_STATIC
9 AC_ENABLE_SHARED
11 #################################################
12 # Directory handling stuff to support both the
13 # legacy SAMBA directories and FHS compliant
14 # ones...
15 AC_PREFIX_DEFAULT(/usr/local/samba)
17 AC_ARG_WITH(fhs, 
18 [  --with-fhs              Use FHS-compliant paths (default=no)],
19     configdir="${sysconfdir}/samba"
20     lockdir="\${VARDIR}/lib/samba"
21     piddir="\${VARDIR}/run"
22     mandir="\${prefix}/share/man"
23     logfilebase="\${VARDIR}/log/samba"
24     privatedir="\${CONFIGDIR}/private"
25     libdir="\${prefix}/lib/samba"
26     swatdir="\${DATADIR}/samba/swat",
27     configdir="\${LIBDIR}"
28     logfilebase="\${VARDIR}"
29     lockdir="\${VARDIR}/locks"
30     piddir="\${VARDIR}/locks"
31     privatedir="\${prefix}/private"
32     swatdir="\${prefix}/swat")
34 #################################################
35 # set private directory location
36 AC_ARG_WITH(privatedir,
37 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
38 [ case "$withval" in
39   yes|no)
40   #
41   # Just in case anybody calls it without argument
42   #
43     AC_MSG_WARN([--with-privatedir called without argument - will use default])
44   ;;
45   * )
46     privatedir="$withval"
47     ;;
48   esac])
50 #################################################
51 # set lock directory location
52 AC_ARG_WITH(lockdir,
53 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
54 [ case "$withval" in
55   yes|no)
56   #
57   # Just in case anybody calls it without argument
58   #
59     AC_MSG_WARN([--with-lockdir called without argument - will use default])
60   ;;
61   * )
62     lockdir="$withval"
63     ;;
64   esac])
66 #################################################
67 # set pid directory location
68 AC_ARG_WITH(piddir,
69 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
70 [ case "$withval" in
71   yes|no)
72   #
73   # Just in case anybody calls it without argument
74   #
75     AC_MSG_WARN([--with-piddir called without argument - will use default])
76   ;;
77   * )
78     piddir="$withval"
79     ;;
80   esac])
82 #################################################
83 # set SWAT directory location
84 AC_ARG_WITH(swatdir,
85 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
86 [ case "$withval" in
87   yes|no)
88   #
89   # Just in case anybody does it
90   #
91     AC_MSG_WARN([--with-swatdir called without argument - will use default])
92   ;;
93   * )
94     swatdir="$withval"
95     ;;
96   esac])
98 #################################################
99 # set configuration directory location
100 AC_ARG_WITH(configdir,
101 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
102 [ case "$withval" in
103   yes|no)
104   #
105   # Just in case anybody does it
106   #
107     AC_MSG_WARN([--with-configdir called without argument - will use default])
108   ;;
109   * )
110     configdir="$withval"
111     ;;
112   esac])
114 #################################################
115 # set log directory location
116 AC_ARG_WITH(logfilebase,
117 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
118 [ case "$withval" in
119   yes|no)
120   #
121   # Just in case anybody does it
122   #
123     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
124   ;;
125   * )
126     logfilebase="$withval"
127     ;;
128   esac])
130 AC_ARG_WITH(cfenc,
131 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
132                           for optimization (Mac OS X/Darwin only)],
134 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
135 # Should have been in framework $withval/CoreFoundation.framework/Headers.
136 for d in \
137     $withval/CoreFoundation/StringEncodings.subproj \
138     $withval/StringEncodings.subproj \
139     $withval/CoreFoundation.framework/Headers \
140     $withval/Headers \
141     $withval
143     if test -r $d/CFStringEncodingConverter.h; then
144         ln -sfh $d include/CoreFoundation
145     fi
146 done
149 AC_SUBST(configdir)
150 AC_SUBST(lockdir)
151 AC_SUBST(piddir)
152 AC_SUBST(logfilebase)
153 AC_SUBST(privatedir)
154 AC_SUBST(swatdir)
155 AC_SUBST(bindir)
156 AC_SUBST(sbindir)
158 dnl Unique-to-Samba variables we'll be playing with.
159 AC_SUBST(SHELL)
160 AC_SUBST(LDSHFLAGS)
161 AC_SUBST(SONAMEFLAG)
162 AC_SUBST(SHLD)
163 AC_SUBST(HOST_OS)
164 AC_SUBST(PICFLAGS)
165 AC_SUBST(PICSUFFIX)
166 AC_SUBST(SHLIBEXT)
167 AC_SUBST(INSTALLCLIENT)
168 AC_SUBST(INSTALLCLIENTCMD_SH)
169 AC_SUBST(INSTALLCLIENTCMD_A)
170 AC_SUBST(LIBSMBCLIENT_SHARED)
171 AC_SUBST(LIBSMBCLIENT)
172 AC_SUBST(PRINT_LIBS)
173 AC_SUBST(AUTH_LIBS)
174 AC_SUBST(ACL_LIBS)
175 AC_SUBST(PASSDB_LIBS)
176 AC_SUBST(IDMAP_LIBS)
177 AC_SUBST(KRB5_LIBS)
178 AC_SUBST(LDAP_LIBS)
179 AC_SUBST(SHLIB_PROGS)
180 AC_SUBST(SMBWRAPPER)
181 AC_SUBST(EXTRA_BIN_PROGS)
182 AC_SUBST(EXTRA_SBIN_PROGS)
183 AC_SUBST(EXTRA_ALL_TARGETS)
185 AC_ARG_ENABLE(debug, 
186 [  --enable-debug          Turn on compiler debugging information (default=no)],
187     [if eval "test x$enable_debug = xyes"; then
188         CFLAGS="${CFLAGS} -g"
189     fi])
191 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
192     [if eval "test x$enable_developer = xyes"; then
193         developer=yes
194         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
195     fi])
197 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
198     [if eval "test x$enable_krb5developer = xyes"; then
199         developer=yes
200         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
201     fi])
203 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
205 if test "x$enable_dmalloc" = xyes
206 then
207         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
208         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
209                   [Define to check invariants around some common functions])
210         LIBS="$LIBS -ldmalloc"  
213 dnl Checks for programs.
216 ## for some reason this macro resets the CFLAGS
217 ## so save and restore
219 OLD_CFLAGS=${CFLAGS}
220 AC_PROG_CC
221 CFLAGS=${OLD_CFLAGS}
223 OLD_CFLAGS=${CFLAGS}
224 AC_PROG_CPP
225 CFLAGS=${OLD_CFLAGS}
227 AC_PROG_INSTALL
228 AC_PROG_AWK
229 AC_PATH_PROG(PERL, perl)
231 AC_CHECK_TOOL(AR, ar)
233 # compile with optimization and without debugging by default, but
234 # allow people to set their own preference.
235 if test "x$CFLAGS" = x
236 then
237   CFLAGS="-O ${CFLAGS}"
240 dnl Check if we use GNU ld
241 LD=ld
242 AC_PROG_LD_GNU
244 dnl needed before AC_TRY_COMPILE
245 AC_ISC_POSIX
247 dnl look for executable suffix
248 AC_EXEEXT
250 dnl Check if C compiler understands -c and -o at the same time
251 AC_PROG_CC_C_O
252 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
253       BROKEN_CC=
254 else
255       BROKEN_CC=#
257 AC_SUBST(BROKEN_CC)
259 dnl Check if the C compiler understands -Werror
260 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
261  AC_TRY_RUN_STRICT([
262   int main(void)
263   {
264         return 0;
265   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
266   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
267 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
268    Werror_FLAGS="-Werror"
269 else 
270 dnl Check if the C compiler understands -w2
271 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
272  AC_TRY_RUN_STRICT([
273   int main(void)
274   {
275         return 0;
276   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
277   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
278 if test x"$samba_cv_HAVE_w2" = x"yes"; then
279    Werror_FLAGS="-w2"
283 dnl Check if the C compiler understands volatile (it should, being ANSI).
284 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
285     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
286         samba_cv_volatile=yes,samba_cv_volatile=no)])
287 if test x"$samba_cv_volatile" = x"yes"; then
288    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
291 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
292 AC_MSG_CHECKING(uname -s)
293 AC_MSG_RESULT(${UNAME_S})
295 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
296 AC_MSG_CHECKING(uname -r)
297 AC_MSG_RESULT(${UNAME_R})
299 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
300 AC_MSG_CHECKING(uname -m)
301 AC_MSG_RESULT(${UNAME_M})
303 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
304 AC_MSG_CHECKING(uname -p)
305 AC_MSG_RESULT(${UNAME_P})
307 AC_CANONICAL_SYSTEM
309 dnl Add #include for broken IRIX header files
310   case "$host_os" in
311         *irix6*) AC_ADD_INCLUDE(<standards.h>)
312         ;;
313 esac
315 AC_VALIDATE_CACHE_SYSTEM_TYPE
317 DYNEXP=
319 dnl Add modules that have to be built by default here
320 dnl These have to be built static:
321 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_net rpc_dfs rpc_srv rpc_spoolss auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
323 dnl These are preferably build shared, and static if dlopen() is not available
324 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap charset_CP850 charset_CP437"
326 if test "x$developer" = xyes; then
327    default_static_modules="$default_static_modules rpc_echo"
328    default_shared_modules="$default_shared_modules charset_weird"
332 # Config CPPFLAG settings for strange OS's that must be set
333 # before other tests.
335 case "$host_os" in
336 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
337     *hpux*)
338     
339       AC_PROG_CC_FLAG(Ae)
340       # mmap on HPUX is completely broken...
341       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
342       if test $ac_cv_prog_cc_Ae = yes; then
343         CPPFLAGS="$CPPFLAGS -Ae"
344       fi
346 # Defines needed for HPUX support.
347 # HPUX has bigcrypt but (sometimes?) doesn't use it for
348 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
350       case `uname -r` in
351                         *9*|*10*)
352                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
353                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
354                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
355                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
356                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
357                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
358                                 ;;
359                         *11*)
360                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
361                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
362                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
363                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
364                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
365                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
366                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
367                                 ;;
368       esac
369       DYNEXP="-Wl,-E"
370       ;;
373 # CRAY Unicos has broken const handling
374        *unicos*)
375           AC_MSG_RESULT([disabling const])
376           CPPFLAGS="$CPPFLAGS -Dconst="
377           ;;
378         
380 # AIX4.x doesn't even admit to having large
381 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
383     *aix4*)
384           AC_MSG_RESULT([enabling large file support])
385       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
386           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
387       ;;    
389 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
390 # to the existance of large files..
391 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
392 # recommendations on large file support, however it makes the
393 # compile work using gcc 2.7 and 2.8, whereas using the Sun
394 # recommendation makes the compile fail on gcc2.7. JRA.
396 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
398         *solaris*)
399                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
400                 case `uname -r` in
401                         5.0*|5.1*|5.2*|5.3*|5.5*)
402                                 AC_MSG_RESULT([no large file support])
403                                 ;;
404                         5.*)
405                         AC_MSG_RESULT([enabling large file support])
406                         if test "$ac_cv_prog_gcc" = yes; then
407                                 ${CC-cc} -v >conftest.c 2>&1
408                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
409                                 rm -fr conftest.c
410                                 case "$ac_cv_gcc_compiler_version_number" in
411                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
412                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
413                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
414                                                 ;;
415                                         *)
416                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
417                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
418                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
419                                                 ;;
420                                 esac
421                         else
422                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
423                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
424                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
425                         fi
426                         ;;
427                 esac
428                 ;;
430 # IRIX uses SYSV printing.  Make sure to set that here
432         *irix*)
433                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
434                 ;;
435         *freebsd*)
436                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
437                 ;;
439 # VOS may need to have POSIX support and System V compatibility enabled.
441     *vos*)
442     case "$CPPFLAGS" in
443           *-D_POSIX_C_SOURCE*)
444                 ;;
445           *)
446                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
447                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
448                 ;;
449     esac
450     case "$CPPFLAGS" in
451           *-D_SYSV*|*-D_SVID_SOURCE*)
452                 ;;
453           *)
454                 CPPFLAGS="$CPPFLAGS -D_SYSV"
455                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
456     esac
457     ;;
459 # Tests needed for SINIX large file support.
461     *sysv4*)
462       if test $host = mips-sni-sysv4 ; then
463         AC_MSG_CHECKING([for LFS support])
464         old_CPPFLAGS="$CPPFLAGS"
465         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
466         AC_TRY_RUN([
467 #include <unistd.h>
468 main () {
469 #if _LFS64_LARGEFILE == 1
470 exit(0);
471 #else
472 exit(1);
473 #endif
474 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
475         CPPFLAGS="$old_CPPFLAGS"
476         if test x$SINIX_LFS_SUPPORT = xyes ; then
477           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
478                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
479           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
480           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
481           LIBS="`getconf LFS64_LIBS` $LIBS"
482         fi
483       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
484       fi
485     ;;
487 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
489     *linux*)
490         AC_MSG_CHECKING([for LFS support])
491         old_CPPFLAGS="$CPPFLAGS"
492         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
493        AC_TRY_RUN([
494 #include <unistd.h>
495 #include <sys/utsname.h>
496 #include <string.h>
497 #include <stdlib.h>
498 main() {
499 #if _LFS64_LARGEFILE == 1
500        struct utsname uts;
501        char *release;
502        int major, minor;
504        /* Ensure this is glibc 2.2 or higher */
505 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
506        int libc_major = __GLIBC__;
507        int libc_minor = __GLIBC_MINOR__;
509        if (libc_major < 2)
510               exit(1);
511        if (libc_minor < 2)
512               exit(1);
513 #endif
515        /* Ensure this is kernel 2.4 or higher */
517        uname(&uts);
518        release = strdup(uts.release);
519        major = atoi(strsep(&release, "."));
520        minor = atoi(strsep(&release, "."));
522        if (major > 2 || (major == 2 && minor > 3))
523                exit(0);
524        exit(1);
525 #else
526        exit(1);
527 #endif
529 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
530         CPPFLAGS="$old_CPPFLAGS"
531         if test x$LINUX_LFS_SUPPORT = xyes ; then
532                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
533                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
534                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
535                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
536         fi
537         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
538         ;;
541 # MacOS X is the *only* system that uses compose character in utf8. This
542 # is so horribly broken....
544     *darwin*)
545                 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
546 # Add Fink directories for various packages, like dlcompat.
547 # Note: iconv does that explicitly below, but other packages
548 # don't.
549                 CPPFLAGS="$CPPFLAGS -I/sw/include"
550                 LDFLAGS="$LDFLAGS -L/sw/lib"
552 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
553 # use that instead of plain dlsym.
555                 AC_CHECK_LIB(dl,dlopen)
556                 AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
558 #Add a system specific charset module.
560                 default_shared_modules="$default_shared_modules charset_macosxfs"
561                 old_CPPFLAGS="$CPPFLAGS"
562                 CPPFLAGS="-Iinclude $CPPFLAGS" 
563                 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
564                 CPPFLAGS="$old_CPPFLAGS"
565                 ;;
566     *hurd*)
567         AC_MSG_CHECKING([for LFS support])
568         old_CPPFLAGS="$CPPFLAGS"
569         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
570         AC_TRY_RUN([
571 #include <unistd.h>
572 main () {
573 #if _LFS64_LARGEFILE == 1
574 exit(0);
575 #else
576 exit(1);
577 #endif
578 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
579         CPPFLAGS="$old_CPPFLAGS"
580         if test x$GLIBC_LFS_SUPPORT = xyes ; then
581           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
582                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
583           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
584         fi
585       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
586     ;;
588 esac
590 AC_INLINE
591 AC_HEADER_STDC
592 AC_HEADER_DIRENT
593 AC_HEADER_TIME
594 AC_HEADER_SYS_WAIT
595 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
596 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
597 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
598 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
599 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
600 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
601 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
602 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h)
603 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
604 AC_CHECK_HEADERS(langinfo.h locale.h)
606 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
607 # subdirectory of headers.
608 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
611 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
612 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
614 case "$host_os" in
615     *hpux*)
616                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
617                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
618                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
619                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
620                 fi
621         ;;
622 esac
623 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
624 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
625 AC_CHECK_HEADERS(stropts.h poll.h)
626 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
627 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/cdefs.h glob.h)
629 # For experimental utmp support (lastlog on some BSD-like systems)
630 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
632 AC_CHECK_SIZEOF(int,cross)
633 AC_CHECK_SIZEOF(long,cross)
634 AC_CHECK_SIZEOF(short,cross)
636 AC_C_CONST
637 AC_C_INLINE
638 AC_C_BIGENDIAN
639 AC_C_CHAR_UNSIGNED
641 AC_TYPE_SIGNAL
642 AC_TYPE_UID_T
643 AC_TYPE_MODE_T
644 AC_TYPE_OFF_T
645 AC_TYPE_SIZE_T
646 AC_TYPE_PID_T
647 AC_STRUCT_ST_RDEV
648 AC_DIRENT_D_OFF
649 AC_CHECK_TYPE(ino_t,unsigned)
650 AC_CHECK_TYPE(loff_t,off_t)
651 AC_CHECK_TYPE(offset_t,loff_t)
652 AC_CHECK_TYPE(ssize_t, int)
653 AC_CHECK_TYPE(wchar_t, unsigned short)
655 ############################################
656 # for cups support we need libcups, and a handful of header files
658 AC_ARG_ENABLE(cups,
659 [  --enable-cups           Turn on CUPS support (default=auto)])
661 if test x$enable_cups != xno; then
662         AC_PATH_PROG(CUPS_CONFIG, cups-config)
664         if test "x$CUPS_CONFIG" != x; then
665                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
666                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
667                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
668                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
669         fi
672 ############################################
673 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
674 AC_SEARCH_LIBS(dlopen, [dl])
675 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
677 ############################################
678 # check if the compiler can do immediate structures
679 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
680     AC_TRY_COMPILE([
681 #include <stdio.h>],
683    typedef struct {unsigned x;} FOOBAR;
684    #define X_FOOBAR(x) ((FOOBAR) { x })
685    #define FOO_ONE X_FOOBAR(1)
686    FOOBAR f = FOO_ONE;   
687    static struct {
688         FOOBAR y; 
689         } f2[] = {
690                 {FOO_ONE}
691         };   
693         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
694 if test x"$samba_cv_immediate_structures" = x"yes"; then
695    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
698 ############################################
699 # check if the compiler can do immediate structures
700 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
701     AC_TRY_LINK([
702 #include <stdio.h>],
704                 if (0) {
705                    this_function_does_not_exist();
706                 } else {
707                   return 1;
708                 }
711         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
712 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
713    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
716 ############################################
717 # check for unix domain sockets
718 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
719     AC_TRY_COMPILE([
720 #include <sys/types.h>
721 #include <stdlib.h>
722 #include <stddef.h>
723 #include <sys/socket.h>
724 #include <sys/un.h>],
726   struct sockaddr_un sunaddr; 
727   sunaddr.sun_family = AF_UNIX;
729         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
730 if test x"$samba_cv_unixsocket" = x"yes"; then
731    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
735 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
736     AC_TRY_COMPILE([
737 #include <sys/types.h>
738 #if STDC_HEADERS
739 #include <stdlib.h>
740 #include <stddef.h>
741 #endif
742 #include <sys/socket.h>],[socklen_t i = 0],
743         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
744 if test x"$samba_cv_socklen_t" = x"yes"; then
745    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
748 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
749     AC_TRY_COMPILE([
750 #include <sys/types.h>
751 #if STDC_HEADERS
752 #include <stdlib.h>
753 #include <stddef.h>
754 #endif
755 #include <signal.h>],[sig_atomic_t i = 0],
756         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
757 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
758    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
761 # stupid headers have the functions but no declaration. grrrr.
762 AC_HAVE_DECL(errno, [#include <errno.h>])
763 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
764 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
765 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
766 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
767 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
768 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
770 # and glibc has setresuid under linux but the function does
771 # nothing until kernel 2.1.44! very dumb.
772 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
773     AC_TRY_RUN([#include <errno.h>
774 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
775         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
776 if test x"$samba_cv_have_setresuid" = x"yes"; then
777     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
780 # Do the same check for setresguid...
782 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
783     AC_TRY_RUN([#include <unistd.h>
784 #include <errno.h>
785 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
786         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
787 if test x"$samba_cv_have_setresgid" = x"yes"; then
788     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
791 AC_FUNC_MEMCMP
793 ###############################################
794 # Readline included by default unless explicitly asked not to
795 test "${with_readline+set}" != "set" && with_readline=yes
797 # test for where we get readline() from
798 AC_MSG_CHECKING(whether to use readline)
799 AC_ARG_WITH(readline,
800 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
801 [  case "$with_readline" in
802   yes)
803     AC_MSG_RESULT(yes)
805     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
806     AC_CHECK_HEADERS(readline/history.h)
808     AC_CHECK_HEADERS(readline.h readline/readline.h,[
809       for termlib in ncurses curses termcap terminfo termlib tinfo; do
810        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
811       done
812       AC_CHECK_LIB(readline, rl_callback_handler_install,
813        [TERMLIBS="-lreadline $TERMLIBS"
814        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
815        break], [TERMLIBS=], $TERMLIBS)])
816     ;;
817   no)
818     AC_MSG_RESULT(no)
819     ;;
820   *)
821     AC_MSG_RESULT(yes)
823     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
824     # alternate readline path
825     _ldflags=${LDFLAGS}
826     _cppflags=${CPPFLAGS}
828     # Add additional search path
829     LDFLAGS="-L$with_readline/lib $LDFLAGS"
830     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
832     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
833     AC_CHECK_HEADERS(readline/history.h)
835     AC_CHECK_HEADERS(readline.h readline/readline.h,[
836       for termlib in ncurses curses termcap terminfo termlib; do
837        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
838       done
839       AC_CHECK_LIB(readline, rl_callback_handler_install,
840        [TERMLDFLAGS="-L$with_readline/lib"
841        TERMCPPFLAGS="-I$with_readline/include"
842        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
843        TERMLIBS="-lreadline $TERMLIBS"
844        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
845        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
847     LDFLAGS=$_ldflags
848     ;;
849   esac],
850   AC_MSG_RESULT(no)
852 AC_SUBST(TERMLIBS)
853 AC_SUBST(TERMLDFLAGS)
855 # The readline API changed slightly from readline3 to readline4, so
856 # code will generate warnings on one of them unless we have a few
857 # special cases.
858 AC_CHECK_LIB(readline, rl_completion_matches,
859              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
860                         [Do we have rl_completion_matches?])],
861              [],
862              [$TERMLIBS])
864 # The following test taken from the cvs sources
865 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
866 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
867 # libsocket.so which has a bad implementation of gethostbyname (it
868 # only looks in /etc/hosts), so we only look for -lsocket if we need
869 # it.
870 AC_CHECK_FUNCS(connect)
871 if test x"$ac_cv_func_connect" = x"no"; then
872     case "$LIBS" in
873     *-lnsl*) ;;
874     *) AC_CHECK_LIB(nsl_s, printf) ;;
875     esac
876     case "$LIBS" in
877     *-lnsl*) ;;
878     *) AC_CHECK_LIB(nsl, printf) ;;
879     esac
880     case "$LIBS" in
881     *-lsocket*) ;;
882     *) AC_CHECK_LIB(socket, connect) ;;
883     esac
884     case "$LIBS" in
885     *-linet*) ;;
886     *) AC_CHECK_LIB(inet, connect) ;;
887     esac
888     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
889     dnl has been cached.
890     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
891        test x"$ac_cv_lib_inet_connect" = x"yes"; then
892         # ac_cv_func_connect=yes
893         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
894         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
895     fi
898 ###############################################
899 # test for where we get yp_get_default_domain() from
900 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
901 AC_CHECK_FUNCS(yp_get_default_domain)
903 # Check if we have execl, if not we need to compile smbrun.
904 AC_CHECK_FUNCS(execl)
905 if test x"$ac_cv_func_execl" = x"no"; then
906     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
909 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
910 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
911 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
912 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
913 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
914 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
915 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
916 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
917 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
918 AC_CHECK_FUNCS(syslog vsyslog timegm)
919 AC_CHECK_FUNCS(setlocale nl_langinfo)
920 # setbuffer, shmget, shm_open are needed for smbtorture
921 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
922 AC_CHECK_HEADERS(libexc.h)
923 AC_CHECK_LIB(exc, trace_back_stack)
925 # syscall() is needed for smbwrapper.
926 AC_CHECK_FUNCS(syscall)
928 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
929 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
930 AC_CHECK_FUNCS(__getcwd _getcwd)
931 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
932 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
933 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
934 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
935 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
936 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
937 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
938 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
939 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
940 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
941 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
946 case "$host_os" in
947     *linux*)
948        # glibc <= 2.3.2 has a broken getgrouplist
949        AC_TRY_RUN([
950 #include <unistd.h>
951 #include <sys/utsname.h>
952 main() {
953        /* glibc up to 2.3 has a broken getgrouplist */
954 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
955        int libc_major = __GLIBC__;
956        int libc_minor = __GLIBC_MINOR__;
958        if (libc_major < 2)
959               exit(1);
960        if ((libc_major == 2) && (libc_minor <= 3))
961               exit(1);
962 #endif
963        exit(0);
965 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
966        if test x"$linux_getgrouplist_ok" = x"yes"; then
967           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
968        fi
969        ;;
970     *)
971        AC_CHECK_FUNCS(getgrouplist)
972        ;;
973 esac
976 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
979 if test x$ac_cv_func_stat64 = xno ; then
980   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
981   AC_TRY_LINK([
982 #if defined(HAVE_UNISTD_H)
983 #include <unistd.h>
984 #endif
985 #include <sys/stat.h>
986 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
987   AC_MSG_RESULT([$ac_cv_func_stat64])
988   if test x$ac_cv_func_stat64 = xyes ; then
989     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
990   fi
993 if test x$ac_cv_func_lstat64 = xno ; then
994   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
995   AC_TRY_LINK([
996 #if defined(HAVE_UNISTD_H)
997 #include <unistd.h>
998 #endif
999 #include <sys/stat.h>
1000 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1001   AC_MSG_RESULT([$ac_cv_func_lstat64])
1002   if test x$ac_cv_func_lstat64 = xyes ; then
1003     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1004   fi
1007 if test x$ac_cv_func_fstat64 = xno ; then
1008   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1009   AC_TRY_LINK([
1010 #if defined(HAVE_UNISTD_H)
1011 #include <unistd.h>
1012 #endif
1013 #include <sys/stat.h>
1014 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1015   AC_MSG_RESULT([$ac_cv_func_fstat64])
1016   if test x$ac_cv_func_fstat64 = xyes ; then
1017     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1018   fi
1021 #####################################
1022 # we might need the resolv library on some systems
1023 AC_CHECK_LIB(resolv, dn_expand)
1026 # Check for the functions putprpwnam, set_auth_parameters,
1027 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1028 # Needed for OSF1 and HPUX.
1031 AC_LIBTESTFUNC(security, putprpwnam)
1032 AC_LIBTESTFUNC(sec, putprpwnam)
1034 AC_LIBTESTFUNC(security, set_auth_parameters)
1035 AC_LIBTESTFUNC(sec, set_auth_parameters)
1037 # UnixWare 7.x has its getspnam in -lgen
1038 AC_LIBTESTFUNC(gen, getspnam)
1040 AC_LIBTESTFUNC(security, getspnam)
1041 AC_LIBTESTFUNC(sec, getspnam)
1043 AC_LIBTESTFUNC(security, bigcrypt)
1044 AC_LIBTESTFUNC(sec, bigcrypt)
1046 AC_LIBTESTFUNC(security, getprpwnam)
1047 AC_LIBTESTFUNC(sec, getprpwnam)
1049 ############################################
1050 # Check if we have libattr
1051 AC_SEARCH_LIBS(getxattr, [attr])
1052 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1053 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1054 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1055 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1056 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1058 # Assume non-shared by default and override below
1059 BLDSHARED="false"
1061 # these are the defaults, good for lots of systems
1062 HOST_OS="$host_os"
1063 LDSHFLAGS="-shared"
1064 SONAMEFLAG="#"
1065 SHLD="\${CC} \${CFLAGS}"
1066 PICFLAGS=""
1067 PICSUFFIX="po"
1068 SHLIBEXT="so"
1070 if test "$enable_shared" = "yes"; then
1071   # this bit needs to be modified for each OS that is suported by
1072   # smbwrapper. You need to specify how to created a shared library and
1073   # how to compile C code to produce PIC object files
1075   AC_MSG_CHECKING([ability to build shared libraries])
1077   # and these are for particular systems
1078   case "$host_os" in
1079                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1080                         BLDSHARED="true"
1081                         LDSHFLAGS="-shared" 
1082                         DYNEXP="-Wl,--export-dynamic"
1083                         PICFLAGS="-fPIC"
1084                         SONAMEFLAG="-Wl,-soname="
1085                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1086                         ;;
1087                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1088                         BLDSHARED="true"
1089                         LDSHFLAGS="-G"
1090                         SONAMEFLAG="-h "
1091                         if test "${GCC}" = "yes"; then
1092                                 PICFLAGS="-fPIC"
1093                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1094                                         DYNEXP="-Wl,-E"
1095                                 fi
1096                         else
1097                                 PICFLAGS="-KPIC"
1098                                 ## ${CFLAGS} added for building 64-bit shared 
1099                                 ## libs using Sun's Compiler
1100                                 LDSHFLAGS="-G \${CFLAGS}"
1101                                 PICSUFFIX="po.o"
1102                         fi
1103                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1104                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1105                         ;;
1106                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1107                         BLDSHARED="true"
1108                         LDSHFLAGS="-G"
1109                         SONAMEFLAG="-Wl,-h,"
1110                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1111                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1112                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1113                         ;;
1114                 *netbsd* | *freebsd*)  BLDSHARED="true"
1115                         LDSHFLAGS="-shared"
1116                         DYNEXP="-Wl,--export-dynamic"
1117                         SONAMEFLAG="-Wl,-soname,"
1118                         PICFLAGS="-fPIC -DPIC"
1119                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1120                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1121                         ;;
1122                 *openbsd*)  BLDSHARED="true"
1123                         LDSHFLAGS="-shared"
1124                         DYNEXP="-Wl,-Bdynamic"
1125                         SONAMEFLAG="-Wl,-soname,"
1126                         PICFLAGS="-fPIC"
1127                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1128                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1129                         ;;
1130                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1131                         case "$host_os" in
1132                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1133                         ;;
1134                         esac
1135                         BLDSHARED="true"
1136                         LDSHFLAGS="-set_version sgi1.0 -shared"
1137                         SONAMEFLAG="-soname "
1138                         SHLD="\${LD}"
1139                         if test "${GCC}" = "yes"; then
1140                                 PICFLAGS="-fPIC"
1141                         else 
1142                                 PICFLAGS="-KPIC"
1143                         fi
1144                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1145                         ;;
1146                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1147                         BLDSHARED="true"
1148                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1149                         DYNEXP="-Wl,-brtl,-bexpall"
1150                         PICFLAGS="-O2"
1151                         if test "${GCC}" != "yes"; then
1152                                 ## for funky AIX compiler using strncpy()
1153                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1154                         fi
1156                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1157                         ;;
1158                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1159                         SHLIBEXT="sl"
1160                         # Use special PIC flags for the native HP-UX compiler.
1161                         if test $ac_cv_prog_cc_Ae = yes; then
1162                                 BLDSHARED="true"
1163                                 SHLD="/usr/bin/ld"
1164                                 LDSHFLAGS="-B symbolic -b -z"
1165                                 SONAMEFLAG="+h "
1166                                 PICFLAGS="+z"
1167                         elif test "${GCC}" = "yes"; then
1168                                 PICFLAGS="-fPIC"
1169                         fi
1170                         DYNEXP="-Wl,-E"
1171                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1172                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1173                         ;;
1174                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1175                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1176                         ;;
1177                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1178                         BLDSHARED="true"
1179                         LDSHFLAGS="-shared"
1180                         SONAMEFLAG="-Wl,-soname,"
1181                         PICFLAGS="-fPIC"
1182                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1183                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1184                         ;;
1185                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1186                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1187                         ;;
1188                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1189                         BLDSHARED="true"
1190                         LDSHFLAGS="-shared"
1191                         SONAMEFLAG="-Wl,-soname,"
1192                         PICFLAGS="-KPIC"
1193                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1194                         ;;
1195                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1196                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1197                         ;;
1198                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1199                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1200                         ;;
1201                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1202                         case "$host" in
1203                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1204                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1205                                         fi
1206                                         LDSHFLAGS="-G"
1207                                         DYNEXP="-Bexport"
1208                                 ;;
1209                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1210                         esac
1211                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1212                         ;;
1214                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1215                         if [ test "$GCC" != yes ]; then
1216                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1217                         fi
1218                         LDSHFLAGS="-G"
1219                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1220                         ;;
1221                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1222                         BLDSHARED="false"
1223                         LDSHFLAGS=""
1224                         ;;
1226                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1227                         BLDSHARED="true"
1228                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1229                         SHLIBEXT="dylib"
1230                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1231                         ;;
1233                 *)
1234                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1235                         ;;
1236   esac
1237   AC_SUBST(DYNEXP)
1238   AC_MSG_RESULT($BLDSHARED)
1239   AC_MSG_CHECKING([linker flags for shared libraries])
1240   AC_MSG_RESULT([$LDSHFLAGS])
1241   AC_MSG_CHECKING([compiler flags for position-independent code])
1242   AC_MSG_RESULT([$PICFLAGS])
1245 #######################################################
1246 # test whether building a shared library actually works
1247 if test $BLDSHARED = true; then
1248 AC_CACHE_CHECK([whether building shared libraries actually works], 
1249                [ac_cv_shlib_works],[
1250    ac_cv_shlib_works=no
1251    # try building a trivial shared library
1252    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1253         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1254         $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1255         shlib.$PICSUFFIX && \
1256         ac_cv_shlib_works=yes
1257    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1259 if test $ac_cv_shlib_works = no; then
1260    BLDSHARED=false
1264 ################
1266 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1267 AC_TRY_RUN([#include <stdio.h>
1268 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1269 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1270 if test x"$samba_cv_have_longlong" = x"yes"; then
1271     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1275 # Check if the compiler supports the LL prefix on long long integers.
1276 # AIX needs this.
1278 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1279     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1280         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1281 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1282    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1285   
1286 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1287 AC_TRY_RUN([#include <stdio.h>
1288 #include <sys/stat.h>
1289 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1290 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1291 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1292     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1295 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1296 AC_TRY_RUN([
1297 #if defined(HAVE_UNISTD_H)
1298 #include <unistd.h>
1299 #endif
1300 #include <stdio.h>
1301 #include <sys/stat.h>
1302 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1303 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1304 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1305     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1308 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1309 AC_TRY_RUN([#include <stdio.h>
1310 #include <sys/stat.h>
1311 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1312 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1313 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1314     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1317 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1318 AC_TRY_RUN([
1319 #if defined(HAVE_UNISTD_H)
1320 #include <unistd.h>
1321 #endif
1322 #include <stdio.h>
1323 #include <sys/stat.h>
1324 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1325 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1326 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1327     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1330 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1331 AC_TRY_RUN([
1332 #if defined(HAVE_UNISTD_H)
1333 #include <unistd.h>
1334 #endif
1335 #include <stdio.h>
1336 #include <sys/stat.h>
1337 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1338 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1339 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1340     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1343 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1344 AC_TRY_COMPILE([
1345 #if defined(HAVE_UNISTD_H)
1346 #include <unistd.h>
1347 #endif
1348 #include <sys/types.h>
1349 #include <dirent.h>],
1350 [struct dirent64 de;],
1351 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1352 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1353     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1356 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1357 AC_TRY_RUN([
1358 #if defined(HAVE_UNISTD_H)
1359 #include <unistd.h>
1360 #endif
1361 #include <sys/types.h>
1362 main() { dev_t dev; int i = major(dev); return 0; }],
1363 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1364 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1365     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1368 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1369 AC_TRY_RUN([
1370 #if defined(HAVE_UNISTD_H)
1371 #include <unistd.h>
1372 #endif
1373 #include <sys/types.h>
1374 main() { dev_t dev; int i = minor(dev); return 0; }],
1375 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1376 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1377     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1380 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1381 AC_TRY_RUN([#include <stdio.h>
1382 main() { char c; c=250; exit((c > 0)?0:1); }],
1383 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1384 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1385     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1388 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1389 AC_TRY_COMPILE([#include <sys/types.h>
1390 #include <sys/socket.h>
1391 #include <netinet/in.h>],
1392 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1393 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1394 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1395     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1398 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1399 AC_TRY_COMPILE([#include <sys/types.h>
1400 #include <dirent.h>
1401 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1402 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1403 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1404     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1407 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1408 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1409 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1410 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1411     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1414 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1415 AC_TRY_RUN([
1416 #include <sys/time.h>
1417 #include <unistd.h>
1418 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1419            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1420 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1421     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1424 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1425 AC_TRY_LINK([#include <stdarg.h>
1426 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1427 samba_cv_HAVE_VA_COPY=yes,
1428 samba_cv_HAVE_VA_COPY=no)])
1429 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1430     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1431 else
1432     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1433     AC_TRY_LINK([#include <stdarg.h>
1434     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1435     samba_cv_HAVE___VA_COPY=yes,
1436     samba_cv_HAVE___VA_COPY=no)])
1437     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1438         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1439     fi
1442 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1443 AC_TRY_RUN([
1444 #include <sys/types.h>
1445 #include <stdarg.h>
1446 void foo(const char *format, ...) { 
1447        va_list ap;
1448        int len;
1449        char buf[5];
1451        va_start(ap, format);
1452        len = vsnprintf(buf, 0, format, ap);
1453        va_end(ap);
1454        if (len != 5) exit(1);
1456        va_start(ap, format);
1457        len = vsnprintf(0, 0, format, ap);
1458        va_end(ap);
1459        if (len != 5) exit(1);
1461        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1463        exit(0);
1465 main() { foo("hello"); }
1467 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1468 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1469     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1472 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1473 AC_TRY_RUN([#include <sys/types.h>
1474 #include <dirent.h>
1475 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1476 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1477 di->d_name[0] == 0) exit(0); exit(1);} ],
1478 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1479 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1480     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1483 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1484 AC_TRY_COMPILE([#include <sys/types.h>
1485 #include <utime.h>],
1486 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1487 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1488 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1489     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1492 ##############
1493 # Check utmp details, but only if our OS offers utmp.h
1494 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1495 dnl  utmp and utmpx come in many flavours
1496 dnl  We need to check for many of them
1497 dnl  But we don't need to do each and every one, because our code uses
1498 dnl  mostly just the utmp (not utmpx) fields.
1500 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1502 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1503 AC_TRY_COMPILE([#include <sys/types.h>
1504 #include <utmp.h>],
1505 [struct utmp ut;  ut.ut_name[0] = 'a';],
1506 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1507 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1508     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1509 fi 
1511 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1512 AC_TRY_COMPILE([#include <sys/types.h>
1513 #include <utmp.h>],
1514 [struct utmp ut;  ut.ut_user[0] = 'a';],
1515 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1516 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1517     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1518 fi 
1520 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1521 AC_TRY_COMPILE([#include <sys/types.h>
1522 #include <utmp.h>],
1523 [struct utmp ut;  ut.ut_id[0] = 'a';],
1524 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1525 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1526     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1527 fi 
1529 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1530 AC_TRY_COMPILE([#include <sys/types.h>
1531 #include <utmp.h>],
1532 [struct utmp ut;  ut.ut_host[0] = 'a';],
1533 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1534 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1535     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1536 fi 
1538 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1539 AC_TRY_COMPILE([#include <sys/types.h>
1540 #include <utmp.h>],
1541 [struct utmp ut;  time_t t; ut.ut_time = t;],
1542 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1543 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1544     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1545 fi 
1547 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1548 AC_TRY_COMPILE([#include <sys/types.h>
1549 #include <utmp.h>],
1550 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1551 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1552 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1553     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1554 fi 
1556 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1557 AC_TRY_COMPILE([#include <sys/types.h>
1558 #include <utmp.h>],
1559 [struct utmp ut;  ut.ut_type = 0;],
1560 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1561 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1562     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1563 fi 
1565 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1566 AC_TRY_COMPILE([#include <sys/types.h>
1567 #include <utmp.h>],
1568 [struct utmp ut;  ut.ut_pid = 0;],
1569 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1570 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1571     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1572 fi 
1574 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1575 AC_TRY_COMPILE([#include <sys/types.h>
1576 #include <utmp.h>],
1577 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1578 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1579 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1580     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1581 fi 
1583 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1584 AC_TRY_COMPILE([#include <sys/types.h>
1585 #include <utmp.h>],
1586 [struct utmp ut;  ut.ut_addr = 0;],
1587 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1588 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1589     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1590 fi 
1592 if test x$ac_cv_func_pututline = xyes ; then
1593   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1594   AC_TRY_COMPILE([#include <sys/types.h>
1595 #include <utmp.h>],
1596   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1597   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1598   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1599       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1600   fi
1603 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1604 AC_TRY_COMPILE([#include <sys/types.h>
1605 #include <utmpx.h>],
1606 [struct utmpx ux;  ux.ut_syslen = 0;],
1607 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1608 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1609     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1610 fi 
1613 # end utmp details
1616 ICONV_LOCATION=standard
1617 LOOK_DIRS="/usr /usr/local /sw"
1618 AC_ARG_WITH(libiconv,
1619 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1621   if test "$withval" = "no" ; then
1622     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
1623   else
1624      if test "$withval" != "yes" ; then
1625         ICONV_PATH_SPEC=yes
1626         LOOK_DIRS="$withval"
1627      fi
1628   fi
1631 ICONV_FOUND="no"
1632 for i in $LOOK_DIRS ; do
1633     save_LIBS=$LIBS
1634     save_LDFLAGS=$LDFLAGS
1635     save_CPPFLAGS=$CPPFLAGS
1636     CPPFLAGS="$CPPFLAGS -I$i/include"
1637 dnl This is here to handle -withval stuff for --with-libiconv
1638 dnl Perhaps we should always add a -L
1639     LDFLAGS="$LDFLAGS -L$i/lib"
1640     LIBS=
1641     export LDFLAGS LIBS CPPFLAGS
1642 dnl Try to find iconv(3)
1643     jm_ICONV($i)
1645     if test "$ICONV_FOUND" = yes; then
1646         LDFLAGS=$save_LDFLAGS
1647         LIB_ADD_DIR(LDFLAGS, "$i/lib")
1648         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1649         LIBS="$save_LIBS"
1650         ICONV_LOCATION=$i
1651         export LDFLAGS LIBS CPPFLAGS
1652 dnl Now, check for a working iconv ... we want to do it here because
1653 dnl there might be a working iconv further down the list of LOOK_DIRS
1655         ############
1656         # check for iconv in libc
1657         ic_save_LIBS="$LIBS"
1658         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1659            LIBS="$LIBS -L$ICONV_LOCATION/lib"
1660         fi
1661         if test x"$jm_cv_lib_iconv" != x; then
1662            LIBS="$LIBS -l$jm_cv_lib_iconv"
1663         fi
1664 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1665         default_dos_charset=no
1666         default_display_charset=no
1667         default_unix_charset=no
1669         # check for default dos charset name
1670         for j in CP850 IBM850 ; do
1671             rjs_CHARSET($j)
1672             if test x"$ICONV_CHARSET" = x"$j"; then
1673                 default_dos_charset="\"$j\""
1674                 break
1675             fi
1676         done
1677         # check for default display charset name
1678         for j in ASCII 646 ; do
1679             rjs_CHARSET($j)
1680             if test x"$ICONV_CHARSET" = x"$j"; then
1681                 default_display_charset="\"$j\""
1682                 break
1683             fi
1684         done
1685         # check for default unix charset name
1686         for j in UTF-8 UTF8 ; do
1687             rjs_CHARSET($j)
1688             if test x"$ICONV_CHARSET" = x"$j"; then
1689                 default_unix_charset="\"$j\""
1690                 break
1691             fi
1692         done
1693         
1694         if test "$default_dos_charset" != "no" -a \
1695                 "$default_dos_charset" != "cross" -a \
1696                 "$default_display_charset" != "no" -a \ 
1697                 "$default_display_charset" != "cross" -a \
1698                 "$default_unix_charset" != "no" -a \
1699                 "$default_unix_charset" != "cross"
1700         then
1701                 samba_cv_HAVE_NATIVE_ICONV=yes
1702         else if test "$default_dos_charset" = "cross" -o \
1703                      "$default_display_charset" = "cross" -o \
1704                      "$default_unix_charset" = "cross"
1705         then
1706                 samba_cv_HAVE_NATIVE_ICONV=cross
1707         else
1708                 samba_cv_HAVE_NATIVE_ICONV=no
1709         fi
1710         fi
1711 dnl ])
1713         LIBS="$ic_save_LIBS"
1714         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1715            CPPFLAGS=$save_CPPFLAGS
1716            LDFLAGS=$save_LDFLAGS
1717            LIBS=$save_LIBS
1718            if test x"$jm_cv_lib_iconv" != x; then
1719               LIBS="$LIBS -l$jm_cv_lib_iconv"
1720            fi
1721            dnl Add the flags we need to CPPFLAGS and LDFLAGS
1722            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1723            LIB_ADD_DIR(LDFLAGS, "$i/lib")
1724            export CPPFLAGS
1725            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1726            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1727            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1728            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1729            break
1730         fi
1731 dnl We didn't find a working iconv, so keep going
1732     fi
1733 dnl We only need to clean these up here for the next pass through the loop
1734     CPPFLAGS=$save_CPPFLAGS
1735     LDFLAGS=$save_LDFLAGS
1736     LIBS=$save_LIBS
1737     export LDFLAGS LIBS CPPFLAGS
1738 done
1741 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1742     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1743     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1744    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
1745    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1746    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1750 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1751 AC_TRY_RUN([
1752 #include <sys/types.h>
1753 #include <fcntl.h>
1754 #ifndef F_GETLEASE
1755 #define F_GETLEASE      1025
1756 #endif
1757 main() {
1758        int fd = open("/dev/null", O_RDONLY);
1759        return fcntl(fd, F_GETLEASE, 0) == -1;
1762 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1763 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1764     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1767 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1768 AC_TRY_RUN([
1769 #include <sys/types.h>
1770 #include <fcntl.h>
1771 #include <signal.h>
1772 #ifndef F_NOTIFY
1773 #define F_NOTIFY 1026
1774 #endif
1775 main() {
1776         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1779 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1780 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1781     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1784 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1785 AC_TRY_RUN([
1786 #include <sys/types.h>
1787 #include <fcntl.h>
1788 #include <signal.h>
1789 #include <sys/file.h>
1790 #ifndef LOCK_MAND
1791 #define LOCK_MAND       32
1792 #define LOCK_READ       64
1793 #endif
1794 main() {
1795         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1798 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1799 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1800     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1806 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1807 AC_TRY_COMPILE([#include <sys/types.h>
1808 #include <fcntl.h>],
1809 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1810 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1811 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1812     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1815 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1816 AC_TRY_RUN([#include <sys/types.h>
1817 #include <sys/capability.h>
1818 main() {
1819  cap_t cap;
1820  if ((cap = cap_get_proc()) == NULL)
1821    exit(1);
1822  cap->cap_effective |= CAP_NETWORK_MGT;
1823  cap->cap_inheritable |= CAP_NETWORK_MGT;
1824  cap_set_proc(cap);
1825  exit(0);
1828 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1829 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1830     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1834 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1835 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1838 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1839 AC_TRY_COMPILE([#include <sys/types.h>
1840 #if defined(HAVE_RPC_RPC_H)
1841 #include <rpc/rpc.h>
1842 #endif],
1843 [int16 testvar;],
1844 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1845 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1846     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1849 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1850 AC_TRY_COMPILE([#include <sys/types.h>
1851 #if defined(HAVE_RPC_RPC_H)
1852 #include <rpc/rpc.h>
1853 #endif],
1854 [uint16 testvar;],
1855 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1856 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1857     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1860 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1861 AC_TRY_COMPILE([#include <sys/types.h>
1862 #if defined(HAVE_RPC_RPC_H)
1863 #include <rpc/rpc.h>
1864 #endif],
1865 [int32 testvar;],
1866 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1867 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1868     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1871 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1872 AC_TRY_COMPILE([#include <sys/types.h>
1873 #if defined(HAVE_RPC_RPC_H)
1874 #include <rpc/rpc.h>
1875 #endif],
1876 [uint32 testvar;],
1877 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1878 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1879     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1883 dnl Some systems (SCO) have a problem including
1884 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1885 dnl as a #define in <prot.h> and as part of an enum
1886 dnl in <rpc/rpc.h>.
1889 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1890 AC_TRY_COMPILE([#include <sys/types.h>
1891 #ifdef HAVE_SYS_SECURITY_H
1892 #include <sys/security.h>
1893 #include <prot.h>
1894 #endif  /* HAVE_SYS_SECURITY_H */
1895 #if defined(HAVE_RPC_RPC_H)
1896 #include <rpc/rpc.h>
1897 #endif],
1898 [int testvar;],
1899 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1900 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1901     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1904 AC_MSG_CHECKING([for test routines])
1905 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1906            AC_MSG_RESULT(yes),
1907            AC_MSG_ERROR([cant find test code. Aborting config]),
1908            AC_MSG_WARN([cannot run when cross-compiling]))
1910 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1911 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1912            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1913 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1914     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1917 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1918 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1919            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1920            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1921            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1922 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1923 then
1924     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1927 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1928 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1929            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1930 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1931     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1934 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1935 SAVE_CPPFLAGS="$CPPFLAGS"
1936 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1937 AC_TRY_COMPILE([
1938 #define REPLACE_GETPASS 1
1939 #define NO_PROTO_H 1
1940 #define NO_CONFIG_H 1
1941 #define main dont_declare_main
1942 #include "${srcdir-.}/lib/getsmbpass.c"
1943 #undef main
1944 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1945 CPPFLAGS="$SAVE_CPPFLAGS"
1947 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1948         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1951 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1952 AC_TRY_RUN([
1953 #include <stdio.h>
1954 #include <sys/types.h>
1955 #include <netinet/in.h>
1956 #ifdef HAVE_ARPA_INET_H
1957 #include <arpa/inet.h>
1958 #endif
1959 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1960 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1961     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1962 exit(1);}],
1963            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1964 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1965     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1968 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1969 AC_TRY_RUN([#include <stdlib.h>
1970 #include <sys/types.h>
1971 #include <sys/stat.h>
1972 #include <unistd.h>
1973 main() { 
1974   struct stat st;
1975   char tpl[20]="/tmp/test.XXXXXX"; 
1976   int fd = mkstemp(tpl); 
1977   if (fd == -1) exit(1);
1978   unlink(tpl);
1979   if (fstat(fd, &st) != 0) exit(1);
1980   if ((st.st_mode & 0777) != 0600) exit(1);
1981   exit(0);
1983 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1984 samba_cv_HAVE_SECURE_MKSTEMP=no,
1985 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1986 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1987     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1990 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1991 AC_TRY_RUN([#include <unistd.h>
1992 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1993 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1994 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1995     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1998 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
1999 AC_TRY_RUN([#include <unistd.h>
2000 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2001 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2002 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2003     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2006 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2007 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2008            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2009 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2010     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2011 else
2012     AC_MSG_WARN(running as non-root will disable some tests)
2015 ##################
2016 # look for a method of finding the list of network interfaces
2017 iface=no;
2018 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2019 AC_TRY_RUN([
2020 #define HAVE_IFACE_AIX 1
2021 #define AUTOCONF_TEST 1
2022 #include "confdefs.h"
2023 #include "${srcdir-.}/lib/interfaces.c"],
2024            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2025 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2026     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2029 if test $iface = no; then
2030 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2031 AC_TRY_RUN([
2032 #define HAVE_IFACE_IFCONF 1
2033 #define AUTOCONF_TEST 1
2034 #include "confdefs.h"
2035 #include "${srcdir-.}/lib/interfaces.c"],
2036            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2037 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2038     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2042 if test $iface = no; then
2043 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2044 AC_TRY_RUN([
2045 #define HAVE_IFACE_IFREQ 1
2046 #define AUTOCONF_TEST 1
2047 #include "confdefs.h"
2048 #include "${srcdir-.}/lib/interfaces.c"],
2049            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2050 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2051     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2056 ################################################
2057 # look for a method of setting the effective uid
2058 seteuid=no;
2059 if test $seteuid = no; then
2060 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2061 AC_TRY_RUN([
2062 #define AUTOCONF_TEST 1
2063 #define USE_SETRESUID 1
2064 #include "confdefs.h"
2065 #include "${srcdir-.}/lib/util_sec.c"],
2066            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2067 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2068     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2073 if test $seteuid = no; then
2074 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2075 AC_TRY_RUN([
2076 #define AUTOCONF_TEST 1
2077 #define USE_SETREUID 1
2078 #include "confdefs.h"
2079 #include "${srcdir-.}/lib/util_sec.c"],
2080            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2081 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2082     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2086 if test $seteuid = no; then
2087 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2088 AC_TRY_RUN([
2089 #define AUTOCONF_TEST 1
2090 #define USE_SETEUID 1
2091 #include "confdefs.h"
2092 #include "${srcdir-.}/lib/util_sec.c"],
2093            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2094 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2095     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2099 if test $seteuid = no; then
2100 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2101 AC_TRY_RUN([
2102 #define AUTOCONF_TEST 1
2103 #define USE_SETUIDX 1
2104 #include "confdefs.h"
2105 #include "${srcdir-.}/lib/util_sec.c"],
2106            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2107 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2108     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2113 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2114 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2115            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2116 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2117     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2120 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2121 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2122            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2123 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2124     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2127 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2128 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2129            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2130 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2131     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2134 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2135 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2136            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2137 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2138     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2140 else
2143 dnl Don't check for 64 bit fcntl locking if we know that the
2144 dnl glibc2.1 broken check has succeeded.
2145 dnl 
2147   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2148   AC_TRY_RUN([
2149 #if defined(HAVE_UNISTD_H)
2150 #include <unistd.h>
2151 #endif
2152 #include <stdio.h>
2153 #include <stdlib.h>
2155 #ifdef HAVE_FCNTL_H
2156 #include <fcntl.h>
2157 #endif
2159 #ifdef HAVE_SYS_FCNTL_H
2160 #include <sys/fcntl.h>
2161 #endif
2162 main() { struct flock64 fl64;
2163 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2164 exit(0);
2165 #else
2166 exit(1);
2167 #endif
2169        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2171   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2172       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2173   fi
2176 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2177 AC_TRY_COMPILE([#include <sys/types.h>
2178 #include <sys/stat.h>
2179 #include <unistd.h>],
2180 [struct stat st;  st.st_blocks = 0;],
2181 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2182 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2183     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2184 fi 
2186 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2187 AC_TRY_COMPILE([#include <sys/types.h>
2188 #include <sys/stat.h>
2189 #include <unistd.h>],
2190 [struct stat st;  st.st_blksize = 0;],
2191 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2192 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2193     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2196 case "$host_os" in
2197 *linux*)
2198 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2199 AC_TRY_COMPILE([
2200 #ifdef HAVE_SYS_VFS_H
2201 #include <sys/vfs.h>
2202 #endif
2203 #ifdef HAVE_SYS_CAPABILITY_H
2204 #include <sys/capability.h>
2205 #endif
2206 ],[int i;],
2207    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2208 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2209    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2212 esac
2214 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2215 AC_TRY_COMPILE([
2216 #include <sys/types.h>
2217 #include <sys/acl.h>
2218 #if defined(HAVE_RPCSVC_NIS_H)
2219 #include <rpcsvc/nis.h>
2220 #endif],
2221 [int i;],
2222 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2223 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2224         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2228 #################################################
2229 # check for smbwrapper support
2230 AC_MSG_CHECKING(whether to use smbwrapper)
2231 AC_ARG_WITH(smbwrapper,
2232 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2233 [ case "$withval" in
2234   yes)
2235     AC_MSG_RESULT(yes)
2236     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2237         WRAPPROG="bin/smbsh\$(EXEEXT)"
2238         WRAP="bin/smbwrapper.$SHLIBEXT"
2240 # Conditions under which smbwrapper should not be built.
2242         if test x$PICFLAGS = x; then
2243            echo No support for PIC code - disabling smbwrapper and smbsh
2244            WRAPPROG=""
2245            WRAP=""
2246         elif test x$ac_cv_func_syscall = xno; then
2247            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2248            WRAPPROG=""
2249            WRAP=""
2250         fi
2251         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2252         SMBWRAPPER="$WRAPPROG $WRAP"
2253     ;;
2254   *)
2255     AC_MSG_RESULT(no)
2256     ;;
2257   esac ],
2258   AC_MSG_RESULT(no)
2261 #################################################
2262 # check for AFS clear-text auth support
2263 samba_cv_WITH_AFS=no
2264 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2265 AC_ARG_WITH(afs,
2266 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2267 [ case "$withval" in
2268   yes|auto)
2269     AC_MSG_RESULT($withval)
2270     samba_cv_WITH_AFS=$withval
2271     ;;
2272   *)
2273     AC_MSG_RESULT(no)
2274     ;;
2275   esac ],
2276   AC_MSG_RESULT(no)
2279 ####################################################
2280 # check for Linux-specific AFS fake-kaserver support
2281 samba_cv_WITH_FAKE_KASERVER=no
2282 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2283 AC_ARG_WITH(fake-kaserver,
2284 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2285 [ case "$withval" in
2286   yes|auto)
2287     AC_MSG_RESULT($withval)
2288     samba_cv_WITH_FAKE_KASERVER=$withval
2289     ;;
2290   *)
2291     AC_MSG_RESULT(no)
2292     ;;
2293   esac ],
2294   AC_MSG_RESULT(no)
2297 #################################################
2298 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2299 if test x"$samba_cv_WITH_AFS" != x"no" ||
2300    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2302     # see if this box has the afs-headers in /usr/include/afs
2303     AC_MSG_CHECKING(for /usr/include/afs)
2304     if test -d /usr/include/afs; then
2305           CFLAGS="$CFLAGS -I/usr/include/afs"
2306           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2307           AC_MSG_RESULT(yes)
2308     else
2309       AC_MSG_RESULT(no)
2310     fi
2311    
2312     # check for afs.h
2313     have_afs_headers=no
2314     AC_CHECK_HEADERS(afs.h afs/afs.h)
2315     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2316         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2317            test x"$samba_cv_WITH_AFS" = x"auto"; then
2318                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2319         else
2320                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2321         fi
2322     else
2323         have_afs_headers=yes
2324     fi
2327 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" == x"yes"; then
2328     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2330         
2331 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2332     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2335 #################################################
2336 # check for the DFS clear-text auth system
2337 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2338 AC_ARG_WITH(dfs,
2339 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2340 [ case "$withval" in
2341   yes)
2342     AC_MSG_RESULT(yes)
2343     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2344     ;;
2345   *)
2346     AC_MSG_RESULT(no)
2347     ;;
2348   esac ],
2349   AC_MSG_RESULT(no)
2352 ########################################################
2353 # Compile with LDAP support?
2355 with_ldap_support=auto
2356 AC_MSG_CHECKING([for LDAP support])
2358 AC_ARG_WITH(ldap,
2359 [  --with-ldap             LDAP support (default yes)],
2360 [ case "$withval" in
2361     yes|no)
2362         with_ldap_support=$withval
2363         ;;
2364   esac ])
2366 AC_MSG_RESULT($with_ldap_support)
2368 SMBLDAP=""
2369 AC_SUBST(SMBLDAP)
2370 if test x"$with_ldap_support" != x"no"; then
2372   ##################################################################
2373   # first test for ldap.h and lber.h
2374   # (ldap.h is required for this test)
2375   AC_CHECK_HEADERS(ldap.h lber.h)
2376   
2377   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2378         if test x"$with_ldap_support" = x"yes"; then
2379          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2380         else
2381          AC_MSG_WARN(ldap.h is needed for LDAP support)
2382         fi
2383         
2384         with_ldap_support=no
2385   fi
2388 if test x"$with_ldap_support" != x"no"; then
2389   ac_save_LIBS=$LIBS
2391   ##################################################################
2392   # we might need the lber lib on some systems. To avoid link errors
2393   # this test must be before the libldap test
2394   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2396   ########################################################
2397   # now see if we can find the ldap libs in standard paths
2398   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2400   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2401   
2402   ########################################################
2403   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2404   # Check found in pam_ldap 145.
2405   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2407   LIBS="$LIBS $LDAP_LIBS"
2408   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2409     AC_TRY_COMPILE([
2410         #include <lber.h>
2411         #include <ldap.h>], 
2412         [ldap_set_rebind_proc(0, 0, 0);], 
2413         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2414         [smb_ldap_cv_ldap_set_rebind_proc=2]
2415     ) 
2416   ])
2417   
2418   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2420   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2421   
2422   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2423     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2424     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2425     SMBLDAP="lib/smbldap.o"
2426     with_ldap_support=yes
2427     AC_MSG_CHECKING(whether LDAP support is used)
2428     AC_MSG_RESULT(yes)
2429   else
2430     if test x"$with_ldap_support" = x"yes"; then
2431         AC_MSG_ERROR(libldap is needed for LDAP support)
2432     else
2433         AC_MSG_WARN(libldap is needed for LDAP support)
2434     fi
2435     
2436     LDAP_LIBS=""
2437     with_ldap_support=no
2438   fi
2439   LIBS=$ac_save_LIBS
2443 #################################################
2444 # active directory support
2446 with_ads_support=auto
2447 AC_MSG_CHECKING([for Active Directory and krb5 support])
2449 AC_ARG_WITH(ads,
2450 [  --with-ads              Active Directory support (default auto)],
2451 [ case "$withval" in
2452     yes|no)
2453         with_ads_support="$withval"
2454         ;;
2455   esac ])
2457 AC_MSG_RESULT($with_ads_support)
2459 FOUND_KRB5=no
2460 KRB5_LIBS=""
2462 if test x"$with_ldap_support" != x"yes"; then
2463     if test x"$with_ads_support" = x"yes"; then
2464         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2465     elif test x"$with_ads_support" != x"no"; then
2466         AC_MSG_WARN(Active Directory Support requires LDAP support)
2467     fi
2468     with_ads_support=no
2471 if test x"$with_ads_support" != x"no"; then
2473   # Do no harm to the values of CFLAGS and LIBS while testing for
2474   # Kerberos support.
2476   #################################################
2477   # check for krb5-config from recent MIT and Heimdal kerberos 5
2478   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2479   AC_MSG_CHECKING(for working krb5-config)
2480   if test -x "$KRB5_CONFIG"; then
2481     ac_save_CFLAGS=$CFLAGS
2482     CFLAGS="";export CFLAGS
2483     ac_save_LDFLAGS=$LDFLAGS
2484     LDFLAGS="";export LDFLAGS
2485     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2486     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2487     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2488     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2489     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2490     FOUND_KRB5=yes
2491     AC_MSG_RESULT(yes)
2492   else
2493     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2494   fi
2495   
2496   if test x$FOUND_KRB5 = x"no"; then
2497     #################################################
2498     # check for location of Kerberos 5 install
2499     AC_MSG_CHECKING(for kerberos 5 install path)
2500     AC_ARG_WITH(krb5,
2501     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2502     [ case "$withval" in
2503       no)
2504         AC_MSG_RESULT(no krb5-path given)
2505         ;;
2506       yes)
2507         AC_MSG_RESULT(/usr)
2508         FOUND_KRB5=yes
2509         ;;
2510       *)
2511         AC_MSG_RESULT($withval)
2512         KRB5_CFLAGS="-I$withval/include"
2513         KRB5_CPPFLAGS="-I$withval/include"
2514         KRB5_LDFLAGS="-L$withval/lib"
2515         FOUND_KRB5=yes
2516         ;;
2517       esac ],
2518       AC_MSG_RESULT(no krb5-path given)
2519     )
2520   fi
2522   if test x$FOUND_KRB5 = x"no"; then
2523     #################################################
2524     # see if this box has the SuSE location for the heimdal krb implementation
2525     AC_MSG_CHECKING(for /usr/include/heimdal)
2526     if test -d /usr/include/heimdal; then
2527       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2528           KRB5_CFLAGS="-I/usr/include/heimdal"
2529           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2530           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2531           AC_MSG_RESULT(yes)
2532       else
2533           KRB5_CFLAGS="-I/usr/include/heimdal"
2534           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2535           AC_MSG_RESULT(yes)
2536       fi
2537     else
2538       AC_MSG_RESULT(no)
2539     fi
2540   fi
2542   if test x$FOUND_KRB5 = x"no"; then
2543     #################################################
2544     # see if this box has the RedHat location for kerberos
2545     AC_MSG_CHECKING(for /usr/kerberos)
2546     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2547       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2548       KRB5_CFLAGS="-I/usr/kerberos/include"
2549       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2550       AC_MSG_RESULT(yes)
2551     else
2552       AC_MSG_RESULT(no)
2553     fi
2554   fi
2556   ac_save_CFLAGS=$CFLAGS
2557   ac_save_CPPFLAGS=$CPPFLAGS
2558   ac_save_LDFLAGS=$LDFLAGS
2560   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2561   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2562   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2564   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2566   # now check for krb5.h. Some systems have the libraries without the headers!
2567   # note that this check is done here to allow for different kerberos
2568   # include paths
2569   AC_CHECK_HEADERS(krb5.h)
2571   if test x"$ac_cv_header_krb5_h" = x"no"; then
2573     # Give a warning if AD support was not explicitly requested,
2574     # i.e with_ads_support = auto, otherwise die with an error.
2576     if test x"$with_ads_support" = x"yes"; then
2577       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2578     else
2579       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2580     fi
2582     # Turn off AD support and restore CFLAGS and LIBS variables
2584     with_ads_support="no"
2585     
2586     CFLAGS=$ac_save_CFLAGS
2587     CPPFLAGS=$ac_save_CPPFLAGS
2588     LDFLAGS=$ac_save_LDFLAGS
2589   fi
2592 # Now we have determined whether we really want ADS support
2594 if test x"$with_ads_support" != x"no"; then
2595   ac_save_LIBS=$LIBS
2597   # now check for gssapi headers.  This is also done here to allow for
2598   # different kerberos include paths
2599   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2601   ##################################################################
2602   # we might need the k5crypto and com_err libraries on some systems
2603   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2604   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2606   # Heimdal checks.
2607   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2608   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2609   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2611   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2612   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2613                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2615   ########################################################
2616   # now see if we can find the krb5 libs in standard paths
2617   # or as specified above
2618   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2620   ########################################################
2621   # now see if we can find the gssapi libs in standard paths
2622   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2623             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2625   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2626   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2627   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2628   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2629   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2630   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2631   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2632   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2633   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2634   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2635   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2636   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2637   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2638   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2639   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
2640   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2642   LIBS="$LIBS $KRB5_LIBS"
2643   
2644   AC_CACHE_CHECK([for addrtype in krb5_address],
2645                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2646     AC_TRY_COMPILE([#include <krb5.h>],
2647       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2648       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2649       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2651   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2652     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2653                [Whether the krb5_address struct has a addrtype property])
2654   fi
2656   AC_CACHE_CHECK([for addr_type in krb5_address],
2657                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2658     AC_TRY_COMPILE([#include <krb5.h>],
2659       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2660       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2661       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2663   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2664     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2665               [Whether the krb5_address struct has a addr_type property])
2666   fi
2668   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2669                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2670                  [AC_TRY_COMPILE([#include <krb5.h>],
2671     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2672     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2674   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2675     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2676               [Whether the krb5_ticket struct has a enc_part2 property])
2677   fi
2679   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2680                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2681     AC_TRY_COMPILE([#include <krb5.h>],
2682       [krb5_keyblock key; key.keyvalue.data = NULL;],
2683       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2684       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2686   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2687     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2688               [Whether the krb5_keyblock struct has a keyvalue property])
2689   fi
2691   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2692                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2693     AC_TRY_COMPILE([#include <krb5.h>],
2694       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2695       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2696       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2697   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2698                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2699     AC_TRY_COMPILE([#include <krb5.h>],
2700       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2701       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2702       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2703 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2704 # w.r.t. arcfour and windows, so we must not enable it here
2705   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2706           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2707     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2708               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2709   fi
2711   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2712                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2713     AC_TRY_COMPILE([#include <krb5.h>],
2714       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2715       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2716       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2718   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2719     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2720               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2721   fi
2723   AC_CACHE_CHECK([for the krb5_princ_component macro],
2724                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2725     AC_TRY_LINK([#include <krb5.h>],
2726       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2727       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2728       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2730   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2731     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2732                [Whether krb5_princ_component is available])
2733   fi
2735   AC_CACHE_CHECK([for key in krb5_keytab_entry],
2736                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
2737     AC_TRY_COMPILE([#include <krb5.h>],
2738       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
2739       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
2740       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
2742   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
2743     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
2744               [Whether krb5_keytab_entry has key member])
2745   fi
2747   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
2748                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
2749     AC_TRY_COMPILE([#include <krb5.h>],
2750       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
2751       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
2752       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
2754   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
2755     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
2756               [Whether krb5_keytab_entry has keyblock member])
2757   fi
2759   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2760     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2761     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2762     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2763     AC_MSG_RESULT(yes)
2764   else
2765     if test x"$with_ads_support" = x"yes"; then
2766         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2767     else
2768         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2769     fi
2770     KRB5_LIBS=""
2771     with_ads_support=no 
2772   fi
2773   LIBS="$ac_save_LIBS"
2776 ########################################################
2777 # Compile experimental passdb backends?
2778 # (pdb_xml, pdb_mysql, pdb_pgsql)
2779 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2780 AC_ARG_WITH(expsam,
2781 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2782 [                          Valid choices include (comma separated list): ]
2783 [                              xml, mysql & pgsql],
2784 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2785   if test "z$expsam_pdb_modules" = "zyes"; then
2786     expsam_pdb_modules="xml mysql pgsql"
2787   fi
2788   AC_MSG_RESULT($expsam_pdb_modules)
2789   for i in $expsam_pdb_modules
2790   do 
2791     case "$i" in
2792     xml|all|yes)
2793       ## pdb_xml
2794           AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])])
2795       CFLAGS="$CFLAGS $XML_CFLAGS"
2796       ;;
2797     mysql|all|yes)
2798       ## pdb_mysql
2799           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
2800       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2801       ;;
2802      pgsql|all|yes)
2803       ## pdb_pgsql
2804       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
2805       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
2806       ;;
2807     no)
2808       ;;
2809     *)
2810       echo "Unknown module name \"$i\"!  Exiting..."
2811       exit 1
2812       ;;
2813     esac
2814   done ],
2815   AC_MSG_RESULT(no)
2818 #################################################
2819 # check for automount support
2820 AC_MSG_CHECKING(whether to use automount)
2821 AC_ARG_WITH(automount,
2822 [  --with-automount        Include automount support (default=no)],
2823 [ case "$withval" in
2824   yes)
2825     AC_MSG_RESULT(yes)
2826     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2827     ;;
2828   *)
2829     AC_MSG_RESULT(no)
2830     ;;
2831   esac ],
2832   AC_MSG_RESULT(no)
2835 #################################################
2836 # check for smbmount support
2837 AC_MSG_CHECKING(whether to use smbmount)
2838 AC_ARG_WITH(smbmount,
2839 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2840 [ case "$withval" in
2841   yes)
2842         case "$host_os" in
2843         *linux*)
2844                 AC_MSG_RESULT(yes)
2845                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2846                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2847                 ;;
2848         *)
2849                 AC_MSG_ERROR(not on a linux system!)
2850                 ;;
2851         esac
2852     ;;
2853   *)
2854     AC_MSG_RESULT(no)
2855     ;;
2856   esac ],
2857   AC_MSG_RESULT(no)
2861 #################################################
2862 # check for a PAM clear-text auth, accounts, password and session support
2863 with_pam_for_crypt=no
2864 AC_MSG_CHECKING(whether to use PAM)
2865 AC_ARG_WITH(pam,
2866 [  --with-pam              Include PAM support (default=no)],
2867 [ case "$withval" in
2868   yes)
2869     AC_MSG_RESULT(yes)
2870     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2871        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
2872           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
2873              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
2874           fi
2875        fi
2876     fi
2877     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2878     AUTH_LIBS="$AUTH_LIBS -lpam"
2879     with_pam_for_crypt=yes
2880     ;;
2881   *)
2882     AC_MSG_RESULT(no)
2883     ;;
2884   esac ],
2885   AC_MSG_RESULT(no)
2888 # we can't build a pam module if we don't have pam.
2889 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2891 #################################################
2892 # check for pam_smbpass support
2893 AC_MSG_CHECKING(whether to use pam_smbpass)
2894 AC_ARG_WITH(pam_smbpass,
2895 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2896 [ case "$withval" in
2897   yes)
2898     AC_MSG_RESULT(yes)
2900        # Conditions under which pam_smbpass should not be built.
2902        if test x$PICFLAGS = x; then
2903           AC_MSG_ERROR([No support for PIC code])
2904        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2905           AC_MSG_ERROR([No security/pam_appl.h found])
2906        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2907           AC_MSG_ERROR([No libpam found])
2908        else
2909           AUTH_LIBS="$AUTH_LIBS -lpam"
2910           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2911        fi
2912     ;;
2913   *)
2914     AC_MSG_RESULT(no)
2915     ;;
2916   esac ],
2917   AC_MSG_RESULT(no)
2921 ###############################################
2922 # test for where we get crypt() from
2923 AC_SEARCH_LIBS(crypt, [crypt],
2924   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
2925   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
2928 ## moved after the check for -lcrypt in order to
2929 ## ensure that the necessary libraries are included
2930 ## check checking for truncated salt.  Wrapped by the
2931 ## $with_pam_for_crypt variable as above   --jerry
2933 if test $with_pam_for_crypt = no; then
2934 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2935 crypt_LIBS="$LIBS"
2936 LIBS="$AUTH_LIBS $LIBS"
2937 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2938         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2939 LIBS="$crypt_LIBS"])
2940 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2941         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2946 dictpath="/usr/lib/cracklib_dict"
2947 with_cracklib=yes
2948 ###############################################
2949 # test for where we get FaciestCheck from
2950 AC_MSG_CHECKING(where to use cracklib from (default=$dictpath))
2951 AC_ARG_WITH(cracklib,
2952 [  --with-cracklib[=DIR]     Look for cracklib dictionary in this location ],
2953 [  case "$withval" in
2954   yes)
2955     AC_MSG_RESULT(${dictpath})
2956     ;;
2957   no)
2958     AC_MSG_RESULT(no)
2959       dictpath=""
2960     ;;
2961   *)
2962       dictpath="$withval"
2963     AC_MSG_RESULT(${dictpath})
2964     ;;
2965   esac ],
2966   dictpath=""
2967   AC_MSG_RESULT(no)
2970 if test x$dictpath != x""; then
2971      AC_SEARCH_LIBS(FascistCheck, [crack],
2972                     [test "$ac_cv_search_crack" = "none required" || samba_cv_found_crack="yes"
2973                     AC_DEFINE(HAVE_CRACK,1,[Whether the system has the FaciestCheck function from cracklib])])
2975      crack_saved_libs=$LIBS;
2977      if test x$samba_cv_found_crack=x"yes"; then
2978         AC_SEARCH_LIBS(CRACKLIB_DICTPATH, [crypt],
2979             AC_DEFINE(HAVE_CRACKLIB_DICTPATH, 1, [Whether we have given a CRACKLIB_DICTPATH in our headers])
2980         )
2982         AC_DEFINE_UNQUOTED(SAMBA_CRACKLIB_DICTPATH, "$dictpath", [Where the cracklib dictionay is])
2983         AC_MSG_CHECKING(Whether we have a working cracklib)
2984         AC_TRY_RUN([
2985                 #include "${srcdir-.}/tests/crack.c"],
2986               AC_MSG_RESULT(yes)
2987               AC_DEFINE(HAVE_WORKING_CRACKLIB,1,[Whether we have a working cracklib])
2988               AUTH_LIBS="-lcrack $AUTH_LIBS",
2990               AC_MSG_RESULT(no)
2991               AC_MSG_WARN(cracklib exists - but does not function correctly),
2993               AC_MSG_RESULT(no)
2994               AC_MSG_WARN(cannot test-run when cross-compiling)
2995               )
2996     else
2997         AC_MSG_CHECKING(Whether we have cracklib)
2998         AC_MSG_RESULT(no)
2999     fi
3000     LIBS=$crack_saved_libs
3003 ########################################################################################
3005 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3007 ########################################################################################
3009 #################################################
3010 # check for a LDAP password database configuration backwards compatibility
3011 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3012 AC_ARG_WITH(ldapsam,
3013 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3014 [ case "$withval" in
3015   yes)
3016     AC_MSG_RESULT(yes)
3017     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3018     ;;
3019   *)
3020     AC_MSG_RESULT(no)
3021     ;;
3022   esac ],
3023   AC_MSG_RESULT(no)
3026 ########################################################################################
3028 ## END OF TESTS FOR SAM BACKENDS.  
3030 ########################################################################################
3032 #################################################
3033 # check for a NISPLUS_HOME support 
3034 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3035 AC_ARG_WITH(nisplus-home,
3036 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3037 [ case "$withval" in
3038   yes)
3039     AC_MSG_RESULT(yes)
3040     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3041     ;;
3042   *)
3043     AC_MSG_RESULT(no)
3044     ;;
3045   esac ],
3046   AC_MSG_RESULT(no)
3049 #################################################
3050 # check for syslog logging
3051 AC_MSG_CHECKING(whether to use syslog logging)
3052 AC_ARG_WITH(syslog,
3053 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3054 [ case "$withval" in
3055   yes)
3056     AC_MSG_RESULT(yes)
3057     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3058     ;;
3059   *)
3060     AC_MSG_RESULT(no)
3061     ;;
3062   esac ],
3063   AC_MSG_RESULT(no)
3066 #################################################
3067 # check for a shared memory profiling support
3068 AC_MSG_CHECKING(whether to use profiling)
3069 AC_ARG_WITH(profiling-data,
3070 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3071 [ case "$withval" in
3072   yes)
3073     AC_MSG_RESULT(yes)
3074     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3075     ;;
3076   *)
3077     AC_MSG_RESULT(no)
3078     ;;
3079   esac ],
3080   AC_MSG_RESULT(no)
3084 #################################################
3085 # check for experimental disk-quotas support
3087 samba_cv_WITH_QUOTAS=auto
3088 samba_cv_TRY_QUOTAS=no
3089 samba_cv_RUN_QUOTA_TESTS=auto
3090 samba_cv_WITH_SYS_QUOTAS=auto
3091 samba_cv_TRY_SYS_QUOTAS=no
3092 samba_cv_SYSQUOTA_FOUND=no;
3094 AC_MSG_CHECKING(whether to try disk-quotas support)
3095 AC_ARG_WITH(quotas,
3096 [  --with-quotas           Include disk-quota support (default=no)],
3097 [ case "$withval" in
3098   yes)
3099     AC_MSG_RESULT(yes)
3100     samba_cv_WITH_QUOTAS=yes
3101     samba_cv_TRY_QUOTAS=yes
3102     samba_cv_RUN_QUOTA_TESTS=yes
3103     #set sys quotas to auto in this case
3104     samba_cv_TRY_SYS_QUOTAS=auto
3105     ;;
3106   auto)
3107     AC_MSG_RESULT(auto)
3108     samba_cv_WITH_QUOTAS=auto
3109     samba_cv_TRY_QUOTAS=auto
3110     samba_cv_RUN_QUOTA_TESTS=auto
3111     #set sys quotas to auto in this case
3112     samba_cv_TRY_SYS_QUOTAS=auto
3113     ;;
3114   no)
3115     AC_MSG_RESULT(no)
3116     samba_cv_WITH_QUOTAS=no
3117     samba_cv_TRY_QUOTAS=no
3118     samba_cv_RUN_QUOTA_TESTS=no
3119     ;;
3120   *)
3121     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3122     ;;
3123   esac ],
3124   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3127 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3128 AC_ARG_WITH(sys-quotas,
3129 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3130 [ case "$withval" in
3131   yes)
3132     AC_MSG_RESULT(yes)
3133     samba_cv_WITH_SYS_QUOTAS=yes
3134     samba_cv_TRY_SYS_QUOTAS=yes
3135     samba_cv_RUN_QUOTA_TESTS=yes
3136     ;;
3137   auto)
3138     AC_MSG_RESULT(auto)
3139     samba_cv_WITH_SYS_QUOTAS=auto
3140     samba_cv_TRY_SYS_QUOTAS=auto
3141     samba_cv_RUN_QUOTA_TESTS=auto
3142     ;;
3143   no)
3144     AC_MSG_RESULT(no)
3145     samba_cv_WITH_SYS_QUOTAS=no
3146     samba_cv_TRY_SYS_QUOTAS=no
3147     ;;
3148   *)
3149     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3150     ;;
3151   esac ],
3152   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3155 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3156 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3157   case "$host_os" in
3158         *linux*)
3159             AC_MSG_RESULT(yes)
3160             samba_cv_TRY_SYS_QUOTAS=yes
3161             samba_cv_RUN_QUOTA_TESTS=yes
3162             samba_cv_SYSQUOTA_FOUND=yes
3163             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3164             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3165             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3166             samba_cv_found_xfs_header=yes
3167             ;;
3168         *)
3169             AC_MSG_RESULT(no)
3170             samba_cv_TRY_SYS_QUOTAS=no
3171             ;;
3172   esac
3175 #############################################
3176 # only check for quota stuff if --with-quotas
3177 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3179 # some broken header files need this
3180 AC_CHECK_HEADER(asm/types.h,[
3181             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3182             AC_ADD_INCLUDE(<asm/types.h>)
3183             ])
3185 # For quotas on Veritas VxFS filesystems
3186 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3188 # For sys/quota.h and linux/quota.h
3189 AC_CHECK_HEADERS(sys/quota.h)
3191 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3192 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3193 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3194 AC_TRY_COMPILE([
3195 #include "confdefs.h"
3196 #ifdef HAVE_SYS_TYPES_H
3197 #include <sys/types.h>
3198 #endif
3199 #ifdef HAVE_ASM_TYPES_H
3200 #include <asm/types.h>
3201 #endif
3202 #include <sys/quota.h>
3203 ],[int i = Q_XGETQUOTA;],
3204 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3205 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3206         samba_cv_found_xfs_header=yes
3210 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3211 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3212 AC_TRY_COMPILE([
3213 #include "confdefs.h"
3214 #ifdef HAVE_SYS_QUOTA_H
3215 #include <sys/quota.h>
3216 #endif
3218 struct dqblk D;
3219 D.dqb_fsoftlimit = 0;],
3220 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3221 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3222         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3225 ##################
3226 # look for a working quota system
3228 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3229 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3230 AC_TRY_RUN_STRICT([
3231 #define HAVE_QUOTACTL_4A 1
3232 #define AUTOCONF_TEST 1
3233 #include "confdefs.h"
3234 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3235            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3236 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3237     samba_cv_SYSQUOTA_FOUND=yes;
3238     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3239     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3243 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3244 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3245 AC_TRY_RUN_STRICT([
3246 #define HAVE_QUOTACTL_4B 1
3247 #define AUTOCONF_TEST 1
3248 #include "confdefs.h"
3249 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3250            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3251 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3252     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3253     samba_cv_SYSQUOTA_FOUND=yes;
3254     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3255     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3259 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3260 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3261 AC_TRY_RUN_STRICT([
3262 #define HAVE_QUOTACTL_3 1
3263 #define AUTOCONF_TEST 1
3264 #include "confdefs.h"
3265 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3266            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3267 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3268     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3269     samba_cv_SYSQUOTA_FOUND=yes;
3270     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3271     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3275 #################################################
3276 # check for mntent.h and struct mntent
3277 AC_CHECK_HEADERS(mntent.h)
3278 #################################################
3279 # check for setmntent,getmntent,endmntent
3280 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3282 #################################################
3283 # check for devnm.h and struct mntent
3284 AC_CHECK_HEADERS(devnm.h)
3285 #################################################
3286 # check for devnm
3287 AC_CHECK_FUNCS(devnm)
3289 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3290     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3291         # if --with-sys-quotas=yes then build it 
3292         # you have can use the get/set quota command smb.conf
3293         # options then
3294         samba_cv_SYSQUOTA_FOUND=auto
3295     fi
3296     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3297         # if --with-sys-quotas=yes then build it 
3298         # you have can use the get/set quota command smb.conf
3299         # options then
3300         samba_cv_TRY_SYS_QUOTAS=auto
3301     fi
3304 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3305 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3306 SAVE_CPPFLAGS="$CPPFLAGS"
3307 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3308 AC_TRY_COMPILE([
3309 #include "confdefs.h"
3310 #define NO_PROTO_H 1
3311 #define NO_CONFIG_H 1
3312 #define HAVE_SYS_QUOTAS 1
3313 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3314 #include "${srcdir-.}/lib/sysquotas.c"
3315 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3316 CPPFLAGS="$SAVE_CPPFLAGS"
3318 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3319 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3320     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3321         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3322         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3323         samba_cv_WE_USE_SYS_QUOTAS=yes
3324         AC_MSG_RESULT(yes)
3325     else
3326         AC_MSG_RESULT(no)
3327     fi
3331 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3332 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3333 SAVE_CPPFLAGS="$CPPFLAGS"
3334 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3335 AC_TRY_COMPILE([
3336 #include "confdefs.h"
3337 #define NO_PROTO_H 1
3338 #define NO_CONFIG_H 1
3339 #define HAVE_SYS_QUOTAS 1
3340 #define HAVE_XFS_QUOTAS 1
3341 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3342 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3343 CPPFLAGS="$SAVE_CPPFLAGS"
3345 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3346     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3347         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3348     fi
3352 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3353 SAVE_CPPFLAGS="$CPPFLAGS"
3354 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3355 AC_TRY_COMPILE([
3356 #include "confdefs.h"
3357 #define NO_PROTO_H 1
3358 #define NO_CONFIG_H 1
3359 #include "${srcdir-.}/smbd/quotas.c"
3360 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3361 CPPFLAGS="$SAVE_CPPFLAGS"
3363 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3364 AC_MSG_CHECKING(whether to use the old quota support)
3365     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3366       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3367         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3368         AC_MSG_RESULT(yes)
3369       else
3370         AC_MSG_RESULT(no)
3371       fi
3372     else
3373       AC_MSG_RESULT(no)
3374     fi
3377 ####################
3378 # End of quota check samba_cv_RUN_QUOTA_TESTS
3381 #################################################
3382 # check for experimental utmp accounting
3384 AC_MSG_CHECKING(whether to support utmp accounting)
3385 WITH_UTMP=yes
3386 AC_ARG_WITH(utmp,
3387 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3388 [ case "$withval" in
3389   no)
3390                 WITH_UTMP=no
3391                 ;;
3392   *)
3393                 WITH_UTMP=yes
3394                 ;;
3395   esac ],
3398 # utmp requires utmp.h
3399 # Note similar check earlier, when checking utmp details.
3401 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3402         utmp_no_reason=", no utmp.h on $host_os"
3403         WITH_UTMP=no
3406 # Display test results
3408 if test x"$WITH_UTMP" = x"yes"; then
3409         AC_MSG_RESULT(yes)
3410         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3411 else
3412         AC_MSG_RESULT(no$utmp_no_reason)
3415 #################################################
3416 # choose native language(s) of man pages
3417 AC_MSG_CHECKING(chosen man pages' language(s))
3418 AC_ARG_WITH(manpages-langs,
3419 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3420 [ case "$withval" in
3421   yes|no)
3422     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3423     manlangs="en"
3424   ;;
3425   *)
3426     manlangs="$withval"
3427   ;;
3428   esac
3430   AC_MSG_RESULT($manlangs)
3431   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3432   AC_SUBST(manlangs)],
3434   [manlangs="en"
3435   AC_MSG_RESULT($manlangs)
3436   AC_SUBST(manlangs)]
3439 #################################################
3440 # should we build libsmbclient?
3442 INSTALLCLIENTCMD_SH=:
3443 INSTALLCLIENTCMD_A=:
3444 INSTALLCLIENT=
3445 LIBSMBCLIENT_SHARED=
3446 LIBSMBCLIENT=
3447 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3448 AC_ARG_WITH(libsmbclient,
3449 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3450 [ case "$withval" in
3451   no) 
3452      AC_MSG_RESULT(no)
3453      ;;
3454   *)
3455      if test $BLDSHARED = true; then
3456         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3457         ## build the static version of libsmbclient as well
3458         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3459         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3460         LIBSMBCLIENT=libsmbclient
3461         AC_MSG_RESULT(yes)
3462      else
3463         enable_static=yes
3464         AC_MSG_RESULT(no shared library support -- will supply static library)
3465      fi
3466      if test $enable_static = yes; then
3467         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3468         LIBSMBCLIENT=libsmbclient
3469      fi
3470      INSTALLCLIENT=installclientlib
3471      ;;
3472   esac ],
3474 # if unspecified, default is to built it iff possible.
3475   if test $BLDSHARED = true; then
3476      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3477      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3478      LIBSMBCLIENT=libsmbclient
3479      AC_MSG_RESULT(yes)
3480    else
3481      enable_static=yes
3482      AC_MSG_RESULT(no shared library support -- will supply static library)
3483    fi
3484    if test $enable_static = yes; then
3485      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3486      LIBSMBCLIENT=libsmbclient
3487   fi]
3488   INSTALLCLIENT=installclientlib
3492 #################################################
3493 # these tests are taken from the GNU fileutils package
3494 AC_CHECKING(how to get filesystem space usage)
3495 space=no
3497 # Test for statvfs64.
3498 if test $space = no; then
3499   # SVR4
3500   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3501   [AC_TRY_RUN([
3502 #if defined(HAVE_UNISTD_H)
3503 #include <unistd.h>
3504 #endif
3505 #include <sys/types.h>
3506 #include <sys/statvfs.h>
3507   main ()
3508   {
3509     struct statvfs64 fsd;
3510     exit (statvfs64 (".", &fsd));
3511   }],
3512   fu_cv_sys_stat_statvfs64=yes,
3513   fu_cv_sys_stat_statvfs64=no,
3514   fu_cv_sys_stat_statvfs64=cross)])
3515   if test $fu_cv_sys_stat_statvfs64 = yes; then
3516     space=yes
3517     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3518   fi
3521 # Perform only the link test since it seems there are no variants of the
3522 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3523 # because that got a false positive on SCO OSR5.  Adding the declaration
3524 # of a `struct statvfs' causes this test to fail (as it should) on such
3525 # systems.  That system is reported to work fine with STAT_STATFS4 which
3526 # is what it gets when this test fails.
3527 if test $space = no; then
3528   # SVR4
3529   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3530                  [AC_TRY_LINK([#include <sys/types.h>
3531 #include <sys/statvfs.h>],
3532                               [struct statvfs fsd; statvfs (0, &fsd);],
3533                               fu_cv_sys_stat_statvfs=yes,
3534                               fu_cv_sys_stat_statvfs=no)])
3535   if test $fu_cv_sys_stat_statvfs = yes; then
3536     space=yes
3537     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3538   fi
3541 if test $space = no; then
3542   # DEC Alpha running OSF/1
3543   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3544   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3545   [AC_TRY_RUN([
3546 #include <sys/param.h>
3547 #include <sys/types.h>
3548 #include <sys/mount.h>
3549   main ()
3550   {
3551     struct statfs fsd;
3552     fsd.f_fsize = 0;
3553     exit (statfs (".", &fsd, sizeof (struct statfs)));
3554   }],
3555   fu_cv_sys_stat_statfs3_osf1=yes,
3556   fu_cv_sys_stat_statfs3_osf1=no,
3557   fu_cv_sys_stat_statfs3_osf1=no)])
3558   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3559   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3560     space=yes
3561     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3562   fi
3565 if test $space = no; then
3566 # AIX
3567   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3568 member (AIX, 4.3BSD)])
3569   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3570   [AC_TRY_RUN([
3571 #ifdef HAVE_SYS_PARAM_H
3572 #include <sys/param.h>
3573 #endif
3574 #ifdef HAVE_SYS_MOUNT_H
3575 #include <sys/mount.h>
3576 #endif
3577 #ifdef HAVE_SYS_VFS_H
3578 #include <sys/vfs.h>
3579 #endif
3580   main ()
3581   {
3582   struct statfs fsd;
3583   fsd.f_bsize = 0;
3584   exit (statfs (".", &fsd));
3585   }],
3586   fu_cv_sys_stat_statfs2_bsize=yes,
3587   fu_cv_sys_stat_statfs2_bsize=no,
3588   fu_cv_sys_stat_statfs2_bsize=no)])
3589   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3590   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3591     space=yes
3592     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3593   fi
3596 if test $space = no; then
3597 # SVR3
3598   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3599   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3600   [AC_TRY_RUN([#include <sys/types.h>
3601 #include <sys/statfs.h>
3602   main ()
3603   {
3604   struct statfs fsd;
3605   exit (statfs (".", &fsd, sizeof fsd, 0));
3606   }],
3607     fu_cv_sys_stat_statfs4=yes,
3608     fu_cv_sys_stat_statfs4=no,
3609     fu_cv_sys_stat_statfs4=no)])
3610   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3611   if test $fu_cv_sys_stat_statfs4 = yes; then
3612     space=yes
3613     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3614   fi
3617 if test $space = no; then
3618 # 4.4BSD and NetBSD
3619   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3620 member (4.4BSD and NetBSD)])
3621   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3622   [AC_TRY_RUN([#include <sys/types.h>
3623 #ifdef HAVE_SYS_PARAM_H
3624 #include <sys/param.h>
3625 #endif
3626 #ifdef HAVE_SYS_MOUNT_H
3627 #include <sys/mount.h>
3628 #endif
3629   main ()
3630   {
3631   struct statfs fsd;
3632   fsd.f_fsize = 0;
3633   exit (statfs (".", &fsd));
3634   }],
3635   fu_cv_sys_stat_statfs2_fsize=yes,
3636   fu_cv_sys_stat_statfs2_fsize=no,
3637   fu_cv_sys_stat_statfs2_fsize=no)])
3638   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3639   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3640     space=yes
3641         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3642   fi
3645 if test $space = no; then
3646   # Ultrix
3647   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3648   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3649   [AC_TRY_RUN([#include <sys/types.h>
3650 #ifdef HAVE_SYS_PARAM_H
3651 #include <sys/param.h>
3652 #endif
3653 #ifdef HAVE_SYS_MOUNT_H
3654 #include <sys/mount.h>
3655 #endif
3656 #ifdef HAVE_SYS_FS_TYPES_H
3657 #include <sys/fs_types.h>
3658 #endif
3659   main ()
3660   {
3661   struct fs_data fsd;
3662   /* Ultrix's statfs returns 1 for success,
3663      0 for not mounted, -1 for failure.  */
3664   exit (statfs (".", &fsd) != 1);
3665   }],
3666   fu_cv_sys_stat_fs_data=yes,
3667   fu_cv_sys_stat_fs_data=no,
3668   fu_cv_sys_stat_fs_data=no)])
3669   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3670   if test $fu_cv_sys_stat_fs_data = yes; then
3671     space=yes
3672     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3673   fi
3677 # As a gating factor for large file support, in order to
3678 # use <4GB files we must have the following minimal support
3679 # available.
3680 # long long, and a 64 bit off_t or off64_t.
3681 # If we don't have all of these then disable large
3682 # file support.
3684 AC_MSG_CHECKING([if large file support can be enabled])
3685 AC_TRY_COMPILE([
3686 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3687 #include <sys/types.h>
3688 #else
3689 __COMPILE_ERROR_
3690 #endif
3692 [int i],
3693 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3694 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3695         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3697 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3699 AC_ARG_WITH(spinlocks, 
3700 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3701 if test "x$with_spinlocks" = "xyes"; then
3702     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3704     case "$host_cpu" in
3705         sparc)
3706             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3707             ;;
3709         i386|i486|i586|i686)
3710             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3711             ;;
3713         mips)
3714             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3715             ;;
3717         powerpc)
3718             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3719             ;;
3720     esac
3723 #################################################
3724 # check for ACL support
3726 AC_MSG_CHECKING(whether to support ACLs)
3727 AC_ARG_WITH(acl-support,
3728 [  --with-acl-support      Include ACL support (default=no)],
3729 [ case "$withval" in
3730   yes)
3732         case "$host_os" in
3733         *sysv5*)
3734                 AC_MSG_RESULT(Using UnixWare ACLs)
3735                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3736                 ;;
3737         *solaris*)
3738                 AC_MSG_RESULT(Using solaris ACLs)
3739                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3740                 ;;
3741         *hpux*)
3742                 AC_MSG_RESULT(Using HPUX ACLs)
3743                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3744                 ;;
3745         *irix*)
3746                 AC_MSG_RESULT(Using IRIX ACLs)
3747                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3748                 ;;
3749         *aix*)
3750                 AC_MSG_RESULT(Using AIX ACLs)
3751                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3752                 ;;
3753         *osf*)
3754                 AC_MSG_RESULT(Using Tru64 ACLs)
3755                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3756                 ACL_LIBS="$ACL_LIBS -lpacl"
3757                 ;;
3758         *freebsd5*)
3759                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3760                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3761                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3762                 ;;
3763         *linux*)
3764                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3765                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3766                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3767                 acl_LIBS=$LIBS
3768                 LIBS="$LIBS -lacl"
3769                 AC_TRY_LINK([#include <sys/types.h>
3770 #include <sys/acl.h>],
3771 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3772 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3773                 LIBS=$acl_LIBS])
3774                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3775                                 AC_MSG_RESULT(Using posix ACLs)
3776                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3777                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3778                                 acl_LIBS=$LIBS
3779                                 LIBS="$LIBS -lacl"
3780                                 AC_TRY_LINK([#include <sys/types.h>
3781 #include <sys/acl.h>],
3782 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3783 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3784                                 LIBS=$acl_LIBS])
3785                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3786                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3787                                 fi
3788                         fi
3789             ;;
3790          *)
3791                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3792                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3793                 acl_LIBS=$LIBS
3794                 LIBS="$LIBS -lacl"
3795                 AC_TRY_LINK([#include <sys/types.h>
3796 #include <sys/acl.h>],
3797 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3798 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3799                 LIBS=$acl_LIBS])
3800                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3801                                 AC_MSG_RESULT(Using posix ACLs)
3802                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3803                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3804                                 acl_LIBS=$LIBS
3805                                 LIBS="$LIBS -lacl"
3806                                 AC_TRY_LINK([#include <sys/types.h>
3807 #include <sys/acl.h>],
3808 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3809 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3810                                 LIBS=$acl_LIBS])
3811                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3812                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3813                                 fi
3814                         fi
3815             ;;
3816         esac
3817         ;;
3818   *)
3819     AC_MSG_RESULT(no)
3820     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3821     ;;
3822   esac ],
3823   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3824   AC_MSG_RESULT(no)
3827 #################################################
3828 # check for sendfile support
3830 with_sendfile_support=yes
3831 AC_MSG_CHECKING(whether to check to support sendfile)
3832 AC_ARG_WITH(sendfile-support,
3833 [  --with-sendfile-support Check for sendfile support (default=yes)],
3834 [ case "$withval" in
3835   yes)
3837         AC_MSG_RESULT(yes);
3839         case "$host_os" in
3840         *linux*)
3841                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3842                 AC_TRY_LINK([#include <sys/sendfile.h>],
3844 int tofd, fromfd;
3845 off64_t offset;
3846 size_t total;
3847 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3849 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3851                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3852                 AC_TRY_LINK([#include <sys/sendfile.h>],
3854 int tofd, fromfd;
3855 off_t offset;
3856 size_t total;
3857 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3859 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3861 # Try and cope with broken Linux sendfile....
3862                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3863                 AC_TRY_LINK([\
3864 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3865 #undef _FILE_OFFSET_BITS
3866 #endif
3867 #include <sys/sendfile.h>],
3869 int tofd, fromfd;
3870 off_t offset;
3871 size_t total;
3872 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3874 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3876         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3877                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3878                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3879                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3880         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3881                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3882                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3883                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3884         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3885                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3886                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3887         else
3888                 AC_MSG_RESULT(no);
3889         fi
3891         ;;
3892         *freebsd*)
3893                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3894                 AC_TRY_LINK([\
3895 #include <sys/types.h>
3896 #include <unistd.h>
3897 #include <sys/socket.h>
3898 #include <sys/uio.h>],
3900         int fromfd, tofd, ret, total=0;
3901         off_t offset, nwritten;
3902         struct sf_hdtr hdr;
3903         struct iovec hdtrl;
3904         hdr.headers = &hdtrl;
3905         hdr.hdr_cnt = 1;
3906         hdr.trailers = NULL;
3907         hdr.trl_cnt = 0;
3908         hdtrl.iov_base = NULL;
3909         hdtrl.iov_len = 0;
3910         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3912 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3914         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3915                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3916                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3917                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3918         else
3919                 AC_MSG_RESULT(no);
3920         fi
3921         ;;
3923         *hpux*)
3924                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3925                 AC_TRY_LINK([\
3926 #include <sys/socket.h>
3927 #include <sys/uio.h>],
3929         int fromfd, tofd;
3930         size_t total=0;
3931         struct iovec hdtrl[2];
3932         ssize_t nwritten;
3933         off64_t offset;
3935         hdtrl[0].iov_base = 0;
3936         hdtrl[0].iov_len = 0;
3938         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3940 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3941         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3942                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3943                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3944                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3945         else
3946                 AC_MSG_RESULT(no);
3947         fi
3949                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3950                 AC_TRY_LINK([\
3951 #include <sys/socket.h>
3952 #include <sys/uio.h>],
3954         int fromfd, tofd;
3955         size_t total=0;
3956         struct iovec hdtrl[2];
3957         ssize_t nwritten;
3958         off_t offset;
3960         hdtrl[0].iov_base = 0;
3961         hdtrl[0].iov_len = 0;
3963         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3965 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3966         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3967                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3968                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3969                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3970         else
3971                 AC_MSG_RESULT(no);
3972         fi
3973         ;;
3975         *solaris*)
3976                 AC_CHECK_LIB(sendfile,sendfilev)
3977                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3978                 AC_TRY_LINK([\
3979 #include <sys/sendfile.h>],
3981         int sfvcnt;
3982         size_t xferred;
3983         struct sendfilevec vec[2];
3984         ssize_t nwritten;
3985         int tofd;
3987         sfvcnt = 2;
3989         vec[0].sfv_fd = SFV_FD_SELF;
3990         vec[0].sfv_flag = 0;
3991         vec[0].sfv_off = 0;
3992         vec[0].sfv_len = 0;
3994         vec[1].sfv_fd = 0;
3995         vec[1].sfv_flag = 0;
3996         vec[1].sfv_off = 0;
3997         vec[1].sfv_len = 0;
3998         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4000 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4002         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4003                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4004                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4005                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4006         else
4007                 AC_MSG_RESULT(no);
4008         fi
4010                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4011                 AC_TRY_LINK([\
4012 #include <sys/sendfile.h>],
4014         int sfvcnt;
4015         size_t xferred;
4016         struct sendfilevec vec[2];
4017         ssize_t nwritten;
4018         int tofd;
4020         sfvcnt = 2;
4022         vec[0].sfv_fd = SFV_FD_SELF;
4023         vec[0].sfv_flag = 0;
4024         vec[0].sfv_off = 0;
4025         vec[0].sfv_len = 0;
4027         vec[1].sfv_fd = 0;
4028         vec[1].sfv_flag = 0;
4029         vec[1].sfv_off = 0;
4030         vec[1].sfv_len = 0;
4031         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4033 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4035         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4036                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4037                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4038                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4039         else
4040                 AC_MSG_RESULT(no);
4041         fi
4042         ;;
4044         *)
4045         ;;
4046         esac
4047         ;;
4048   *)
4049     AC_MSG_RESULT(no)
4050     ;;
4051   esac ],
4052   AC_MSG_RESULT(yes)
4056 #################################################
4057 # Check whether winbind is supported on this platform.  If so we need to
4058 # build and install client programs, sbin programs and shared libraries
4060 AC_MSG_CHECKING(whether to build winbind)
4062 # Initially, the value of $host_os decides whether winbind is supported
4064 HAVE_WINBIND=yes
4066 # Define the winbind shared library name and any specific linker flags
4067 # it needs to be built with.
4069 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4070 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4071 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4073 case "$host_os" in
4074         *linux*)
4075                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4076                 ;;
4077         *freebsd5*)
4078                 # FreeBSD winbind client is implemented as a wrapper around
4079                 # the Linux version.
4080                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4081                     nsswitch/winbind_nss_linux.o"
4082                 ;;
4083         *irix*)
4084                 # IRIX has differently named shared libraries
4085                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4086                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4087                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4088                 ;;
4089         *solaris*)
4090                 # Solaris winbind client is implemented as a wrapper around
4091                 # the Linux version.
4092                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4093                     nsswitch/winbind_nss_linux.o"
4094                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4095                 ;;
4096         *hpux11*)
4097                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4098                 ;;
4099         *aix*)
4100                 # AIX has even differently named shared libraries.  No
4101                 # WINS support has been implemented yet.
4102                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4103                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4104                 WINBIND_NSS="nsswitch/WINBIND"
4105                 WINBIND_WINS_NSS=""
4106                 ;;
4107         *)
4108                 HAVE_WINBIND=no
4109                 winbind_no_reason=", unsupported on $host_os"
4110                 ;;
4111 esac
4113 AC_SUBST(WINBIND_NSS)
4114 AC_SUBST(WINBIND_WINS_NSS)
4115 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4116 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4117 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4119 # Check the setting of --with-winbindd
4121 AC_ARG_WITH(winbind,
4122 [  --with-winbind          Build winbind (default, if supported by OS)],
4124   case "$withval" in
4125         yes)
4126                 HAVE_WINBIND=yes
4127                 ;;
4128         no)
4129                 HAVE_WINBIND=no
4130                 winbind_reason=""
4131                 ;;
4132   esac ],
4135 # We need unix domain sockets for winbind
4137 if test x"$HAVE_WINBIND" = x"yes"; then
4138         if test x"$samba_cv_unixsocket" = x"no"; then
4139                 winbind_no_reason=", no unix domain socket support on $host_os"
4140                 HAVE_WINBIND=no
4141         fi
4144 # Display test results
4146 if test x"$HAVE_WINBIND" = x"yes"; then
4147         AC_MSG_RESULT(yes)
4148         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4150         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4151         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4152         if test x"$BLDSHARED" = x"true"; then
4153                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4155                 if test x"$with_pam" = x"yes"; then
4156                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4157                 fi
4158         fi
4159 else
4160         AC_MSG_RESULT(no$winbind_no_reason)
4163 # Solaris has some extra fields in struct passwd that need to be
4164 # initialised otherwise nscd crashes.  
4166 AC_CHECK_MEMBER(struct passwd.pw_comment,
4167                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4168                 [#include <pwd.h>])
4170 AC_CHECK_MEMBER(struct passwd.pw_age,
4171                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4172                 [#include <pwd.h>])
4174 #################################################
4175 # Check to see if we should use the included popt 
4177 AC_ARG_WITH(included-popt,
4178 [  --with-included-popt    use bundled popt library, not from system],
4180   case "$withval" in
4181         yes)
4182                 INCLUDED_POPT=yes
4183                 ;;
4184         no)
4185                 INCLUDED_POPT=no
4186                 ;;
4187   esac ],
4189 if test x"$INCLUDED_POPT" != x"yes"; then
4190     AC_CHECK_LIB(popt, poptGetContext,
4191                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4194 AC_MSG_CHECKING(whether to use included popt)
4195 if test x"$INCLUDED_POPT" = x"yes"; then
4196     AC_MSG_RESULT(yes)
4197     BUILD_POPT='$(POPT_OBJS)'
4198         POPTLIBS='$(POPT_OBJS)'
4199     FLAGS1="-I$srcdir/popt"
4200 else
4201     AC_MSG_RESULT(no)
4202         BUILD_POPT=""
4203     POPTLIBS="-lpopt"
4205 AC_SUBST(BUILD_POPT)
4206 AC_SUBST(POPTLIBS)
4207 AC_SUBST(FLAGS1)
4209 #################################################
4210 # Check if the user wants Python
4212 # At the moment, you can use this to set which Python binary to link
4213 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4214 # though they can coexist in different directories.)  In the future
4215 # this might make the Python stuff be built by default.
4217 # Defaulting python breaks the clean target if python isn't installed
4219 PYTHON=
4221 AC_ARG_WITH(python,
4222 [  --with-python=PYTHONNAME  build Python libraries],
4223 [ case "${withval-python}" in
4224   yes)
4225         PYTHON=python
4226         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4227         ;;
4228   no)
4229         PYTHON=
4230         ;;
4231   *)
4232         PYTHON=${withval-python}
4233         ;;
4234   esac ])
4235 AC_SUBST(PYTHON)
4237 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4239         eval MODULE_DEFAULT_$i=STATIC
4240 done
4242 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4244         dnl Fall back to static if dlopen() is not available
4245         eval MODULE_DEFAULT_$i=STATIC
4247         if test x"$ac_cv_func_dlopen" = xyes; then
4248                 eval MODULE_DEFAULT_$i=SHARED
4249         fi
4250 done
4252 dnl Always built these modules static
4253 MODULE_pdb_guest=STATIC
4254 MODULE_rpc_spoolss=STATIC
4255 MODULE_rpc_srv=STATIC
4256 MODULE_idmap_tdb=STATIC
4258 AC_ARG_WITH(static-modules,
4259 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4260 [ if test $withval; then
4261         for i in `echo $withval | sed -e's/,/ /g'`
4262         do
4263                 eval MODULE_$i=STATIC
4264         done
4265 fi ])
4267 AC_ARG_WITH(shared-modules,
4268 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4269 [ if test $withval; then
4270         for i in `echo $withval | sed -e's/,/ /g'`
4271         do
4272                         eval MODULE_$i=SHARED
4273         done
4274 fi ])
4276 ###########################################################################
4277 ## contributed pdb_modules
4279 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4280                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4281 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4282                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4283 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4284                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4286 ## end of contributed pdb_modules
4287 ###########################################################################
4289 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4290                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4291 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4292 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4293 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4294 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4296 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4297 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4298 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4299 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4300 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4301 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4302 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4303 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4304 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4305 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4306 SMB_SUBSYSTEM(RPC,smbd/server.o)
4308 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4309 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4310 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4312 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4313 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4314 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4315 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4316 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4318 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4319 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4320 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4321 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4322 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4323 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4324 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4325 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4327 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4328 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4329 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4330 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4331 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4332 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4333 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4334 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4335 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4337 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4339 #################################################
4340 # do extra things if we are running insure
4342 if test "${ac_cv_prog_CC}" = "insure"; then
4343         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4346 #################################################
4347 # Display summary of libraries detected
4349 AC_MSG_RESULT([Using libraries:])
4350 AC_MSG_RESULT([    LIBS = $LIBS])
4351 if test x"$with_ads_support" != x"no"; then
4352    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4354 if test x"$with_ldap_support" != x"no"; then
4355    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4357 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4359 #################################################
4360 # final configure stuff
4362 AC_MSG_CHECKING([configure summary])
4363 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4364            AC_MSG_RESULT(yes),
4365            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4366            AC_MSG_WARN([cannot run when cross-compiling]))
4368 builddir=`pwd`
4369 AC_SUBST(builddir)
4371 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4372 LIB_REMOVE_USR_LIB(LDFLAGS)
4373 LIB_REMOVE_USR_LIB(LIBS)
4375 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4376 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4377 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4379 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4381 #################################################
4382 # Print very concise instructions on building/use
4383 if test "x$enable_dmalloc" = xyes
4384 then
4385         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4386         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])