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