r4348: syncing up for 3.0.11pre1
[Samba.git] / source / configure.in
blob35300151104571cc5b0ffdfb770909f03c078b35
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 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
12 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
14 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
15 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
16         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
19 #################################################
20 # Directory handling stuff to support both the
21 # legacy SAMBA directories and FHS compliant
22 # ones...
23 AC_PREFIX_DEFAULT(/usr/local/samba)
25 lockdir="\${VARDIR}/locks"
26 piddir="\${VARDIR}/locks"
27 mandir="\${prefix}/man"
28 logfilebase="\${VARDIR}"
29 privatedir="\${prefix}/private"
30 libdir="\${prefix}/lib"
31 configdir="\${LIBDIR}"
32 swatdir="\${prefix}/swat"
34 AC_ARG_WITH(fhs, 
35 [  --with-fhs              Use FHS-compliant paths (default=no)],
36 [ case "$withval" in
37   yes)
38     lockdir="\${VARDIR}/lib/samba"
39     piddir="\${VARDIR}/run"
40     mandir="\${prefix}/share/man"
41     logfilebase="\${VARDIR}/log/samba"
42     privatedir="\${CONFIGDIR}/private"
43     libdir="\${prefix}/lib/samba"
44     configdir="${sysconfdir}/samba"
45     swatdir="\${DATADIR}/samba/swat"
46     ;;
47   esac])
49 #################################################
50 # set private directory location
51 AC_ARG_WITH(privatedir,
52 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
53 [ case "$withval" in
54   yes|no)
55   #
56   # Just in case anybody calls it without argument
57   #
58     AC_MSG_WARN([--with-privatedir called without argument - will use default])
59   ;;
60   * )
61     privatedir="$withval"
62     ;;
63   esac])
65 #################################################
66 # set lock directory location
67 AC_ARG_WITH(lockdir,
68 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
69 [ case "$withval" in
70   yes|no)
71   #
72   # Just in case anybody calls it without argument
73   #
74     AC_MSG_WARN([--with-lockdir called without argument - will use default])
75   ;;
76   * )
77     lockdir="$withval"
78     ;;
79   esac])
81 #################################################
82 # set pid directory location
83 AC_ARG_WITH(piddir,
84 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
85 [ case "$withval" in
86   yes|no)
87   #
88   # Just in case anybody calls it without argument
89   #
90     AC_MSG_WARN([--with-piddir called without argument - will use default])
91   ;;
92   * )
93     piddir="$withval"
94     ;;
95   esac])
97 #################################################
98 # set SWAT directory location
99 AC_ARG_WITH(swatdir,
100 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
101 [ case "$withval" in
102   yes|no)
103   #
104   # Just in case anybody does it
105   #
106     AC_MSG_WARN([--with-swatdir called without argument - will use default])
107   ;;
108   * )
109     swatdir="$withval"
110     ;;
111   esac])
113 #################################################
114 # set configuration directory location
115 AC_ARG_WITH(configdir,
116 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
117 [ case "$withval" in
118   yes|no)
119   #
120   # Just in case anybody does it
121   #
122     AC_MSG_WARN([--with-configdir called without argument - will use default])
123   ;;
124   * )
125     configdir="$withval"
126     ;;
127   esac])
129 #################################################
130 # set log directory location
131 AC_ARG_WITH(logfilebase,
132 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
133 [ case "$withval" in
134   yes|no)
135   #
136   # Just in case anybody does it
137   #
138     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
139   ;;
140   * )
141     logfilebase="$withval"
142     ;;
143   esac])
145 #################################################
146 # set lib directory location
147 AC_ARG_WITH(libdir,
148 [  --with-libdir=DIR       Where to put libdir ($libdir)],
149 [ case "$withval" in
150   yes|no)
151   #
152   # Just in case anybody does it
153   #
154     AC_MSG_WARN([--with-libdir without argument - will use default])
155   ;;
156   * )
157     libdir="$withval"
158     ;;
159   esac])
161 #################################################
162 # set lib directory location
163 AC_ARG_WITH(mandir,
164 [  --with-mandir=DIR       Where to put man pages ($mandir)],
165 [ case "$withval" in
166   yes|no)
167   #
168   # Just in case anybody does it
169   #
170     AC_MSG_WARN([--with-mandir without argument - will use default])
171   ;;
172   * )
173     mandir="$withval"
174     ;;
175   esac])
177 AC_ARG_WITH(cfenc,
178 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
179                           for optimization (Mac OS X/Darwin only)],
181 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
182 # Should have been in framework $withval/CoreFoundation.framework/Headers.
183 for d in \
184     $withval/CoreFoundation/StringEncodings.subproj \
185     $withval/StringEncodings.subproj \
186     $withval/CoreFoundation.framework/Headers \
187     $withval/Headers \
188     $withval
190     if test -r $d/CFStringEncodingConverter.h; then
191         ln -sfh $d include/CoreFoundation
192     fi
193 done
196 AC_SUBST(configdir)
197 AC_SUBST(lockdir)
198 AC_SUBST(piddir)
199 AC_SUBST(logfilebase)
200 AC_SUBST(privatedir)
201 AC_SUBST(swatdir)
202 AC_SUBST(bindir)
203 AC_SUBST(sbindir)
205 dnl Unique-to-Samba variables we'll be playing with.
206 AC_SUBST(SHELL)
207 AC_SUBST(LDSHFLAGS)
208 AC_SUBST(SONAMEFLAG)
209 AC_SUBST(SHLD)
210 AC_SUBST(HOST_OS)
211 AC_SUBST(PICFLAGS)
212 AC_SUBST(PICSUFFIX)
213 AC_SUBST(SHLIBEXT)
214 AC_SUBST(INSTALLCLIENT)
215 AC_SUBST(INSTALLCLIENTCMD_SH)
216 AC_SUBST(INSTALLCLIENTCMD_A)
217 AC_SUBST(LIBSMBCLIENT_SHARED)
218 AC_SUBST(LIBSMBCLIENT)
219 AC_SUBST(PRINT_LIBS)
220 AC_SUBST(AUTH_LIBS)
221 AC_SUBST(ACL_LIBS)
222 AC_SUBST(PASSDB_LIBS)
223 AC_SUBST(IDMAP_LIBS)
224 AC_SUBST(KRB5_LIBS)
225 AC_SUBST(LDAP_LIBS)
226 AC_SUBST(SHLIB_PROGS)
227 AC_SUBST(SMBWRAPPER)
228 AC_SUBST(EXTRA_BIN_PROGS)
229 AC_SUBST(EXTRA_SBIN_PROGS)
230 AC_SUBST(EXTRA_ALL_TARGETS)
232 AC_ARG_ENABLE(debug, 
233 [  --enable-debug          Turn on compiler debugging information (default=no)],
234     [if eval "test x$enable_debug = xyes"; then
235         CFLAGS="${CFLAGS} -g"
236     fi])
238 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
239     [if eval "test x$enable_developer = xyes"; then
240         developer=yes
241         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER -O1"
242     fi])
244 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
245     [if eval "test x$enable_krb5developer = xyes"; then
246         developer=yes
247         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
248     fi])
250 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
252 if test "x$enable_dmalloc" = xyes
253 then
254         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
255         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
256                   [Define to check invariants around some common functions])
257         LIBS="$LIBS -ldmalloc"  
260 dnl Checks for programs.
263 ## for some reason this macro resets the CFLAGS
264 ## so save and restore
266 OLD_CFLAGS=${CFLAGS}
267 AC_PROG_CC
268 CFLAGS=${OLD_CFLAGS}
270 OLD_CFLAGS=${CFLAGS}
271 AC_PROG_CPP
272 CFLAGS=${OLD_CFLAGS}
274 AC_PROG_INSTALL
275 AC_PROG_AWK
276 AC_PATH_PROG(PERL, perl)
278 AC_CHECK_TOOL(AR, ar)
280 # compile with optimization and without debugging by default, but
281 # allow people to set their own preference.
282 if test "x$CFLAGS" = x
283 then
284   CFLAGS="-O ${CFLAGS}"
287 dnl Check if we use GNU ld
288 LD=ld
289 AC_PROG_LD_GNU
291 dnl Certain versions of GNU ld the default is not to have the 
292 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
293 dnl warnings when building modules.
294 if test "$ac_cv_prog_gnu_ld" = "yes"; then
295         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
296         AC_MSG_CHECKING(GNU ld release date)
297         changequote(,)dnl
298         ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
299         changequote([,])dnl
300         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
301         if test -n "$ac_cv_gnu_ld_date"; then
302            if test "$ac_cv_gnu_ld_date" -lt 20030217; then
303               ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
304            fi
305         else
306            AC_MSG_CHECKING(GNU ld release version)
307            changequote(,)dnl
308            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
309            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
310            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
311            changequote([,])dnl
312            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
313            AC_MSG_CHECKING(GNU ld release version major)
314            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
315            AC_MSG_CHECKING(GNU ld release version minor)
316            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
317            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
318              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
319            fi
320         fi
323 dnl needed before AC_TRY_COMPILE
324 AC_ISC_POSIX
326 dnl look for executable suffix
327 AC_EXEEXT
329 dnl Check if C compiler understands -c and -o at the same time
330 AC_PROG_CC_C_O
331 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
332       BROKEN_CC=
333 else
334       BROKEN_CC=#
336 AC_SUBST(BROKEN_CC)
338 dnl Check if the C compiler understands -Werror
339 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
340  AC_TRY_RUN_STRICT([
341   int main(void)
342   {
343         return 0;
344   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
345   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
346 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
347    Werror_FLAGS="-Werror"
348 else 
349 dnl Check if the C compiler understands -w2
350 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
351  AC_TRY_RUN_STRICT([
352   int main(void)
353   {
354         return 0;
355   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
356   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
357 if test x"$samba_cv_HAVE_w2" = x"yes"; then
358    Werror_FLAGS="-w2"
362 dnl Check if the C compiler understands volatile (it should, being ANSI).
363 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
364     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
365         samba_cv_volatile=yes,samba_cv_volatile=no)])
366 if test x"$samba_cv_volatile" = x"yes"; then
367    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
370 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
371 AC_MSG_CHECKING(uname -s)
372 AC_MSG_RESULT(${UNAME_S})
374 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
375 AC_MSG_CHECKING(uname -r)
376 AC_MSG_RESULT(${UNAME_R})
378 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
379 AC_MSG_CHECKING(uname -m)
380 AC_MSG_RESULT(${UNAME_M})
382 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
383 AC_MSG_CHECKING(uname -p)
384 AC_MSG_RESULT(${UNAME_P})
386 AC_CANONICAL_SYSTEM
388 dnl Add #include for broken IRIX header files
389   case "$host_os" in
390         *irix6*) AC_ADD_INCLUDE(<standards.h>)
391         ;;
392 esac
394 AC_VALIDATE_CACHE_SYSTEM_TYPE
396 DYNEXP=
398 dnl Add modules that have to be built by default here
399 dnl These have to be built static:
400 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"
402 dnl These are preferably build shared, and static if dlopen() is not available
403 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"
405 if test "x$developer" = xyes; then
406    default_static_modules="$default_static_modules rpc_echo"
407    default_shared_modules="$default_shared_modules charset_weird"
411 # Config CPPFLAG settings for strange OS's that must be set
412 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
413 # case statement; its first reference must be unconditional.
415 case "$host_os" in
416 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
417     *hpux*)
418     
419       AC_PROG_CC_FLAG(Ae)
420       # mmap on HPUX is completely broken...
421       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
422       if test $ac_cv_prog_cc_Ae = yes; then
423         CPPFLAGS="$CPPFLAGS -Ae"
424       fi
426 # Defines needed for HPUX support.
427 # HPUX has bigcrypt but (sometimes?) doesn't use it for
428 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
430       case `uname -r` in
431                         *9*|*10*)
432                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
433                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
434                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
435                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
436                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
437                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
438                                 ;;
439                         *11*)
440                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
441                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
442                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
443                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
444                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
445                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
446                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
447                                 ;;
448       esac
449       ;;
452 # CRAY Unicos has broken const handling
453        *unicos*)
454           AC_MSG_RESULT([disabling const])
455           CPPFLAGS="$CPPFLAGS -Dconst="
456           ;;
457         
459 # AIX4.x doesn't even admit to having large
460 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
462     *aix4*)
463           AC_MSG_RESULT([enabling large file support])
464       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
465           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
466       ;;    
468 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
469 # to the existance of large files..
470 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
471 # recommendations on large file support, however it makes the
472 # compile work using gcc 2.7 and 2.8, whereas using the Sun
473 # recommendation makes the compile fail on gcc2.7. JRA.
475 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
477         *solaris*)
478                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
479                 case `uname -r` in
480                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
481                                 AC_MSG_RESULT([no large file support])
482                                 ;;
483                         5.*)
484                         AC_MSG_RESULT([enabling large file support])
485                         if test "$ac_cv_prog_gcc" = yes; then
486                                 ${CC-cc} -v >conftest.c 2>&1
487                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
488                                 rm -fr conftest.c
489                                 case "$ac_cv_gcc_compiler_version_number" in
490                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
491                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
492                                                 LDFLAGS="$LDFLAGS -lthread"
493                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
494                                                 ;;
495                                         *)
496                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
497                                                 LDFLAGS="$LDFLAGS -lthread"
498                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
499                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
500                                                 ;;
501                                 esac
502                         else
503                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
504                                 LDFLAGS="$LDFLAGS -lthread"
505                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
506                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
507                         fi
508                         ;;
509                 esac
510                 ;;
512 # IRIX uses SYSV printing.  Make sure to set that here
514         *irix*)
515                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
516                 ;;
517         *freebsd*|*DragonFly*)
518                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
519                 ;;
521 # VOS may need to have POSIX support and System V compatibility enabled.
523     *vos*)
524     case "$CPPFLAGS" in
525           *-D_POSIX_C_SOURCE*)
526                 ;;
527           *)
528                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
529                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
530                 ;;
531     esac
532     case "$CPPFLAGS" in
533           *-D_SYSV*|*-D_SVID_SOURCE*)
534                 ;;
535           *)
536                 CPPFLAGS="$CPPFLAGS -D_SYSV"
537                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
538     esac
539     ;;
541 # Tests needed for SINIX large file support.
543     *sysv4*)
544       if test $host = mips-sni-sysv4 ; then
545         AC_MSG_CHECKING([for LFS support])
546         old_CPPFLAGS="$CPPFLAGS"
547         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
548         AC_TRY_RUN([
549 #include <unistd.h>
550 main () {
551 #if _LFS64_LARGEFILE == 1
552 exit(0);
553 #else
554 exit(1);
555 #endif
556 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
557         CPPFLAGS="$old_CPPFLAGS"
558         if test x$SINIX_LFS_SUPPORT = xyes ; then
559           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
560                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
561           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
562           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
563           LIBS="`getconf LFS64_LIBS` $LIBS"
564         fi
565       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
566       fi
567     ;;
569 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
571     *linux*)
572         AC_MSG_CHECKING([for LFS support])
573         old_CPPFLAGS="$CPPFLAGS"
574         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
575        AC_TRY_RUN([
576 #include <unistd.h>
577 #include <sys/utsname.h>
578 #include <string.h>
579 #include <stdlib.h>
580 main() {
581 #if _LFS64_LARGEFILE == 1
582        struct utsname uts;
583        char *release;
584        int major, minor;
586        /* Ensure this is glibc 2.2 or higher */
587 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
588        int libc_major = __GLIBC__;
589        int libc_minor = __GLIBC_MINOR__;
591        if (libc_major < 2)
592               exit(1);
593        if (libc_minor < 2)
594               exit(1);
595 #endif
597        /* Ensure this is kernel 2.4 or higher */
599        uname(&uts);
600        release = strdup(uts.release);
601        major = atoi(strsep(&release, "."));
602        minor = atoi(strsep(&release, "."));
604        if (major > 2 || (major == 2 && minor > 3))
605                exit(0);
606        exit(1);
607 #else
608        exit(1);
609 #endif
611 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
612         CPPFLAGS="$old_CPPFLAGS"
613         if test x$LINUX_LFS_SUPPORT = xyes ; then
614                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
615                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
616                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
617                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
618         fi
619         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
620         ;;
623 # MacOS X is the *only* system that uses compose character in utf8. This
624 # is so horribly broken....
626     *darwin*)
627         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
628 # Add Fink directories for various packages, like dlcompat.
629 # Note: iconv does that explicitly below, but other packages
630 # don't.
631         CPPFLAGS="$CPPFLAGS -I/sw/include"
632         LDFLAGS="$LDFLAGS -L/sw/lib"
634 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
635 # use that instead of plain dlsym.
637         AC_CHECK_LIB(dl,dlopen)
638         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
640 # Add a system specific charset module.
642         default_shared_modules="$default_shared_modules charset_macosxfs"
643         ;;
644     *hurd*)
645         AC_MSG_CHECKING([for LFS support])
646         old_CPPFLAGS="$CPPFLAGS"
647         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
648         AC_TRY_RUN([
649 #include <unistd.h>
650 main () {
651 #if _LFS64_LARGEFILE == 1
652 exit(0);
653 #else
654 exit(1);
655 #endif
656 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
657         CPPFLAGS="$old_CPPFLAGS"
658         if test x$GLIBC_LFS_SUPPORT = xyes ; then
659           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
660                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
661           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
662         fi
663       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
664     ;;
666 esac
668 AC_INLINE
669 AC_HEADER_STDC
670 AC_HEADER_DIRENT
671 AC_HEADER_TIME
672 AC_HEADER_SYS_WAIT
673 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
674 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h)
675 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
676 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
677 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
678 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
679 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
680 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
681 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
682 AC_CHECK_HEADERS(langinfo.h locale.h)
684 # Look for Darwin headers
685 old_CPPFLAGS="$CPPFLAGS"
686 CPPFLAGS="-Iinclude $CPPFLAGS"
687 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
688 CPPFLAGS="$old_CPPFLAGS"
690 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
691 # subdirectory of headers.
692 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
695 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
696 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
698 case "$host_os" in
699     *hpux*)
700                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
701                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
702                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
703                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
704                 fi
705         ;;
706 esac
707 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
708 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
709 AC_CHECK_HEADERS(stropts.h poll.h)
710 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
711 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/cdefs.h glob.h)
712 # These faile to compile on Solaris so just check for their presence
713 AC_CHECK_HEADERS(security/pam_modules.h net/if.h netinet/ip.h, [], [], -)
715 # For experimental utmp support (lastlog on some BSD-like systems)
716 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
718 AC_CHECK_SIZEOF(int,cross)
719 AC_CHECK_SIZEOF(long,cross)
720 AC_CHECK_SIZEOF(short,cross)
722 AC_C_CONST
723 AC_C_INLINE
724 AC_C_BIGENDIAN
725 AC_C_CHAR_UNSIGNED
727 AC_TYPE_SIGNAL
728 AC_TYPE_UID_T
729 AC_TYPE_MODE_T
730 AC_TYPE_OFF_T
731 AC_TYPE_SIZE_T
732 AC_TYPE_PID_T
733 AC_STRUCT_ST_RDEV
734 AC_DIRENT_D_OFF
735 AC_CHECK_TYPE(ino_t,unsigned)
736 AC_CHECK_TYPE(loff_t,off_t)
737 AC_CHECK_TYPE(offset_t,loff_t)
738 AC_CHECK_TYPE(ssize_t, int)
739 AC_CHECK_TYPE(wchar_t, unsigned short)
741 ############################################
742 # for cups support we need libcups, and a handful of header files
744 AC_ARG_ENABLE(cups,
745 [  --enable-cups           Turn on CUPS support (default=auto)])
747 if test x$enable_cups != xno; then
748         AC_PATH_PROG(CUPS_CONFIG, cups-config)
750         if test "x$CUPS_CONFIG" != x; then
751                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
752                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
753                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
754                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
755         elif test x"$enable_cups" = x"yes"; then
756                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
757         fi
760 ############################################
761 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
762 AC_SEARCH_LIBS(dlopen, [dl])
763 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
765 ############################################
766 # check if the compiler can do immediate structures
767 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
768     AC_TRY_COMPILE([
769 #include <stdio.h>],
771    typedef struct {unsigned x;} FOOBAR;
772    #define X_FOOBAR(x) ((FOOBAR) { x })
773    #define FOO_ONE X_FOOBAR(1)
774    FOOBAR f = FOO_ONE;   
775    static struct {
776         FOOBAR y; 
777         } f2[] = {
778                 {FOO_ONE}
779         };   
781         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
782 if test x"$samba_cv_immediate_structures" = x"yes"; then
783    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
786 ############################################
787 # check if the compiler can do immediate structures
788 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
789     AC_TRY_LINK([
790 #include <stdio.h>],
792                 if (0) {
793                    this_function_does_not_exist();
794                 } else {
795                   return 1;
796                 }
799         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
800 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
801    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
804 ############################################
805 # check for unix domain sockets
806 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
807     AC_TRY_COMPILE([
808 #include <sys/types.h>
809 #include <stdlib.h>
810 #include <stddef.h>
811 #include <sys/socket.h>
812 #include <sys/un.h>],
814   struct sockaddr_un sunaddr; 
815   sunaddr.sun_family = AF_UNIX;
817         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
818 if test x"$samba_cv_unixsocket" = x"yes"; then
819    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
823 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
824     AC_TRY_COMPILE([
825 #include <sys/types.h>
826 #if STDC_HEADERS
827 #include <stdlib.h>
828 #include <stddef.h>
829 #endif
830 #include <sys/socket.h>],[socklen_t i = 0],
831         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
832 if test x"$samba_cv_socklen_t" = x"yes"; then
833    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
836 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
837     AC_TRY_COMPILE([
838 #include <sys/types.h>
839 #if STDC_HEADERS
840 #include <stdlib.h>
841 #include <stddef.h>
842 #endif
843 #include <signal.h>],[sig_atomic_t i = 0],
844         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
845 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
846    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
849 # stupid headers have the functions but no declaration. grrrr.
850 AC_HAVE_DECL(errno, [#include <errno.h>])
851 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
852 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
853 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
854 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
855 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
856 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
858 # and glibc has setresuid under linux but the function does
859 # nothing until kernel 2.1.44! very dumb.
860 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
861     AC_TRY_RUN([#include <errno.h>
862 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
863         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
864 if test x"$samba_cv_have_setresuid" = x"yes"; then
865     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
868 # Do the same check for setresguid...
870 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
871     AC_TRY_RUN([#include <unistd.h>
872 #include <errno.h>
873 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
874         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
875 if test x"$samba_cv_have_setresgid" = x"yes"; then
876     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
879 AC_FUNC_MEMCMP
881 ###############################################
882 # Readline included by default unless explicitly asked not to
883 test "${with_readline+set}" != "set" && with_readline=yes
885 # test for where we get readline() from
886 AC_MSG_CHECKING(whether to use readline)
887 AC_ARG_WITH(readline,
888 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
889 [  case "$with_readline" in
890   yes)
891     AC_MSG_RESULT(yes)
893     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
894     AC_CHECK_HEADERS(readline/history.h)
896     AC_CHECK_HEADERS(readline.h readline/readline.h,[
897       for termlib in ncurses curses termcap terminfo termlib tinfo; do
898        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
899       done
900       AC_CHECK_LIB(readline, rl_callback_handler_install,
901        [TERMLIBS="-lreadline $TERMLIBS"
902        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
903        break], [TERMLIBS=], $TERMLIBS)])
904     ;;
905   no)
906     AC_MSG_RESULT(no)
907     ;;
908   *)
909     AC_MSG_RESULT(yes)
911     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
912     # alternate readline path
913     _ldflags=${LDFLAGS}
914     _cppflags=${CPPFLAGS}
916     # Add additional search path
917     LDFLAGS="-L$with_readline/lib $LDFLAGS"
918     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
920     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
921     AC_CHECK_HEADERS(readline/history.h)
923     AC_CHECK_HEADERS(readline.h readline/readline.h,[
924       for termlib in ncurses curses termcap terminfo termlib; do
925        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
926       done
927       AC_CHECK_LIB(readline, rl_callback_handler_install,
928        [TERMLDFLAGS="-L$with_readline/lib"
929        TERMCPPFLAGS="-I$with_readline/include"
930        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
931        TERMLIBS="-lreadline $TERMLIBS"
932        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
933        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
935     LDFLAGS=$_ldflags
936     ;;
937   esac],
938   AC_MSG_RESULT(no)
940 AC_SUBST(TERMLIBS)
941 AC_SUBST(TERMLDFLAGS)
943 # The readline API changed slightly from readline3 to readline4, so
944 # code will generate warnings on one of them unless we have a few
945 # special cases.
946 AC_CHECK_LIB(readline, rl_completion_matches,
947              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
948                         [Do we have rl_completion_matches?])],
949              [],
950              [$TERMLIBS])
952 # The following test taken from the cvs sources
953 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
954 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
955 # libsocket.so which has a bad implementation of gethostbyname (it
956 # only looks in /etc/hosts), so we only look for -lsocket if we need
957 # it.
958 AC_CHECK_FUNCS(connect)
959 if test x"$ac_cv_func_connect" = x"no"; then
960     case "$LIBS" in
961     *-lnsl*) ;;
962     *) AC_CHECK_LIB(nsl_s, printf) ;;
963     esac
964     case "$LIBS" in
965     *-lnsl*) ;;
966     *) AC_CHECK_LIB(nsl, printf) ;;
967     esac
968     case "$LIBS" in
969     *-lsocket*) ;;
970     *) AC_CHECK_LIB(socket, connect) ;;
971     esac
972     case "$LIBS" in
973     *-linet*) ;;
974     *) AC_CHECK_LIB(inet, connect) ;;
975     esac
976     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
977     dnl has been cached.
978     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
979        test x"$ac_cv_lib_inet_connect" = x"yes"; then
980         # ac_cv_func_connect=yes
981         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
982         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
983     fi
986 ###############################################
987 # test for where we get yp_get_default_domain() from
988 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
989 AC_CHECK_FUNCS(yp_get_default_domain)
991 # Check if we have execl, if not we need to compile smbrun.
992 AC_CHECK_FUNCS(execl)
993 if test x"$ac_cv_func_execl" = x"no"; then
994     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
997 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
998 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
999 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1000 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1001 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1002 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
1003 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
1004 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1005 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1006 AC_CHECK_FUNCS(syslog vsyslog timegm)
1007 AC_CHECK_FUNCS(setlocale nl_langinfo)
1008 # setbuffer, shmget, shm_open are needed for smbtorture
1009 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1010 AC_CHECK_HEADERS(libexc.h)
1011 AC_CHECK_LIB(exc, trace_back_stack)
1013 # syscall() is needed for smbwrapper.
1014 AC_CHECK_FUNCS(syscall)
1016 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1017 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1018 AC_CHECK_FUNCS(__getcwd _getcwd)
1019 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1020 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1021 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1022 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1023 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1024 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1025 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1026 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1027 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1028 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1029 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1034 case "$host_os" in
1035     *linux*)
1036        # glibc <= 2.3.2 has a broken getgrouplist
1037        AC_TRY_RUN([
1038 #include <unistd.h>
1039 #include <sys/utsname.h>
1040 main() {
1041        /* glibc up to 2.3 has a broken getgrouplist */
1042 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1043        int libc_major = __GLIBC__;
1044        int libc_minor = __GLIBC_MINOR__;
1046        if (libc_major < 2)
1047               exit(1);
1048        if ((libc_major == 2) && (libc_minor <= 3))
1049               exit(1);
1050 #endif
1051        exit(0);
1053 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1054        if test x"$linux_getgrouplist_ok" = x"yes"; then
1055           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1056        fi
1057        ;;
1058     *)
1059        AC_CHECK_FUNCS(getgrouplist)
1060        ;;
1061 esac
1064 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1067 if test x$ac_cv_func_stat64 = xno ; then
1068   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1069   AC_TRY_LINK([
1070 #if defined(HAVE_UNISTD_H)
1071 #include <unistd.h>
1072 #endif
1073 #include <sys/stat.h>
1074 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1075   AC_MSG_RESULT([$ac_cv_func_stat64])
1076   if test x$ac_cv_func_stat64 = xyes ; then
1077     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1078   fi
1081 if test x$ac_cv_func_lstat64 = xno ; then
1082   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1083   AC_TRY_LINK([
1084 #if defined(HAVE_UNISTD_H)
1085 #include <unistd.h>
1086 #endif
1087 #include <sys/stat.h>
1088 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1089   AC_MSG_RESULT([$ac_cv_func_lstat64])
1090   if test x$ac_cv_func_lstat64 = xyes ; then
1091     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1092   fi
1095 if test x$ac_cv_func_fstat64 = xno ; then
1096   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1097   AC_TRY_LINK([
1098 #if defined(HAVE_UNISTD_H)
1099 #include <unistd.h>
1100 #endif
1101 #include <sys/stat.h>
1102 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1103   AC_MSG_RESULT([$ac_cv_func_fstat64])
1104   if test x$ac_cv_func_fstat64 = xyes ; then
1105     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1106   fi
1109 #####################################
1110 # we might need the resolv library on some systems
1111 AC_CHECK_LIB(resolv, dn_expand)
1114 # Check for the functions putprpwnam, set_auth_parameters,
1115 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1116 # Needed for OSF1 and HPUX.
1119 AC_LIBTESTFUNC(security, putprpwnam)
1120 AC_LIBTESTFUNC(sec, putprpwnam)
1122 AC_LIBTESTFUNC(security, set_auth_parameters)
1123 AC_LIBTESTFUNC(sec, set_auth_parameters)
1125 # UnixWare 7.x has its getspnam in -lgen
1126 AC_LIBTESTFUNC(gen, getspnam)
1128 AC_LIBTESTFUNC(security, getspnam)
1129 AC_LIBTESTFUNC(sec, getspnam)
1131 AC_LIBTESTFUNC(security, bigcrypt)
1132 AC_LIBTESTFUNC(sec, bigcrypt)
1134 AC_LIBTESTFUNC(security, getprpwnam)
1135 AC_LIBTESTFUNC(sec, getprpwnam)
1137 ############################################
1138 # Check if we have libattr
1139 AC_SEARCH_LIBS(getxattr, [attr])
1140 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1141 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1142 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1143 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1144 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1146 # Assume non-shared by default and override below
1147 BLDSHARED="false"
1149 # these are the defaults, good for lots of systems
1150 HOST_OS="$host_os"
1151 LDSHFLAGS="-shared"
1152 SONAMEFLAG="#"
1153 SHLD="\${CC} \${CFLAGS}"
1154 PICFLAGS=""
1155 PICSUFFIX="po"
1156 SHLIBEXT="so"
1158 if test "$enable_shared" = "yes"; then
1159   # this bit needs to be modified for each OS that is suported by
1160   # smbwrapper. You need to specify how to created a shared library and
1161   # how to compile C code to produce PIC object files
1163   AC_MSG_CHECKING([ability to build shared libraries])
1165   # and these are for particular systems
1166   case "$host_os" in
1167                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1168                         BLDSHARED="true"
1169                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1170                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1171                         else
1172                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1173                         fi
1174                         DYNEXP="-Wl,--export-dynamic"
1175                         PICFLAGS="-fPIC"
1176                         SONAMEFLAG="-Wl,-soname="
1177                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1178                         ;;
1179                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1180                         BLDSHARED="true"
1181                         LDSHFLAGS="-G"
1182                         SONAMEFLAG="-h "
1183                         if test "${GCC}" = "yes"; then
1184                                 PICFLAGS="-fPIC"
1185                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1186                                         DYNEXP="-Wl,-E"
1187                                 fi
1188                         else
1189                                 PICFLAGS="-KPIC"
1190                                 ## ${CFLAGS} added for building 64-bit shared 
1191                                 ## libs using Sun's Compiler
1192                                 LDSHFLAGS="-G \${CFLAGS}"
1193                                 PICSUFFIX="po.o"
1194                         fi
1195                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1196                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1197                         ;;
1198                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1199                         BLDSHARED="true"
1200                         LDSHFLAGS="-G"
1201                         SONAMEFLAG="-Wl,-h,"
1202                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1203                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1204                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1205                         ;;
1206                 *netbsd* | *freebsd* | *DragonFly* )  
1207                         BLDSHARED="true"
1208                         LDSHFLAGS="-shared"
1209                         DYNEXP="-Wl,--export-dynamic"
1210                         SONAMEFLAG="-Wl,-soname,"
1211                         PICFLAGS="-fPIC -DPIC"
1212                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1213                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1214                         ;;
1215                 *openbsd*)  BLDSHARED="true"
1216                         LDSHFLAGS="-shared"
1217                         DYNEXP="-Wl,-Bdynamic"
1218                         SONAMEFLAG="-Wl,-soname,"
1219                         PICFLAGS="-fPIC"
1220                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1221                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1222                         ;;
1223                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1224                         case "$host_os" in
1225                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1226                         ;;
1227                         esac
1228                         BLDSHARED="true"
1229                         LDSHFLAGS="-set_version sgi1.0 -shared"
1230                         SONAMEFLAG="-soname "
1231                         SHLD="\${LD}"
1232                         if test "${GCC}" = "yes"; then
1233                                 PICFLAGS="-fPIC"
1234                         else 
1235                                 PICFLAGS="-KPIC"
1236                         fi
1237                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1238                         ;;
1239                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1240                         BLDSHARED="true"
1241                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1242                         DYNEXP="-Wl,-brtl,-bexpall"
1243                         PICFLAGS="-O2"
1244                         if test "${GCC}" != "yes"; then
1245                                 ## for funky AIX compiler using strncpy()
1246                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1247                         fi
1249                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1250                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1251                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1252                         ;;
1253                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1254                         SHLIBEXT="sl"
1255                         # Use special PIC flags for the native HP-UX compiler.
1256                         if test $ac_cv_prog_cc_Ae = yes; then
1257                                 BLDSHARED="true"
1258                                 SHLD="cc"
1259                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1260                                 SONAMEFLAG="-Wl,+h "
1261                                 PICFLAGS="+z"
1262                         elif test "${GCC}" = "yes"; then
1263                                 PICFLAGS="-fPIC"
1264                         fi
1265                         DYNEXP="-Wl,-E"
1266                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1267                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1268                         ;;
1269                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1270                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1271                         ;;
1272                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1273                         BLDSHARED="true"
1274                         LDSHFLAGS="-shared"
1275                         SONAMEFLAG="-Wl,-soname,"
1276                         PICFLAGS="-fPIC"
1277                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1278                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1279                         ;;
1280                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1281                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1282                         ;;
1283                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1284                         BLDSHARED="true"
1285                         LDSHFLAGS="-shared"
1286                         SONAMEFLAG="-Wl,-soname,"
1287                         PICFLAGS="-KPIC"
1288                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1289                         ;;
1290                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1291                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1292                         ;;
1293                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1294                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1295                         ;;
1296                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1297                         case "$host" in
1298                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1299                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1300                                         fi
1301                                         LDSHFLAGS="-G"
1302                                         DYNEXP="-Bexport"
1303                                 ;;
1304                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1305                         esac
1306                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1307                         ;;
1309                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1310                         if [ test "$GCC" != yes ]; then
1311                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1312                         fi
1313                         LDSHFLAGS="-G"
1314                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1315                         ;;
1316                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1317                         BLDSHARED="false"
1318                         LDSHFLAGS=""
1319                         ;;
1321                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1322                         BLDSHARED="true"
1323                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1324                         SHLIBEXT="dylib"
1325                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1326                         ;;
1328                 *)
1329                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1330                         ;;
1331   esac
1332   AC_SUBST(DYNEXP)
1333   AC_MSG_RESULT($BLDSHARED)
1334   AC_MSG_CHECKING([linker flags for shared libraries])
1335   AC_MSG_RESULT([$LDSHFLAGS])
1336   AC_MSG_CHECKING([compiler flags for position-independent code])
1337   AC_MSG_RESULT([$PICFLAGS])
1340 #######################################################
1341 # test whether building a shared library actually works
1342 if test $BLDSHARED = true; then
1343 AC_CACHE_CHECK([whether building shared libraries actually works], 
1344                [ac_cv_shlib_works],[
1345    # try building a trivial shared library
1346    ac_cv_shlib_works=no
1347    # The $SHLD and $LDSHFLAGS variables may contain references to other
1348    # variables so they need to be eval'ed.
1349    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1350         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1351    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1352         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1353    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1355 if test $ac_cv_shlib_works = no; then
1356    BLDSHARED=false
1360 ################
1362 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1363 AC_TRY_RUN([#include <stdio.h>
1364 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1365 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1366 if test x"$samba_cv_have_longlong" = x"yes"; then
1367     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1371 # Check if the compiler supports the LL prefix on long long integers.
1372 # AIX needs this.
1374 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1375     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1376         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1377 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1378    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1381   
1382 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1383 AC_TRY_RUN([#include <stdio.h>
1384 #include <sys/stat.h>
1385 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1386 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1387 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1388     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1391 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1392 AC_TRY_RUN([
1393 #if defined(HAVE_UNISTD_H)
1394 #include <unistd.h>
1395 #endif
1396 #include <stdio.h>
1397 #include <sys/stat.h>
1398 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1399 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1400 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1401     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1404 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1405 AC_TRY_RUN([#include <stdio.h>
1406 #include <sys/stat.h>
1407 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1408 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1409 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1410     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1413 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1414 AC_TRY_RUN([
1415 #if defined(HAVE_UNISTD_H)
1416 #include <unistd.h>
1417 #endif
1418 #include <stdio.h>
1419 #include <sys/stat.h>
1420 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1421 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1422 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1423     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1426 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1427 AC_TRY_RUN([
1428 #if defined(HAVE_UNISTD_H)
1429 #include <unistd.h>
1430 #endif
1431 #include <stdio.h>
1432 #include <sys/stat.h>
1433 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1434 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1435 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1436     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1439 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1440 AC_TRY_COMPILE([
1441 #if defined(HAVE_UNISTD_H)
1442 #include <unistd.h>
1443 #endif
1444 #include <sys/types.h>
1445 #include <dirent.h>],
1446 [struct dirent64 de;],
1447 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1448 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1449     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1452 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1453 AC_TRY_RUN([
1454 #if defined(HAVE_UNISTD_H)
1455 #include <unistd.h>
1456 #endif
1457 #include <sys/types.h>
1458 main() { dev_t dev; int i = major(dev); return 0; }],
1459 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1460 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1461     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1464 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1465 AC_TRY_RUN([
1466 #if defined(HAVE_UNISTD_H)
1467 #include <unistd.h>
1468 #endif
1469 #include <sys/types.h>
1470 main() { dev_t dev; int i = minor(dev); return 0; }],
1471 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1472 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1473     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1476 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1477 AC_TRY_RUN([
1478 #if defined(HAVE_UNISTD_H)
1479 #include <unistd.h>
1480 #endif
1481 #include <sys/types.h>
1482 main() { dev_t dev = makedev(1,2); return 0; }],
1483 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1484 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1485     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1488 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1489 AC_TRY_RUN([#include <stdio.h>
1490 main() { char c; c=250; exit((c > 0)?0:1); }],
1491 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1492 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1493     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1496 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1497 AC_TRY_COMPILE([#include <sys/types.h>
1498 #include <sys/socket.h>
1499 #include <netinet/in.h>],
1500 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1501 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1502 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1503     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1506 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1507 AC_TRY_COMPILE([#include <sys/types.h>
1508 #include <dirent.h>
1509 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1510 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1511 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1512     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1515 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1516 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1517 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1518 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1519     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1522 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1523 AC_TRY_RUN([
1524 #include <sys/time.h>
1525 #include <unistd.h>
1526 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1527            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1528 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1529     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1532 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1533 AC_TRY_LINK([#include <stdarg.h>
1534 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1535 samba_cv_HAVE_VA_COPY=yes,
1536 samba_cv_HAVE_VA_COPY=no)])
1537 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1538     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1539 else
1540     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1541     AC_TRY_LINK([#include <stdarg.h>
1542     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1543     samba_cv_HAVE___VA_COPY=yes,
1544     samba_cv_HAVE___VA_COPY=no)])
1545     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1546         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1547     fi
1550 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1551 AC_TRY_RUN([
1552 #include <sys/types.h>
1553 #include <stdarg.h>
1554 void foo(const char *format, ...) { 
1555        va_list ap;
1556        int len;
1557        char buf[5];
1559        va_start(ap, format);
1560        len = vsnprintf(buf, 0, format, ap);
1561        va_end(ap);
1562        if (len != 5) exit(1);
1564        va_start(ap, format);
1565        len = vsnprintf(0, 0, format, ap);
1566        va_end(ap);
1567        if (len != 5) exit(1);
1569        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1571        exit(0);
1573 main() { foo("hello"); }
1575 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1576 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1577     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1580 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1581 AC_TRY_RUN([#include <sys/types.h>
1582 #include <dirent.h>
1583 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1584 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1585 di->d_name[0] == 0) exit(0); exit(1);} ],
1586 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1587 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1588     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1591 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1592 AC_TRY_COMPILE([#include <sys/types.h>
1593 #include <utime.h>],
1594 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1595 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1596 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1597     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1600 ##############
1601 # Check utmp details, but only if our OS offers utmp.h
1602 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1603 dnl  utmp and utmpx come in many flavours
1604 dnl  We need to check for many of them
1605 dnl  But we don't need to do each and every one, because our code uses
1606 dnl  mostly just the utmp (not utmpx) fields.
1608 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1610 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1611 AC_TRY_COMPILE([#include <sys/types.h>
1612 #include <utmp.h>],
1613 [struct utmp ut;  ut.ut_name[0] = 'a';],
1614 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1615 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1616     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1617 fi 
1619 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1620 AC_TRY_COMPILE([#include <sys/types.h>
1621 #include <utmp.h>],
1622 [struct utmp ut;  ut.ut_user[0] = 'a';],
1623 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1624 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1625     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1626 fi 
1628 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1629 AC_TRY_COMPILE([#include <sys/types.h>
1630 #include <utmp.h>],
1631 [struct utmp ut;  ut.ut_id[0] = 'a';],
1632 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1633 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1634     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1635 fi 
1637 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1638 AC_TRY_COMPILE([#include <sys/types.h>
1639 #include <utmp.h>],
1640 [struct utmp ut;  ut.ut_host[0] = 'a';],
1641 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1642 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1643     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1644 fi 
1646 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1647 AC_TRY_COMPILE([#include <sys/types.h>
1648 #include <utmp.h>],
1649 [struct utmp ut;  time_t t; ut.ut_time = t;],
1650 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1651 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1652     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1653 fi 
1655 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1656 AC_TRY_COMPILE([#include <sys/types.h>
1657 #include <utmp.h>],
1658 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1659 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1660 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1661     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1662 fi 
1664 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1665 AC_TRY_COMPILE([#include <sys/types.h>
1666 #include <utmp.h>],
1667 [struct utmp ut;  ut.ut_type = 0;],
1668 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1669 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1670     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1671 fi 
1673 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1674 AC_TRY_COMPILE([#include <sys/types.h>
1675 #include <utmp.h>],
1676 [struct utmp ut;  ut.ut_pid = 0;],
1677 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1678 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1679     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1680 fi 
1682 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1683 AC_TRY_COMPILE([#include <sys/types.h>
1684 #include <utmp.h>],
1685 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1686 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1687 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1688     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1689 fi 
1691 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1692 AC_TRY_COMPILE([#include <sys/types.h>
1693 #include <utmp.h>],
1694 [struct utmp ut;  ut.ut_addr = 0;],
1695 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1696 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1697     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1698 fi 
1700 if test x$ac_cv_func_pututline = xyes ; then
1701   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1702   AC_TRY_COMPILE([#include <sys/types.h>
1703 #include <utmp.h>],
1704   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1705   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1706   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1707       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1708   fi
1711 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1712 AC_TRY_COMPILE([#include <sys/types.h>
1713 #include <utmpx.h>],
1714 [struct utmpx ux;  ux.ut_syslen = 0;],
1715 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1716 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1717     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1718 fi 
1721 # end utmp details
1724 ICONV_LOCATION=standard
1725 LOOK_DIRS="/usr /usr/local /sw /opt"
1726 AC_ARG_WITH(libiconv,
1727 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1729   if test "$withval" = "no" ; then
1730     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
1731   else
1732      if test "$withval" != "yes" ; then
1733         ICONV_PATH_SPEC=yes
1734         LOOK_DIRS="$withval"
1735      fi
1736   fi
1739 for i in $LOOK_DIRS ; do
1740     save_LIBS=$LIBS
1741     save_LDFLAGS=$LDFLAGS
1742     save_CPPFLAGS=$CPPFLAGS
1743     ICONV_FOUND="no"
1744     unset libext
1745     CPPFLAGS="$CPPFLAGS -I$i/include"
1746 dnl This is here to handle -withval stuff for --with-libiconv
1747 dnl Perhaps we should always add a -L
1749 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
1750 dnl installation paths. This gets a little tricky since we might have iconv
1751 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
1752 dnl succeed when the header is found. To counter this, make sure the 
1753 dnl library directory is there and check the ABI directory first (which
1754 dnl should be harmless on other systems.
1755     for l in "lib32" "lib" ; do
1756         if test -d "$i/$l" ; then
1757                 LDFLAGS="$save_LDFLAGS -L$i/$l"
1758                 LIBS=
1759                 export LDFLAGS LIBS CPPFLAGS
1760 dnl Try to find iconv(3)
1761                 jm_ICONV($i/$l)
1762                 if test x"$ICONV_FOUND" = "xyes" ; then
1763                     libext="$l"
1764                     break;
1765                 fi
1766         fi
1767     done
1769     if test x"$ICONV_FOUND" = "xyes" ; then
1770         LDFLAGS=$save_LDFLAGS
1771         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1772         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1773         LIBS="$save_LIBS"
1774         ICONV_LOCATION=$i
1775         export LDFLAGS LIBS CPPFLAGS
1776 dnl Now, check for a working iconv ... we want to do it here because
1777 dnl there might be a working iconv further down the list of LOOK_DIRS
1779         ############
1780         # check for iconv in libc
1781         ic_save_LIBS="$LIBS"
1782         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1783            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
1784         fi
1785         if test x"$jm_cv_lib_iconv" != x; then
1786            LIBS="$LIBS -l$jm_cv_lib_iconv"
1787         fi
1788 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1789         default_dos_charset=no
1790         default_display_charset=no
1791         default_unix_charset=no
1793         # check for default dos charset name
1794         for j in CP850 IBM850 ; do
1795             rjs_CHARSET($j)
1796             if test x"$ICONV_CHARSET" = x"$j"; then
1797                 default_dos_charset="\"$j\""
1798                 break
1799             fi
1800         done
1801         # check for default display charset name
1802         for j in ASCII 646 ; do
1803             rjs_CHARSET($j)
1804             if test x"$ICONV_CHARSET" = x"$j"; then
1805                 default_display_charset="\"$j\""
1806                 break
1807             fi
1808         done
1809         # check for default unix charset name
1810         for j in UTF-8 UTF8 ; do
1811             rjs_CHARSET($j)
1812             if test x"$ICONV_CHARSET" = x"$j"; then
1813                 default_unix_charset="\"$j\""
1814                 break
1815             fi
1816         done
1817         
1818         if test "$default_dos_charset" != "no" -a \
1819                 "$default_dos_charset" != "cross" -a \
1820                 "$default_display_charset" != "no" -a \ 
1821                 "$default_display_charset" != "cross" -a \
1822                 "$default_unix_charset" != "no" -a \
1823                 "$default_unix_charset" != "cross"
1824         then
1825                 samba_cv_HAVE_NATIVE_ICONV=yes
1826         else if test "$default_dos_charset" = "cross" -o \
1827                      "$default_display_charset" = "cross" -o \
1828                      "$default_unix_charset" = "cross"
1829         then
1830                 samba_cv_HAVE_NATIVE_ICONV=cross
1831         else
1832                 samba_cv_HAVE_NATIVE_ICONV=no
1833         fi
1834         fi
1835 dnl ])
1837         LIBS="$ic_save_LIBS"
1838         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1839            CPPFLAGS=$save_CPPFLAGS
1840            LDFLAGS=$save_LDFLAGS
1841            LIBS=$save_LIBS
1842            if test x"$jm_cv_lib_iconv" != x; then
1843               LIBS="$LIBS -l$jm_cv_lib_iconv"
1844            fi
1845            dnl Add the flags we need to CPPFLAGS and LDFLAGS
1846            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1847            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1848            export CPPFLAGS
1849            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1850            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1851            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1852            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1853            break
1854         fi
1855 dnl We didn't find a working iconv, so keep going
1856     fi
1857 dnl We only need to clean these up here for the next pass through the loop
1858     CPPFLAGS=$save_CPPFLAGS
1859     LDFLAGS=$save_LDFLAGS
1860     LIBS=$save_LIBS
1861     export LDFLAGS LIBS CPPFLAGS
1862 done
1863 unset libext
1866 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1867     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1868     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1869    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
1870    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1871    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1875 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1876 AC_TRY_RUN([
1877 #include <sys/types.h>
1878 #include <fcntl.h>
1879 #ifndef F_GETLEASE
1880 #define F_GETLEASE      1025
1881 #endif
1882 main() {
1883        int fd = open("/dev/null", O_RDONLY);
1884        return fcntl(fd, F_GETLEASE, 0) == -1;
1887 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1888 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1889     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1892 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1893 AC_TRY_RUN([
1894 #include <sys/types.h>
1895 #include <fcntl.h>
1896 #include <signal.h>
1897 #ifndef F_NOTIFY
1898 #define F_NOTIFY 1026
1899 #endif
1900 main() {
1901         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1904 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1905 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1906     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1909 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1910 AC_TRY_RUN([
1911 #include <sys/types.h>
1912 #include <fcntl.h>
1913 #include <signal.h>
1914 #include <sys/file.h>
1915 #ifndef LOCK_MAND
1916 #define LOCK_MAND       32
1917 #define LOCK_READ       64
1918 #endif
1919 main() {
1920         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1923 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1924 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1925     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1931 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1932 AC_TRY_COMPILE([#include <sys/types.h>
1933 #include <fcntl.h>],
1934 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1935 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1936 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1937     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1940 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1941 AC_TRY_RUN([#include <sys/types.h>
1942 #include <sys/capability.h>
1943 main() {
1944  cap_t cap;
1945  if ((cap = cap_get_proc()) == NULL)
1946    exit(1);
1947  cap->cap_effective |= CAP_NETWORK_MGT;
1948  cap->cap_inheritable |= CAP_NETWORK_MGT;
1949  cap_set_proc(cap);
1950  exit(0);
1953 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1954 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1955     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1959 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1960 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1963 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1964 AC_TRY_COMPILE([#include <sys/types.h>
1965 #if defined(HAVE_RPC_RPC_H)
1966 #include <rpc/rpc.h>
1967 #endif],
1968 [int16 testvar;],
1969 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1970 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1971     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1974 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1975 AC_TRY_COMPILE([#include <sys/types.h>
1976 #if defined(HAVE_RPC_RPC_H)
1977 #include <rpc/rpc.h>
1978 #endif],
1979 [uint16 testvar;],
1980 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1981 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1982     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1985 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1986 AC_TRY_COMPILE([#include <sys/types.h>
1987 #if defined(HAVE_RPC_RPC_H)
1988 #include <rpc/rpc.h>
1989 #endif],
1990 [int32 testvar;],
1991 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1992 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1993     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1996 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1997 AC_TRY_COMPILE([#include <sys/types.h>
1998 #if defined(HAVE_RPC_RPC_H)
1999 #include <rpc/rpc.h>
2000 #endif],
2001 [uint32 testvar;],
2002 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2003 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2004     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2008 dnl Some systems (SCO) have a problem including
2009 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2010 dnl as a #define in <prot.h> and as part of an enum
2011 dnl in <rpc/rpc.h>.
2014 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2015 AC_TRY_COMPILE([#include <sys/types.h>
2016 #ifdef HAVE_SYS_SECURITY_H
2017 #include <sys/security.h>
2018 #include <prot.h>
2019 #endif  /* HAVE_SYS_SECURITY_H */
2020 #if defined(HAVE_RPC_RPC_H)
2021 #include <rpc/rpc.h>
2022 #endif],
2023 [int testvar;],
2024 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2025 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2026     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2029 AC_MSG_CHECKING([for test routines])
2030 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2031            AC_MSG_RESULT(yes),
2032            AC_MSG_ERROR([cant find test code. Aborting config]),
2033            AC_MSG_WARN([cannot run when cross-compiling]))
2035 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2036 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2037            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2038 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2039     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2042 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2043 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2044            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2045            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2046            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2047 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2048 then
2049     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2052 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2053 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2054            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2055 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2056     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2059 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2060 SAVE_CPPFLAGS="$CPPFLAGS"
2061 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
2062 AC_TRY_COMPILE([
2063 #define REPLACE_GETPASS 1
2064 #define NO_PROTO_H 1
2065 #define NO_CONFIG_H 1
2066 #define main dont_declare_main
2067 #include "${srcdir-.}/lib/getsmbpass.c"
2068 #undef main
2069 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2070 CPPFLAGS="$SAVE_CPPFLAGS"
2072 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2073         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2076 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2077 AC_TRY_RUN([
2078 #include <stdio.h>
2079 #include <sys/types.h>
2080 #include <netinet/in.h>
2081 #ifdef HAVE_ARPA_INET_H
2082 #include <arpa/inet.h>
2083 #endif
2084 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2085 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2086     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2087 exit(1);}],
2088            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2089 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2090     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2093 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2094 AC_TRY_RUN([#include <stdlib.h>
2095 #include <sys/types.h>
2096 #include <sys/stat.h>
2097 #include <unistd.h>
2098 main() { 
2099   struct stat st;
2100   char tpl[20]="/tmp/test.XXXXXX"; 
2101   int fd = mkstemp(tpl); 
2102   if (fd == -1) exit(1);
2103   unlink(tpl);
2104   if (fstat(fd, &st) != 0) exit(1);
2105   if ((st.st_mode & 0777) != 0600) exit(1);
2106   exit(0);
2108 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2109 samba_cv_HAVE_SECURE_MKSTEMP=no,
2110 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2111 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2112     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2115 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2116 AC_TRY_RUN([#include <unistd.h>
2117 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2118 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2119 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2120     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2123 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2124 AC_TRY_RUN([#include <unistd.h>
2125 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2126 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2127 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2128     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2131 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2132 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2133            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2134 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2135     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2136 else
2137     AC_MSG_WARN(running as non-root will disable some tests)
2140 ##################
2141 # look for a method of finding the list of network interfaces
2142 iface=no;
2143 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2144 AC_TRY_RUN([
2145 #define HAVE_IFACE_AIX 1
2146 #define AUTOCONF_TEST 1
2147 #include "confdefs.h"
2148 #include "${srcdir-.}/lib/interfaces.c"],
2149            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2150 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2151     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2154 if test $iface = no; then
2155 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2156 AC_TRY_RUN([
2157 #define HAVE_IFACE_IFCONF 1
2158 #define AUTOCONF_TEST 1
2159 #include "confdefs.h"
2160 #include "${srcdir-.}/lib/interfaces.c"],
2161            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2162 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2163     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2167 if test $iface = no; then
2168 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2169 AC_TRY_RUN([
2170 #define HAVE_IFACE_IFREQ 1
2171 #define AUTOCONF_TEST 1
2172 #include "confdefs.h"
2173 #include "${srcdir-.}/lib/interfaces.c"],
2174            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2175 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2176     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2181 ################################################
2182 # look for a method of setting the effective uid
2183 seteuid=no;
2184 if test $seteuid = no; then
2185 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2186 AC_TRY_RUN([
2187 #define AUTOCONF_TEST 1
2188 #define USE_SETRESUID 1
2189 #include "confdefs.h"
2190 #include "${srcdir-.}/lib/util_sec.c"],
2191            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2192 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2193     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2198 if test $seteuid = no; then
2199 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2200 AC_TRY_RUN([
2201 #define AUTOCONF_TEST 1
2202 #define USE_SETREUID 1
2203 #include "confdefs.h"
2204 #include "${srcdir-.}/lib/util_sec.c"],
2205            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2206 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2207     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2211 if test $seteuid = no; then
2212 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2213 AC_TRY_RUN([
2214 #define AUTOCONF_TEST 1
2215 #define USE_SETEUID 1
2216 #include "confdefs.h"
2217 #include "${srcdir-.}/lib/util_sec.c"],
2218            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2219 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2220     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2224 if test $seteuid = no; then
2225 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2226 AC_TRY_RUN([
2227 #define AUTOCONF_TEST 1
2228 #define USE_SETUIDX 1
2229 #include "confdefs.h"
2230 #include "${srcdir-.}/lib/util_sec.c"],
2231            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2232 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2233     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2238 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2239 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2240            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2241 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2242     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2245 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2246 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2247            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2248 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2249     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2252 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2253 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2254            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2255 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2256     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2259 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2260 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2261            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2262 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2263     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2265 else
2268 dnl Don't check for 64 bit fcntl locking if we know that the
2269 dnl glibc2.1 broken check has succeeded.
2270 dnl 
2272   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2273   AC_TRY_RUN([
2274 #if defined(HAVE_UNISTD_H)
2275 #include <unistd.h>
2276 #endif
2277 #include <stdio.h>
2278 #include <stdlib.h>
2280 #ifdef HAVE_FCNTL_H
2281 #include <fcntl.h>
2282 #endif
2284 #ifdef HAVE_SYS_FCNTL_H
2285 #include <sys/fcntl.h>
2286 #endif
2287 main() { struct flock64 fl64;
2288 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2289 exit(0);
2290 #else
2291 exit(1);
2292 #endif
2294        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2296   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2297       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2298   fi
2301 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2302 AC_TRY_COMPILE([#include <sys/types.h>
2303 #include <sys/stat.h>
2304 #include <unistd.h>],
2305 [struct stat st;  st.st_blocks = 0;],
2306 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2307 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2308     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2309 fi 
2311 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2312 AC_TRY_COMPILE([#include <sys/types.h>
2313 #include <sys/stat.h>
2314 #include <unistd.h>],
2315 [struct stat st;  st.st_blksize = 0;],
2316 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2317 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2318     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2321 case "$host_os" in
2322 *linux*)
2323 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2324 AC_TRY_COMPILE([
2325 #ifdef HAVE_SYS_VFS_H
2326 #include <sys/vfs.h>
2327 #endif
2328 #ifdef HAVE_SYS_CAPABILITY_H
2329 #include <sys/capability.h>
2330 #endif
2331 ],[int i;],
2332    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2333 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2334    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2337 esac
2339 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2340 AC_TRY_COMPILE([
2341 #include <sys/types.h>
2342 #include <sys/acl.h>
2343 #if defined(HAVE_RPCSVC_NIS_H)
2344 #include <rpcsvc/nis.h>
2345 #endif],
2346 [int i;],
2347 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2348 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2349         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2352 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2353 AC_TRY_RUN([
2354 #include <stdio.h>
2355 #include <limits.h>
2356 main() {
2357         char *newpath = realpath("/tmp", NULL);
2358         exit ((newpath != NULL) ? 0 : 1);
2361 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2362 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2363     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2366 #################################################
2367 # check for smbwrapper support
2368 AC_MSG_CHECKING(whether to use smbwrapper)
2369 AC_ARG_WITH(smbwrapper,
2370 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2371 [ case "$withval" in
2372   yes)
2373     AC_MSG_RESULT(yes)
2374     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2375         WRAPPROG="bin/smbsh\$(EXEEXT)"
2376         WRAP="bin/smbwrapper.$SHLIBEXT"
2378 # Conditions under which smbwrapper should not be built.
2380         if test x$PICFLAGS = x; then
2381            echo No support for PIC code - disabling smbwrapper and smbsh
2382            WRAPPROG=""
2383            WRAP=""
2384         elif test x$ac_cv_func_syscall = xno; then
2385            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2386            WRAPPROG=""
2387            WRAP=""
2388         fi
2389         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2390         SMBWRAPPER="$WRAPPROG $WRAP"
2391     ;;
2392   *)
2393     AC_MSG_RESULT(no)
2394     ;;
2395   esac ],
2396   AC_MSG_RESULT(no)
2399 #################################################
2400 # check for AFS clear-text auth support
2401 samba_cv_WITH_AFS=no
2402 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2403 AC_ARG_WITH(afs,
2404 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2405 [ case "$withval" in
2406   yes|auto)
2407     AC_MSG_RESULT($withval)
2408     samba_cv_WITH_AFS=$withval
2409     ;;
2410   *)
2411     AC_MSG_RESULT(no)
2412     ;;
2413   esac ],
2414   AC_MSG_RESULT(no)
2417 ####################################################
2418 # check for Linux-specific AFS fake-kaserver support
2419 samba_cv_WITH_FAKE_KASERVER=no
2420 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2421 AC_ARG_WITH(fake-kaserver,
2422 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2423 [ case "$withval" in
2424   yes|auto)
2425     AC_MSG_RESULT($withval)
2426     samba_cv_WITH_FAKE_KASERVER=$withval
2427     ;;
2428   *)
2429     AC_MSG_RESULT(no)
2430     ;;
2431   esac ],
2432   AC_MSG_RESULT(no)
2435 #################################################
2436 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2437 if test x"$samba_cv_WITH_AFS" != x"no" ||
2438    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2440     # see if this box has the afs-headers in /usr/include/afs
2441     AC_MSG_CHECKING(for /usr/include/afs)
2442     if test -d /usr/include/afs; then
2443           CFLAGS="$CFLAGS -I/usr/include/afs"
2444           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2445           AC_MSG_RESULT(yes)
2446     else
2447       AC_MSG_RESULT(no)
2448     fi
2449    
2450     # check for afs.h
2451     have_afs_headers=no
2452     AC_CHECK_HEADERS(afs.h afs/afs.h)
2453     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2454         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2455            test x"$samba_cv_WITH_AFS" = x"auto"; then
2456                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2457         else
2458                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2459         fi
2460     else
2461         have_afs_headers=yes
2462     fi
2465 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2466     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2469 #################################################
2470 # check whether to compile AFS/NT ACL mapping module
2471 samba_cv_WITH_VFS_AFSACL=no
2472 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2473 AC_ARG_WITH(vfs-afsacl,
2474 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2475 [ case "$withval" in
2476   yes|auto)
2477     AC_MSG_RESULT($withval)
2478     samba_cv_WITH_VFS_AFSACL=yes
2479     ;;
2480   *)
2481     AC_MSG_RESULT(no)
2482     ;;
2483   esac ],
2484   AC_MSG_RESULT(no)
2487 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2488    default_shared_modules="$default_shared_modules vfs_afsacl"
2490         
2491 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2492     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2495 #################################################
2496 # check for the DFS clear-text auth system
2497 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2498 AC_ARG_WITH(dfs,
2499 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2500 [ case "$withval" in
2501   yes)
2502     AC_MSG_RESULT(yes)
2503     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2504     ;;
2505   *)
2506     AC_MSG_RESULT(no)
2507     ;;
2508   esac ],
2509   AC_MSG_RESULT(no)
2512 ########################################################
2513 # Compile with LDAP support?
2515 with_ldap_support=auto
2516 AC_MSG_CHECKING([for LDAP support])
2518 AC_ARG_WITH(ldap,
2519 [  --with-ldap             LDAP support (default yes)],
2520 [ case "$withval" in
2521     yes|no)
2522         with_ldap_support=$withval
2523         ;;
2524   esac ])
2526 AC_MSG_RESULT($with_ldap_support)
2528 SMBLDAP=""
2529 AC_SUBST(SMBLDAP)
2530 if test x"$with_ldap_support" != x"no"; then
2532   ##################################################################
2533   # first test for ldap.h and lber.h
2534   # (ldap.h is required for this test)
2535   AC_CHECK_HEADERS(ldap.h lber.h)
2536   
2537   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2538         if test x"$with_ldap_support" = x"yes"; then
2539          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2540         else
2541          AC_MSG_WARN(ldap.h is needed for LDAP support)
2542         fi
2543         
2544         with_ldap_support=no
2545   fi
2548 if test x"$with_ldap_support" != x"no"; then
2549   ac_save_LIBS=$LIBS
2551   ##################################################################
2552   # we might need the lber lib on some systems. To avoid link errors
2553   # this test must be before the libldap test
2554   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2556   ########################################################
2557   # now see if we can find the ldap libs in standard paths
2558   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2560   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2561   
2562   ########################################################
2563   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2564   # Check found in pam_ldap 145.
2565   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2567   LIBS="$LIBS $LDAP_LIBS"
2568   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2569     AC_TRY_COMPILE([
2570         #include <lber.h>
2571         #include <ldap.h>], 
2572         [ldap_set_rebind_proc(0, 0, 0);], 
2573         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2574         [smb_ldap_cv_ldap_set_rebind_proc=2]
2575     ) 
2576   ])
2577   
2578   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2580   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2581   
2582   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2583     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2584     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2585     SMBLDAP="lib/smbldap.o"
2586     with_ldap_support=yes
2587     AC_MSG_CHECKING(whether LDAP support is used)
2588     AC_MSG_RESULT(yes)
2589   else
2590     if test x"$with_ldap_support" = x"yes"; then
2591         AC_MSG_ERROR(libldap is needed for LDAP support)
2592     else
2593         AC_MSG_WARN(libldap is needed for LDAP support)
2594     fi
2595     
2596     LDAP_LIBS=""
2597     with_ldap_support=no
2598   fi
2599   LIBS=$ac_save_LIBS
2603 #################################################
2604 # active directory support
2606 with_ads_support=auto
2607 AC_MSG_CHECKING([for Active Directory and krb5 support])
2609 AC_ARG_WITH(ads,
2610 [  --with-ads              Active Directory support (default auto)],
2611 [ case "$withval" in
2612     yes|no)
2613         with_ads_support="$withval"
2614         ;;
2615   esac ])
2617 AC_MSG_RESULT($with_ads_support)
2619 FOUND_KRB5=no
2620 KRB5_LIBS=""
2622 if test x"$with_ldap_support" != x"yes"; then
2623     if test x"$with_ads_support" = x"yes"; then
2624         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2625     elif test x"$with_ads_support" != x"no"; then
2626         AC_MSG_WARN(Active Directory Support requires LDAP support)
2627     fi
2628     with_ads_support=no
2631 if test x"$with_ads_support" != x"no"; then
2633   # Do no harm to the values of CFLAGS and LIBS while testing for
2634   # Kerberos support.
2636   if test x$FOUND_KRB5 = x"no"; then
2637     #################################################
2638     # check for location of Kerberos 5 install
2639     AC_MSG_CHECKING(for kerberos 5 install path)
2640     AC_ARG_WITH(krb5,
2641     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2642     [ case "$withval" in
2643       no)
2644         AC_MSG_RESULT(no krb5-path given)
2645         ;;
2646       yes)
2647         AC_MSG_RESULT(/usr)
2648         FOUND_KRB5=yes
2649         ;;
2650       *)
2651         AC_MSG_RESULT($withval)
2652         KRB5_CFLAGS="-I$withval/include"
2653         KRB5_CPPFLAGS="-I$withval/include"
2654         KRB5_LDFLAGS="-L$withval/lib"
2655         FOUND_KRB5=yes
2656         if test -x "$withval/bin/krb5-config"; then
2657                 KRB5_CONFIG=$withval/bin/krb5-config
2658         fi
2659         ;;
2660       esac ],
2661       AC_MSG_RESULT(no krb5-path given)
2662     )
2663   fi
2665   #################################################
2666   # check for krb5-config from recent MIT and Heimdal kerberos 5
2667   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2668   AC_MSG_CHECKING(for working krb5-config)
2669   if test -x "$KRB5_CONFIG"; then
2670     ac_save_CFLAGS=$CFLAGS
2671     CFLAGS="";export CFLAGS
2672     ac_save_LDFLAGS=$LDFLAGS
2673     LDFLAGS="";export LDFLAGS
2674     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2675     KRB5_LDFLAGS="`$KRB5_CONFIG --libs gssapi | sed s/-lgss.*//`"
2676     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2677     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2678     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2679     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2680     FOUND_KRB5=yes
2681     AC_MSG_RESULT(yes)
2682   else
2683     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2684   fi
2686   if test x$FOUND_KRB5 = x"no"; then
2687     #################################################
2688     # see if this box has the SuSE location for the heimdal krb implementation
2689     AC_MSG_CHECKING(for /usr/include/heimdal)
2690     if test -d /usr/include/heimdal; then
2691       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2692           KRB5_CFLAGS="-I/usr/include/heimdal"
2693           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2694           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2695           AC_MSG_RESULT(yes)
2696       else
2697           KRB5_CFLAGS="-I/usr/include/heimdal"
2698           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2699           AC_MSG_RESULT(yes)
2700       fi
2701     else
2702       AC_MSG_RESULT(no)
2703     fi
2704   fi
2706   if test x$FOUND_KRB5 = x"no"; then
2707     #################################################
2708     # see if this box has the RedHat location for kerberos
2709     AC_MSG_CHECKING(for /usr/kerberos)
2710     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2711       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2712       KRB5_CFLAGS="-I/usr/kerberos/include"
2713       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2714       AC_MSG_RESULT(yes)
2715     else
2716       AC_MSG_RESULT(no)
2717     fi
2718   fi
2720   ac_save_CFLAGS=$CFLAGS
2721   ac_save_CPPFLAGS=$CPPFLAGS
2722   ac_save_LDFLAGS=$LDFLAGS
2724   CFLAGS="$KRB5_CFLAGS $CFLAGS"
2725   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
2726   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
2728   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2730   # now check for krb5.h. Some systems have the libraries without the headers!
2731   # note that this check is done here to allow for different kerberos
2732   # include paths
2733   AC_CHECK_HEADERS(krb5.h)
2735   if test x"$ac_cv_header_krb5_h" = x"no"; then
2737     # Give a warning if AD support was not explicitly requested,
2738     # i.e with_ads_support = auto, otherwise die with an error.
2740     if test x"$with_ads_support" = x"yes"; then
2741       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2742     else
2743       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2744     fi
2746     # Turn off AD support and restore CFLAGS and LIBS variables
2748     with_ads_support="no"
2749     
2750     CFLAGS=$ac_save_CFLAGS
2751     CPPFLAGS=$ac_save_CPPFLAGS
2752     LDFLAGS=$ac_save_LDFLAGS
2753   fi
2756 # Now we have determined whether we really want ADS support
2758 if test x"$with_ads_support" != x"no"; then
2759   ac_save_LIBS=$LIBS
2761   # now check for gssapi headers.  This is also done here to allow for
2762   # different kerberos include paths
2763   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2765   ##################################################################
2766   # we might need the k5crypto and com_err libraries on some systems
2767   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2768   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2770   # Heimdal checks.
2771   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2772   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2773   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2775   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2776   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2777                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2779   ########################################################
2780   # now see if we can find the krb5 libs in standard paths
2781   # or as specified above
2782   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2783   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
2785   ########################################################
2786   # now see if we can find the gssapi libs in standard paths
2787   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2788             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2790   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2791   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2792   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2793   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2794   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2795   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2796   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2797   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2798   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2799   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2800   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2801   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2802   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2803   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2804   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
2805   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2806   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
2807   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
2808   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
2809   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
2810   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
2811   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
2813   LIBS="$KRB5_LIBS $LIBS"
2814   
2815   AC_CACHE_CHECK([for krb5_encrypt_block type],
2816                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
2817     AC_TRY_COMPILE([#include <krb5.h>],
2818       [krb5_encrypt_block block;],
2819       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
2820       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
2822   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
2823     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
2824                [Whether the type krb5_encrypt_block exists])
2825   fi
2827   AC_CACHE_CHECK([for addrtype in krb5_address],
2828                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2829     AC_TRY_COMPILE([#include <krb5.h>],
2830       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2831       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2832       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2834   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2835     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2836                [Whether the krb5_address struct has a addrtype property])
2837   fi
2839   AC_CACHE_CHECK([for addr_type in krb5_address],
2840                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2841     AC_TRY_COMPILE([#include <krb5.h>],
2842       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2843       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2844       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2846   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2847     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2848               [Whether the krb5_address struct has a addr_type property])
2849   fi
2851   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2852                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2853                  [AC_TRY_COMPILE([#include <krb5.h>],
2854     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2855     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2857   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2858     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2859               [Whether the krb5_ticket struct has a enc_part2 property])
2860   fi
2862   AC_CACHE_CHECK([for keyblock in krb5_creds],
2863                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
2864     AC_TRY_COMPILE([#include <krb5.h>],
2865       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
2866       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
2867       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
2869   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
2870     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
2871               [Whether the krb5_creds struct has a keyblock property])
2872   fi
2874   AC_CACHE_CHECK([for session in krb5_creds],
2875                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
2876     AC_TRY_COMPILE([#include <krb5.h>],
2877       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
2878       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
2879       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
2881   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
2882     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
2883               [Whether the krb5_creds struct has a session property])
2884   fi
2886   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2887                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2888     AC_TRY_COMPILE([#include <krb5.h>],
2889       [krb5_keyblock key; key.keyvalue.data = NULL;],
2890       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2891       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2893   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2894     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2895               [Whether the krb5_keyblock struct has a keyvalue property])
2896   fi
2898   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2899                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2900     AC_TRY_COMPILE([#include <krb5.h>],
2901       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2902       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2903       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2904   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2905                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2906     AC_TRY_COMPILE([#include <krb5.h>],
2907       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2908       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2909       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2910 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2911 # w.r.t. arcfour and windows, so we must not enable it here
2912   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2913           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2914     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2915               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2916   fi
2918   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2919                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2920     AC_TRY_COMPILE([#include <krb5.h>],
2921       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2922       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2923       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2925   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2926     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2927               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2928   fi
2930   AC_CACHE_CHECK([for KV5M_KEYTAB],
2931                  samba_cv_HAVE_KV5M_KEYTAB,[
2932     AC_TRY_COMPILE([#include <krb5.h>],
2933       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
2934       samba_cv_HAVE_KV5M_KEYTAB=yes,
2935       samba_cv_HAVE_KV5M_KEYTAB=no)])
2937   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
2938       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
2939              [Whether the KV5M_KEYTAB option is available])
2940   fi
2942   AC_CACHE_CHECK([for the krb5_princ_component macro],
2943                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2944     AC_TRY_LINK([#include <krb5.h>],
2945       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2946       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2947       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2949   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2950     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2951                [Whether krb5_princ_component is available])
2952   fi
2954   AC_CACHE_CHECK([for key in krb5_keytab_entry],
2955                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
2956     AC_TRY_COMPILE([#include <krb5.h>],
2957       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
2958       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
2959       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
2961   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
2962     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
2963               [Whether krb5_keytab_entry has key member])
2964   fi
2966   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
2967                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
2968     AC_TRY_COMPILE([#include <krb5.h>],
2969       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
2970       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
2971       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
2973   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
2974     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
2975               [Whether krb5_keytab_entry has keyblock member])
2976   fi
2978   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2979     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2980     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2981     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2982     AC_MSG_RESULT(yes)
2983   else
2984     if test x"$with_ads_support" = x"yes"; then
2985         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2986     else
2987         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2988     fi
2989     KRB5_LIBS=""
2990     with_ads_support=no 
2991   fi
2993   AC_CACHE_CHECK([for WRFILE: keytab support],
2994                 samba_cv_HAVE_WRFILE_KEYTAB,[
2995     AC_TRY_RUN([
2996 #include<krb5.h>
2997   main()
2998   {
2999     krb5_context context;
3000     krb5_keytab keytab;
3002     krb5_init_context(&context);
3003     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3004   }],
3005   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3006   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3008   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3009       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3010                [Whether the WRFILE:-keytab is supported])
3011   fi
3013   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3014                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3015     AC_TRY_COMPILE([#include <krb5.h>],
3016     [
3017     krb5_context context;
3018     krb5_principal principal;
3019     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3020     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3021     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3023   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3024     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3025               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3026   fi
3028 LIBS="$ac_save_LIBS"
3031 ########################################################
3032 # Compile experimental passdb backends?
3033 # (pdb_xml, pdb_mysql, pdb_pgsql)
3034 AC_MSG_CHECKING(whether to build experimental passdb libraries)
3035 AC_ARG_WITH(expsam,
3036 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
3037 [                          Valid choices include (comma separated list): ]
3038 [                              xml, mysql & pgsql],
3039 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
3040   if test "z$expsam_pdb_modules" = "zyes"; then
3041     expsam_pdb_modules="xml mysql pgsql"
3042   fi
3043   AC_MSG_RESULT($expsam_pdb_modules)
3044   for i in $expsam_pdb_modules
3045   do 
3046     case "$i" in
3047     xml|all|yes)
3048       ## pdb_xml
3049           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])])
3050       CFLAGS="$CFLAGS $XML_CFLAGS"
3051       ;;
3052     mysql|all|yes)
3053       ## pdb_mysql
3054           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
3055       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
3056       ;;
3057      pgsql|all|yes)
3058       ## pdb_pgsql
3059       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
3060       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
3061       ;;
3062     no)
3063       ;;
3064     *)
3065       echo "Unknown module name \"$i\"!  Exiting..."
3066       exit 1
3067       ;;
3068     esac
3069   done ],
3070   AC_MSG_RESULT(no)
3073 #################################################
3074 # check for automount support
3075 AC_MSG_CHECKING(whether to use automount)
3076 AC_ARG_WITH(automount,
3077 [  --with-automount        Include automount support (default=no)],
3078 [ case "$withval" in
3079   yes)
3080     AC_MSG_RESULT(yes)
3081     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3082     ;;
3083   *)
3084     AC_MSG_RESULT(no)
3085     ;;
3086   esac ],
3087   AC_MSG_RESULT(no)
3090 #################################################
3091 # check for smbmount support
3092 AC_MSG_CHECKING(whether to use smbmount)
3093 AC_ARG_WITH(smbmount,
3094 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3095 [ case "$withval" in
3096   yes)
3097         case "$host_os" in
3098         *linux*)
3099                 AC_MSG_RESULT(yes)
3100                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3101                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3102                 ;;
3103         *)
3104                 AC_MSG_ERROR(not on a linux system!)
3105                 ;;
3106         esac
3107     ;;
3108   *)
3109     AC_MSG_RESULT(no)
3110     ;;
3111   esac ],
3112   AC_MSG_RESULT(no)
3117 #################################################
3118 # check for a PAM clear-text auth, accounts, password and session support
3119 with_pam_for_crypt=no
3120 AC_MSG_CHECKING(whether to use PAM)
3121 AC_ARG_WITH(pam,
3122 [  --with-pam              Include PAM support (default=no)],
3123 [ case "$withval" in
3124   yes)
3125     AC_MSG_RESULT(yes)
3126     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3127        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3128           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3129              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3130           fi
3131        fi
3132     fi
3133     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3134     AUTH_LIBS="$AUTH_LIBS -lpam"
3135     with_pam_for_crypt=yes
3136     ;;
3137   *)
3138     AC_MSG_RESULT(no)
3139     ;;
3140   esac ],
3141   AC_MSG_RESULT(no)
3144 # we can't build a pam module if we don't have pam.
3145 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3147 #################################################
3148 # check for pam_smbpass support
3149 AC_MSG_CHECKING(whether to use pam_smbpass)
3150 AC_ARG_WITH(pam_smbpass,
3151 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3152 [ case "$withval" in
3153   yes)
3154     AC_MSG_RESULT(yes)
3156        # Conditions under which pam_smbpass should not be built.
3158        if test x$PICFLAGS = x; then
3159           AC_MSG_ERROR([No support for PIC code])
3160        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3161           AC_MSG_ERROR([No security/pam_appl.h found])
3162        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3163           AC_MSG_ERROR([No libpam found])
3164        else
3165           AUTH_LIBS="$AUTH_LIBS -lpam"
3166           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3167        fi
3168     ;;
3169   *)
3170     AC_MSG_RESULT(no)
3171     ;;
3172   esac ],
3173   AC_MSG_RESULT(no)
3177 ###############################################
3178 # test for where we get crypt() from
3179 AC_SEARCH_LIBS(crypt, [crypt],
3180   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3181   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3184 ## moved after the check for -lcrypt in order to
3185 ## ensure that the necessary libraries are included
3186 ## check checking for truncated salt.  Wrapped by the
3187 ## $with_pam_for_crypt variable as above   --jerry
3189 if test $with_pam_for_crypt = no; then
3190 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3191 crypt_LIBS="$LIBS"
3192 LIBS="$AUTH_LIBS $LIBS"
3193 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3194         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3195 LIBS="$crypt_LIBS"])
3196 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3197         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3202 ########################################################################################
3204 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3206 ########################################################################################
3208 #################################################
3209 # check for a LDAP password database configuration backwards compatibility
3210 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3211 AC_ARG_WITH(ldapsam,
3212 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3213 [ case "$withval" in
3214   yes)
3215     AC_MSG_RESULT(yes)
3216     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3217     ;;
3218   *)
3219     AC_MSG_RESULT(no)
3220     ;;
3221   esac ],
3222   AC_MSG_RESULT(no)
3225 ########################################################################################
3227 ## END OF TESTS FOR SAM BACKENDS.  
3229 ########################################################################################
3231 #################################################
3232 # check for a NISPLUS_HOME support 
3233 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3234 AC_ARG_WITH(nisplus-home,
3235 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3236 [ case "$withval" in
3237   yes)
3238     AC_MSG_RESULT(yes)
3239     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3240     ;;
3241   *)
3242     AC_MSG_RESULT(no)
3243     ;;
3244   esac ],
3245   AC_MSG_RESULT(no)
3248 #################################################
3249 # check for syslog logging
3250 AC_MSG_CHECKING(whether to use syslog logging)
3251 AC_ARG_WITH(syslog,
3252 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3253 [ case "$withval" in
3254   yes)
3255     AC_MSG_RESULT(yes)
3256     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3257     ;;
3258   *)
3259     AC_MSG_RESULT(no)
3260     ;;
3261   esac ],
3262   AC_MSG_RESULT(no)
3265 #################################################
3266 # check for a shared memory profiling support
3267 AC_MSG_CHECKING(whether to use profiling)
3268 AC_ARG_WITH(profiling-data,
3269 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3270 [ case "$withval" in
3271   yes)
3272     AC_MSG_RESULT(yes)
3273     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3274     ;;
3275   *)
3276     AC_MSG_RESULT(no)
3277     ;;
3278   esac ],
3279   AC_MSG_RESULT(no)
3283 #################################################
3284 # check for experimental disk-quotas support
3286 samba_cv_WITH_QUOTAS=auto
3287 samba_cv_TRY_QUOTAS=no
3288 samba_cv_RUN_QUOTA_TESTS=auto
3289 samba_cv_WITH_SYS_QUOTAS=auto
3290 samba_cv_TRY_SYS_QUOTAS=no
3291 samba_cv_SYSQUOTA_FOUND=no;
3293 AC_MSG_CHECKING(whether to try disk-quotas support)
3294 AC_ARG_WITH(quotas,
3295 [  --with-quotas           Include disk-quota support (default=no)],
3296 [ case "$withval" in
3297   yes)
3298     AC_MSG_RESULT(yes)
3299     samba_cv_WITH_QUOTAS=yes
3300     samba_cv_TRY_QUOTAS=yes
3301     samba_cv_RUN_QUOTA_TESTS=yes
3302     #set sys quotas to auto in this case
3303     samba_cv_TRY_SYS_QUOTAS=auto
3304     ;;
3305   auto)
3306     AC_MSG_RESULT(auto)
3307     samba_cv_WITH_QUOTAS=auto
3308     samba_cv_TRY_QUOTAS=auto
3309     samba_cv_RUN_QUOTA_TESTS=auto
3310     #set sys quotas to auto in this case
3311     samba_cv_TRY_SYS_QUOTAS=auto
3312     ;;
3313   no)
3314     AC_MSG_RESULT(no)
3315     samba_cv_WITH_QUOTAS=no
3316     samba_cv_TRY_QUOTAS=no
3317     samba_cv_RUN_QUOTA_TESTS=no
3318     ;;
3319   *)
3320     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3321     ;;
3322   esac ],
3323   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3326 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3327 AC_ARG_WITH(sys-quotas,
3328 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3329 [ case "$withval" in
3330   yes)
3331     AC_MSG_RESULT(yes)
3332     samba_cv_WITH_SYS_QUOTAS=yes
3333     samba_cv_TRY_SYS_QUOTAS=yes
3334     samba_cv_RUN_QUOTA_TESTS=yes
3335     ;;
3336   auto)
3337     AC_MSG_RESULT(auto)
3338     samba_cv_WITH_SYS_QUOTAS=auto
3339     samba_cv_TRY_SYS_QUOTAS=auto
3340     samba_cv_RUN_QUOTA_TESTS=auto
3341     ;;
3342   no)
3343     AC_MSG_RESULT(no)
3344     samba_cv_WITH_SYS_QUOTAS=no
3345     samba_cv_TRY_SYS_QUOTAS=no
3346     ;;
3347   *)
3348     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3349     ;;
3350   esac ],
3351   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3354 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
3355 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3356   case "$host_os" in
3357         *linux*)
3358             AC_MSG_RESULT(yes)
3359             samba_cv_TRY_SYS_QUOTAS=yes
3360             samba_cv_RUN_QUOTA_TESTS=yes
3361             samba_cv_SYSQUOTA_FOUND=yes
3362             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3363             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3364             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3365             samba_cv_found_xfs_header=yes
3366             ;;
3367         *)
3368             AC_MSG_RESULT(no)
3369             samba_cv_TRY_SYS_QUOTAS=no
3370             ;;
3371   esac
3374 #############################################
3375 # only check for quota stuff if --with-quotas
3376 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3378 # some broken header files need this
3379 AC_CHECK_HEADER(asm/types.h,[
3380             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3381             AC_ADD_INCLUDE(<asm/types.h>)
3382             ])
3384 # For quotas on Veritas VxFS filesystems
3385 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3387 # For sys/quota.h and linux/quota.h
3388 AC_CHECK_HEADERS(sys/quota.h)
3390 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3391 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3392 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3393 AC_TRY_COMPILE([
3394 #include "confdefs.h"
3395 #ifdef HAVE_SYS_TYPES_H
3396 #include <sys/types.h>
3397 #endif
3398 #ifdef HAVE_ASM_TYPES_H
3399 #include <asm/types.h>
3400 #endif
3401 #include <sys/quota.h>
3402 ],[int i = Q_XGETQUOTA;],
3403 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3404 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3405         samba_cv_found_xfs_header=yes
3409 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3410 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3411 AC_TRY_COMPILE([
3412 #include "confdefs.h"
3413 #ifdef HAVE_SYS_QUOTA_H
3414 #include <sys/quota.h>
3415 #endif
3417 struct dqblk D;
3418 D.dqb_fsoftlimit = 0;],
3419 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3420 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3421         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3424 ##################
3425 # look for a working quota system
3427 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3428 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3429 AC_TRY_RUN_STRICT([
3430 #define HAVE_QUOTACTL_4A 1
3431 #define AUTOCONF_TEST 1
3432 #include "confdefs.h"
3433 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3434            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3435 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3436     samba_cv_SYSQUOTA_FOUND=yes;
3437     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3438     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3442 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3443 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3444 AC_TRY_RUN_STRICT([
3445 #define HAVE_QUOTACTL_4B 1
3446 #define AUTOCONF_TEST 1
3447 #include "confdefs.h"
3448 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3449            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3450 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3451     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3452     samba_cv_SYSQUOTA_FOUND=yes;
3453     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3454     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3458 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3459 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3460 AC_TRY_RUN_STRICT([
3461 #define HAVE_QUOTACTL_3 1
3462 #define AUTOCONF_TEST 1
3463 #include "confdefs.h"
3464 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3465            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3466 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3467     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3468     samba_cv_SYSQUOTA_FOUND=yes;
3469     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3470     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3474 #################################################
3475 # check for mntent.h and struct mntent
3476 AC_CHECK_HEADERS(mntent.h)
3477 #################################################
3478 # check for setmntent,getmntent,endmntent
3479 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3481 #################################################
3482 # check for devnm.h and struct mntent
3483 AC_CHECK_HEADERS(devnm.h)
3484 #################################################
3485 # check for devnm
3486 AC_CHECK_FUNCS(devnm)
3488 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3489     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3490         # if --with-sys-quotas=yes then build it 
3491         # you have can use the get/set quota command smb.conf
3492         # options then
3493         samba_cv_SYSQUOTA_FOUND=auto
3494     fi
3495     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3496         # if --with-sys-quotas=yes then build it 
3497         # you have can use the get/set quota command smb.conf
3498         # options then
3499         samba_cv_TRY_SYS_QUOTAS=auto
3500     fi
3503 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3504 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3505 SAVE_CPPFLAGS="$CPPFLAGS"
3506 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3507 AC_TRY_COMPILE([
3508 #include "confdefs.h"
3509 #define NO_PROTO_H 1
3510 #define NO_CONFIG_H 1
3511 #define HAVE_SYS_QUOTAS 1
3512 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3513 #include "${srcdir-.}/lib/sysquotas.c"
3514 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3515 CPPFLAGS="$SAVE_CPPFLAGS"
3517 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3518 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3519     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3520         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3521         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3522         samba_cv_WE_USE_SYS_QUOTAS=yes
3523         AC_MSG_RESULT(yes)
3524     else
3525         AC_MSG_RESULT(no)
3526     fi
3530 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3531 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3532 SAVE_CPPFLAGS="$CPPFLAGS"
3533 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3534 AC_TRY_COMPILE([
3535 #include "confdefs.h"
3536 #define NO_PROTO_H 1
3537 #define NO_CONFIG_H 1
3538 #define HAVE_SYS_QUOTAS 1
3539 #define HAVE_XFS_QUOTAS 1
3540 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3541 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3542 CPPFLAGS="$SAVE_CPPFLAGS"
3544 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3545     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3546         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3547     fi
3551 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3552 SAVE_CPPFLAGS="$CPPFLAGS"
3553 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3554 AC_TRY_COMPILE([
3555 #include "confdefs.h"
3556 #define NO_PROTO_H 1
3557 #define NO_CONFIG_H 1
3558 #include "${srcdir-.}/smbd/quotas.c"
3559 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3560 CPPFLAGS="$SAVE_CPPFLAGS"
3562 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3563 AC_MSG_CHECKING(whether to use the old quota support)
3564     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3565       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3566         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3567         AC_MSG_RESULT(yes)
3568       else
3569         AC_MSG_RESULT(no)
3570       fi
3571     else
3572       AC_MSG_RESULT(no)
3573     fi
3576 ####################
3577 # End of quota check samba_cv_RUN_QUOTA_TESTS
3580 #################################################
3581 # check for experimental utmp accounting
3583 AC_MSG_CHECKING(whether to support utmp accounting)
3584 WITH_UTMP=yes
3585 AC_ARG_WITH(utmp,
3586 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3587 [ case "$withval" in
3588   no)
3589                 WITH_UTMP=no
3590                 ;;
3591   *)
3592                 WITH_UTMP=yes
3593                 ;;
3594   esac ],
3597 # utmp requires utmp.h
3598 # Note similar check earlier, when checking utmp details.
3600 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3601         utmp_no_reason=", no utmp.h on $host_os"
3602         WITH_UTMP=no
3605 # Display test results
3607 if test x"$WITH_UTMP" = x"yes"; then
3608         AC_MSG_RESULT(yes)
3609         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3610 else
3611         AC_MSG_RESULT(no$utmp_no_reason)
3614 #################################################
3615 # choose native language(s) of man pages
3616 AC_MSG_CHECKING(chosen man pages' language(s))
3617 AC_ARG_WITH(manpages-langs,
3618 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3619 [ case "$withval" in
3620   yes|no)
3621     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3622     manlangs="en"
3623   ;;
3624   *)
3625     manlangs="$withval"
3626   ;;
3627   esac
3629   AC_MSG_RESULT($manlangs)
3630   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3631   AC_SUBST(manlangs)],
3633   [manlangs="en"
3634   AC_MSG_RESULT($manlangs)
3635   AC_SUBST(manlangs)]
3638 #################################################
3639 # should we build libsmbclient?
3641 INSTALLCLIENTCMD_SH=:
3642 INSTALLCLIENTCMD_A=:
3643 INSTALLCLIENT=
3644 LIBSMBCLIENT_SHARED=
3645 LIBSMBCLIENT=
3646 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3647 AC_ARG_WITH(libsmbclient,
3648 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3649 [ case "$withval" in
3650   no) 
3651      AC_MSG_RESULT(no)
3652      ;;
3653   *)
3654      if test $BLDSHARED = true; then
3655         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3656         ## build the static version of libsmbclient as well
3657         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3658         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3659         LIBSMBCLIENT=libsmbclient
3660         AC_MSG_RESULT(yes)
3661      else
3662         enable_static=yes
3663         AC_MSG_RESULT(no shared library support -- will supply static library)
3664      fi
3665      if test $enable_static = yes; then
3666         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3667         LIBSMBCLIENT=libsmbclient
3668      fi
3669      INSTALLCLIENT=installclientlib
3670      ;;
3671   esac ],
3673 # if unspecified, default is to built it iff possible.
3674   if test $BLDSHARED = true; then
3675      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3676      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3677      LIBSMBCLIENT=libsmbclient
3678      AC_MSG_RESULT(yes)
3679    else
3680      enable_static=yes
3681      AC_MSG_RESULT(no shared library support -- will supply static library)
3682    fi
3683    if test $enable_static = yes; then
3684      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3685      LIBSMBCLIENT=libsmbclient
3686   fi]
3687   INSTALLCLIENT=installclientlib
3691 #################################################
3692 # these tests are taken from the GNU fileutils package
3693 AC_CHECKING(how to get filesystem space usage)
3694 space=no
3696 # Test for statvfs64.
3697 if test $space = no; then
3698   # SVR4
3699   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3700   [AC_TRY_RUN([
3701 #if defined(HAVE_UNISTD_H)
3702 #include <unistd.h>
3703 #endif
3704 #include <sys/types.h>
3705 #include <sys/statvfs.h>
3706   main ()
3707   {
3708     struct statvfs64 fsd;
3709     exit (statvfs64 (".", &fsd));
3710   }],
3711   fu_cv_sys_stat_statvfs64=yes,
3712   fu_cv_sys_stat_statvfs64=no,
3713   fu_cv_sys_stat_statvfs64=cross)])
3714   if test $fu_cv_sys_stat_statvfs64 = yes; then
3715     space=yes
3716     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3717   fi
3720 # Perform only the link test since it seems there are no variants of the
3721 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3722 # because that got a false positive on SCO OSR5.  Adding the declaration
3723 # of a `struct statvfs' causes this test to fail (as it should) on such
3724 # systems.  That system is reported to work fine with STAT_STATFS4 which
3725 # is what it gets when this test fails.
3726 if test $space = no; then
3727   # SVR4
3728   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3729                  [AC_TRY_LINK([#include <sys/types.h>
3730 #include <sys/statvfs.h>],
3731                               [struct statvfs fsd; statvfs (0, &fsd);],
3732                               fu_cv_sys_stat_statvfs=yes,
3733                               fu_cv_sys_stat_statvfs=no)])
3734   if test $fu_cv_sys_stat_statvfs = yes; then
3735     space=yes
3736     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3737   fi
3740 if test $space = no; then
3741   # DEC Alpha running OSF/1
3742   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3743   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3744   [AC_TRY_RUN([
3745 #include <sys/param.h>
3746 #include <sys/types.h>
3747 #include <sys/mount.h>
3748   main ()
3749   {
3750     struct statfs fsd;
3751     fsd.f_fsize = 0;
3752     exit (statfs (".", &fsd, sizeof (struct statfs)));
3753   }],
3754   fu_cv_sys_stat_statfs3_osf1=yes,
3755   fu_cv_sys_stat_statfs3_osf1=no,
3756   fu_cv_sys_stat_statfs3_osf1=no)])
3757   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3758   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3759     space=yes
3760     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3761   fi
3764 if test $space = no; then
3765 # AIX
3766   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3767 member (AIX, 4.3BSD)])
3768   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3769   [AC_TRY_RUN([
3770 #ifdef HAVE_SYS_PARAM_H
3771 #include <sys/param.h>
3772 #endif
3773 #ifdef HAVE_SYS_MOUNT_H
3774 #include <sys/mount.h>
3775 #endif
3776 #ifdef HAVE_SYS_VFS_H
3777 #include <sys/vfs.h>
3778 #endif
3779   main ()
3780   {
3781   struct statfs fsd;
3782   fsd.f_bsize = 0;
3783   exit (statfs (".", &fsd));
3784   }],
3785   fu_cv_sys_stat_statfs2_bsize=yes,
3786   fu_cv_sys_stat_statfs2_bsize=no,
3787   fu_cv_sys_stat_statfs2_bsize=no)])
3788   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3789   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3790     space=yes
3791     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3792   fi
3795 if test $space = no; then
3796 # SVR3
3797   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3798   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3799   [AC_TRY_RUN([#include <sys/types.h>
3800 #include <sys/statfs.h>
3801   main ()
3802   {
3803   struct statfs fsd;
3804   exit (statfs (".", &fsd, sizeof fsd, 0));
3805   }],
3806     fu_cv_sys_stat_statfs4=yes,
3807     fu_cv_sys_stat_statfs4=no,
3808     fu_cv_sys_stat_statfs4=no)])
3809   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3810   if test $fu_cv_sys_stat_statfs4 = yes; then
3811     space=yes
3812     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3813   fi
3816 if test $space = no; then
3817 # 4.4BSD and NetBSD
3818   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3819 member (4.4BSD and NetBSD)])
3820   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3821   [AC_TRY_RUN([#include <sys/types.h>
3822 #ifdef HAVE_SYS_PARAM_H
3823 #include <sys/param.h>
3824 #endif
3825 #ifdef HAVE_SYS_MOUNT_H
3826 #include <sys/mount.h>
3827 #endif
3828   main ()
3829   {
3830   struct statfs fsd;
3831   fsd.f_fsize = 0;
3832   exit (statfs (".", &fsd));
3833   }],
3834   fu_cv_sys_stat_statfs2_fsize=yes,
3835   fu_cv_sys_stat_statfs2_fsize=no,
3836   fu_cv_sys_stat_statfs2_fsize=no)])
3837   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3838   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3839     space=yes
3840         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3841   fi
3844 if test $space = no; then
3845   # Ultrix
3846   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3847   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3848   [AC_TRY_RUN([#include <sys/types.h>
3849 #ifdef HAVE_SYS_PARAM_H
3850 #include <sys/param.h>
3851 #endif
3852 #ifdef HAVE_SYS_MOUNT_H
3853 #include <sys/mount.h>
3854 #endif
3855 #ifdef HAVE_SYS_FS_TYPES_H
3856 #include <sys/fs_types.h>
3857 #endif
3858   main ()
3859   {
3860   struct fs_data fsd;
3861   /* Ultrix's statfs returns 1 for success,
3862      0 for not mounted, -1 for failure.  */
3863   exit (statfs (".", &fsd) != 1);
3864   }],
3865   fu_cv_sys_stat_fs_data=yes,
3866   fu_cv_sys_stat_fs_data=no,
3867   fu_cv_sys_stat_fs_data=no)])
3868   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3869   if test $fu_cv_sys_stat_fs_data = yes; then
3870     space=yes
3871     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3872   fi
3876 # As a gating factor for large file support, in order to
3877 # use <4GB files we must have the following minimal support
3878 # available.
3879 # long long, and a 64 bit off_t or off64_t.
3880 # If we don't have all of these then disable large
3881 # file support.
3883 AC_MSG_CHECKING([if large file support can be enabled])
3884 AC_TRY_COMPILE([
3885 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3886 #include <sys/types.h>
3887 #else
3888 __COMPILE_ERROR_
3889 #endif
3891 [int i],
3892 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3893 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3894         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3896 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3898 AC_ARG_WITH(spinlocks, 
3899 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3900 if test "x$with_spinlocks" = "xyes"; then
3901     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3903     case "$host_cpu" in
3904         sparc)
3905             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3906             ;;
3908         i386|i486|i586|i686)
3909             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3910             ;;
3912         mips)
3913             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3914             ;;
3916         powerpc)
3917             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3918             ;;
3919     esac
3922 #################################################
3923 # check for ACL support
3925 AC_MSG_CHECKING(whether to support ACLs)
3926 AC_ARG_WITH(acl-support,
3927 [  --with-acl-support      Include ACL support (default=no)],
3928 [ case "$withval" in
3929   yes)
3931         case "$host_os" in
3932         *sysv5*)
3933                 AC_MSG_RESULT(Using UnixWare ACLs)
3934                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3935                 ;;
3936         *solaris*)
3937                 AC_MSG_RESULT(Using solaris ACLs)
3938                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3939                 ;;
3940         *hpux*)
3941                 AC_MSG_RESULT(Using HPUX ACLs)
3942                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3943                 ;;
3944         *irix*)
3945                 AC_MSG_RESULT(Using IRIX ACLs)
3946                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3947                 ;;
3948         *aix*)
3949                 AC_MSG_RESULT(Using AIX ACLs)
3950                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3951                 ;;
3952         *osf*)
3953                 AC_MSG_RESULT(Using Tru64 ACLs)
3954                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3955                 ACL_LIBS="$ACL_LIBS -lpacl"
3956                 ;;
3957         *freebsd5*)
3958                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3959                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3960                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3961                 ;;
3962         *linux*)
3963                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3964                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3965                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3966                 acl_LIBS=$LIBS
3967                 LIBS="$LIBS -lacl"
3968                 AC_TRY_LINK([#include <sys/types.h>
3969 #include <sys/acl.h>],
3970 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3971 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3972                 LIBS=$acl_LIBS])
3973                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3974                                 AC_MSG_RESULT(Using posix ACLs)
3975                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3976                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3977                                 acl_LIBS=$LIBS
3978                                 LIBS="$LIBS -lacl"
3979                                 AC_TRY_LINK([#include <sys/types.h>
3980 #include <sys/acl.h>],
3981 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3982 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3983                                 LIBS=$acl_LIBS])
3984                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3985                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3986                                 fi
3987                         fi
3988             ;;
3989          *)
3990                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3991                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3992                 acl_LIBS=$LIBS
3993                 LIBS="$LIBS -lacl"
3994                 AC_TRY_LINK([#include <sys/types.h>
3995 #include <sys/acl.h>],
3996 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3997 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3998                 LIBS=$acl_LIBS])
3999                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4000                                 AC_MSG_RESULT(Using posix ACLs)
4001                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4002                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4003                                 acl_LIBS=$LIBS
4004                                 LIBS="$LIBS -lacl"
4005                                 AC_TRY_LINK([#include <sys/types.h>
4006 #include <sys/acl.h>],
4007 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4008 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4009                                 LIBS=$acl_LIBS])
4010                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4011                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4012                                 fi
4013                         fi
4014             ;;
4015         esac
4016         ;;
4017   *)
4018     AC_MSG_RESULT(no)
4019     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4020     ;;
4021   esac ],
4022   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4023   AC_MSG_RESULT(no)
4026 #################################################
4027 # check for sendfile support
4029 with_sendfile_support=yes
4030 AC_MSG_CHECKING(whether to check to support sendfile)
4031 AC_ARG_WITH(sendfile-support,
4032 [  --with-sendfile-support Check for sendfile support (default=yes)],
4033 [ case "$withval" in
4034   yes)
4036         AC_MSG_RESULT(yes);
4038         case "$host_os" in
4039         *linux*)
4040                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4041                 AC_TRY_LINK([#include <sys/sendfile.h>],
4043 int tofd, fromfd;
4044 off64_t offset;
4045 size_t total;
4046 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4048 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4050                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4051                 AC_TRY_LINK([#include <sys/sendfile.h>],
4053 int tofd, fromfd;
4054 off_t offset;
4055 size_t total;
4056 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4058 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4060 # Try and cope with broken Linux sendfile....
4061                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4062                 AC_TRY_LINK([\
4063 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4064 #undef _FILE_OFFSET_BITS
4065 #endif
4066 #include <sys/sendfile.h>],
4068 int tofd, fromfd;
4069 off_t offset;
4070 size_t total;
4071 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4073 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4075         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4076                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4077                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4078                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4079         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4080                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4081                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4082                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4083         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4084                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4085                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4086         else
4087                 AC_MSG_RESULT(no);
4088         fi
4090         ;;
4091         *freebsd* | *DragonFly* )
4092                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4093                 AC_TRY_LINK([\
4094 #include <sys/types.h>
4095 #include <unistd.h>
4096 #include <sys/socket.h>
4097 #include <sys/uio.h>],
4099         int fromfd, tofd, ret, total=0;
4100         off_t offset, nwritten;
4101         struct sf_hdtr hdr;
4102         struct iovec hdtrl;
4103         hdr.headers = &hdtrl;
4104         hdr.hdr_cnt = 1;
4105         hdr.trailers = NULL;
4106         hdr.trl_cnt = 0;
4107         hdtrl.iov_base = NULL;
4108         hdtrl.iov_len = 0;
4109         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4111 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4113         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4114                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4115                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4116                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4117         else
4118                 AC_MSG_RESULT(no);
4119         fi
4120         ;;
4122         *hpux*)
4123                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4124                 AC_TRY_LINK([\
4125 #include <sys/socket.h>
4126 #include <sys/uio.h>],
4128         int fromfd, tofd;
4129         size_t total=0;
4130         struct iovec hdtrl[2];
4131         ssize_t nwritten;
4132         off64_t offset;
4134         hdtrl[0].iov_base = 0;
4135         hdtrl[0].iov_len = 0;
4137         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4139 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4140         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4141                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4142                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4143                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4144         else
4145                 AC_MSG_RESULT(no);
4146         fi
4148                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4149                 AC_TRY_LINK([\
4150 #include <sys/socket.h>
4151 #include <sys/uio.h>],
4153         int fromfd, tofd;
4154         size_t total=0;
4155         struct iovec hdtrl[2];
4156         ssize_t nwritten;
4157         off_t offset;
4159         hdtrl[0].iov_base = 0;
4160         hdtrl[0].iov_len = 0;
4162         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4164 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4165         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4166                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4167                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4168                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4169         else
4170                 AC_MSG_RESULT(no);
4171         fi
4172         ;;
4174         *solaris*)
4175                 AC_CHECK_LIB(sendfile,sendfilev)
4176                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4177                 AC_TRY_LINK([\
4178 #include <sys/sendfile.h>],
4180         int sfvcnt;
4181         size_t xferred;
4182         struct sendfilevec vec[2];
4183         ssize_t nwritten;
4184         int tofd;
4186         sfvcnt = 2;
4188         vec[0].sfv_fd = SFV_FD_SELF;
4189         vec[0].sfv_flag = 0;
4190         vec[0].sfv_off = 0;
4191         vec[0].sfv_len = 0;
4193         vec[1].sfv_fd = 0;
4194         vec[1].sfv_flag = 0;
4195         vec[1].sfv_off = 0;
4196         vec[1].sfv_len = 0;
4197         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4199 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4201         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4202                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4203                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4204                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4205         else
4206                 AC_MSG_RESULT(no);
4207         fi
4209                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4210                 AC_TRY_LINK([\
4211 #include <sys/sendfile.h>],
4213         int sfvcnt;
4214         size_t xferred;
4215         struct sendfilevec vec[2];
4216         ssize_t nwritten;
4217         int tofd;
4219         sfvcnt = 2;
4221         vec[0].sfv_fd = SFV_FD_SELF;
4222         vec[0].sfv_flag = 0;
4223         vec[0].sfv_off = 0;
4224         vec[0].sfv_len = 0;
4226         vec[1].sfv_fd = 0;
4227         vec[1].sfv_flag = 0;
4228         vec[1].sfv_off = 0;
4229         vec[1].sfv_len = 0;
4230         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4232 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4234         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4235                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4236                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4237                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4238         else
4239                 AC_MSG_RESULT(no);
4240         fi
4241         ;;
4242         *aix*)
4243                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
4244                 AC_TRY_LINK([\
4245 #include <sys/socket.h>],
4247         int fromfd, tofd;
4248         size_t total=0;
4249         struct sf_parms hdtrl;
4250         ssize_t nwritten;
4251         off64_t offset;
4253         hdtrl.header_data = 0;
4254         hdtrl.header_length = 0;
4255         hdtrl.file_descriptor = fromfd;
4256         hdtrl.file_offset = 0;
4257         hdtrl.file_bytes = 0;
4258         hdtrl.trailer_data = 0;
4259         hdtrl.trailer_length = 0;
4261         nwritten = send_file(&tofd, &hdtrl, 0);
4263 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4264         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4265                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4266                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
4267                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4268         else
4269                 AC_MSG_RESULT(no);
4270         fi
4271         ;;
4272         *)
4273         ;;
4274         esac
4275         ;;
4276   *)
4277     AC_MSG_RESULT(no)
4278     ;;
4279   esac ],
4280   AC_MSG_RESULT(yes)
4284 #################################################
4285 # Check whether winbind is supported on this platform.  If so we need to
4286 # build and install client programs, sbin programs and shared libraries
4288 AC_MSG_CHECKING(whether to build winbind)
4290 # Initially, the value of $host_os decides whether winbind is supported
4292 HAVE_WINBIND=yes
4294 # Define the winbind shared library name and any specific linker flags
4295 # it needs to be built with.
4297 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4298 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4299 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4301 case "$host_os" in
4302         *linux*)
4303                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4304                 ;;
4305         *freebsd5*)
4306                 # FreeBSD winbind client is implemented as a wrapper around
4307                 # the Linux version.
4308                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4309                     nsswitch/winbind_nss_linux.o"
4310                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4311                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4312                 ;;
4313         *irix*)
4314                 # IRIX has differently named shared libraries
4315                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4316                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4317                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4318                 ;;
4319         *solaris*)
4320                 # Solaris winbind client is implemented as a wrapper around
4321                 # the Linux version.
4322                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4323                     nsswitch/winbind_nss_linux.o"
4324                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4325                 ;;
4326         *hpux11*)
4327                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4328                 ;;
4329         *aix*)
4330                 # AIX has even differently named shared libraries.  No
4331                 # WINS support has been implemented yet.
4332                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4333                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4334                 WINBIND_NSS="nsswitch/WINBIND"
4335                 WINBIND_WINS_NSS=""
4336                 ;;
4337         *)
4338                 HAVE_WINBIND=no
4339                 winbind_no_reason=", unsupported on $host_os"
4340                 ;;
4341 esac
4343 AC_SUBST(WINBIND_NSS)
4344 AC_SUBST(WINBIND_WINS_NSS)
4345 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4346 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4347 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4349 # Check the setting of --with-winbind
4351 AC_ARG_WITH(winbind,
4352 [  --with-winbind          Build winbind (default, if supported by OS)],
4354   case "$withval" in
4355         yes)
4356                 HAVE_WINBIND=yes
4357                 ;;
4358         no)
4359                 HAVE_WINBIND=no
4360                 winbind_reason=""
4361                 ;;
4362   esac ],
4365 # We need unix domain sockets for winbind
4367 if test x"$HAVE_WINBIND" = x"yes"; then
4368         if test x"$samba_cv_unixsocket" = x"no"; then
4369                 winbind_no_reason=", no unix domain socket support on $host_os"
4370                 HAVE_WINBIND=no
4371         fi
4374 # Display test results
4376 if test x"$HAVE_WINBIND" = x"yes"; then
4377         AC_MSG_RESULT(yes)
4378         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4380         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4381         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4382         if test $BLDSHARED = true; then
4383                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4385                 if test x"$with_pam" = x"yes"; then
4386                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4387                 fi
4388         fi
4389 else
4390         AC_MSG_RESULT(no$winbind_no_reason)
4393 # Solaris has some extra fields in struct passwd that need to be
4394 # initialised otherwise nscd crashes.  
4396 AC_CHECK_MEMBER(struct passwd.pw_comment,
4397                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4398                 [#include <pwd.h>])
4400 AC_CHECK_MEMBER(struct passwd.pw_age,
4401                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4402                 [#include <pwd.h>])
4404 # AIX 4.3.x and 5.1 do not have as many members in
4405 # struct secmethod_table as AIX 5.2
4406 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
4407        [#include <usersec.h>])
4408 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
4409        [#include <usersec.h>])
4412 #################################################
4413 # Check to see if we should use the included popt 
4415 AC_ARG_WITH(included-popt,
4416 [  --with-included-popt    use bundled popt library, not from system],
4418   case "$withval" in
4419         yes)
4420                 INCLUDED_POPT=yes
4421                 ;;
4422         no)
4423                 INCLUDED_POPT=no
4424                 ;;
4425   esac ],
4427 if test x"$INCLUDED_POPT" != x"yes"; then
4428     AC_CHECK_LIB(popt, poptGetContext,
4429                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4432 AC_MSG_CHECKING(whether to use included popt)
4433 if test x"$INCLUDED_POPT" = x"yes"; then
4434     AC_MSG_RESULT(yes)
4435     BUILD_POPT='$(POPT_OBJS)'
4436         POPTLIBS='$(POPT_OBJS)'
4437     FLAGS1="-I$srcdir/popt"
4438 else
4439     AC_MSG_RESULT(no)
4440         BUILD_POPT=""
4441     POPTLIBS="-lpopt"
4443 AC_SUBST(BUILD_POPT)
4444 AC_SUBST(POPTLIBS)
4445 AC_SUBST(FLAGS1)
4447 #################################################
4448 # Check if the user wants Python
4450 # At the moment, you can use this to set which Python binary to link
4451 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4452 # though they can coexist in different directories.)  In the future
4453 # this might make the Python stuff be built by default.
4455 # Defaulting python breaks the clean target if python isn't installed
4457 PYTHON=
4459 AC_ARG_WITH(python,
4460 [  --with-python=PYTHONNAME  build Python libraries],
4461 [ case "${withval-python}" in
4462   yes)
4463         PYTHON=python
4464         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4465         ;;
4466   no)
4467         PYTHON=
4468         ;;
4469   *)
4470         PYTHON=${withval-python}
4471         ;;
4472   esac ])
4473 AC_SUBST(PYTHON)
4475 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4477         eval MODULE_DEFAULT_$i=STATIC
4478 done
4480 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4482         dnl Fall back to static if we cannot build shared libraries
4483         eval MODULE_DEFAULT_$i=STATIC
4485         if test $BLDSHARED = true; then
4486                 eval MODULE_DEFAULT_$i=SHARED
4487         fi
4488 done
4490 dnl Always built these modules static
4491 MODULE_pdb_guest=STATIC
4492 MODULE_rpc_spoolss=STATIC
4493 MODULE_rpc_srv=STATIC
4494 MODULE_idmap_tdb=STATIC
4496 AC_ARG_WITH(static-modules,
4497 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4498 [ if test $withval; then
4499         for i in `echo $withval | sed -e's/,/ /g'`
4500         do
4501                 eval MODULE_$i=STATIC
4502         done
4503 fi ])
4505 AC_ARG_WITH(shared-modules,
4506 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4507 [ if test $withval; then
4508         for i in `echo $withval | sed -e's/,/ /g'`
4509         do
4510                         eval MODULE_$i=SHARED
4511         done
4512 fi ])
4514 ###########################################################################
4515 ## contributed pdb_modules
4517 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4518                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4519 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4520                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4521 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4522                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4524 ## end of contributed pdb_modules
4525 ###########################################################################
4527 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4528                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4529 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4530 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4531 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4532 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4534 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4535 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4536 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4537 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4538 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4539 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4540 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4541 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4542 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4543 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4544 SMB_SUBSYSTEM(RPC,smbd/server.o)
4546 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4547 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4548 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/idmap_rid.$SHLIBEXT", IDMAP)
4549 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4551 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4552 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4553 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4554 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4555 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4557 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4558 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4559 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4560 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4561 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4562 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4563 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4564 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4566 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4567 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4568 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4569 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
4570 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4571 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4572 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4573 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4574 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4575 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4576 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4577 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
4578 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4580 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4582 #################################################
4583 # do extra things if we are running insure
4585 if test "${ac_cv_prog_CC}" = "insure"; then
4586         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4589 #################################################
4590 # Display summary of libraries detected
4592 AC_MSG_RESULT([Using libraries:])
4593 AC_MSG_RESULT([    LIBS = $LIBS])
4594 if test x"$with_ads_support" != x"no"; then
4595    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4597 if test x"$with_ldap_support" != x"no"; then
4598    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4600 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4602 #################################################
4603 # final configure stuff
4605 AC_MSG_CHECKING([configure summary])
4606 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4607            AC_MSG_RESULT(yes),
4608            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4609            AC_MSG_WARN([cannot run when cross-compiling]))
4611 builddir=`pwd`
4612 AC_SUBST(builddir)
4614 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4615 LIB_REMOVE_USR_LIB(LDFLAGS)
4616 LIB_REMOVE_USR_LIB(LIBS)
4618 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4619 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4620 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4622 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4624 #################################################
4625 # Print very concise instructions on building/use
4626 if test "x$enable_dmalloc" = xyes
4627 then
4628         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4629         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])