r473: Fix for Microsoft hotfix MS04-011 password change breakage.
[Samba/gebeck_regimport.git] / source3 / configure.in
blobf4383ea337bdd946628fdeae4c6e8c876eddce47
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_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy 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" && test x"$have_afs_headers" == x"yes"; then
2381     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2384 #################################################
2385 # check whether to compile AFS/NT ACL mapping module
2386 samba_cv_WITH_VFS_AFSACL=no
2387 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2388 AC_ARG_WITH(vfs-afsacl,
2389 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2390 [ case "$withval" in
2391   yes|auto)
2392     AC_MSG_RESULT($withval)
2393     samba_cv_WITH_VFS_AFSACL=yes
2394     ;;
2395   *)
2396     AC_MSG_RESULT(no)
2397     ;;
2398   esac ],
2399   AC_MSG_RESULT(no)
2402 if test x"$samba_cv_WITH_VFS_AFSACL" == x"yes"; then
2403    default_shared_modules="$default_shared_modules vfs_afsacl"
2405         
2406 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2407     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2410 #################################################
2411 # check for the DFS clear-text auth system
2412 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2413 AC_ARG_WITH(dfs,
2414 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2415 [ case "$withval" in
2416   yes)
2417     AC_MSG_RESULT(yes)
2418     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2419     ;;
2420   *)
2421     AC_MSG_RESULT(no)
2422     ;;
2423   esac ],
2424   AC_MSG_RESULT(no)
2427 ########################################################
2428 # Compile with LDAP support?
2430 with_ldap_support=auto
2431 AC_MSG_CHECKING([for LDAP support])
2433 AC_ARG_WITH(ldap,
2434 [  --with-ldap             LDAP support (default yes)],
2435 [ case "$withval" in
2436     yes|no)
2437         with_ldap_support=$withval
2438         ;;
2439   esac ])
2441 AC_MSG_RESULT($with_ldap_support)
2443 SMBLDAP=""
2444 AC_SUBST(SMBLDAP)
2445 if test x"$with_ldap_support" != x"no"; then
2447   ##################################################################
2448   # first test for ldap.h and lber.h
2449   # (ldap.h is required for this test)
2450   AC_CHECK_HEADERS(ldap.h lber.h)
2451   
2452   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2453         if test x"$with_ldap_support" = x"yes"; then
2454          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2455         else
2456          AC_MSG_WARN(ldap.h is needed for LDAP support)
2457         fi
2458         
2459         with_ldap_support=no
2460   fi
2463 if test x"$with_ldap_support" != x"no"; then
2464   ac_save_LIBS=$LIBS
2466   ##################################################################
2467   # we might need the lber lib on some systems. To avoid link errors
2468   # this test must be before the libldap test
2469   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2471   ########################################################
2472   # now see if we can find the ldap libs in standard paths
2473   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2475   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2476   
2477   ########################################################
2478   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2479   # Check found in pam_ldap 145.
2480   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2482   LIBS="$LIBS $LDAP_LIBS"
2483   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2484     AC_TRY_COMPILE([
2485         #include <lber.h>
2486         #include <ldap.h>], 
2487         [ldap_set_rebind_proc(0, 0, 0);], 
2488         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2489         [smb_ldap_cv_ldap_set_rebind_proc=2]
2490     ) 
2491   ])
2492   
2493   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2495   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2496   
2497   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2498     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2499     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2500     SMBLDAP="lib/smbldap.o"
2501     with_ldap_support=yes
2502     AC_MSG_CHECKING(whether LDAP support is used)
2503     AC_MSG_RESULT(yes)
2504   else
2505     if test x"$with_ldap_support" = x"yes"; then
2506         AC_MSG_ERROR(libldap is needed for LDAP support)
2507     else
2508         AC_MSG_WARN(libldap is needed for LDAP support)
2509     fi
2510     
2511     LDAP_LIBS=""
2512     with_ldap_support=no
2513   fi
2514   LIBS=$ac_save_LIBS
2518 #################################################
2519 # active directory support
2521 with_ads_support=auto
2522 AC_MSG_CHECKING([for Active Directory and krb5 support])
2524 AC_ARG_WITH(ads,
2525 [  --with-ads              Active Directory support (default auto)],
2526 [ case "$withval" in
2527     yes|no)
2528         with_ads_support="$withval"
2529         ;;
2530   esac ])
2532 AC_MSG_RESULT($with_ads_support)
2534 FOUND_KRB5=no
2535 KRB5_LIBS=""
2537 if test x"$with_ldap_support" != x"yes"; then
2538     if test x"$with_ads_support" = x"yes"; then
2539         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2540     elif test x"$with_ads_support" != x"no"; then
2541         AC_MSG_WARN(Active Directory Support requires LDAP support)
2542     fi
2543     with_ads_support=no
2546 if test x"$with_ads_support" != x"no"; then
2548   # Do no harm to the values of CFLAGS and LIBS while testing for
2549   # Kerberos support.
2551   #################################################
2552   # check for krb5-config from recent MIT and Heimdal kerberos 5
2553   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2554   AC_MSG_CHECKING(for working krb5-config)
2555   if test -x "$KRB5_CONFIG"; then
2556     ac_save_CFLAGS=$CFLAGS
2557     CFLAGS="";export CFLAGS
2558     ac_save_LDFLAGS=$LDFLAGS
2559     LDFLAGS="";export LDFLAGS
2560     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2561     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2562     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2563     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2564     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2565     FOUND_KRB5=yes
2566     AC_MSG_RESULT(yes)
2567   else
2568     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2569   fi
2570   
2571   if test x$FOUND_KRB5 = x"no"; then
2572     #################################################
2573     # check for location of Kerberos 5 install
2574     AC_MSG_CHECKING(for kerberos 5 install path)
2575     AC_ARG_WITH(krb5,
2576     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2577     [ case "$withval" in
2578       no)
2579         AC_MSG_RESULT(no krb5-path given)
2580         ;;
2581       yes)
2582         AC_MSG_RESULT(/usr)
2583         FOUND_KRB5=yes
2584         ;;
2585       *)
2586         AC_MSG_RESULT($withval)
2587         KRB5_CFLAGS="-I$withval/include"
2588         KRB5_CPPFLAGS="-I$withval/include"
2589         KRB5_LDFLAGS="-L$withval/lib"
2590         FOUND_KRB5=yes
2591         ;;
2592       esac ],
2593       AC_MSG_RESULT(no krb5-path given)
2594     )
2595   fi
2597   if test x$FOUND_KRB5 = x"no"; then
2598     #################################################
2599     # see if this box has the SuSE location for the heimdal krb implementation
2600     AC_MSG_CHECKING(for /usr/include/heimdal)
2601     if test -d /usr/include/heimdal; then
2602       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2603           KRB5_CFLAGS="-I/usr/include/heimdal"
2604           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2605           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2606           AC_MSG_RESULT(yes)
2607       else
2608           KRB5_CFLAGS="-I/usr/include/heimdal"
2609           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2610           AC_MSG_RESULT(yes)
2611       fi
2612     else
2613       AC_MSG_RESULT(no)
2614     fi
2615   fi
2617   if test x$FOUND_KRB5 = x"no"; then
2618     #################################################
2619     # see if this box has the RedHat location for kerberos
2620     AC_MSG_CHECKING(for /usr/kerberos)
2621     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2622       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2623       KRB5_CFLAGS="-I/usr/kerberos/include"
2624       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2625       AC_MSG_RESULT(yes)
2626     else
2627       AC_MSG_RESULT(no)
2628     fi
2629   fi
2631   ac_save_CFLAGS=$CFLAGS
2632   ac_save_CPPFLAGS=$CPPFLAGS
2633   ac_save_LDFLAGS=$LDFLAGS
2635   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2636   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2637   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2639   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2641   # now check for krb5.h. Some systems have the libraries without the headers!
2642   # note that this check is done here to allow for different kerberos
2643   # include paths
2644   AC_CHECK_HEADERS(krb5.h)
2646   if test x"$ac_cv_header_krb5_h" = x"no"; then
2648     # Give a warning if AD support was not explicitly requested,
2649     # i.e with_ads_support = auto, otherwise die with an error.
2651     if test x"$with_ads_support" = x"yes"; then
2652       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2653     else
2654       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2655     fi
2657     # Turn off AD support and restore CFLAGS and LIBS variables
2659     with_ads_support="no"
2660     
2661     CFLAGS=$ac_save_CFLAGS
2662     CPPFLAGS=$ac_save_CPPFLAGS
2663     LDFLAGS=$ac_save_LDFLAGS
2664   fi
2667 # Now we have determined whether we really want ADS support
2669 if test x"$with_ads_support" != x"no"; then
2670   ac_save_LIBS=$LIBS
2672   # now check for gssapi headers.  This is also done here to allow for
2673   # different kerberos include paths
2674   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2676   ##################################################################
2677   # we might need the k5crypto and com_err libraries on some systems
2678   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2679   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2681   # Heimdal checks.
2682   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2683   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2684   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2686   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2687   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2688                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2690   ########################################################
2691   # now see if we can find the krb5 libs in standard paths
2692   # or as specified above
2693   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2695   ########################################################
2696   # now see if we can find the gssapi libs in standard paths
2697   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2698             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2700   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2701   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2702   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2703   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2704   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2705   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2706   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2707   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2708   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2709   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2710   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2711   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2712   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2713   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2714   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
2715   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2717   LIBS="$LIBS $KRB5_LIBS"
2718   
2719   AC_CACHE_CHECK([for addrtype in krb5_address],
2720                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2721     AC_TRY_COMPILE([#include <krb5.h>],
2722       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2723       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2724       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2726   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2727     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2728                [Whether the krb5_address struct has a addrtype property])
2729   fi
2731   AC_CACHE_CHECK([for addr_type in krb5_address],
2732                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2733     AC_TRY_COMPILE([#include <krb5.h>],
2734       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2735       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2736       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2738   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2739     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2740               [Whether the krb5_address struct has a addr_type property])
2741   fi
2743   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2744                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2745                  [AC_TRY_COMPILE([#include <krb5.h>],
2746     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2747     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2749   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2750     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2751               [Whether the krb5_ticket struct has a enc_part2 property])
2752   fi
2754   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2755                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2756     AC_TRY_COMPILE([#include <krb5.h>],
2757       [krb5_keyblock key; key.keyvalue.data = NULL;],
2758       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2759       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2761   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2762     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2763               [Whether the krb5_keyblock struct has a keyvalue property])
2764   fi
2766   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2767                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2768     AC_TRY_COMPILE([#include <krb5.h>],
2769       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2770       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2771       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2772   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2773                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2774     AC_TRY_COMPILE([#include <krb5.h>],
2775       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2776       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2777       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2778 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2779 # w.r.t. arcfour and windows, so we must not enable it here
2780   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2781           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2782     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2783               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2784   fi
2786   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2787                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2788     AC_TRY_COMPILE([#include <krb5.h>],
2789       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2790       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2791       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2793   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2794     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2795               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2796   fi
2798   AC_CACHE_CHECK([for the krb5_princ_component macro],
2799                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2800     AC_TRY_LINK([#include <krb5.h>],
2801       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2802       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2803       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2805   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2806     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2807                [Whether krb5_princ_component is available])
2808   fi
2810   AC_CACHE_CHECK([for key in krb5_keytab_entry],
2811                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
2812     AC_TRY_COMPILE([#include <krb5.h>],
2813       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
2814       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
2815       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
2817   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
2818     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
2819               [Whether krb5_keytab_entry has key member])
2820   fi
2822   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
2823                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
2824     AC_TRY_COMPILE([#include <krb5.h>],
2825       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
2826       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
2827       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
2829   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
2830     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
2831               [Whether krb5_keytab_entry has keyblock member])
2832   fi
2834   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2835     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2836     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2837     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2838     AC_MSG_RESULT(yes)
2839   else
2840     if test x"$with_ads_support" = x"yes"; then
2841         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2842     else
2843         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2844     fi
2845     KRB5_LIBS=""
2846     with_ads_support=no 
2847   fi
2848   LIBS="$ac_save_LIBS"
2851 ########################################################
2852 # Compile experimental passdb backends?
2853 # (pdb_xml, pdb_mysql, pdb_pgsql)
2854 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2855 AC_ARG_WITH(expsam,
2856 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2857 [                          Valid choices include (comma separated list): ]
2858 [                              xml, mysql & pgsql],
2859 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2860   if test "z$expsam_pdb_modules" = "zyes"; then
2861     expsam_pdb_modules="xml mysql pgsql"
2862   fi
2863   AC_MSG_RESULT($expsam_pdb_modules)
2864   for i in $expsam_pdb_modules
2865   do 
2866     case "$i" in
2867     xml|all|yes)
2868       ## pdb_xml
2869           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])])
2870       CFLAGS="$CFLAGS $XML_CFLAGS"
2871       ;;
2872     mysql|all|yes)
2873       ## pdb_mysql
2874           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
2875       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2876       ;;
2877      pgsql|all|yes)
2878       ## pdb_pgsql
2879       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
2880       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
2881       ;;
2882     no)
2883       ;;
2884     *)
2885       echo "Unknown module name \"$i\"!  Exiting..."
2886       exit 1
2887       ;;
2888     esac
2889   done ],
2890   AC_MSG_RESULT(no)
2893 #################################################
2894 # check for automount support
2895 AC_MSG_CHECKING(whether to use automount)
2896 AC_ARG_WITH(automount,
2897 [  --with-automount        Include automount support (default=no)],
2898 [ case "$withval" in
2899   yes)
2900     AC_MSG_RESULT(yes)
2901     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2902     ;;
2903   *)
2904     AC_MSG_RESULT(no)
2905     ;;
2906   esac ],
2907   AC_MSG_RESULT(no)
2910 #################################################
2911 # check for smbmount support
2912 AC_MSG_CHECKING(whether to use smbmount)
2913 AC_ARG_WITH(smbmount,
2914 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2915 [ case "$withval" in
2916   yes)
2917         case "$host_os" in
2918         *linux*)
2919                 AC_MSG_RESULT(yes)
2920                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2921                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2922                 ;;
2923         *)
2924                 AC_MSG_ERROR(not on a linux system!)
2925                 ;;
2926         esac
2927     ;;
2928   *)
2929     AC_MSG_RESULT(no)
2930     ;;
2931   esac ],
2932   AC_MSG_RESULT(no)
2936 #################################################
2937 # check for a PAM clear-text auth, accounts, password and session support
2938 with_pam_for_crypt=no
2939 AC_MSG_CHECKING(whether to use PAM)
2940 AC_ARG_WITH(pam,
2941 [  --with-pam              Include PAM support (default=no)],
2942 [ case "$withval" in
2943   yes)
2944     AC_MSG_RESULT(yes)
2945     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2946        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
2947           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
2948              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
2949           fi
2950        fi
2951     fi
2952     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2953     AUTH_LIBS="$AUTH_LIBS -lpam"
2954     with_pam_for_crypt=yes
2955     ;;
2956   *)
2957     AC_MSG_RESULT(no)
2958     ;;
2959   esac ],
2960   AC_MSG_RESULT(no)
2963 # we can't build a pam module if we don't have pam.
2964 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2966 #################################################
2967 # check for pam_smbpass support
2968 AC_MSG_CHECKING(whether to use pam_smbpass)
2969 AC_ARG_WITH(pam_smbpass,
2970 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2971 [ case "$withval" in
2972   yes)
2973     AC_MSG_RESULT(yes)
2975        # Conditions under which pam_smbpass should not be built.
2977        if test x$PICFLAGS = x; then
2978           AC_MSG_ERROR([No support for PIC code])
2979        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2980           AC_MSG_ERROR([No security/pam_appl.h found])
2981        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2982           AC_MSG_ERROR([No libpam found])
2983        else
2984           AUTH_LIBS="$AUTH_LIBS -lpam"
2985           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2986        fi
2987     ;;
2988   *)
2989     AC_MSG_RESULT(no)
2990     ;;
2991   esac ],
2992   AC_MSG_RESULT(no)
2996 ###############################################
2997 # test for where we get crypt() from
2998 AC_SEARCH_LIBS(crypt, [crypt],
2999   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3000   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3003 ## moved after the check for -lcrypt in order to
3004 ## ensure that the necessary libraries are included
3005 ## check checking for truncated salt.  Wrapped by the
3006 ## $with_pam_for_crypt variable as above   --jerry
3008 if test $with_pam_for_crypt = no; then
3009 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3010 crypt_LIBS="$LIBS"
3011 LIBS="$AUTH_LIBS $LIBS"
3012 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3013         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3014 LIBS="$crypt_LIBS"])
3015 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3016         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3021 ########################################################################################
3023 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3025 ########################################################################################
3027 #################################################
3028 # check for a LDAP password database configuration backwards compatibility
3029 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3030 AC_ARG_WITH(ldapsam,
3031 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3032 [ case "$withval" in
3033   yes)
3034     AC_MSG_RESULT(yes)
3035     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3036     ;;
3037   *)
3038     AC_MSG_RESULT(no)
3039     ;;
3040   esac ],
3041   AC_MSG_RESULT(no)
3044 ########################################################################################
3046 ## END OF TESTS FOR SAM BACKENDS.  
3048 ########################################################################################
3050 #################################################
3051 # check for a NISPLUS_HOME support 
3052 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3053 AC_ARG_WITH(nisplus-home,
3054 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3055 [ case "$withval" in
3056   yes)
3057     AC_MSG_RESULT(yes)
3058     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3059     ;;
3060   *)
3061     AC_MSG_RESULT(no)
3062     ;;
3063   esac ],
3064   AC_MSG_RESULT(no)
3067 #################################################
3068 # check for syslog logging
3069 AC_MSG_CHECKING(whether to use syslog logging)
3070 AC_ARG_WITH(syslog,
3071 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3072 [ case "$withval" in
3073   yes)
3074     AC_MSG_RESULT(yes)
3075     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3076     ;;
3077   *)
3078     AC_MSG_RESULT(no)
3079     ;;
3080   esac ],
3081   AC_MSG_RESULT(no)
3084 #################################################
3085 # check for a shared memory profiling support
3086 AC_MSG_CHECKING(whether to use profiling)
3087 AC_ARG_WITH(profiling-data,
3088 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3089 [ case "$withval" in
3090   yes)
3091     AC_MSG_RESULT(yes)
3092     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3093     ;;
3094   *)
3095     AC_MSG_RESULT(no)
3096     ;;
3097   esac ],
3098   AC_MSG_RESULT(no)
3102 #################################################
3103 # check for experimental disk-quotas support
3105 samba_cv_WITH_QUOTAS=auto
3106 samba_cv_TRY_QUOTAS=no
3107 samba_cv_RUN_QUOTA_TESTS=auto
3108 samba_cv_WITH_SYS_QUOTAS=auto
3109 samba_cv_TRY_SYS_QUOTAS=no
3110 samba_cv_SYSQUOTA_FOUND=no;
3112 AC_MSG_CHECKING(whether to try disk-quotas support)
3113 AC_ARG_WITH(quotas,
3114 [  --with-quotas           Include disk-quota support (default=no)],
3115 [ case "$withval" in
3116   yes)
3117     AC_MSG_RESULT(yes)
3118     samba_cv_WITH_QUOTAS=yes
3119     samba_cv_TRY_QUOTAS=yes
3120     samba_cv_RUN_QUOTA_TESTS=yes
3121     #set sys quotas to auto in this case
3122     samba_cv_TRY_SYS_QUOTAS=auto
3123     ;;
3124   auto)
3125     AC_MSG_RESULT(auto)
3126     samba_cv_WITH_QUOTAS=auto
3127     samba_cv_TRY_QUOTAS=auto
3128     samba_cv_RUN_QUOTA_TESTS=auto
3129     #set sys quotas to auto in this case
3130     samba_cv_TRY_SYS_QUOTAS=auto
3131     ;;
3132   no)
3133     AC_MSG_RESULT(no)
3134     samba_cv_WITH_QUOTAS=no
3135     samba_cv_TRY_QUOTAS=no
3136     samba_cv_RUN_QUOTA_TESTS=no
3137     ;;
3138   *)
3139     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3140     ;;
3141   esac ],
3142   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3145 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3146 AC_ARG_WITH(sys-quotas,
3147 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3148 [ case "$withval" in
3149   yes)
3150     AC_MSG_RESULT(yes)
3151     samba_cv_WITH_SYS_QUOTAS=yes
3152     samba_cv_TRY_SYS_QUOTAS=yes
3153     samba_cv_RUN_QUOTA_TESTS=yes
3154     ;;
3155   auto)
3156     AC_MSG_RESULT(auto)
3157     samba_cv_WITH_SYS_QUOTAS=auto
3158     samba_cv_TRY_SYS_QUOTAS=auto
3159     samba_cv_RUN_QUOTA_TESTS=auto
3160     ;;
3161   no)
3162     AC_MSG_RESULT(no)
3163     samba_cv_WITH_SYS_QUOTAS=no
3164     samba_cv_TRY_SYS_QUOTAS=no
3165     ;;
3166   *)
3167     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3168     ;;
3169   esac ],
3170   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3173 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3174 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3175   case "$host_os" in
3176         *linux*)
3177             AC_MSG_RESULT(yes)
3178             samba_cv_TRY_SYS_QUOTAS=yes
3179             samba_cv_RUN_QUOTA_TESTS=yes
3180             samba_cv_SYSQUOTA_FOUND=yes
3181             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3182             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3183             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3184             samba_cv_found_xfs_header=yes
3185             ;;
3186         *)
3187             AC_MSG_RESULT(no)
3188             samba_cv_TRY_SYS_QUOTAS=no
3189             ;;
3190   esac
3193 #############################################
3194 # only check for quota stuff if --with-quotas
3195 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3197 # some broken header files need this
3198 AC_CHECK_HEADER(asm/types.h,[
3199             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3200             AC_ADD_INCLUDE(<asm/types.h>)
3201             ])
3203 # For quotas on Veritas VxFS filesystems
3204 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3206 # For sys/quota.h and linux/quota.h
3207 AC_CHECK_HEADERS(sys/quota.h)
3209 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3210 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3211 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3212 AC_TRY_COMPILE([
3213 #include "confdefs.h"
3214 #ifdef HAVE_SYS_TYPES_H
3215 #include <sys/types.h>
3216 #endif
3217 #ifdef HAVE_ASM_TYPES_H
3218 #include <asm/types.h>
3219 #endif
3220 #include <sys/quota.h>
3221 ],[int i = Q_XGETQUOTA;],
3222 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3223 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3224         samba_cv_found_xfs_header=yes
3228 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3229 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3230 AC_TRY_COMPILE([
3231 #include "confdefs.h"
3232 #ifdef HAVE_SYS_QUOTA_H
3233 #include <sys/quota.h>
3234 #endif
3236 struct dqblk D;
3237 D.dqb_fsoftlimit = 0;],
3238 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3239 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3240         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3243 ##################
3244 # look for a working quota system
3246 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3247 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3248 AC_TRY_RUN_STRICT([
3249 #define HAVE_QUOTACTL_4A 1
3250 #define AUTOCONF_TEST 1
3251 #include "confdefs.h"
3252 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3253            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3254 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3255     samba_cv_SYSQUOTA_FOUND=yes;
3256     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3257     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3261 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3262 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3263 AC_TRY_RUN_STRICT([
3264 #define HAVE_QUOTACTL_4B 1
3265 #define AUTOCONF_TEST 1
3266 #include "confdefs.h"
3267 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3268            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3269 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3270     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3271     samba_cv_SYSQUOTA_FOUND=yes;
3272     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3273     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3277 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3278 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3279 AC_TRY_RUN_STRICT([
3280 #define HAVE_QUOTACTL_3 1
3281 #define AUTOCONF_TEST 1
3282 #include "confdefs.h"
3283 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3284            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3285 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3286     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3287     samba_cv_SYSQUOTA_FOUND=yes;
3288     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3289     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3293 #################################################
3294 # check for mntent.h and struct mntent
3295 AC_CHECK_HEADERS(mntent.h)
3296 #################################################
3297 # check for setmntent,getmntent,endmntent
3298 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3300 #################################################
3301 # check for devnm.h and struct mntent
3302 AC_CHECK_HEADERS(devnm.h)
3303 #################################################
3304 # check for devnm
3305 AC_CHECK_FUNCS(devnm)
3307 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3308     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3309         # if --with-sys-quotas=yes then build it 
3310         # you have can use the get/set quota command smb.conf
3311         # options then
3312         samba_cv_SYSQUOTA_FOUND=auto
3313     fi
3314     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3315         # if --with-sys-quotas=yes then build it 
3316         # you have can use the get/set quota command smb.conf
3317         # options then
3318         samba_cv_TRY_SYS_QUOTAS=auto
3319     fi
3322 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3323 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3324 SAVE_CPPFLAGS="$CPPFLAGS"
3325 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3326 AC_TRY_COMPILE([
3327 #include "confdefs.h"
3328 #define NO_PROTO_H 1
3329 #define NO_CONFIG_H 1
3330 #define HAVE_SYS_QUOTAS 1
3331 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3332 #include "${srcdir-.}/lib/sysquotas.c"
3333 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3334 CPPFLAGS="$SAVE_CPPFLAGS"
3336 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3337 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3338     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3339         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3340         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3341         samba_cv_WE_USE_SYS_QUOTAS=yes
3342         AC_MSG_RESULT(yes)
3343     else
3344         AC_MSG_RESULT(no)
3345     fi
3349 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3350 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3351 SAVE_CPPFLAGS="$CPPFLAGS"
3352 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3353 AC_TRY_COMPILE([
3354 #include "confdefs.h"
3355 #define NO_PROTO_H 1
3356 #define NO_CONFIG_H 1
3357 #define HAVE_SYS_QUOTAS 1
3358 #define HAVE_XFS_QUOTAS 1
3359 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3360 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3361 CPPFLAGS="$SAVE_CPPFLAGS"
3363 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3364     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3365         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3366     fi
3370 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3371 SAVE_CPPFLAGS="$CPPFLAGS"
3372 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3373 AC_TRY_COMPILE([
3374 #include "confdefs.h"
3375 #define NO_PROTO_H 1
3376 #define NO_CONFIG_H 1
3377 #include "${srcdir-.}/smbd/quotas.c"
3378 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3379 CPPFLAGS="$SAVE_CPPFLAGS"
3381 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3382 AC_MSG_CHECKING(whether to use the old quota support)
3383     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3384       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3385         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3386         AC_MSG_RESULT(yes)
3387       else
3388         AC_MSG_RESULT(no)
3389       fi
3390     else
3391       AC_MSG_RESULT(no)
3392     fi
3395 ####################
3396 # End of quota check samba_cv_RUN_QUOTA_TESTS
3399 #################################################
3400 # check for experimental utmp accounting
3402 AC_MSG_CHECKING(whether to support utmp accounting)
3403 WITH_UTMP=yes
3404 AC_ARG_WITH(utmp,
3405 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3406 [ case "$withval" in
3407   no)
3408                 WITH_UTMP=no
3409                 ;;
3410   *)
3411                 WITH_UTMP=yes
3412                 ;;
3413   esac ],
3416 # utmp requires utmp.h
3417 # Note similar check earlier, when checking utmp details.
3419 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3420         utmp_no_reason=", no utmp.h on $host_os"
3421         WITH_UTMP=no
3424 # Display test results
3426 if test x"$WITH_UTMP" = x"yes"; then
3427         AC_MSG_RESULT(yes)
3428         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3429 else
3430         AC_MSG_RESULT(no$utmp_no_reason)
3433 #################################################
3434 # choose native language(s) of man pages
3435 AC_MSG_CHECKING(chosen man pages' language(s))
3436 AC_ARG_WITH(manpages-langs,
3437 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3438 [ case "$withval" in
3439   yes|no)
3440     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3441     manlangs="en"
3442   ;;
3443   *)
3444     manlangs="$withval"
3445   ;;
3446   esac
3448   AC_MSG_RESULT($manlangs)
3449   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3450   AC_SUBST(manlangs)],
3452   [manlangs="en"
3453   AC_MSG_RESULT($manlangs)
3454   AC_SUBST(manlangs)]
3457 #################################################
3458 # should we build libsmbclient?
3460 INSTALLCLIENTCMD_SH=:
3461 INSTALLCLIENTCMD_A=:
3462 INSTALLCLIENT=
3463 LIBSMBCLIENT_SHARED=
3464 LIBSMBCLIENT=
3465 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3466 AC_ARG_WITH(libsmbclient,
3467 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3468 [ case "$withval" in
3469   no) 
3470      AC_MSG_RESULT(no)
3471      ;;
3472   *)
3473      if test $BLDSHARED = true; then
3474         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3475         ## build the static version of libsmbclient as well
3476         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3477         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3478         LIBSMBCLIENT=libsmbclient
3479         AC_MSG_RESULT(yes)
3480      else
3481         enable_static=yes
3482         AC_MSG_RESULT(no shared library support -- will supply static library)
3483      fi
3484      if test $enable_static = yes; then
3485         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3486         LIBSMBCLIENT=libsmbclient
3487      fi
3488      INSTALLCLIENT=installclientlib
3489      ;;
3490   esac ],
3492 # if unspecified, default is to built it iff possible.
3493   if test $BLDSHARED = true; then
3494      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3495      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3496      LIBSMBCLIENT=libsmbclient
3497      AC_MSG_RESULT(yes)
3498    else
3499      enable_static=yes
3500      AC_MSG_RESULT(no shared library support -- will supply static library)
3501    fi
3502    if test $enable_static = yes; then
3503      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3504      LIBSMBCLIENT=libsmbclient
3505   fi]
3506   INSTALLCLIENT=installclientlib
3510 #################################################
3511 # these tests are taken from the GNU fileutils package
3512 AC_CHECKING(how to get filesystem space usage)
3513 space=no
3515 # Test for statvfs64.
3516 if test $space = no; then
3517   # SVR4
3518   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3519   [AC_TRY_RUN([
3520 #if defined(HAVE_UNISTD_H)
3521 #include <unistd.h>
3522 #endif
3523 #include <sys/types.h>
3524 #include <sys/statvfs.h>
3525   main ()
3526   {
3527     struct statvfs64 fsd;
3528     exit (statvfs64 (".", &fsd));
3529   }],
3530   fu_cv_sys_stat_statvfs64=yes,
3531   fu_cv_sys_stat_statvfs64=no,
3532   fu_cv_sys_stat_statvfs64=cross)])
3533   if test $fu_cv_sys_stat_statvfs64 = yes; then
3534     space=yes
3535     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3536   fi
3539 # Perform only the link test since it seems there are no variants of the
3540 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3541 # because that got a false positive on SCO OSR5.  Adding the declaration
3542 # of a `struct statvfs' causes this test to fail (as it should) on such
3543 # systems.  That system is reported to work fine with STAT_STATFS4 which
3544 # is what it gets when this test fails.
3545 if test $space = no; then
3546   # SVR4
3547   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3548                  [AC_TRY_LINK([#include <sys/types.h>
3549 #include <sys/statvfs.h>],
3550                               [struct statvfs fsd; statvfs (0, &fsd);],
3551                               fu_cv_sys_stat_statvfs=yes,
3552                               fu_cv_sys_stat_statvfs=no)])
3553   if test $fu_cv_sys_stat_statvfs = yes; then
3554     space=yes
3555     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3556   fi
3559 if test $space = no; then
3560   # DEC Alpha running OSF/1
3561   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3562   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3563   [AC_TRY_RUN([
3564 #include <sys/param.h>
3565 #include <sys/types.h>
3566 #include <sys/mount.h>
3567   main ()
3568   {
3569     struct statfs fsd;
3570     fsd.f_fsize = 0;
3571     exit (statfs (".", &fsd, sizeof (struct statfs)));
3572   }],
3573   fu_cv_sys_stat_statfs3_osf1=yes,
3574   fu_cv_sys_stat_statfs3_osf1=no,
3575   fu_cv_sys_stat_statfs3_osf1=no)])
3576   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3577   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3578     space=yes
3579     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3580   fi
3583 if test $space = no; then
3584 # AIX
3585   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3586 member (AIX, 4.3BSD)])
3587   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3588   [AC_TRY_RUN([
3589 #ifdef HAVE_SYS_PARAM_H
3590 #include <sys/param.h>
3591 #endif
3592 #ifdef HAVE_SYS_MOUNT_H
3593 #include <sys/mount.h>
3594 #endif
3595 #ifdef HAVE_SYS_VFS_H
3596 #include <sys/vfs.h>
3597 #endif
3598   main ()
3599   {
3600   struct statfs fsd;
3601   fsd.f_bsize = 0;
3602   exit (statfs (".", &fsd));
3603   }],
3604   fu_cv_sys_stat_statfs2_bsize=yes,
3605   fu_cv_sys_stat_statfs2_bsize=no,
3606   fu_cv_sys_stat_statfs2_bsize=no)])
3607   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3608   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3609     space=yes
3610     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3611   fi
3614 if test $space = no; then
3615 # SVR3
3616   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3617   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3618   [AC_TRY_RUN([#include <sys/types.h>
3619 #include <sys/statfs.h>
3620   main ()
3621   {
3622   struct statfs fsd;
3623   exit (statfs (".", &fsd, sizeof fsd, 0));
3624   }],
3625     fu_cv_sys_stat_statfs4=yes,
3626     fu_cv_sys_stat_statfs4=no,
3627     fu_cv_sys_stat_statfs4=no)])
3628   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3629   if test $fu_cv_sys_stat_statfs4 = yes; then
3630     space=yes
3631     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3632   fi
3635 if test $space = no; then
3636 # 4.4BSD and NetBSD
3637   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3638 member (4.4BSD and NetBSD)])
3639   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3640   [AC_TRY_RUN([#include <sys/types.h>
3641 #ifdef HAVE_SYS_PARAM_H
3642 #include <sys/param.h>
3643 #endif
3644 #ifdef HAVE_SYS_MOUNT_H
3645 #include <sys/mount.h>
3646 #endif
3647   main ()
3648   {
3649   struct statfs fsd;
3650   fsd.f_fsize = 0;
3651   exit (statfs (".", &fsd));
3652   }],
3653   fu_cv_sys_stat_statfs2_fsize=yes,
3654   fu_cv_sys_stat_statfs2_fsize=no,
3655   fu_cv_sys_stat_statfs2_fsize=no)])
3656   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3657   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3658     space=yes
3659         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3660   fi
3663 if test $space = no; then
3664   # Ultrix
3665   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3666   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3667   [AC_TRY_RUN([#include <sys/types.h>
3668 #ifdef HAVE_SYS_PARAM_H
3669 #include <sys/param.h>
3670 #endif
3671 #ifdef HAVE_SYS_MOUNT_H
3672 #include <sys/mount.h>
3673 #endif
3674 #ifdef HAVE_SYS_FS_TYPES_H
3675 #include <sys/fs_types.h>
3676 #endif
3677   main ()
3678   {
3679   struct fs_data fsd;
3680   /* Ultrix's statfs returns 1 for success,
3681      0 for not mounted, -1 for failure.  */
3682   exit (statfs (".", &fsd) != 1);
3683   }],
3684   fu_cv_sys_stat_fs_data=yes,
3685   fu_cv_sys_stat_fs_data=no,
3686   fu_cv_sys_stat_fs_data=no)])
3687   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3688   if test $fu_cv_sys_stat_fs_data = yes; then
3689     space=yes
3690     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3691   fi
3695 # As a gating factor for large file support, in order to
3696 # use <4GB files we must have the following minimal support
3697 # available.
3698 # long long, and a 64 bit off_t or off64_t.
3699 # If we don't have all of these then disable large
3700 # file support.
3702 AC_MSG_CHECKING([if large file support can be enabled])
3703 AC_TRY_COMPILE([
3704 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3705 #include <sys/types.h>
3706 #else
3707 __COMPILE_ERROR_
3708 #endif
3710 [int i],
3711 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3712 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3713         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3715 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3717 AC_ARG_WITH(spinlocks, 
3718 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3719 if test "x$with_spinlocks" = "xyes"; then
3720     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3722     case "$host_cpu" in
3723         sparc)
3724             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3725             ;;
3727         i386|i486|i586|i686)
3728             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3729             ;;
3731         mips)
3732             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3733             ;;
3735         powerpc)
3736             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3737             ;;
3738     esac
3741 #################################################
3742 # check for ACL support
3744 AC_MSG_CHECKING(whether to support ACLs)
3745 AC_ARG_WITH(acl-support,
3746 [  --with-acl-support      Include ACL support (default=no)],
3747 [ case "$withval" in
3748   yes)
3750         case "$host_os" in
3751         *sysv5*)
3752                 AC_MSG_RESULT(Using UnixWare ACLs)
3753                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3754                 ;;
3755         *solaris*)
3756                 AC_MSG_RESULT(Using solaris ACLs)
3757                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3758                 ;;
3759         *hpux*)
3760                 AC_MSG_RESULT(Using HPUX ACLs)
3761                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3762                 ;;
3763         *irix*)
3764                 AC_MSG_RESULT(Using IRIX ACLs)
3765                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3766                 ;;
3767         *aix*)
3768                 AC_MSG_RESULT(Using AIX ACLs)
3769                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3770                 ;;
3771         *osf*)
3772                 AC_MSG_RESULT(Using Tru64 ACLs)
3773                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3774                 ACL_LIBS="$ACL_LIBS -lpacl"
3775                 ;;
3776         *freebsd5*)
3777                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3778                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3779                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3780                 ;;
3781         *linux*)
3782                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3783                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3784                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3785                 acl_LIBS=$LIBS
3786                 LIBS="$LIBS -lacl"
3787                 AC_TRY_LINK([#include <sys/types.h>
3788 #include <sys/acl.h>],
3789 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3790 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3791                 LIBS=$acl_LIBS])
3792                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3793                                 AC_MSG_RESULT(Using posix ACLs)
3794                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3795                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3796                                 acl_LIBS=$LIBS
3797                                 LIBS="$LIBS -lacl"
3798                                 AC_TRY_LINK([#include <sys/types.h>
3799 #include <sys/acl.h>],
3800 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3801 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3802                                 LIBS=$acl_LIBS])
3803                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3804                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3805                                 fi
3806                         fi
3807             ;;
3808          *)
3809                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3810                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3811                 acl_LIBS=$LIBS
3812                 LIBS="$LIBS -lacl"
3813                 AC_TRY_LINK([#include <sys/types.h>
3814 #include <sys/acl.h>],
3815 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3816 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3817                 LIBS=$acl_LIBS])
3818                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3819                                 AC_MSG_RESULT(Using posix ACLs)
3820                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3821                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3822                                 acl_LIBS=$LIBS
3823                                 LIBS="$LIBS -lacl"
3824                                 AC_TRY_LINK([#include <sys/types.h>
3825 #include <sys/acl.h>],
3826 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3827 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3828                                 LIBS=$acl_LIBS])
3829                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3830                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3831                                 fi
3832                         fi
3833             ;;
3834         esac
3835         ;;
3836   *)
3837     AC_MSG_RESULT(no)
3838     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3839     ;;
3840   esac ],
3841   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3842   AC_MSG_RESULT(no)
3845 #################################################
3846 # check for sendfile support
3848 with_sendfile_support=yes
3849 AC_MSG_CHECKING(whether to check to support sendfile)
3850 AC_ARG_WITH(sendfile-support,
3851 [  --with-sendfile-support Check for sendfile support (default=yes)],
3852 [ case "$withval" in
3853   yes)
3855         AC_MSG_RESULT(yes);
3857         case "$host_os" in
3858         *linux*)
3859                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3860                 AC_TRY_LINK([#include <sys/sendfile.h>],
3862 int tofd, fromfd;
3863 off64_t offset;
3864 size_t total;
3865 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3867 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3869                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3870                 AC_TRY_LINK([#include <sys/sendfile.h>],
3872 int tofd, fromfd;
3873 off_t offset;
3874 size_t total;
3875 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3877 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3879 # Try and cope with broken Linux sendfile....
3880                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3881                 AC_TRY_LINK([\
3882 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3883 #undef _FILE_OFFSET_BITS
3884 #endif
3885 #include <sys/sendfile.h>],
3887 int tofd, fromfd;
3888 off_t offset;
3889 size_t total;
3890 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3892 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3894         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3895                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3896                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3897                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3898         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3899                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3900                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3901                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3902         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3903                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3904                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3905         else
3906                 AC_MSG_RESULT(no);
3907         fi
3909         ;;
3910         *freebsd*)
3911                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3912                 AC_TRY_LINK([\
3913 #include <sys/types.h>
3914 #include <unistd.h>
3915 #include <sys/socket.h>
3916 #include <sys/uio.h>],
3918         int fromfd, tofd, ret, total=0;
3919         off_t offset, nwritten;
3920         struct sf_hdtr hdr;
3921         struct iovec hdtrl;
3922         hdr.headers = &hdtrl;
3923         hdr.hdr_cnt = 1;
3924         hdr.trailers = NULL;
3925         hdr.trl_cnt = 0;
3926         hdtrl.iov_base = NULL;
3927         hdtrl.iov_len = 0;
3928         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3930 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3932         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3933                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3934                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3935                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3936         else
3937                 AC_MSG_RESULT(no);
3938         fi
3939         ;;
3941         *hpux*)
3942                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3943                 AC_TRY_LINK([\
3944 #include <sys/socket.h>
3945 #include <sys/uio.h>],
3947         int fromfd, tofd;
3948         size_t total=0;
3949         struct iovec hdtrl[2];
3950         ssize_t nwritten;
3951         off64_t offset;
3953         hdtrl[0].iov_base = 0;
3954         hdtrl[0].iov_len = 0;
3956         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3958 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3959         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3960                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3961                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3962                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3963         else
3964                 AC_MSG_RESULT(no);
3965         fi
3967                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3968                 AC_TRY_LINK([\
3969 #include <sys/socket.h>
3970 #include <sys/uio.h>],
3972         int fromfd, tofd;
3973         size_t total=0;
3974         struct iovec hdtrl[2];
3975         ssize_t nwritten;
3976         off_t offset;
3978         hdtrl[0].iov_base = 0;
3979         hdtrl[0].iov_len = 0;
3981         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3983 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3984         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3985                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3986                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3987                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3988         else
3989                 AC_MSG_RESULT(no);
3990         fi
3991         ;;
3993         *solaris*)
3994                 AC_CHECK_LIB(sendfile,sendfilev)
3995                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3996                 AC_TRY_LINK([\
3997 #include <sys/sendfile.h>],
3999         int sfvcnt;
4000         size_t xferred;
4001         struct sendfilevec vec[2];
4002         ssize_t nwritten;
4003         int tofd;
4005         sfvcnt = 2;
4007         vec[0].sfv_fd = SFV_FD_SELF;
4008         vec[0].sfv_flag = 0;
4009         vec[0].sfv_off = 0;
4010         vec[0].sfv_len = 0;
4012         vec[1].sfv_fd = 0;
4013         vec[1].sfv_flag = 0;
4014         vec[1].sfv_off = 0;
4015         vec[1].sfv_len = 0;
4016         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4018 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4020         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4021                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4022                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4023                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4024         else
4025                 AC_MSG_RESULT(no);
4026         fi
4028                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4029                 AC_TRY_LINK([\
4030 #include <sys/sendfile.h>],
4032         int sfvcnt;
4033         size_t xferred;
4034         struct sendfilevec vec[2];
4035         ssize_t nwritten;
4036         int tofd;
4038         sfvcnt = 2;
4040         vec[0].sfv_fd = SFV_FD_SELF;
4041         vec[0].sfv_flag = 0;
4042         vec[0].sfv_off = 0;
4043         vec[0].sfv_len = 0;
4045         vec[1].sfv_fd = 0;
4046         vec[1].sfv_flag = 0;
4047         vec[1].sfv_off = 0;
4048         vec[1].sfv_len = 0;
4049         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4051 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4053         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4054                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4055                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4056                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4057         else
4058                 AC_MSG_RESULT(no);
4059         fi
4060         ;;
4062         *)
4063         ;;
4064         esac
4065         ;;
4066   *)
4067     AC_MSG_RESULT(no)
4068     ;;
4069   esac ],
4070   AC_MSG_RESULT(yes)
4074 #################################################
4075 # Check whether winbind is supported on this platform.  If so we need to
4076 # build and install client programs, sbin programs and shared libraries
4078 AC_MSG_CHECKING(whether to build winbind)
4080 # Initially, the value of $host_os decides whether winbind is supported
4082 HAVE_WINBIND=yes
4084 # Define the winbind shared library name and any specific linker flags
4085 # it needs to be built with.
4087 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4088 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4089 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4091 case "$host_os" in
4092         *linux*)
4093                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4094                 ;;
4095         *freebsd5*)
4096                 # FreeBSD winbind client is implemented as a wrapper around
4097                 # the Linux version.
4098                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4099                     nsswitch/winbind_nss_linux.o"
4100                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4101                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4102                 ;;
4103         *irix*)
4104                 # IRIX has differently named shared libraries
4105                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4106                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4107                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4108                 ;;
4109         *solaris*)
4110                 # Solaris winbind client is implemented as a wrapper around
4111                 # the Linux version.
4112                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4113                     nsswitch/winbind_nss_linux.o"
4114                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4115                 ;;
4116         *hpux11*)
4117                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4118                 ;;
4119         *aix*)
4120                 # AIX has even differently named shared libraries.  No
4121                 # WINS support has been implemented yet.
4122                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4123                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4124                 WINBIND_NSS="nsswitch/WINBIND"
4125                 WINBIND_WINS_NSS=""
4126                 ;;
4127         *)
4128                 HAVE_WINBIND=no
4129                 winbind_no_reason=", unsupported on $host_os"
4130                 ;;
4131 esac
4133 AC_SUBST(WINBIND_NSS)
4134 AC_SUBST(WINBIND_WINS_NSS)
4135 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4136 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4137 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4139 # Check the setting of --with-winbindd
4141 AC_ARG_WITH(winbind,
4142 [  --with-winbind          Build winbind (default, if supported by OS)],
4144   case "$withval" in
4145         yes)
4146                 HAVE_WINBIND=yes
4147                 ;;
4148         no)
4149                 HAVE_WINBIND=no
4150                 winbind_reason=""
4151                 ;;
4152   esac ],
4155 # We need unix domain sockets for winbind
4157 if test x"$HAVE_WINBIND" = x"yes"; then
4158         if test x"$samba_cv_unixsocket" = x"no"; then
4159                 winbind_no_reason=", no unix domain socket support on $host_os"
4160                 HAVE_WINBIND=no
4161         fi
4164 # Display test results
4166 if test x"$HAVE_WINBIND" = x"yes"; then
4167         AC_MSG_RESULT(yes)
4168         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4170         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4171         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4172         if test $BLDSHARED = true; then
4173                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4175                 if test x"$with_pam" = x"yes"; then
4176                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4177                 fi
4178         fi
4179 else
4180         AC_MSG_RESULT(no$winbind_no_reason)
4183 # Solaris has some extra fields in struct passwd that need to be
4184 # initialised otherwise nscd crashes.  
4186 AC_CHECK_MEMBER(struct passwd.pw_comment,
4187                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4188                 [#include <pwd.h>])
4190 AC_CHECK_MEMBER(struct passwd.pw_age,
4191                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4192                 [#include <pwd.h>])
4194 #################################################
4195 # Check to see if we should use the included popt 
4197 AC_ARG_WITH(included-popt,
4198 [  --with-included-popt    use bundled popt library, not from system],
4200   case "$withval" in
4201         yes)
4202                 INCLUDED_POPT=yes
4203                 ;;
4204         no)
4205                 INCLUDED_POPT=no
4206                 ;;
4207   esac ],
4209 if test x"$INCLUDED_POPT" != x"yes"; then
4210     AC_CHECK_LIB(popt, poptGetContext,
4211                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4214 AC_MSG_CHECKING(whether to use included popt)
4215 if test x"$INCLUDED_POPT" = x"yes"; then
4216     AC_MSG_RESULT(yes)
4217     BUILD_POPT='$(POPT_OBJS)'
4218         POPTLIBS='$(POPT_OBJS)'
4219     FLAGS1="-I$srcdir/popt"
4220 else
4221     AC_MSG_RESULT(no)
4222         BUILD_POPT=""
4223     POPTLIBS="-lpopt"
4225 AC_SUBST(BUILD_POPT)
4226 AC_SUBST(POPTLIBS)
4227 AC_SUBST(FLAGS1)
4229 #################################################
4230 # Check if the user wants Python
4232 # At the moment, you can use this to set which Python binary to link
4233 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4234 # though they can coexist in different directories.)  In the future
4235 # this might make the Python stuff be built by default.
4237 # Defaulting python breaks the clean target if python isn't installed
4239 PYTHON=
4241 AC_ARG_WITH(python,
4242 [  --with-python=PYTHONNAME  build Python libraries],
4243 [ case "${withval-python}" in
4244   yes)
4245         PYTHON=python
4246         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4247         ;;
4248   no)
4249         PYTHON=
4250         ;;
4251   *)
4252         PYTHON=${withval-python}
4253         ;;
4254   esac ])
4255 AC_SUBST(PYTHON)
4257 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4259         eval MODULE_DEFAULT_$i=STATIC
4260 done
4262 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4264         dnl Fall back to static if we cannot build shared libraries
4265         eval MODULE_DEFAULT_$i=STATIC
4267         if test $BLDSHARED = true; then
4268                 eval MODULE_DEFAULT_$i=SHARED
4269         fi
4270 done
4272 dnl Always built these modules static
4273 MODULE_pdb_guest=STATIC
4274 MODULE_rpc_spoolss=STATIC
4275 MODULE_rpc_srv=STATIC
4276 MODULE_idmap_tdb=STATIC
4278 AC_ARG_WITH(static-modules,
4279 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4280 [ if test $withval; then
4281         for i in `echo $withval | sed -e's/,/ /g'`
4282         do
4283                 eval MODULE_$i=STATIC
4284         done
4285 fi ])
4287 AC_ARG_WITH(shared-modules,
4288 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4289 [ if test $withval; then
4290         for i in `echo $withval | sed -e's/,/ /g'`
4291         do
4292                         eval MODULE_$i=SHARED
4293         done
4294 fi ])
4296 ###########################################################################
4297 ## contributed pdb_modules
4299 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4300                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4301 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4302                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4303 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4304                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4306 ## end of contributed pdb_modules
4307 ###########################################################################
4309 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4310                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4311 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4312 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4313 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4314 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4316 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4317 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4318 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4319 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4320 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4321 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4322 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4323 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4324 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4325 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4326 SMB_SUBSYSTEM(RPC,smbd/server.o)
4328 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4329 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4330 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4332 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4333 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4334 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4335 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4336 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4338 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4339 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4340 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4341 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4342 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4343 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4344 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4345 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4347 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4348 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4349 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4350 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
4351 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4352 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4353 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4354 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4355 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4356 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4357 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4358 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
4359 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4361 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4363 #################################################
4364 # do extra things if we are running insure
4366 if test "${ac_cv_prog_CC}" = "insure"; then
4367         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4370 #################################################
4371 # Display summary of libraries detected
4373 AC_MSG_RESULT([Using libraries:])
4374 AC_MSG_RESULT([    LIBS = $LIBS])
4375 if test x"$with_ads_support" != x"no"; then
4376    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4378 if test x"$with_ldap_support" != x"no"; then
4379    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4381 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4383 #################################################
4384 # final configure stuff
4386 AC_MSG_CHECKING([configure summary])
4387 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4388            AC_MSG_RESULT(yes),
4389            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4390            AC_MSG_WARN([cannot run when cross-compiling]))
4392 builddir=`pwd`
4393 AC_SUBST(builddir)
4395 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4396 LIB_REMOVE_USR_LIB(LDFLAGS)
4397 LIB_REMOVE_USR_LIB(LIBS)
4399 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4400 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4401 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4403 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4405 #################################################
4406 # Print very concise instructions on building/use
4407 if test "x$enable_dmalloc" = xyes
4408 then
4409         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4410         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])