r4231: commiting changes to 3.0.10
[Samba/gbeck.git] / source / configure.in
blobe85f604b5846709cd255f9691d3a118bb108e7e7
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"
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     if (krb5_kt_resolve(context, "WRFILE:api", &keytab))
3004       exit(0);
3005     exit(1);
3006   }],
3007   samba_cv_HAVE_WRFILE_KEYTAB=no,
3008   samba_cv_HAVE_WRFILE_KEYTAB=yes)])
3010   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3011       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3012                [Whether the WRFILE:-keytab is supported])
3013   fi
3015   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3016                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3017     AC_TRY_COMPILE([#include <krb5.h>],
3018     [
3019     krb5_context context;
3020     krb5_principal principal;
3021     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3022     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3023     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3025   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3026     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3027               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3028   fi
3030 LIBS="$ac_save_LIBS"
3033 ########################################################
3034 # Compile experimental passdb backends?
3035 # (pdb_xml, pdb_mysql, pdb_pgsql)
3036 AC_MSG_CHECKING(whether to build experimental passdb libraries)
3037 AC_ARG_WITH(expsam,
3038 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
3039 [                          Valid choices include (comma separated list): ]
3040 [                              xml, mysql & pgsql],
3041 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
3042   if test "z$expsam_pdb_modules" = "zyes"; then
3043     expsam_pdb_modules="xml mysql pgsql"
3044   fi
3045   AC_MSG_RESULT($expsam_pdb_modules)
3046   for i in $expsam_pdb_modules
3047   do 
3048     case "$i" in
3049     xml|all|yes)
3050       ## pdb_xml
3051           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])])
3052       CFLAGS="$CFLAGS $XML_CFLAGS"
3053       ;;
3054     mysql|all|yes)
3055       ## pdb_mysql
3056           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
3057       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
3058       ;;
3059      pgsql|all|yes)
3060       ## pdb_pgsql
3061       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
3062       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
3063       ;;
3064     no)
3065       ;;
3066     *)
3067       echo "Unknown module name \"$i\"!  Exiting..."
3068       exit 1
3069       ;;
3070     esac
3071   done ],
3072   AC_MSG_RESULT(no)
3075 #################################################
3076 # check for automount support
3077 AC_MSG_CHECKING(whether to use automount)
3078 AC_ARG_WITH(automount,
3079 [  --with-automount        Include automount support (default=no)],
3080 [ case "$withval" in
3081   yes)
3082     AC_MSG_RESULT(yes)
3083     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3084     ;;
3085   *)
3086     AC_MSG_RESULT(no)
3087     ;;
3088   esac ],
3089   AC_MSG_RESULT(no)
3092 #################################################
3093 # check for smbmount support
3094 AC_MSG_CHECKING(whether to use smbmount)
3095 AC_ARG_WITH(smbmount,
3096 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3097 [ case "$withval" in
3098   yes)
3099         case "$host_os" in
3100         *linux*)
3101                 AC_MSG_RESULT(yes)
3102                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3103                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3104                 ;;
3105         *)
3106                 AC_MSG_ERROR(not on a linux system!)
3107                 ;;
3108         esac
3109     ;;
3110   *)
3111     AC_MSG_RESULT(no)
3112     ;;
3113   esac ],
3114   AC_MSG_RESULT(no)
3119 #################################################
3120 # check for a PAM clear-text auth, accounts, password and session support
3121 with_pam_for_crypt=no
3122 AC_MSG_CHECKING(whether to use PAM)
3123 AC_ARG_WITH(pam,
3124 [  --with-pam              Include PAM support (default=no)],
3125 [ case "$withval" in
3126   yes)
3127     AC_MSG_RESULT(yes)
3128     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3129        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3130           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3131              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3132           fi
3133        fi
3134     fi
3135     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3136     AUTH_LIBS="$AUTH_LIBS -lpam"
3137     with_pam_for_crypt=yes
3138     ;;
3139   *)
3140     AC_MSG_RESULT(no)
3141     ;;
3142   esac ],
3143   AC_MSG_RESULT(no)
3146 # we can't build a pam module if we don't have pam.
3147 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3149 #################################################
3150 # check for pam_smbpass support
3151 AC_MSG_CHECKING(whether to use pam_smbpass)
3152 AC_ARG_WITH(pam_smbpass,
3153 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3154 [ case "$withval" in
3155   yes)
3156     AC_MSG_RESULT(yes)
3158        # Conditions under which pam_smbpass should not be built.
3160        if test x$PICFLAGS = x; then
3161           AC_MSG_ERROR([No support for PIC code])
3162        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3163           AC_MSG_ERROR([No security/pam_appl.h found])
3164        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3165           AC_MSG_ERROR([No libpam found])
3166        else
3167           AUTH_LIBS="$AUTH_LIBS -lpam"
3168           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3169        fi
3170     ;;
3171   *)
3172     AC_MSG_RESULT(no)
3173     ;;
3174   esac ],
3175   AC_MSG_RESULT(no)
3179 ###############################################
3180 # test for where we get crypt() from
3181 AC_SEARCH_LIBS(crypt, [crypt],
3182   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3183   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3186 ## moved after the check for -lcrypt in order to
3187 ## ensure that the necessary libraries are included
3188 ## check checking for truncated salt.  Wrapped by the
3189 ## $with_pam_for_crypt variable as above   --jerry
3191 if test $with_pam_for_crypt = no; then
3192 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3193 crypt_LIBS="$LIBS"
3194 LIBS="$AUTH_LIBS $LIBS"
3195 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3196         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3197 LIBS="$crypt_LIBS"])
3198 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3199         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3204 ########################################################################################
3206 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3208 ########################################################################################
3210 #################################################
3211 # check for a LDAP password database configuration backwards compatibility
3212 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3213 AC_ARG_WITH(ldapsam,
3214 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3215 [ case "$withval" in
3216   yes)
3217     AC_MSG_RESULT(yes)
3218     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3219     ;;
3220   *)
3221     AC_MSG_RESULT(no)
3222     ;;
3223   esac ],
3224   AC_MSG_RESULT(no)
3227 ########################################################################################
3229 ## END OF TESTS FOR SAM BACKENDS.  
3231 ########################################################################################
3233 #################################################
3234 # check for a NISPLUS_HOME support 
3235 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3236 AC_ARG_WITH(nisplus-home,
3237 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3238 [ case "$withval" in
3239   yes)
3240     AC_MSG_RESULT(yes)
3241     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3242     ;;
3243   *)
3244     AC_MSG_RESULT(no)
3245     ;;
3246   esac ],
3247   AC_MSG_RESULT(no)
3250 #################################################
3251 # check for syslog logging
3252 AC_MSG_CHECKING(whether to use syslog logging)
3253 AC_ARG_WITH(syslog,
3254 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3255 [ case "$withval" in
3256   yes)
3257     AC_MSG_RESULT(yes)
3258     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3259     ;;
3260   *)
3261     AC_MSG_RESULT(no)
3262     ;;
3263   esac ],
3264   AC_MSG_RESULT(no)
3267 #################################################
3268 # check for a shared memory profiling support
3269 AC_MSG_CHECKING(whether to use profiling)
3270 AC_ARG_WITH(profiling-data,
3271 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3272 [ case "$withval" in
3273   yes)
3274     AC_MSG_RESULT(yes)
3275     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3276     ;;
3277   *)
3278     AC_MSG_RESULT(no)
3279     ;;
3280   esac ],
3281   AC_MSG_RESULT(no)
3285 #################################################
3286 # check for experimental disk-quotas support
3288 samba_cv_WITH_QUOTAS=auto
3289 samba_cv_TRY_QUOTAS=no
3290 samba_cv_RUN_QUOTA_TESTS=auto
3291 samba_cv_WITH_SYS_QUOTAS=auto
3292 samba_cv_TRY_SYS_QUOTAS=no
3293 samba_cv_SYSQUOTA_FOUND=no;
3295 AC_MSG_CHECKING(whether to try disk-quotas support)
3296 AC_ARG_WITH(quotas,
3297 [  --with-quotas           Include disk-quota support (default=no)],
3298 [ case "$withval" in
3299   yes)
3300     AC_MSG_RESULT(yes)
3301     samba_cv_WITH_QUOTAS=yes
3302     samba_cv_TRY_QUOTAS=yes
3303     samba_cv_RUN_QUOTA_TESTS=yes
3304     #set sys quotas to auto in this case
3305     samba_cv_TRY_SYS_QUOTAS=auto
3306     ;;
3307   auto)
3308     AC_MSG_RESULT(auto)
3309     samba_cv_WITH_QUOTAS=auto
3310     samba_cv_TRY_QUOTAS=auto
3311     samba_cv_RUN_QUOTA_TESTS=auto
3312     #set sys quotas to auto in this case
3313     samba_cv_TRY_SYS_QUOTAS=auto
3314     ;;
3315   no)
3316     AC_MSG_RESULT(no)
3317     samba_cv_WITH_QUOTAS=no
3318     samba_cv_TRY_QUOTAS=no
3319     samba_cv_RUN_QUOTA_TESTS=no
3320     ;;
3321   *)
3322     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3323     ;;
3324   esac ],
3325   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3328 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3329 AC_ARG_WITH(sys-quotas,
3330 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3331 [ case "$withval" in
3332   yes)
3333     AC_MSG_RESULT(yes)
3334     samba_cv_WITH_SYS_QUOTAS=yes
3335     samba_cv_TRY_SYS_QUOTAS=yes
3336     samba_cv_RUN_QUOTA_TESTS=yes
3337     ;;
3338   auto)
3339     AC_MSG_RESULT(auto)
3340     samba_cv_WITH_SYS_QUOTAS=auto
3341     samba_cv_TRY_SYS_QUOTAS=auto
3342     samba_cv_RUN_QUOTA_TESTS=auto
3343     ;;
3344   no)
3345     AC_MSG_RESULT(no)
3346     samba_cv_WITH_SYS_QUOTAS=no
3347     samba_cv_TRY_SYS_QUOTAS=no
3348     ;;
3349   *)
3350     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3351     ;;
3352   esac ],
3353   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3356 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
3357 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3358   case "$host_os" in
3359         *linux*)
3360             AC_MSG_RESULT(yes)
3361             samba_cv_TRY_SYS_QUOTAS=yes
3362             samba_cv_RUN_QUOTA_TESTS=yes
3363             samba_cv_SYSQUOTA_FOUND=yes
3364             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3365             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3366             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3367             samba_cv_found_xfs_header=yes
3368             ;;
3369         *)
3370             AC_MSG_RESULT(no)
3371             samba_cv_TRY_SYS_QUOTAS=no
3372             ;;
3373   esac
3376 #############################################
3377 # only check for quota stuff if --with-quotas
3378 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3380 # some broken header files need this
3381 AC_CHECK_HEADER(asm/types.h,[
3382             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3383             AC_ADD_INCLUDE(<asm/types.h>)
3384             ])
3386 # For quotas on Veritas VxFS filesystems
3387 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3389 # For sys/quota.h and linux/quota.h
3390 AC_CHECK_HEADERS(sys/quota.h)
3392 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3393 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3394 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3395 AC_TRY_COMPILE([
3396 #include "confdefs.h"
3397 #ifdef HAVE_SYS_TYPES_H
3398 #include <sys/types.h>
3399 #endif
3400 #ifdef HAVE_ASM_TYPES_H
3401 #include <asm/types.h>
3402 #endif
3403 #include <sys/quota.h>
3404 ],[int i = Q_XGETQUOTA;],
3405 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3406 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3407         samba_cv_found_xfs_header=yes
3411 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3412 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3413 AC_TRY_COMPILE([
3414 #include "confdefs.h"
3415 #ifdef HAVE_SYS_QUOTA_H
3416 #include <sys/quota.h>
3417 #endif
3419 struct dqblk D;
3420 D.dqb_fsoftlimit = 0;],
3421 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3422 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3423         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3426 ##################
3427 # look for a working quota system
3429 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3430 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3431 AC_TRY_RUN_STRICT([
3432 #define HAVE_QUOTACTL_4A 1
3433 #define AUTOCONF_TEST 1
3434 #include "confdefs.h"
3435 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3436            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3437 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3438     samba_cv_SYSQUOTA_FOUND=yes;
3439     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3440     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3444 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3445 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3446 AC_TRY_RUN_STRICT([
3447 #define HAVE_QUOTACTL_4B 1
3448 #define AUTOCONF_TEST 1
3449 #include "confdefs.h"
3450 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3451            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3452 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3453     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3454     samba_cv_SYSQUOTA_FOUND=yes;
3455     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3456     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3460 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3461 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3462 AC_TRY_RUN_STRICT([
3463 #define HAVE_QUOTACTL_3 1
3464 #define AUTOCONF_TEST 1
3465 #include "confdefs.h"
3466 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3467            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3468 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3469     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3470     samba_cv_SYSQUOTA_FOUND=yes;
3471     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3472     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3476 #################################################
3477 # check for mntent.h and struct mntent
3478 AC_CHECK_HEADERS(mntent.h)
3479 #################################################
3480 # check for setmntent,getmntent,endmntent
3481 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3483 #################################################
3484 # check for devnm.h and struct mntent
3485 AC_CHECK_HEADERS(devnm.h)
3486 #################################################
3487 # check for devnm
3488 AC_CHECK_FUNCS(devnm)
3490 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3491     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3492         # if --with-sys-quotas=yes then build it 
3493         # you have can use the get/set quota command smb.conf
3494         # options then
3495         samba_cv_SYSQUOTA_FOUND=auto
3496     fi
3497     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3498         # if --with-sys-quotas=yes then build it 
3499         # you have can use the get/set quota command smb.conf
3500         # options then
3501         samba_cv_TRY_SYS_QUOTAS=auto
3502     fi
3505 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3506 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3507 SAVE_CPPFLAGS="$CPPFLAGS"
3508 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3509 AC_TRY_COMPILE([
3510 #include "confdefs.h"
3511 #define NO_PROTO_H 1
3512 #define NO_CONFIG_H 1
3513 #define HAVE_SYS_QUOTAS 1
3514 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3515 #include "${srcdir-.}/lib/sysquotas.c"
3516 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3517 CPPFLAGS="$SAVE_CPPFLAGS"
3519 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3520 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3521     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3522         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3523         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3524         samba_cv_WE_USE_SYS_QUOTAS=yes
3525         AC_MSG_RESULT(yes)
3526     else
3527         AC_MSG_RESULT(no)
3528     fi
3532 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3533 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3534 SAVE_CPPFLAGS="$CPPFLAGS"
3535 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3536 AC_TRY_COMPILE([
3537 #include "confdefs.h"
3538 #define NO_PROTO_H 1
3539 #define NO_CONFIG_H 1
3540 #define HAVE_SYS_QUOTAS 1
3541 #define HAVE_XFS_QUOTAS 1
3542 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3543 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3544 CPPFLAGS="$SAVE_CPPFLAGS"
3546 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3547     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3548         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3549     fi
3553 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3554 SAVE_CPPFLAGS="$CPPFLAGS"
3555 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3556 AC_TRY_COMPILE([
3557 #include "confdefs.h"
3558 #define NO_PROTO_H 1
3559 #define NO_CONFIG_H 1
3560 #include "${srcdir-.}/smbd/quotas.c"
3561 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3562 CPPFLAGS="$SAVE_CPPFLAGS"
3564 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3565 AC_MSG_CHECKING(whether to use the old quota support)
3566     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3567       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3568         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3569         AC_MSG_RESULT(yes)
3570       else
3571         AC_MSG_RESULT(no)
3572       fi
3573     else
3574       AC_MSG_RESULT(no)
3575     fi
3578 ####################
3579 # End of quota check samba_cv_RUN_QUOTA_TESTS
3582 #################################################
3583 # check for experimental utmp accounting
3585 AC_MSG_CHECKING(whether to support utmp accounting)
3586 WITH_UTMP=yes
3587 AC_ARG_WITH(utmp,
3588 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3589 [ case "$withval" in
3590   no)
3591                 WITH_UTMP=no
3592                 ;;
3593   *)
3594                 WITH_UTMP=yes
3595                 ;;
3596   esac ],
3599 # utmp requires utmp.h
3600 # Note similar check earlier, when checking utmp details.
3602 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3603         utmp_no_reason=", no utmp.h on $host_os"
3604         WITH_UTMP=no
3607 # Display test results
3609 if test x"$WITH_UTMP" = x"yes"; then
3610         AC_MSG_RESULT(yes)
3611         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3612 else
3613         AC_MSG_RESULT(no$utmp_no_reason)
3616 #################################################
3617 # choose native language(s) of man pages
3618 AC_MSG_CHECKING(chosen man pages' language(s))
3619 AC_ARG_WITH(manpages-langs,
3620 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3621 [ case "$withval" in
3622   yes|no)
3623     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3624     manlangs="en"
3625   ;;
3626   *)
3627     manlangs="$withval"
3628   ;;
3629   esac
3631   AC_MSG_RESULT($manlangs)
3632   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3633   AC_SUBST(manlangs)],
3635   [manlangs="en"
3636   AC_MSG_RESULT($manlangs)
3637   AC_SUBST(manlangs)]
3640 #################################################
3641 # should we build libsmbclient?
3643 INSTALLCLIENTCMD_SH=:
3644 INSTALLCLIENTCMD_A=:
3645 INSTALLCLIENT=
3646 LIBSMBCLIENT_SHARED=
3647 LIBSMBCLIENT=
3648 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3649 AC_ARG_WITH(libsmbclient,
3650 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3651 [ case "$withval" in
3652   no) 
3653      AC_MSG_RESULT(no)
3654      ;;
3655   *)
3656      if test $BLDSHARED = true; then
3657         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3658         ## build the static version of libsmbclient as well
3659         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3660         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3661         LIBSMBCLIENT=libsmbclient
3662         AC_MSG_RESULT(yes)
3663      else
3664         enable_static=yes
3665         AC_MSG_RESULT(no shared library support -- will supply static library)
3666      fi
3667      if test $enable_static = yes; then
3668         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3669         LIBSMBCLIENT=libsmbclient
3670      fi
3671      INSTALLCLIENT=installclientlib
3672      ;;
3673   esac ],
3675 # if unspecified, default is to built it iff possible.
3676   if test $BLDSHARED = true; then
3677      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3678      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3679      LIBSMBCLIENT=libsmbclient
3680      AC_MSG_RESULT(yes)
3681    else
3682      enable_static=yes
3683      AC_MSG_RESULT(no shared library support -- will supply static library)
3684    fi
3685    if test $enable_static = yes; then
3686      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3687      LIBSMBCLIENT=libsmbclient
3688   fi]
3689   INSTALLCLIENT=installclientlib
3693 #################################################
3694 # these tests are taken from the GNU fileutils package
3695 AC_CHECKING(how to get filesystem space usage)
3696 space=no
3698 # Test for statvfs64.
3699 if test $space = no; then
3700   # SVR4
3701   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3702   [AC_TRY_RUN([
3703 #if defined(HAVE_UNISTD_H)
3704 #include <unistd.h>
3705 #endif
3706 #include <sys/types.h>
3707 #include <sys/statvfs.h>
3708   main ()
3709   {
3710     struct statvfs64 fsd;
3711     exit (statvfs64 (".", &fsd));
3712   }],
3713   fu_cv_sys_stat_statvfs64=yes,
3714   fu_cv_sys_stat_statvfs64=no,
3715   fu_cv_sys_stat_statvfs64=cross)])
3716   if test $fu_cv_sys_stat_statvfs64 = yes; then
3717     space=yes
3718     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3719   fi
3722 # Perform only the link test since it seems there are no variants of the
3723 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3724 # because that got a false positive on SCO OSR5.  Adding the declaration
3725 # of a `struct statvfs' causes this test to fail (as it should) on such
3726 # systems.  That system is reported to work fine with STAT_STATFS4 which
3727 # is what it gets when this test fails.
3728 if test $space = no; then
3729   # SVR4
3730   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3731                  [AC_TRY_LINK([#include <sys/types.h>
3732 #include <sys/statvfs.h>],
3733                               [struct statvfs fsd; statvfs (0, &fsd);],
3734                               fu_cv_sys_stat_statvfs=yes,
3735                               fu_cv_sys_stat_statvfs=no)])
3736   if test $fu_cv_sys_stat_statvfs = yes; then
3737     space=yes
3738     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3739   fi
3742 if test $space = no; then
3743   # DEC Alpha running OSF/1
3744   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3745   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3746   [AC_TRY_RUN([
3747 #include <sys/param.h>
3748 #include <sys/types.h>
3749 #include <sys/mount.h>
3750   main ()
3751   {
3752     struct statfs fsd;
3753     fsd.f_fsize = 0;
3754     exit (statfs (".", &fsd, sizeof (struct statfs)));
3755   }],
3756   fu_cv_sys_stat_statfs3_osf1=yes,
3757   fu_cv_sys_stat_statfs3_osf1=no,
3758   fu_cv_sys_stat_statfs3_osf1=no)])
3759   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3760   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3761     space=yes
3762     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3763   fi
3766 if test $space = no; then
3767 # AIX
3768   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3769 member (AIX, 4.3BSD)])
3770   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3771   [AC_TRY_RUN([
3772 #ifdef HAVE_SYS_PARAM_H
3773 #include <sys/param.h>
3774 #endif
3775 #ifdef HAVE_SYS_MOUNT_H
3776 #include <sys/mount.h>
3777 #endif
3778 #ifdef HAVE_SYS_VFS_H
3779 #include <sys/vfs.h>
3780 #endif
3781   main ()
3782   {
3783   struct statfs fsd;
3784   fsd.f_bsize = 0;
3785   exit (statfs (".", &fsd));
3786   }],
3787   fu_cv_sys_stat_statfs2_bsize=yes,
3788   fu_cv_sys_stat_statfs2_bsize=no,
3789   fu_cv_sys_stat_statfs2_bsize=no)])
3790   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3791   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3792     space=yes
3793     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3794   fi
3797 if test $space = no; then
3798 # SVR3
3799   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3800   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3801   [AC_TRY_RUN([#include <sys/types.h>
3802 #include <sys/statfs.h>
3803   main ()
3804   {
3805   struct statfs fsd;
3806   exit (statfs (".", &fsd, sizeof fsd, 0));
3807   }],
3808     fu_cv_sys_stat_statfs4=yes,
3809     fu_cv_sys_stat_statfs4=no,
3810     fu_cv_sys_stat_statfs4=no)])
3811   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3812   if test $fu_cv_sys_stat_statfs4 = yes; then
3813     space=yes
3814     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3815   fi
3818 if test $space = no; then
3819 # 4.4BSD and NetBSD
3820   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3821 member (4.4BSD and NetBSD)])
3822   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3823   [AC_TRY_RUN([#include <sys/types.h>
3824 #ifdef HAVE_SYS_PARAM_H
3825 #include <sys/param.h>
3826 #endif
3827 #ifdef HAVE_SYS_MOUNT_H
3828 #include <sys/mount.h>
3829 #endif
3830   main ()
3831   {
3832   struct statfs fsd;
3833   fsd.f_fsize = 0;
3834   exit (statfs (".", &fsd));
3835   }],
3836   fu_cv_sys_stat_statfs2_fsize=yes,
3837   fu_cv_sys_stat_statfs2_fsize=no,
3838   fu_cv_sys_stat_statfs2_fsize=no)])
3839   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3840   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3841     space=yes
3842         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3843   fi
3846 if test $space = no; then
3847   # Ultrix
3848   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3849   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3850   [AC_TRY_RUN([#include <sys/types.h>
3851 #ifdef HAVE_SYS_PARAM_H
3852 #include <sys/param.h>
3853 #endif
3854 #ifdef HAVE_SYS_MOUNT_H
3855 #include <sys/mount.h>
3856 #endif
3857 #ifdef HAVE_SYS_FS_TYPES_H
3858 #include <sys/fs_types.h>
3859 #endif
3860   main ()
3861   {
3862   struct fs_data fsd;
3863   /* Ultrix's statfs returns 1 for success,
3864      0 for not mounted, -1 for failure.  */
3865   exit (statfs (".", &fsd) != 1);
3866   }],
3867   fu_cv_sys_stat_fs_data=yes,
3868   fu_cv_sys_stat_fs_data=no,
3869   fu_cv_sys_stat_fs_data=no)])
3870   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3871   if test $fu_cv_sys_stat_fs_data = yes; then
3872     space=yes
3873     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3874   fi
3878 # As a gating factor for large file support, in order to
3879 # use <4GB files we must have the following minimal support
3880 # available.
3881 # long long, and a 64 bit off_t or off64_t.
3882 # If we don't have all of these then disable large
3883 # file support.
3885 AC_MSG_CHECKING([if large file support can be enabled])
3886 AC_TRY_COMPILE([
3887 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3888 #include <sys/types.h>
3889 #else
3890 __COMPILE_ERROR_
3891 #endif
3893 [int i],
3894 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3895 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3896         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3898 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3900 AC_ARG_WITH(spinlocks, 
3901 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3902 if test "x$with_spinlocks" = "xyes"; then
3903     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3905     case "$host_cpu" in
3906         sparc)
3907             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3908             ;;
3910         i386|i486|i586|i686)
3911             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3912             ;;
3914         mips)
3915             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3916             ;;
3918         powerpc)
3919             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3920             ;;
3921     esac
3924 #################################################
3925 # check for ACL support
3927 AC_MSG_CHECKING(whether to support ACLs)
3928 AC_ARG_WITH(acl-support,
3929 [  --with-acl-support      Include ACL support (default=no)],
3930 [ case "$withval" in
3931   yes)
3933         case "$host_os" in
3934         *sysv5*)
3935                 AC_MSG_RESULT(Using UnixWare ACLs)
3936                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3937                 ;;
3938         *solaris*)
3939                 AC_MSG_RESULT(Using solaris ACLs)
3940                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3941                 ;;
3942         *hpux*)
3943                 AC_MSG_RESULT(Using HPUX ACLs)
3944                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3945                 ;;
3946         *irix*)
3947                 AC_MSG_RESULT(Using IRIX ACLs)
3948                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3949                 ;;
3950         *aix*)
3951                 AC_MSG_RESULT(Using AIX ACLs)
3952                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3953                 ;;
3954         *osf*)
3955                 AC_MSG_RESULT(Using Tru64 ACLs)
3956                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3957                 ACL_LIBS="$ACL_LIBS -lpacl"
3958                 ;;
3959         *freebsd5*)
3960                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3961                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3962                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3963                 ;;
3964         *linux*)
3965                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3966                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3967                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3968                 acl_LIBS=$LIBS
3969                 LIBS="$LIBS -lacl"
3970                 AC_TRY_LINK([#include <sys/types.h>
3971 #include <sys/acl.h>],
3972 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3973 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3974                 LIBS=$acl_LIBS])
3975                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3976                                 AC_MSG_RESULT(Using posix ACLs)
3977                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3978                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3979                                 acl_LIBS=$LIBS
3980                                 LIBS="$LIBS -lacl"
3981                                 AC_TRY_LINK([#include <sys/types.h>
3982 #include <sys/acl.h>],
3983 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3984 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3985                                 LIBS=$acl_LIBS])
3986                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3987                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3988                                 fi
3989                         fi
3990             ;;
3991          *)
3992                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3993                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3994                 acl_LIBS=$LIBS
3995                 LIBS="$LIBS -lacl"
3996                 AC_TRY_LINK([#include <sys/types.h>
3997 #include <sys/acl.h>],
3998 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3999 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4000                 LIBS=$acl_LIBS])
4001                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4002                                 AC_MSG_RESULT(Using posix ACLs)
4003                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4004                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4005                                 acl_LIBS=$LIBS
4006                                 LIBS="$LIBS -lacl"
4007                                 AC_TRY_LINK([#include <sys/types.h>
4008 #include <sys/acl.h>],
4009 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4010 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4011                                 LIBS=$acl_LIBS])
4012                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4013                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4014                                 fi
4015                         fi
4016             ;;
4017         esac
4018         ;;
4019   *)
4020     AC_MSG_RESULT(no)
4021     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4022     ;;
4023   esac ],
4024   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4025   AC_MSG_RESULT(no)
4028 #################################################
4029 # check for sendfile support
4031 with_sendfile_support=yes
4032 AC_MSG_CHECKING(whether to check to support sendfile)
4033 AC_ARG_WITH(sendfile-support,
4034 [  --with-sendfile-support Check for sendfile support (default=yes)],
4035 [ case "$withval" in
4036   yes)
4038         AC_MSG_RESULT(yes);
4040         case "$host_os" in
4041         *linux*)
4042                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4043                 AC_TRY_LINK([#include <sys/sendfile.h>],
4045 int tofd, fromfd;
4046 off64_t offset;
4047 size_t total;
4048 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4050 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4052                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4053                 AC_TRY_LINK([#include <sys/sendfile.h>],
4055 int tofd, fromfd;
4056 off_t offset;
4057 size_t total;
4058 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4060 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4062 # Try and cope with broken Linux sendfile....
4063                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4064                 AC_TRY_LINK([\
4065 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4066 #undef _FILE_OFFSET_BITS
4067 #endif
4068 #include <sys/sendfile.h>],
4070 int tofd, fromfd;
4071 off_t offset;
4072 size_t total;
4073 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4075 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4077         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4078                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4079                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4080                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4081         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4082                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4083                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4084                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4085         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4086                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4087                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4088         else
4089                 AC_MSG_RESULT(no);
4090         fi
4092         ;;
4093         *freebsd* | *DragonFly* )
4094                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4095                 AC_TRY_LINK([\
4096 #include <sys/types.h>
4097 #include <unistd.h>
4098 #include <sys/socket.h>
4099 #include <sys/uio.h>],
4101         int fromfd, tofd, ret, total=0;
4102         off_t offset, nwritten;
4103         struct sf_hdtr hdr;
4104         struct iovec hdtrl;
4105         hdr.headers = &hdtrl;
4106         hdr.hdr_cnt = 1;
4107         hdr.trailers = NULL;
4108         hdr.trl_cnt = 0;
4109         hdtrl.iov_base = NULL;
4110         hdtrl.iov_len = 0;
4111         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4113 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4115         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4116                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4117                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4118                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4119         else
4120                 AC_MSG_RESULT(no);
4121         fi
4122         ;;
4124         *hpux*)
4125                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4126                 AC_TRY_LINK([\
4127 #include <sys/socket.h>
4128 #include <sys/uio.h>],
4130         int fromfd, tofd;
4131         size_t total=0;
4132         struct iovec hdtrl[2];
4133         ssize_t nwritten;
4134         off64_t offset;
4136         hdtrl[0].iov_base = 0;
4137         hdtrl[0].iov_len = 0;
4139         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4141 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4142         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4143                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4144                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4145                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4146         else
4147                 AC_MSG_RESULT(no);
4148         fi
4150                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4151                 AC_TRY_LINK([\
4152 #include <sys/socket.h>
4153 #include <sys/uio.h>],
4155         int fromfd, tofd;
4156         size_t total=0;
4157         struct iovec hdtrl[2];
4158         ssize_t nwritten;
4159         off_t offset;
4161         hdtrl[0].iov_base = 0;
4162         hdtrl[0].iov_len = 0;
4164         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4166 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4167         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4168                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4169                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4170                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4171         else
4172                 AC_MSG_RESULT(no);
4173         fi
4174         ;;
4176         *solaris*)
4177                 AC_CHECK_LIB(sendfile,sendfilev)
4178                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4179                 AC_TRY_LINK([\
4180 #include <sys/sendfile.h>],
4182         int sfvcnt;
4183         size_t xferred;
4184         struct sendfilevec vec[2];
4185         ssize_t nwritten;
4186         int tofd;
4188         sfvcnt = 2;
4190         vec[0].sfv_fd = SFV_FD_SELF;
4191         vec[0].sfv_flag = 0;
4192         vec[0].sfv_off = 0;
4193         vec[0].sfv_len = 0;
4195         vec[1].sfv_fd = 0;
4196         vec[1].sfv_flag = 0;
4197         vec[1].sfv_off = 0;
4198         vec[1].sfv_len = 0;
4199         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4201 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4203         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4204                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4205                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4206                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4207         else
4208                 AC_MSG_RESULT(no);
4209         fi
4211                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4212                 AC_TRY_LINK([\
4213 #include <sys/sendfile.h>],
4215         int sfvcnt;
4216         size_t xferred;
4217         struct sendfilevec vec[2];
4218         ssize_t nwritten;
4219         int tofd;
4221         sfvcnt = 2;
4223         vec[0].sfv_fd = SFV_FD_SELF;
4224         vec[0].sfv_flag = 0;
4225         vec[0].sfv_off = 0;
4226         vec[0].sfv_len = 0;
4228         vec[1].sfv_fd = 0;
4229         vec[1].sfv_flag = 0;
4230         vec[1].sfv_off = 0;
4231         vec[1].sfv_len = 0;
4232         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4234 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4236         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4237                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4238                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4239                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4240         else
4241                 AC_MSG_RESULT(no);
4242         fi
4243         ;;
4245         *)
4246         ;;
4247         esac
4248         ;;
4249   *)
4250     AC_MSG_RESULT(no)
4251     ;;
4252   esac ],
4253   AC_MSG_RESULT(yes)
4257 #################################################
4258 # Check whether winbind is supported on this platform.  If so we need to
4259 # build and install client programs, sbin programs and shared libraries
4261 AC_MSG_CHECKING(whether to build winbind)
4263 # Initially, the value of $host_os decides whether winbind is supported
4265 HAVE_WINBIND=yes
4267 # Define the winbind shared library name and any specific linker flags
4268 # it needs to be built with.
4270 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4271 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4272 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4274 case "$host_os" in
4275         *linux*)
4276                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4277                 ;;
4278         *freebsd5*)
4279                 # FreeBSD winbind client is implemented as a wrapper around
4280                 # the Linux version.
4281                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4282                     nsswitch/winbind_nss_linux.o"
4283                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4284                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4285                 ;;
4286         *irix*)
4287                 # IRIX has differently named shared libraries
4288                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4289                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4290                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4291                 ;;
4292         *solaris*)
4293                 # Solaris winbind client is implemented as a wrapper around
4294                 # the Linux version.
4295                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4296                     nsswitch/winbind_nss_linux.o"
4297                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4298                 ;;
4299         *hpux11*)
4300                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4301                 ;;
4302         *aix*)
4303                 # AIX has even differently named shared libraries.  No
4304                 # WINS support has been implemented yet.
4305                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4306                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4307                 WINBIND_NSS="nsswitch/WINBIND"
4308                 WINBIND_WINS_NSS=""
4309                 ;;
4310         *)
4311                 HAVE_WINBIND=no
4312                 winbind_no_reason=", unsupported on $host_os"
4313                 ;;
4314 esac
4316 AC_SUBST(WINBIND_NSS)
4317 AC_SUBST(WINBIND_WINS_NSS)
4318 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4319 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4320 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4322 # Check the setting of --with-winbind
4324 AC_ARG_WITH(winbind,
4325 [  --with-winbind          Build winbind (default, if supported by OS)],
4327   case "$withval" in
4328         yes)
4329                 HAVE_WINBIND=yes
4330                 ;;
4331         no)
4332                 HAVE_WINBIND=no
4333                 winbind_reason=""
4334                 ;;
4335   esac ],
4338 # We need unix domain sockets for winbind
4340 if test x"$HAVE_WINBIND" = x"yes"; then
4341         if test x"$samba_cv_unixsocket" = x"no"; then
4342                 winbind_no_reason=", no unix domain socket support on $host_os"
4343                 HAVE_WINBIND=no
4344         fi
4347 # Display test results
4349 if test x"$HAVE_WINBIND" = x"yes"; then
4350         AC_MSG_RESULT(yes)
4351         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4353         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4354         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4355         if test $BLDSHARED = true; then
4356                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4358                 if test x"$with_pam" = x"yes"; then
4359                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4360                 fi
4361         fi
4362 else
4363         AC_MSG_RESULT(no$winbind_no_reason)
4366 # Solaris has some extra fields in struct passwd that need to be
4367 # initialised otherwise nscd crashes.  
4369 AC_CHECK_MEMBER(struct passwd.pw_comment,
4370                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4371                 [#include <pwd.h>])
4373 AC_CHECK_MEMBER(struct passwd.pw_age,
4374                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4375                 [#include <pwd.h>])
4377 # AIX 4.3.x and 5.1 do not have as many members in
4378 # struct secmethod_table as AIX 5.2
4379 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
4380        [#include <usersec.h>])
4381 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
4382        [#include <usersec.h>])
4385 #################################################
4386 # Check to see if we should use the included popt 
4388 AC_ARG_WITH(included-popt,
4389 [  --with-included-popt    use bundled popt library, not from system],
4391   case "$withval" in
4392         yes)
4393                 INCLUDED_POPT=yes
4394                 ;;
4395         no)
4396                 INCLUDED_POPT=no
4397                 ;;
4398   esac ],
4400 if test x"$INCLUDED_POPT" != x"yes"; then
4401     AC_CHECK_LIB(popt, poptGetContext,
4402                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4405 AC_MSG_CHECKING(whether to use included popt)
4406 if test x"$INCLUDED_POPT" = x"yes"; then
4407     AC_MSG_RESULT(yes)
4408     BUILD_POPT='$(POPT_OBJS)'
4409         POPTLIBS='$(POPT_OBJS)'
4410     FLAGS1="-I$srcdir/popt"
4411 else
4412     AC_MSG_RESULT(no)
4413         BUILD_POPT=""
4414     POPTLIBS="-lpopt"
4416 AC_SUBST(BUILD_POPT)
4417 AC_SUBST(POPTLIBS)
4418 AC_SUBST(FLAGS1)
4420 #################################################
4421 # Check if the user wants Python
4423 # At the moment, you can use this to set which Python binary to link
4424 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4425 # though they can coexist in different directories.)  In the future
4426 # this might make the Python stuff be built by default.
4428 # Defaulting python breaks the clean target if python isn't installed
4430 PYTHON=
4432 AC_ARG_WITH(python,
4433 [  --with-python=PYTHONNAME  build Python libraries],
4434 [ case "${withval-python}" in
4435   yes)
4436         PYTHON=python
4437         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4438         ;;
4439   no)
4440         PYTHON=
4441         ;;
4442   *)
4443         PYTHON=${withval-python}
4444         ;;
4445   esac ])
4446 AC_SUBST(PYTHON)
4448 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4450         eval MODULE_DEFAULT_$i=STATIC
4451 done
4453 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4455         dnl Fall back to static if we cannot build shared libraries
4456         eval MODULE_DEFAULT_$i=STATIC
4458         if test $BLDSHARED = true; then
4459                 eval MODULE_DEFAULT_$i=SHARED
4460         fi
4461 done
4463 dnl Always built these modules static
4464 MODULE_pdb_guest=STATIC
4465 MODULE_rpc_spoolss=STATIC
4466 MODULE_rpc_srv=STATIC
4467 MODULE_idmap_tdb=STATIC
4469 AC_ARG_WITH(static-modules,
4470 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4471 [ if test $withval; then
4472         for i in `echo $withval | sed -e's/,/ /g'`
4473         do
4474                 eval MODULE_$i=STATIC
4475         done
4476 fi ])
4478 AC_ARG_WITH(shared-modules,
4479 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4480 [ if test $withval; then
4481         for i in `echo $withval | sed -e's/,/ /g'`
4482         do
4483                         eval MODULE_$i=SHARED
4484         done
4485 fi ])
4487 ###########################################################################
4488 ## contributed pdb_modules
4490 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4491                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4492 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4493                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4494 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4495                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4497 ## end of contributed pdb_modules
4498 ###########################################################################
4500 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4501                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4502 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4503 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4504 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4505 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4507 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4508 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4509 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4510 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4511 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4512 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4513 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4514 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4515 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4516 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4517 SMB_SUBSYSTEM(RPC,smbd/server.o)
4519 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4520 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4521 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/idmap_rid.$SHLIBEXT", IDMAP)
4522 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4524 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4525 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4526 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4527 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4528 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4530 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4531 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4532 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4533 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4534 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4535 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4536 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4537 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4539 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4540 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4541 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4542 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
4543 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4544 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4545 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4546 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4547 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4548 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4549 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4550 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
4551 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4553 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4555 #################################################
4556 # do extra things if we are running insure
4558 if test "${ac_cv_prog_CC}" = "insure"; then
4559         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4562 #################################################
4563 # Display summary of libraries detected
4565 AC_MSG_RESULT([Using libraries:])
4566 AC_MSG_RESULT([    LIBS = $LIBS])
4567 if test x"$with_ads_support" != x"no"; then
4568    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4570 if test x"$with_ldap_support" != x"no"; then
4571    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4573 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4575 #################################################
4576 # final configure stuff
4578 AC_MSG_CHECKING([configure summary])
4579 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4580            AC_MSG_RESULT(yes),
4581            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4582            AC_MSG_WARN([cannot run when cross-compiling]))
4584 builddir=`pwd`
4585 AC_SUBST(builddir)
4587 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4588 LIB_REMOVE_USR_LIB(LDFLAGS)
4589 LIB_REMOVE_USR_LIB(LIBS)
4591 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4592 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4593 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4595 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4597 #################################################
4598 # Print very concise instructions on building/use
4599 if test "x$enable_dmalloc" = xyes
4600 then
4601         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4602         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])