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