This is an intermediate commit ... we check for three different charsets
[Samba/gbeck.git] / source3 / configure.in
blob16efcdec1784a1029879c0e48bfa761ba175969d
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 AC_ARG_WITH(fhs, 
18 [  --with-fhs              Use FHS-compliant paths (default=no)],
19     configdir="${sysconfdir}/samba"
20     lockdir="\${VARDIR}/cache/samba"
21     piddir="\${VARDIR}/run/samba"
22     logfilebase="\${VARDIR}/log/samba"
23     privatedir="\${CONFIGDIR}/private"
24     libdir="\${prefix}/lib/samba"
25     swatdir="\${DATADIR}/samba/swat",
26     configdir="\${LIBDIR}"
27     logfilebase="\${VARDIR}"
28     lockdir="\${VARDIR}/locks"
29     piddir="\${VARDIR}/locks"
30     privatedir="\${prefix}/private"
31     swatdir="\${prefix}/swat")
33 #################################################
34 # set private directory location
35 AC_ARG_WITH(privatedir,
36 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
37 [ case "$withval" in
38   yes|no)
39   #
40   # Just in case anybody calls it without argument
41   #
42     AC_MSG_WARN([--with-privatedir called without argument - will use default])
43   ;;
44   * )
45     privatedir="$withval"
46     ;;
47   esac])
49 #################################################
50 # set lock directory location
51 AC_ARG_WITH(lockdir,
52 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
53 [ case "$withval" in
54   yes|no)
55   #
56   # Just in case anybody calls it without argument
57   #
58     AC_MSG_WARN([--with-lockdir called without argument - will use default])
59   ;;
60   * )
61     lockdir="$withval"
62     ;;
63   esac])
65 #################################################
66 # set pid directory location
67 AC_ARG_WITH(piddir,
68 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
69 [ case "$withval" in
70   yes|no)
71   #
72   # Just in case anybody calls it without argument
73   #
74     AC_MSG_WARN([--with-piddir called without argument - will use default])
75   ;;
76   * )
77     piddir="$withval"
78     ;;
79   esac])
81 #################################################
82 # set SWAT directory location
83 AC_ARG_WITH(swatdir,
84 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
85 [ case "$withval" in
86   yes|no)
87   #
88   # Just in case anybody does it
89   #
90     AC_MSG_WARN([--with-swatdir called without argument - will use default])
91   ;;
92   * )
93     swatdir="$withval"
94     ;;
95   esac])
97 #################################################
98 # set configuration directory location
99 AC_ARG_WITH(configdir,
100 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
101 [ case "$withval" in
102   yes|no)
103   #
104   # Just in case anybody does it
105   #
106     AC_MSG_WARN([--with-configdir called without argument - will use default])
107   ;;
108   * )
109     configdir="$withval"
110     ;;
111   esac])
113 #################################################
114 # set log directory location
115 AC_ARG_WITH(logfilebase,
116 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
117 [ case "$withval" in
118   yes|no)
119   #
120   # Just in case anybody does it
121   #
122     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
123   ;;
124   * )
125     logfilebase="$withval"
126     ;;
127   esac])
129 AC_SUBST(configdir)
130 AC_SUBST(lockdir)
131 AC_SUBST(piddir)
132 AC_SUBST(logfilebase)
133 AC_SUBST(privatedir)
134 AC_SUBST(swatdir)
135 AC_SUBST(bindir)
136 AC_SUBST(sbindir)
138 dnl Unique-to-Samba variables we'll be playing with.
139 AC_SUBST(SHELL)
140 AC_SUBST(LDSHFLAGS)
141 AC_SUBST(SONAMEFLAG)
142 AC_SUBST(SHLD)
143 AC_SUBST(HOST_OS)
144 AC_SUBST(PICFLAG)
145 AC_SUBST(PICSUFFIX)
146 AC_SUBST(POBAD_CC)
147 AC_SUBST(SHLIBEXT)
148 AC_SUBST(INSTALLCLIENTCMD_SH)
149 AC_SUBST(INSTALLCLIENTCMD_A)
150 AC_SUBST(LIBSMBCLIENT_SHARED)
151 AC_SUBST(LIBSMBCLIENT)
152 AC_SUBST(PRINTLIBS)
153 AC_SUBST(AUTHLIBS)
154 AC_SUBST(ACLLIBS)
155 AC_SUBST(PASSDBLIBS)
156 AC_SUBST(IDMAP_LIBS)
157 AC_SUBST(KRB5_LIBS)
158 AC_SUBST(LDAP_LIBS)
159 AC_SUBST(SHLIB_PROGS)
160 AC_SUBST(SMBWRAPPER)
161 AC_SUBST(EXTRA_BIN_PROGS)
162 AC_SUBST(EXTRA_SBIN_PROGS)
163 AC_SUBST(EXTRA_ALL_TARGETS)
165 AC_ARG_ENABLE(debug, 
166 [  --enable-debug          Turn on compiler debugging information (default=no)],
167     [if eval "test x$enable_debug = xyes"; then
168         CFLAGS="${CFLAGS} -g"
169     fi])
171 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
172     [if eval "test x$enable_developer = xyes"; then
173         developer=yes
174         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
175     fi])
177 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
178     [if eval "test x$enable_krb5developer = xyes"; then
179         developer=yes
180         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
181     fi])
183 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
185 if test "x$enable_dmalloc" = xyes
186 then
187         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
188         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
189                   [Define to check invariants around some common functions])
190         LIBS="$LIBS -ldmalloc"  
193 dnl Checks for programs.
194 AC_PROG_CC
195 AC_PROG_INSTALL
196 AC_PROG_AWK
197 AC_PATH_PROG(PERL, perl)
199 # compile with optimization and without debugging by default, but
200 # allow people to set their own preference.
201 if test "x$CFLAGS" = x
202 then
203   CFLAGS="-O ${CFLAGS}"
206 dnl Check if we use GNU ld
207 LD=ld
208 AC_PROG_LD_GNU
210 dnl needed before AC_TRY_COMPILE
211 AC_ISC_POSIX
213 dnl look for executable suffix
214 AC_EXEEXT
216 dnl Check if C compiler understands -c and -o at the same time
217 AC_PROG_CC_C_O
218 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
219       BROKEN_CC=
220 else
221       BROKEN_CC=#
223 AC_SUBST(BROKEN_CC)
225 dnl Check if the C compiler understands -Werror
226 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
227  AC_TRY_RUN_STRICT([
228   int main(void)
229   {
230         return 0;
231   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
232   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
233 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
234    Werror_FLAGS="-Werror"
235 else 
236 dnl Check if the C compiler understands -w2
237 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
238  AC_TRY_RUN_STRICT([
239   int main(void)
240   {
241         return 0;
242   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
243   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
244 if test x"$samba_cv_HAVE_w2" = x"yes"; then
245    Werror_FLAGS="-w2"
249 dnl Check if the C compiler understands volatile (it should, being ANSI).
250 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
251     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
252         samba_cv_volatile=yes,samba_cv_volatile=no)])
253 if test x"$samba_cv_volatile" = x"yes"; then
254    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
257 UNAME_S=`uname -s`
258 AC_MSG_CHECKING(uname -s)
259 AC_MSG_RESULT(${UNAME_S})
261 UNAME_R=`uname -r`
262 AC_MSG_CHECKING(uname -r)
263 AC_MSG_RESULT(${UNAME_R})
265 UNAME_M=`uname -m`
266 AC_MSG_CHECKING(uname -m)
267 AC_MSG_RESULT(${UNAME_M})
269 UNAME_P=`uname -p`
270 AC_MSG_CHECKING(uname -p)
271 AC_MSG_RESULT(${UNAME_P})
273 AC_CANONICAL_SYSTEM
275 dnl Add #include for broken IRIX header files
276   case "$host_os" in
277         *irix6*) AC_ADD_INCLUDE(<standards.h>)
278         ;;
279 esac
281 AC_VALIDATE_CACHE_SYSTEM_TYPE
283 DYNEXP=
285 dnl Add modules that have to be built by default here
286 dnl These have to be built static:
287 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_wks rpc_net rpc_dfs rpc_srv rpc_spoolss auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
289 dnl These are preferably build shared, and static if dlopen() is not available
290 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly"
292 if test "x$developer" = xyes; then
293    default_static_modules="$default_static_modules rpc_echo"
294    default_shared_modules="$default_shared_modules charset_weird"
298 # Config CPPFLAG settings for strange OS's that must be set
299 # before other tests.
301 case "$host_os" in
302 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
303     *hpux*)
304     
305       AC_PROG_CC_FLAG(Ae)
306       # mmap on HPUX is completely broken...
307       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
308       if test $ac_cv_prog_cc_Ae = yes; then
309         CPPFLAGS="$CPPFLAGS -Ae"
310       fi
312 # Defines needed for HPUX support.
313 # HPUX has bigcrypt but (sometimes?) doesn't use it for
314 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
316       case `uname -r` in
317                         *9*|*10*)
318                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
319                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
320                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
321                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
322                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
323                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
324                                 ;;
325                         *11*)
326                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
327                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
328                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
329                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
330                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
331                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
332                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
333                                 ;;
334       esac
335       DYNEXP="-Wl,-E"
336       ;;
339 # CRAY Unicos has broken const handling
340        *unicos*)
341           AC_MSG_RESULT([disabling const])
342           CPPFLAGS="$CPPFLAGS -Dconst="
343           ;;
344         
346 # AIX4.x doesn't even admit to having large
347 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
349     *aix4*)
350           AC_MSG_RESULT([enabling large file support])
351       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
352           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
353       ;;    
355 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
356 # to the existance of large files..
357 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
358 # recommendations on large file support, however it makes the
359 # compile work using gcc 2.7 and 2.8, whereas using the Sun
360 # recommendation makes the compile fail on gcc2.7. JRA.
362         *solaris*)
363                 case `uname -r` in
364                         5.0*|5.1*|5.2*|5.3*|5.5*)
365                                 AC_MSG_RESULT([no large file support])
366                                 ;;
367                         5.*)
368                         AC_MSG_RESULT([enabling large file support])
369                         if test "$ac_cv_prog_gcc" = yes; then
370                                 ${CC-cc} -v >conftest.c 2>&1
371                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
372                                 rm -fr conftest.c
373                                 case "$ac_cv_gcc_compiler_version_number" in
374                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
375                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
376                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
377                                                 ;;
378                                         *)
379                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
380                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
381                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
382                                                 ;;
383                                 esac
384                         else
385                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
386                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
387                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
388                         fi
389                         ;;
390                 esac
391                 ;;
393 # VOS may need to have POSIX support and System V compatibility enabled.
395     *vos*)
396     case "$CPPFLAGS" in
397           *-D_POSIX_C_SOURCE*)
398                 ;;
399           *)
400                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
401                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
402                 ;;
403     esac
404     case "$CPPFLAGS" in
405           *-D_SYSV*|*-D_SVID_SOURCE*)
406                 ;;
407           *)
408                 CPPFLAGS="$CPPFLAGS -D_SYSV"
409                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
410     esac
411     ;;
413 # Tests needed for SINIX large file support.
415     *sysv4*)
416       if test $host = mips-sni-sysv4 ; then
417         AC_MSG_CHECKING([for LFS support])
418         old_CPPFLAGS="$CPPFLAGS"
419         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
420         AC_TRY_RUN([
421 #include <unistd.h>
422 main () {
423 #if _LFS64_LARGEFILE == 1
424 exit(0);
425 #else
426 exit(1);
427 #endif
428 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
429         CPPFLAGS="$old_CPPFLAGS"
430         if test x$SINIX_LFS_SUPPORT = xyes ; then
431           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
432                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
433           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
434           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
435           LIBS="`getconf LFS64_LIBS` $LIBS"
436         fi
437       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
438       fi
439     ;;
441 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
443     *linux*)
444         AC_MSG_CHECKING([for LFS support])
445         old_CPPFLAGS="$CPPFLAGS"
446         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
447        AC_TRY_RUN([
448 #include <unistd.h>
449 #include <sys/utsname.h>
450 main() {
451 #if _LFS64_LARGEFILE == 1
452        struct utsname uts;
453        char *release;
454        int major, minor;
456        /* Ensure this is glibc 2.2 or higher */
457 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
458        int libc_major = __GLIBC__;
459        int libc_minor = __GLIBC_MINOR__;
461        if (libc_major < 2)
462               exit(1);
463        if (libc_minor < 2)
464               exit(1);
465 #endif
467        /* Ensure this is kernel 2.4 or higher */
469        uname(&uts);
470        release = uts.release;
471        major = atoi(strsep(&release, "."));
472        minor = atoi(strsep(&release, "."));
474        if (major > 2 || (major == 2 && minor > 3))
475                exit(0);
476        exit(1);
477 #else
478        exit(1);
479 #endif
481 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
482         CPPFLAGS="$old_CPPFLAGS"
483         if test x$LINUX_LFS_SUPPORT = xyes ; then
484           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
485                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
486           AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
487           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
488         fi
489        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
490                 ;;
492     *hurd*)
493         AC_MSG_CHECKING([for LFS support])
494         old_CPPFLAGS="$CPPFLAGS"
495         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
496         AC_TRY_RUN([
497 #include <unistd.h>
498 main () {
499 #if _LFS64_LARGEFILE == 1
500 exit(0);
501 #else
502 exit(1);
503 #endif
504 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
505         CPPFLAGS="$old_CPPFLAGS"
506         if test x$GLIBC_LFS_SUPPORT = xyes ; then
507           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
508                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
509           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
510         fi
511       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
512     ;;
514 esac
516 AC_INLINE
517 AC_HEADER_STDC
518 AC_HEADER_DIRENT
519 AC_HEADER_TIME
520 AC_HEADER_SYS_WAIT
521 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
522 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
523 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
524 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
525 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
526 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
527 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
528 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h)
529 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
530 AC_CHECK_HEADERS(langinfo.h locale.h)
532 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
533 # subdirectory of headers.
534 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
537 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
538 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
540 case "$host_os" in
541     *hpux*)
542                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
543                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
544                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
545                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
546                 fi
547         ;;
548 esac
549 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
550 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
551 AC_CHECK_HEADERS(stropts.h poll.h)
552 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
553 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/cdefs.h glob.h)
555 # For experimental utmp support (lastlog on some BSD-like systems)
556 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
558 AC_CHECK_SIZEOF(int,cross)
559 AC_CHECK_SIZEOF(long,cross)
560 AC_CHECK_SIZEOF(short,cross)
562 AC_C_CONST
563 AC_C_INLINE
564 AC_C_BIGENDIAN
565 AC_C_CHAR_UNSIGNED
567 AC_TYPE_SIGNAL
568 AC_TYPE_UID_T
569 AC_TYPE_MODE_T
570 AC_TYPE_OFF_T
571 AC_TYPE_SIZE_T
572 AC_TYPE_PID_T
573 AC_STRUCT_ST_RDEV
574 AC_DIRENT_D_OFF
575 AC_CHECK_TYPE(ino_t,unsigned)
576 AC_CHECK_TYPE(loff_t,off_t)
577 AC_CHECK_TYPE(offset_t,loff_t)
578 AC_CHECK_TYPE(ssize_t, int)
579 AC_CHECK_TYPE(wchar_t, unsigned short)
581 ############################################
582 # for cups support we need libcups, and a handful of header files
584 AC_ARG_ENABLE(cups,
585 [  --enable-cups           Turn on CUPS support (default=auto)])
587 if test x$enable_cups != xno; then
588         AC_PATH_PROG(CUPS_CONFIG, cups-config)
590         if test "x$CUPS_CONFIG" != x; then
591                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
592                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
593                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
594                 PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
595         fi
598 ############################################
599 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
600 AC_SEARCH_LIBS(dlopen, [dl])
601 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
603 ############################################
604 # check if the compiler can do immediate structures
605 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
606     AC_TRY_COMPILE([
607 #include <stdio.h>],
609    typedef struct {unsigned x;} FOOBAR;
610    #define X_FOOBAR(x) ((FOOBAR) { x })
611    #define FOO_ONE X_FOOBAR(1)
612    FOOBAR f = FOO_ONE;   
613    static struct {
614         FOOBAR y; 
615         } f2[] = {
616                 {FOO_ONE}
617         };   
619         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
620 if test x"$samba_cv_immediate_structures" = x"yes"; then
621    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
624 ############################################
625 # check if the compiler can do immediate structures
626 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
627     AC_TRY_LINK([
628 #include <stdio.h>],
630                 if (0) {
631                    this_function_does_not_exist();
632                 } else {
633                   return 1;
634                 }
637         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
638 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
639    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
642 ############################################
643 # check for unix domain sockets
644 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
645     AC_TRY_COMPILE([
646 #include <sys/types.h>
647 #include <stdlib.h>
648 #include <stddef.h>
649 #include <sys/socket.h>
650 #include <sys/un.h>],
652   struct sockaddr_un sunaddr; 
653   sunaddr.sun_family = AF_UNIX;
655         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
656 if test x"$samba_cv_unixsocket" = x"yes"; then
657    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
661 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
662     AC_TRY_COMPILE([
663 #include <sys/types.h>
664 #if STDC_HEADERS
665 #include <stdlib.h>
666 #include <stddef.h>
667 #endif
668 #include <sys/socket.h>],[socklen_t i = 0],
669         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
670 if test x"$samba_cv_socklen_t" = x"yes"; then
671    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
674 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
675     AC_TRY_COMPILE([
676 #include <sys/types.h>
677 #if STDC_HEADERS
678 #include <stdlib.h>
679 #include <stddef.h>
680 #endif
681 #include <signal.h>],[sig_atomic_t i = 0],
682         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
683 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
684    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
687 # stupid headers have the functions but no declaration. grrrr.
688 AC_HAVE_DECL(errno, [#include <errno.h>])
689 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
690 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
691 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
692 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
693 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
694 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
696 # and glibc has setresuid under linux but the function does
697 # nothing until kernel 2.1.44! very dumb.
698 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
699     AC_TRY_RUN([#include <errno.h>
700 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
701         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
702 if test x"$samba_cv_have_setresuid" = x"yes"; then
703     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
706 # Do the same check for setresguid...
708 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
709     AC_TRY_RUN([#include <unistd.h>
710 #include <errno.h>
711 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
712         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
713 if test x"$samba_cv_have_setresgid" = x"yes"; then
714     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
717 AC_FUNC_MEMCMP
719 ###############################################
720 # Readline included by default unless explicitly asked not to
721 test "${with_readline+set}" != "set" && with_readline=yes
723 # test for where we get readline() from
724 AC_MSG_CHECKING(whether to use readline)
725 AC_ARG_WITH(readline,
726 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
727 [  case "$with_readline" in
728   yes)
729     AC_MSG_RESULT(yes)
731     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
732     AC_CHECK_HEADERS(readline/history.h)
734     AC_CHECK_HEADERS(readline.h readline/readline.h,[
735       for termlib in ncurses curses termcap terminfo termlib tinfo; do
736        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
737       done
738       AC_CHECK_LIB(readline, rl_callback_handler_install,
739        [TERMLIBS="-lreadline $TERMLIBS"
740        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
741        break], [TERMLIBS=], $TERMLIBS)])
742     ;;
743   no)
744     AC_MSG_RESULT(no)
745     ;;
746   *)
747     AC_MSG_RESULT(yes)
749     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
750     # alternate readline path
751     _ldflags=${LDFLAGS}
752     _cppflags=${CPPFLAGS}
754     # Add additional search path
755     LDFLAGS="-L$with_readline/lib $LDFLAGS"
756     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
758     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
759     AC_CHECK_HEADERS(readline/history.h)
761     AC_CHECK_HEADERS(readline.h readline/readline.h,[
762       for termlib in ncurses curses termcap terminfo termlib; do
763        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
764       done
765       AC_CHECK_LIB(readline, rl_callback_handler_install,
766        [TERMLDFLAGS="-L$with_readline/lib"
767        TERMCPPFLAGS="-I$with_readline/include"
768        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
769        TERMLIBS="-lreadline $TERMLIBS"
770        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
771        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
773     LDFLAGS=$_ldflags
774     ;;
775   esac],
776   AC_MSG_RESULT(no)
778 AC_SUBST(TERMLIBS)
779 AC_SUBST(TERMLDFLAGS)
781 # The readline API changed slightly from readline3 to readline4, so
782 # code will generate warnings on one of them unless we have a few
783 # special cases.
784 AC_CHECK_LIB(readline, rl_completion_matches,
785              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
786                         [Do we have rl_completion_matches?])],
787              [],
788              [$TERMLIBS])
790 # The following test taken from the cvs sources
791 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
792 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
793 # libsocket.so which has a bad implementation of gethostbyname (it
794 # only looks in /etc/hosts), so we only look for -lsocket if we need
795 # it.
796 AC_CHECK_FUNCS(connect)
797 if test x"$ac_cv_func_connect" = x"no"; then
798     case "$LIBS" in
799     *-lnsl*) ;;
800     *) AC_CHECK_LIB(nsl_s, printf) ;;
801     esac
802     case "$LIBS" in
803     *-lnsl*) ;;
804     *) AC_CHECK_LIB(nsl, printf) ;;
805     esac
806     case "$LIBS" in
807     *-lsocket*) ;;
808     *) AC_CHECK_LIB(socket, connect) ;;
809     esac
810     case "$LIBS" in
811     *-linet*) ;;
812     *) AC_CHECK_LIB(inet, connect) ;;
813     esac
814     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
815     dnl has been cached.
816     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
817        test x"$ac_cv_lib_inet_connect" = x"yes"; then
818         # ac_cv_func_connect=yes
819         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
820         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
821     fi
824 ###############################################
825 # test for where we get yp_get_default_domain() from
826 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
827 AC_CHECK_FUNCS(yp_get_default_domain)
829 # Check if we have execl, if not we need to compile smbrun.
830 AC_CHECK_FUNCS(execl)
831 if test x"$ac_cv_func_execl" = x"no"; then
832     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
835 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
836 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
837 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
838 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
839 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
840 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
841 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
842 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
843 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
844 AC_CHECK_FUNCS(syslog vsyslog timegm)
845 AC_CHECK_FUNCS(setlocale nl_langinfo)
846 # setbuffer, shmget, shm_open are needed for smbtorture
847 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
849 # syscall() is needed for smbwrapper.
850 AC_CHECK_FUNCS(syscall)
852 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
853 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
854 AC_CHECK_FUNCS(__getcwd _getcwd)
855 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
856 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
857 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
858 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
859 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
860 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
861 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
862 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
863 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
864 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
865 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
870 case "$host_os" in
871     *linux*)
872        # glibc <= 2.3.2 has a broken getgrouplist
873        AC_TRY_RUN([
874 #include <unistd.h>
875 #include <sys/utsname.h>
876 main() {
877        /* glibc up to 2.3 has a broken getgrouplist */
878 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
879        int libc_major = __GLIBC__;
880        int libc_minor = __GLIBC_MINOR__;
882        if (libc_major < 2)
883               exit(1);
884        if ((libc_major == 2) && (libc_minor <= 3))
885               exit(1);
886 #endif
887        exit(0);
889 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
890        if test x"$linux_getgrouplist_ok" = x"yes"; then
891           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
892        fi
893        ;;
894     *)
895        AC_CHECK_FUNCS(getgrouplist)
896        ;;
897 esac
900 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
903 if test x$ac_cv_func_stat64 = xno ; then
904   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
905   AC_TRY_LINK([
906 #if defined(HAVE_UNISTD_H)
907 #include <unistd.h>
908 #endif
909 #include <sys/stat.h>
910 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
911   AC_MSG_RESULT([$ac_cv_func_stat64])
912   if test x$ac_cv_func_stat64 = xyes ; then
913     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
914   fi
917 if test x$ac_cv_func_lstat64 = xno ; then
918   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
919   AC_TRY_LINK([
920 #if defined(HAVE_UNISTD_H)
921 #include <unistd.h>
922 #endif
923 #include <sys/stat.h>
924 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
925   AC_MSG_RESULT([$ac_cv_func_lstat64])
926   if test x$ac_cv_func_lstat64 = xyes ; then
927     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
928   fi
931 if test x$ac_cv_func_fstat64 = xno ; then
932   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
933   AC_TRY_LINK([
934 #if defined(HAVE_UNISTD_H)
935 #include <unistd.h>
936 #endif
937 #include <sys/stat.h>
938 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
939   AC_MSG_RESULT([$ac_cv_func_fstat64])
940   if test x$ac_cv_func_fstat64 = xyes ; then
941     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
942   fi
945 #####################################
946 # we might need the resolv library on some systems
947 AC_CHECK_LIB(resolv, dn_expand)
950 # Check for the functions putprpwnam, set_auth_parameters,
951 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
952 # Needed for OSF1 and HPUX.
955 AC_LIBTESTFUNC(security, putprpwnam)
956 AC_LIBTESTFUNC(sec, putprpwnam)
958 AC_LIBTESTFUNC(security, set_auth_parameters)
959 AC_LIBTESTFUNC(sec, set_auth_parameters)
961 # UnixWare 7.x has its getspnam in -lgen
962 AC_LIBTESTFUNC(gen, getspnam)
964 AC_LIBTESTFUNC(security, getspnam)
965 AC_LIBTESTFUNC(sec, getspnam)
967 AC_LIBTESTFUNC(security, bigcrypt)
968 AC_LIBTESTFUNC(sec, bigcrypt)
970 AC_LIBTESTFUNC(security, getprpwnam)
971 AC_LIBTESTFUNC(sec, getprpwnam)
973 ############################################
974 # Check if we have libattr
975 AC_SEARCH_LIBS(getxattr, [attr])
976 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
977 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
978 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
979 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
980 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
982 # Assume non-shared by default and override below
983 BLDSHARED="false"
985 # these are the defaults, good for lots of systems
986 HOST_OS="$host_os"
987 LDSHFLAGS="-shared"
988 SONAMEFLAG="#"
989 SHLD="\${CC} \${CFLAGS}"
990 PICFLAG=""
991 PICSUFFIX="po"
992 POBAD_CC="#"
993 SHLIBEXT="so"
995 if test "$enable_shared" = "yes"; then
996   # this bit needs to be modified for each OS that is suported by
997   # smbwrapper. You need to specify how to created a shared library and
998   # how to compile C code to produce PIC object files
1000   AC_MSG_CHECKING([ability to build shared libraries])
1002   # and these are for particular systems
1003   case "$host_os" in
1004                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1005                         BLDSHARED="true"
1006                         LDSHFLAGS="-shared" 
1007                         DYNEXP="-Wl,--export-dynamic"
1008                         PICFLAG="-fPIC"
1009                         SONAMEFLAG="-Wl,-soname="
1010                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1011                         ;;
1012                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1013                         BLDSHARED="true"
1014                         LDSHFLAGS="-G"
1015                         SONAMEFLAG="-h "
1016                         if test "${GCC}" = "yes"; then
1017                                 PICFLAG="-fPIC"
1018                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1019                                         DYNEXP="-Wl,-E"
1020                                 fi
1021                         else
1022                                 PICFLAG="-KPIC"
1023                                 ## ${CFLAGS} added for building 64-bit shared 
1024                                 ## libs using Sun's Compiler
1025                                 LDSHFLAGS="-G \${CFLAGS}"
1026                                 POBAD_CC=""
1027                                 PICSUFFIX="po.o"
1028                         fi
1029                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1030                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1031                         ;;
1032                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1033                         BLDSHARED="true"
1034                         LDSHFLAGS="-G"
1035                         SONAMEFLAG="-Wl,-h,"
1036                         PICFLAG="-KPIC"   # Is this correct for SunOS
1037                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1038                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1039                         ;;
1040                 *netbsd* | *freebsd*)  BLDSHARED="true"
1041                         LDSHFLAGS="-shared"
1042                         DYNEXP="-Wl,--export-dynamic"
1043                         SONAMEFLAG="-Wl,-soname,"
1044                         PICFLAG="-fPIC -DPIC"
1045                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1046                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1047                         ;;
1048                 *openbsd*)  BLDSHARED="true"
1049                         LDSHFLAGS="-shared"
1050                         DYNEXP="-Wl,-Bdynamic"
1051                         SONAMEFLAG="-Wl,-soname,"
1052                         PICFLAG="-fPIC"
1053                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1054                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1055                         ;;
1056                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1057                         case "$host_os" in
1058                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1059                         ;;
1060                         esac
1061                         BLDSHARED="true"
1062                         LDSHFLAGS="-set_version sgi1.0 -shared"
1063                         SONAMEFLAG="-soname "
1064                         SHLD="\${LD}"
1065                         if test "${GCC}" = "yes"; then
1066                                 PICFLAG="-fPIC"
1067                         else 
1068                                 PICFLAG="-KPIC"
1069                         fi
1070                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1071                         ;;
1072                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1073                         BLDSHARED="true"
1074                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1075                         DYNEXP="-Wl,-brtl,-bexpall"
1076                         PICFLAG="-O2"
1077                         if test "${GCC}" != "yes"; then
1078                                 ## for funky AIX compiler using strncpy()
1079                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1080                         fi
1082                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1083                         ;;
1084                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1085                         SHLIBEXT="sl"
1086                         # Use special PIC flags for the native HP-UX compiler.
1087                         if test $ac_cv_prog_cc_Ae = yes; then
1088                                 BLDSHARED="true"
1089                                 SHLD="/usr/bin/ld"
1090                                 LDSHFLAGS="-B symbolic -b -z"
1091                                 SONAMEFLAG="+h "
1092                                 PICFLAG="+z"
1093                         fi
1094                         DYNEXP="-Wl,-E"
1095                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1096                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1097                         ;;
1098                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1099                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1100                         ;;
1101                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1102                         BLDSHARED="true"
1103                         LDSHFLAGS="-shared"
1104                         SONAMEFLAG="-Wl,-soname,"
1105                         PICFLAG="-fPIC"
1106                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1107                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1108                         ;;
1109                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1110                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1111                         ;;
1112                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1113                         BLDSHARED="true"
1114                         LDSHFLAGS="-shared"
1115                         SONAMEFLAG="-Wl,-soname,"
1116                         PICFLAG="-KPIC"
1117                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1118                         ;;
1119                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1120                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1121                         ;;
1122                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1123                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1124                         ;;
1125                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1126                         case "$host" in
1127                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1128                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1129                                         fi
1130                                         LDSHFLAGS="-G"
1131                                         DYNEXP="-Bexport"
1132                                 ;;
1133                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1134                         esac
1135                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1136                         ;;
1138                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1139                         if [ test "$GCC" != yes ]; then
1140                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1141                         fi
1142                         LDSHFLAGS="-G"
1143                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1144                         ;;
1145                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1146                         BLDSHARED="false"
1147                         LDSHFLAGS=""
1148                         ;;
1149                 *)
1150                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1151                         ;;
1152   esac
1153   AC_SUBST(DYNEXP)
1154   AC_MSG_RESULT($BLDSHARED)
1155   AC_MSG_CHECKING([linker flags for shared libraries])
1156   AC_MSG_RESULT([$LDSHFLAGS])
1157   AC_MSG_CHECKING([compiler flags for position-independent code])
1158   AC_MSG_RESULT([$PICFLAGS])
1161 #######################################################
1162 # test whether building a shared library actually works
1163 if test $BLDSHARED = true; then
1164 AC_CACHE_CHECK([whether building shared libraries actually works], 
1165                [ac_cv_shlib_works],[
1166    ac_cv_shlib_works=no
1167    # try building a trivial shared library
1168    if test "$PICSUFFIX" = "po"; then
1169      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1170        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1171        ac_cv_shlib_works=yes
1172    else
1173      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1174        mv shlib.$PICSUFFIX shlib.po &&
1175        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1176        ac_cv_shlib_works=yes
1177    fi
1178    rm -f "shlib.$SHLIBEXT" shlib.po
1180 if test $ac_cv_shlib_works = no; then
1181    BLDSHARED=false
1185 ################
1187 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1188 AC_TRY_RUN([#include <stdio.h>
1189 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1190 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1191 if test x"$samba_cv_have_longlong" = x"yes"; then
1192     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1196 # Check if the compiler supports the LL prefix on long long integers.
1197 # AIX needs this.
1199 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1200     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1201         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1202 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1203    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1206   
1207 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1208 AC_TRY_RUN([#include <stdio.h>
1209 #include <sys/stat.h>
1210 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1211 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1212 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1213     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1216 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1217 AC_TRY_RUN([
1218 #if defined(HAVE_UNISTD_H)
1219 #include <unistd.h>
1220 #endif
1221 #include <stdio.h>
1222 #include <sys/stat.h>
1223 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1224 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1225 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1226     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1229 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1230 AC_TRY_RUN([#include <stdio.h>
1231 #include <sys/stat.h>
1232 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1233 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1234 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1235     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1238 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1239 AC_TRY_RUN([
1240 #if defined(HAVE_UNISTD_H)
1241 #include <unistd.h>
1242 #endif
1243 #include <stdio.h>
1244 #include <sys/stat.h>
1245 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1246 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1247 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1248     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1251 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1252 AC_TRY_RUN([
1253 #if defined(HAVE_UNISTD_H)
1254 #include <unistd.h>
1255 #endif
1256 #include <stdio.h>
1257 #include <sys/stat.h>
1258 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1259 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1260 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1261     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1264 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1265 AC_TRY_COMPILE([
1266 #if defined(HAVE_UNISTD_H)
1267 #include <unistd.h>
1268 #endif
1269 #include <sys/types.h>
1270 #include <dirent.h>],
1271 [struct dirent64 de;],
1272 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1273 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1274     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1277 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1278 AC_TRY_RUN([
1279 #if defined(HAVE_UNISTD_H)
1280 #include <unistd.h>
1281 #endif
1282 #include <sys/types.h>
1283 main() { dev_t dev; int i = major(dev); return 0; }],
1284 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1285 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1286     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1289 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1290 AC_TRY_RUN([
1291 #if defined(HAVE_UNISTD_H)
1292 #include <unistd.h>
1293 #endif
1294 #include <sys/types.h>
1295 main() { dev_t dev; int i = minor(dev); return 0; }],
1296 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1297 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1298     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1301 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1302 AC_TRY_RUN([#include <stdio.h>
1303 main() { char c; c=250; exit((c > 0)?0:1); }],
1304 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1305 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1306     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1309 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1310 AC_TRY_COMPILE([#include <sys/types.h>
1311 #include <sys/socket.h>
1312 #include <netinet/in.h>],
1313 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1314 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1315 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1316     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1319 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1320 AC_TRY_COMPILE([#include <sys/types.h>
1321 #include <dirent.h>
1322 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1323 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1324 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1325     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1328 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1329 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1330 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1331 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1332     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1335 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1336 AC_TRY_RUN([
1337 #include <sys/time.h>
1338 #include <unistd.h>
1339 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1340            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1341 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1342     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1345 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1346 AC_TRY_LINK([#include <stdarg.h>
1347 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1348 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1349 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1350     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1353 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1354 AC_TRY_RUN([
1355 #include <sys/types.h>
1356 #include <stdarg.h>
1357 void foo(const char *format, ...) { 
1358        va_list ap;
1359        int len;
1360        char buf[5];
1362        va_start(ap, format);
1363        len = vsnprintf(buf, 0, format, ap);
1364        va_end(ap);
1365        if (len != 5) exit(1);
1367        va_start(ap, format);
1368        len = vsnprintf(0, 0, format, ap);
1369        va_end(ap);
1370        if (len != 5) exit(1);
1372        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1374        exit(0);
1376 main() { foo("hello"); }
1378 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1379 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1380     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1383 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1384 AC_TRY_RUN([#include <sys/types.h>
1385 #include <dirent.h>
1386 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1387 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1388 di->d_name[0] == 0) exit(0); exit(1);} ],
1389 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1390 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1391     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1394 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1395 AC_TRY_COMPILE([#include <sys/types.h>
1396 #include <utime.h>],
1397 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1398 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1399 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1400     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1403 ##############
1404 # Check utmp details, but only if our OS offers utmp.h
1405 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1406 dnl  utmp and utmpx come in many flavours
1407 dnl  We need to check for many of them
1408 dnl  But we don't need to do each and every one, because our code uses
1409 dnl  mostly just the utmp (not utmpx) fields.
1411 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1413 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1414 AC_TRY_COMPILE([#include <sys/types.h>
1415 #include <utmp.h>],
1416 [struct utmp ut;  ut.ut_name[0] = 'a';],
1417 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1418 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1419     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1420 fi 
1422 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1423 AC_TRY_COMPILE([#include <sys/types.h>
1424 #include <utmp.h>],
1425 [struct utmp ut;  ut.ut_user[0] = 'a';],
1426 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1427 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1428     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1429 fi 
1431 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1432 AC_TRY_COMPILE([#include <sys/types.h>
1433 #include <utmp.h>],
1434 [struct utmp ut;  ut.ut_id[0] = 'a';],
1435 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1436 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1437     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1438 fi 
1440 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1441 AC_TRY_COMPILE([#include <sys/types.h>
1442 #include <utmp.h>],
1443 [struct utmp ut;  ut.ut_host[0] = 'a';],
1444 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1445 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1446     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1447 fi 
1449 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1450 AC_TRY_COMPILE([#include <sys/types.h>
1451 #include <utmp.h>],
1452 [struct utmp ut;  time_t t; ut.ut_time = t;],
1453 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1454 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1455     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1456 fi 
1458 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1459 AC_TRY_COMPILE([#include <sys/types.h>
1460 #include <utmp.h>],
1461 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1462 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1463 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1464     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1465 fi 
1467 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1468 AC_TRY_COMPILE([#include <sys/types.h>
1469 #include <utmp.h>],
1470 [struct utmp ut;  ut.ut_type = 0;],
1471 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1472 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1473     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1474 fi 
1476 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1477 AC_TRY_COMPILE([#include <sys/types.h>
1478 #include <utmp.h>],
1479 [struct utmp ut;  ut.ut_pid = 0;],
1480 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1481 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1482     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1483 fi 
1485 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1486 AC_TRY_COMPILE([#include <sys/types.h>
1487 #include <utmp.h>],
1488 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1489 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1490 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1491     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1492 fi 
1494 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1495 AC_TRY_COMPILE([#include <sys/types.h>
1496 #include <utmp.h>],
1497 [struct utmp ut;  ut.ut_addr = 0;],
1498 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1499 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1500     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1501 fi 
1503 if test x$ac_cv_func_pututline = xyes ; then
1504   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1505   AC_TRY_COMPILE([#include <sys/types.h>
1506 #include <utmp.h>],
1507   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1508   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1509   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1510       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1511   fi
1514 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1515 AC_TRY_COMPILE([#include <sys/types.h>
1516 #include <utmpx.h>],
1517 [struct utmpx ux;  ux.ut_syslen = 0;],
1518 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1519 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1520     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1521 fi 
1524 # end utmp details
1527 ICONV_LOCATION=standard
1528 LOOK_DIRS="/usr /usr/local /sw"
1529 AC_ARG_WITH(libiconv,
1530 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1532   if test "$withval" = "no" ; then
1533     AC_MSG_ERROR(I won't take no for an answer)
1534   else
1535      if test "$withval" != "yes" ; then
1536         LOOK_DIRS="$withval $LOOK_DIRS"
1537      fi
1538   fi
1541 ICONV_FOUND="no"
1542 for i in $LOOK_DIRS ; do
1543     save_LIBS=$LIBS
1544     save_LDFLAGS=$LDFLAGS
1545     save_CPPFLAGS=$CPPFLAGS
1546     CPPFLAGS="-I$i/include"
1547     LDFLAGS="-L$i/lib"
1548     LIBS=
1549     export LDFLAGS LIBS CPPFLAGS
1550 dnl Try to find iconv(3)
1551     jm_ICONV($i)
1553     if test "$ICONV_FOUND" = yes; then
1554         LIB_ADD_DIR(LDFLAGS, "$i/lib")
1555         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1556         LIBS="$save_LIBS $LIBS"
1557         ICONV_LOCATION=$i
1558         export LDFLAGS LIBS CPPFLAGS
1559 dnl Now, check for a working iconv ... we want to do it here because
1560 dnl there might be a working iconv further down the list of LOOK_DIRS
1562         ############
1563         # check for iconv in libc
1564         ic_save_LIBS="$LIBS"
1565         LIBS="$LIBS -L$ICONV_LOCATION/lib"
1566         AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1567         AC_TRY_RUN([
1568 #include <$jm_cv_include>
1569 main(){
1570     iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1571     if (cd == 0 || cd == (iconv_t)-1) {
1572        cd = iconv_open("ISO-8859-1", "UCS-2LE");
1573        if (cd == 0 || cd == (iconv_t)-1) {
1574           cd = iconv_open("IBM850", "UCS-2LE"); /* Solaris has this */
1575           if (cd == 0 || cd == (iconv_t)-1) {
1576              return -1;
1577           }
1578        }
1579     }
1580     return 0;
1582         ],
1583         samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1584         LIBS="$ic_save_LIBS"
1585         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1586            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1587            break
1588         fi
1589 dnl We didn't find a working iconv, so keep going
1590     fi
1591 dnl We only need to clean these up here for the next pass through the loop
1592     CPPFLAGS=$save_CPPFLAGS
1593     LDFLAGS=$save_LDFLAGS
1594     LIBS=$save_LIBS
1595     export LDFLAGS LIBS CPPFLAGS
1596 done
1599 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1600     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1601     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1605 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1606 AC_TRY_RUN([
1607 #include <sys/types.h>
1608 #include <fcntl.h>
1609 #ifndef F_GETLEASE
1610 #define F_GETLEASE      1025
1611 #endif
1612 main() {
1613        int fd = open("/dev/null", O_RDONLY);
1614        return fcntl(fd, F_GETLEASE, 0) == -1;
1617 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1618 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1619     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1622 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1623 AC_TRY_RUN([
1624 #include <sys/types.h>
1625 #include <fcntl.h>
1626 #include <signal.h>
1627 #ifndef F_NOTIFY
1628 #define F_NOTIFY 1026
1629 #endif
1630 main() {
1631         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1634 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1635 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1636     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1639 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1640 AC_TRY_RUN([
1641 #include <sys/types.h>
1642 #include <fcntl.h>
1643 #include <signal.h>
1644 #include <sys/file.h>
1645 #ifndef LOCK_MAND
1646 #define LOCK_MAND       32
1647 #define LOCK_READ       64
1648 #endif
1649 main() {
1650         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1653 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1654 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1655     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1661 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1662 AC_TRY_COMPILE([#include <sys/types.h>
1663 #include <fcntl.h>],
1664 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1665 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1666 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1667     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1670 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1671 AC_TRY_RUN([#include <sys/types.h>
1672 #include <sys/capability.h>
1673 main() {
1674  cap_t cap;
1675  if ((cap = cap_get_proc()) == NULL)
1676    exit(1);
1677  cap->cap_effective |= CAP_NETWORK_MGT;
1678  cap->cap_inheritable |= CAP_NETWORK_MGT;
1679  cap_set_proc(cap);
1680  exit(0);
1683 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1684 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1685     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1689 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1690 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1693 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1694 AC_TRY_COMPILE([#include <sys/types.h>
1695 #if defined(HAVE_RPC_RPC_H)
1696 #include <rpc/rpc.h>
1697 #endif],
1698 [int16 testvar;],
1699 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1700 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1701     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1704 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1705 AC_TRY_COMPILE([#include <sys/types.h>
1706 #if defined(HAVE_RPC_RPC_H)
1707 #include <rpc/rpc.h>
1708 #endif],
1709 [uint16 testvar;],
1710 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1711 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1712     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1715 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1716 AC_TRY_COMPILE([#include <sys/types.h>
1717 #if defined(HAVE_RPC_RPC_H)
1718 #include <rpc/rpc.h>
1719 #endif],
1720 [int32 testvar;],
1721 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1722 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1723     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1726 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1727 AC_TRY_COMPILE([#include <sys/types.h>
1728 #if defined(HAVE_RPC_RPC_H)
1729 #include <rpc/rpc.h>
1730 #endif],
1731 [uint32 testvar;],
1732 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1733 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1734     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1738 dnl Some systems (SCO) have a problem including
1739 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1740 dnl as a #define in <prot.h> and as part of an enum
1741 dnl in <rpc/rpc.h>.
1744 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1745 AC_TRY_COMPILE([#include <sys/types.h>
1746 #ifdef HAVE_SYS_SECURITY_H
1747 #include <sys/security.h>
1748 #include <prot.h>
1749 #endif  /* HAVE_SYS_SECURITY_H */
1750 #if defined(HAVE_RPC_RPC_H)
1751 #include <rpc/rpc.h>
1752 #endif],
1753 [int testvar;],
1754 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1755 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1756     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1759 AC_MSG_CHECKING([for test routines])
1760 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1761            AC_MSG_RESULT(yes),
1762            AC_MSG_ERROR([cant find test code. Aborting config]),
1763            AC_MSG_WARN([cannot run when cross-compiling]))
1765 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1766 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1767            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1768 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1769     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1772 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1773 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1774            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1775            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1776            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1777 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1778 then
1779     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1782 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1783 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1784            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1785 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1786     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1789 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1790 SAVE_CPPFLAGS="$CPPFLAGS"
1791 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1792 AC_TRY_COMPILE([
1793 #define REPLACE_GETPASS 1
1794 #define NO_PROTO_H 1
1795 #define NO_CONFIG_H 1
1796 #define main dont_declare_main
1797 #include "${srcdir-.}/lib/getsmbpass.c"
1798 #undef main
1799 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1800 CPPFLAGS="$SAVE_CPPFLAGS"
1802 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1803         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1806 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1807 AC_TRY_RUN([
1808 #include <stdio.h>
1809 #include <sys/types.h>
1810 #include <netinet/in.h>
1811 #ifdef HAVE_ARPA_INET_H
1812 #include <arpa/inet.h>
1813 #endif
1814 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1815 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1816     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1817 exit(1);}],
1818            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1819 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1820     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1823 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1824 AC_TRY_RUN([#include <stdlib.h>
1825 #include <sys/types.h>
1826 #include <sys/stat.h>
1827 #include <unistd.h>
1828 main() { 
1829   struct stat st;
1830   char tpl[20]="/tmp/test.XXXXXX"; 
1831   int fd = mkstemp(tpl); 
1832   if (fd == -1) exit(1);
1833   unlink(tpl);
1834   if (fstat(fd, &st) != 0) exit(1);
1835   if ((st.st_mode & 0777) != 0600) exit(1);
1836   exit(0);
1838 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1839 samba_cv_HAVE_SECURE_MKSTEMP=no,
1840 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1841 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1842     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1845 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1846 AC_TRY_RUN([#include <unistd.h>
1847 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1848 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1849 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1850     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1853 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1854 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1855            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1856 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1857     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1858 else
1859     AC_MSG_WARN(running as non-root will disable some tests)
1862 ##################
1863 # look for a method of finding the list of network interfaces
1864 iface=no;
1865 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1866 AC_TRY_RUN([
1867 #define HAVE_IFACE_AIX 1
1868 #define AUTOCONF_TEST 1
1869 #include "confdefs.h"
1870 #include "${srcdir-.}/lib/interfaces.c"],
1871            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1872 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1873     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1876 if test $iface = no; then
1877 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1878 AC_TRY_RUN([
1879 #define HAVE_IFACE_IFCONF 1
1880 #define AUTOCONF_TEST 1
1881 #include "confdefs.h"
1882 #include "${srcdir-.}/lib/interfaces.c"],
1883            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1884 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1885     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1889 if test $iface = no; then
1890 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1891 AC_TRY_RUN([
1892 #define HAVE_IFACE_IFREQ 1
1893 #define AUTOCONF_TEST 1
1894 #include "confdefs.h"
1895 #include "${srcdir-.}/lib/interfaces.c"],
1896            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1897 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1898     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1903 ################################################
1904 # look for a method of setting the effective uid
1905 seteuid=no;
1906 if test $seteuid = no; then
1907 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1908 AC_TRY_RUN([
1909 #define AUTOCONF_TEST 1
1910 #define USE_SETRESUID 1
1911 #include "confdefs.h"
1912 #include "${srcdir-.}/lib/util_sec.c"],
1913            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1914 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1915     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1920 if test $seteuid = no; then
1921 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1922 AC_TRY_RUN([
1923 #define AUTOCONF_TEST 1
1924 #define USE_SETREUID 1
1925 #include "confdefs.h"
1926 #include "${srcdir-.}/lib/util_sec.c"],
1927            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1928 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1929     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1933 if test $seteuid = no; then
1934 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1935 AC_TRY_RUN([
1936 #define AUTOCONF_TEST 1
1937 #define USE_SETEUID 1
1938 #include "confdefs.h"
1939 #include "${srcdir-.}/lib/util_sec.c"],
1940            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1941 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1942     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
1946 if test $seteuid = no; then
1947 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1948 AC_TRY_RUN([
1949 #define AUTOCONF_TEST 1
1950 #define USE_SETUIDX 1
1951 #include "confdefs.h"
1952 #include "${srcdir-.}/lib/util_sec.c"],
1953            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1954 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1955     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
1960 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1961 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1962            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1963 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1964     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
1967 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1968 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1969            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1970 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1971     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
1974 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1975 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1976            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1977 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1978     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
1981 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1982 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1983            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1984 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1985     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
1987 else
1990 dnl Don't check for 64 bit fcntl locking if we know that the
1991 dnl glibc2.1 broken check has succeeded.
1992 dnl 
1994   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1995   AC_TRY_RUN([
1996 #if defined(HAVE_UNISTD_H)
1997 #include <unistd.h>
1998 #endif
1999 #include <stdio.h>
2000 #include <stdlib.h>
2002 #ifdef HAVE_FCNTL_H
2003 #include <fcntl.h>
2004 #endif
2006 #ifdef HAVE_SYS_FCNTL_H
2007 #include <sys/fcntl.h>
2008 #endif
2009 main() { struct flock64 fl64;
2010 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2011 exit(0);
2012 #else
2013 exit(1);
2014 #endif
2016        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2018   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2019       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2020   fi
2023 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2024 AC_TRY_COMPILE([#include <sys/types.h>
2025 #include <sys/stat.h>
2026 #include <unistd.h>],
2027 [struct stat st;  st.st_blocks = 0;],
2028 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2029 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2030     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2031 fi 
2033 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2034 AC_TRY_COMPILE([#include <sys/types.h>
2035 #include <sys/stat.h>
2036 #include <unistd.h>],
2037 [struct stat st;  st.st_blksize = 0;],
2038 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2039 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2040     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2043 case "$host_os" in
2044 *linux*)
2045 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2046 AC_TRY_COMPILE([
2047 #ifdef HAVE_SYS_VFS_H
2048 #include <sys/vfs.h>
2049 #endif
2050 #ifdef HAVE_SYS_CAPABILITY_H
2051 #include <sys/capability.h>
2052 #endif
2053 ],[int i;],
2054    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2055 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2056    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2059 esac
2061 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2062 AC_TRY_COMPILE([#include <sys/acl.h>
2063 #if defined(HAVE_RPCSVC_NIS_H)
2064 #include <rpcsvc/nis.h>
2065 #endif],
2066 [int i;],
2067 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2068 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2069         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2073 #################################################
2074 # check for smbwrapper support
2075 AC_MSG_CHECKING(whether to use smbwrapper)
2076 AC_ARG_WITH(smbwrapper,
2077 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2078 [ case "$withval" in
2079   yes)
2080     AC_MSG_RESULT(yes)
2081     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2082         WRAPPROG="bin/smbsh\$(EXEEXT)"
2083         WRAP="bin/smbwrapper.$SHLIBEXT"
2085 # Conditions under which smbwrapper should not be built.
2087         if test x$PICFLAG = x; then
2088            echo No support for PIC code - disabling smbwrapper and smbsh
2089            WRAPPROG=""
2090            WRAP=""
2091         elif test x$ac_cv_func_syscall = xno; then
2092            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2093            WRAPPROG=""
2094            WRAP=""
2095         fi
2096         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2097         SMBWRAPPER="$WRAPPROG $WRAP"
2098     ;;
2099   *)
2100     AC_MSG_RESULT(no)
2101     ;;
2102   esac ],
2103   AC_MSG_RESULT(no)
2106 #################################################
2107 # check for AFS clear-text auth support
2108 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2109 AC_ARG_WITH(afs,
2110 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2111 [ case "$withval" in
2112   yes)
2113     AC_MSG_RESULT(yes)
2114     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2115     ;;
2116   *)
2117     AC_MSG_RESULT(no)
2118     ;;
2119   esac ],
2120   AC_MSG_RESULT(no)
2124 #################################################
2125 # check for the DFS clear-text auth system
2126 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2127 AC_ARG_WITH(dfs,
2128 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2129 [ case "$withval" in
2130   yes)
2131     AC_MSG_RESULT(yes)
2132     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2133     ;;
2134   *)
2135     AC_MSG_RESULT(no)
2136     ;;
2137   esac ],
2138   AC_MSG_RESULT(no)
2141 ########################################################
2142 # Compile with LDAP support?
2144 with_ldap_support=auto
2145 AC_MSG_CHECKING([for LDAP support])
2147 AC_ARG_WITH(ldap,
2148 [  --with-ldap             LDAP support (default yes)],
2149 [ case "$withval" in
2150     yes|no)
2151         with_ldap_support=$withval
2152         ;;
2153   esac ])
2155 AC_MSG_RESULT($with_ldap_support)
2157 SMBLDAP=""
2158 AC_SUBST(SMBLDAP)
2159 if test x"$with_ldap_support" != x"no"; then
2161   ##################################################################
2162   # first test for ldap.h and lber.h
2163   # (ldap.h is required for this test)
2164   AC_CHECK_HEADERS(ldap.h lber.h)
2165   
2166   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2167         if test x"$with_ldap_support" = x"yes"; then
2168          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2169         else
2170          AC_MSG_WARN(ldap.h is needed for LDAP support)
2171         fi
2172         
2173         with_ldap_support=no
2174   fi
2177 if test x"$with_ldap_support" != x"no"; then
2178   ac_save_LIBS=$LIBS
2180   ##################################################################
2181   # we might need the lber lib on some systems. To avoid link errors
2182   # this test must be before the libldap test
2183   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2185   ########################################################
2186   # now see if we can find the ldap libs in standard paths
2187   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2189   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2190   
2191   ########################################################
2192   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2193   # Check found in pam_ldap 145.
2194   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2196   LIBS="$LIBS $LDAP_LIBS"
2197   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2198     AC_TRY_COMPILE([
2199         #include <lber.h>
2200         #include <ldap.h>], 
2201         [ldap_set_rebind_proc(0, 0, 0);], 
2202         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2203         [smb_ldap_cv_ldap_set_rebind_proc=2]
2204     ) 
2205   ])
2206   
2207   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2209   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2210   
2211   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2212     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2213     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2214     SMBLDAP="lib/smbldap.o"
2215     with_ldap_support=yes
2216     AC_MSG_CHECKING(whether LDAP support is used)
2217     AC_MSG_RESULT(yes)
2218   else
2219     if test x"$with_ldap_support" = x"yes"; then
2220         AC_MSG_ERROR(libldap is needed for LDAP support)
2221     else
2222         AC_MSG_WARN(libldap is needed for LDAP support)
2223     fi
2224     
2225     LDAP_LIBS=""
2226     with_ldap_support=no
2227   fi
2228   LIBS=$ac_save_LIBS
2232 #################################################
2233 # active directory support
2235 with_ads_support=auto
2236 AC_MSG_CHECKING([for Active Directory and krb5 support])
2238 AC_ARG_WITH(ads,
2239 [  --with-ads              Active Directory support (default auto)],
2240 [ case "$withval" in
2241     yes|no)
2242         with_ads_support="$withval"
2243         ;;
2244   esac ])
2246 AC_MSG_RESULT($with_ads_support)
2248 FOUND_KRB5=no
2249 KRB5_LIBS=""
2251 if test x"$with_ldap_support" != x"yes"; then
2252     if test x"$with_ads_support" = x"yes"; then
2253         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2254     elif test x"$with_ads_support" != x"no"; then
2255         AC_MSG_WARN(Active Directory Support requires LDAP support)
2256     fi
2257     with_ads_support=no
2260 if test x"$with_ads_support" != x"no"; then
2262   # Do no harm to the values of CFLAGS and LIBS while testing for
2263   # Kerberos support.
2265   #################################################
2266   # check for krb5-config from recent MIT and Heimdal kerberos 5
2267   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2268   AC_MSG_CHECKING(for working krb5-config)
2269   if test -x "$KRB5_CONFIG"; then
2270     ac_save_CFLAGS=$CFLAGS
2271     CFLAGS="";export CFLAGS
2272     ac_save_LDFLAGS=$LDFLAGS
2273     LDFLAGS="";export LDFLAGS
2274     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2275     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2276     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2277     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2278     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2279     FOUND_KRB5=yes
2280     AC_MSG_RESULT(yes)
2281   else
2282     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2283   fi
2284   
2285   if test x$FOUND_KRB5 = x"no"; then
2286     #################################################
2287     # check for location of Kerberos 5 install
2288     AC_MSG_CHECKING(for kerberos 5 install path)
2289     AC_ARG_WITH(krb5,
2290     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2291     [ case "$withval" in
2292       no)
2293         AC_MSG_RESULT(no krb5-path given)
2294         ;;
2295       yes)
2296         AC_MSG_RESULT(/usr)
2297         FOUND_KRB5=yes
2298         ;;
2299       *)
2300         AC_MSG_RESULT($withval)
2301         KRB5_CFLAGS="-I$withval/include"
2302         KRB5_CPPFLAGS="-I$withval/include"
2303         KRB5_LDFLAGS="-L$withval/lib"
2304         FOUND_KRB5=yes
2305         ;;
2306       esac ],
2307       AC_MSG_RESULT(no krb5-path given)
2308     )
2309   fi
2311   if test x$FOUND_KRB5 = x"no"; then
2312     #################################################
2313     # see if this box has the SuSE location for the heimdal krb implementation
2314     AC_MSG_CHECKING(for /usr/include/heimdal)
2315     if test -d /usr/include/heimdal; then
2316       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2317           KRB5_CFLAGS="-I/usr/include/heimdal"
2318           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2319           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2320           AC_MSG_RESULT(yes)
2321       else
2322           KRB5_CFLAGS="-I/usr/include/heimdal"
2323           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2324           AC_MSG_RESULT(yes)
2325       fi
2326     else
2327       AC_MSG_RESULT(no)
2328     fi
2329   fi
2331   if test x$FOUND_KRB5 = x"no"; then
2332     #################################################
2333     # see if this box has the RedHat location for kerberos
2334     AC_MSG_CHECKING(for /usr/kerberos)
2335     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2336       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2337       KRB5_CFLAGS="-I/usr/kerberos/include"
2338       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2339       AC_MSG_RESULT(yes)
2340     else
2341       AC_MSG_RESULT(no)
2342     fi
2343   fi
2345   ac_save_CFLAGS=$CFLAGS
2346   ac_save_CPPFLAGS=$CPPFLAGS
2347   ac_save_LDFLAGS=$LDFLAGS
2349   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2350   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2351   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2353   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2355   # now check for krb5.h. Some systems have the libraries without the headers!
2356   # note that this check is done here to allow for different kerberos
2357   # include paths
2358   AC_CHECK_HEADERS(krb5.h)
2360   if test x"$ac_cv_header_krb5_h" = x"no"; then
2362     # Give a warning if AD support was not explicitly requested,
2363     # i.e with_ads_support = auto, otherwise die with an error.
2365     if test x"$with_ads_support" = x"yes"; then
2366       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2367     else
2368       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2369     fi
2371     # Turn off AD support and restore CFLAGS and LIBS variables
2373     with_ads_support="no"
2374     
2375     CFLAGS=$ac_save_CFLAGS
2376     CPPFLAGS=$ac_save_CPPFLAGS
2377     LDFLAGS=$ac_save_LDFLAGS
2378   fi
2381 # Now we have determined whether we really want ADS support
2383 if test x"$with_ads_support" != x"no"; then
2384   ac_save_LIBS=$LIBS
2386   # now check for gssapi headers.  This is also done here to allow for
2387   # different kerberos include paths
2388   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2390   ##################################################################
2391   # we might need the k5crypto and com_err libraries on some systems
2392   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2393   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2395   # Heimdal checks.
2396   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2397   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2398   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2400   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2401   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2402                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2404   ########################################################
2405   # now see if we can find the krb5 libs in standard paths
2406   # or as specified above
2407   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2409   ########################################################
2410   # now see if we can find the gssapi libs in standard paths
2411   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2412             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2414   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2415   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2416   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2417   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2418   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2419   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2420   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2421   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2422   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2423   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2424   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2425   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2426   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2427   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2428   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2430   LIBS="$LIBS $KRB5_LIBS"
2431   
2432   AC_CACHE_CHECK([for addrtype in krb5_address],
2433                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2434     AC_TRY_COMPILE([#include <krb5.h>],
2435       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2436       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2437       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2439   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2440     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2441                [Whether the krb5_address struct has a addrtype property])
2442   fi
2444   AC_CACHE_CHECK([for addr_type in krb5_address],
2445                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2446     AC_TRY_COMPILE([#include <krb5.h>],
2447       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2448       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2449       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2451   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2452     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2453               [Whether the krb5_address struct has a addr_type property])
2454   fi
2456   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2457                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2458                  [AC_TRY_COMPILE([#include <krb5.h>],
2459     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2460     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2462   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2463     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2464               [Whether the krb5_ticket struct has a enc_part2 property])
2465   fi
2467   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2468                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2469     AC_TRY_COMPILE([#include <krb5.h>],
2470       [krb5_keyblock key; key.keyvalue.data = NULL;],
2471       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2472       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2474   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2475     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2476               [Whether the krb5_keyblock struct has a keyvalue property])
2477   fi
2479   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2480                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2481     AC_TRY_COMPILE([#include <krb5.h>],
2482       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2483       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2484       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2486   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes"; then
2487     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2488               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2489   fi
2491   AC_CACHE_CHECK([for the krb5_princ_component macro],
2492                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2493     AC_TRY_LINK([#include <krb5.h>],
2494       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2495       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2496       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2498   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2499     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2500                [Whether krb5_princ_component is available])
2501   fi
2504   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2505     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2506     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2507     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2508     AC_MSG_RESULT(yes)
2509   else
2510     if test x"$with_ads_support" = x"yes"; then
2511         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2512     else
2513         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2514     fi
2515     KRB5_LIBS=""
2516     with_ads_support=no 
2517   fi
2518   LIBS="$ac_save_LIBS"
2521 ########################################################
2522 # Compile experimental passdb backends?
2523 # (pdb_xml, pdb_mysql)
2524 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2525 AC_ARG_WITH(expsam,
2526 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2527 [                          Valid choices include (comma separated list): ]
2528 [                              xml & mysql],
2529 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2530   if test "z$expsam_pdb_modules" = "zyes"; then
2531     expsam_pdb_modules="xml mysql"
2532   fi
2533   AC_MSG_RESULT($expsam_pdb_modules)
2534   for i in $expsam_pdb_modules
2535   do 
2536     case "$i" in
2537     xml)
2538       ## pdb_xml
2539       AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[])
2540       CFLAGS="$CFLAGS $XML_CFLAGS"
2541       ;;
2542     mysql)
2543       ## pdb_mysql
2544       AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[])
2545       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2546       ;;
2547     no)
2548       ;;
2549     *)
2550       echo "Unknown module name \"$i\"!  Exiting..."
2551       exit 1
2552       ;;
2553     esac
2554   done ],
2555   AC_MSG_RESULT(no)
2558 #################################################
2559 # check for automount support
2560 AC_MSG_CHECKING(whether to use automount)
2561 AC_ARG_WITH(automount,
2562 [  --with-automount        Include automount support (default=no)],
2563 [ case "$withval" in
2564   yes)
2565     AC_MSG_RESULT(yes)
2566     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2567     ;;
2568   *)
2569     AC_MSG_RESULT(no)
2570     ;;
2571   esac ],
2572   AC_MSG_RESULT(no)
2575 #################################################
2576 # check for smbmount support
2577 AC_MSG_CHECKING(whether to use smbmount)
2578 AC_ARG_WITH(smbmount,
2579 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2580 [ case "$withval" in
2581   yes)
2582         case "$host_os" in
2583         *linux*)
2584                 AC_MSG_RESULT(yes)
2585                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2586                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2587                 ;;
2588         *)
2589                 AC_MSG_ERROR(not on a linux system!)
2590                 ;;
2591         esac
2592     ;;
2593   *)
2594     AC_MSG_RESULT(no)
2595     ;;
2596   esac ],
2597   AC_MSG_RESULT(no)
2601 #################################################
2602 # check for a PAM clear-text auth, accounts, password and session support
2603 with_pam_for_crypt=no
2604 AC_MSG_CHECKING(whether to use PAM)
2605 AC_ARG_WITH(pam,
2606 [  --with-pam              Include PAM support (default=no)],
2607 [ case "$withval" in
2608   yes)
2609     AC_MSG_RESULT(yes)
2610     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2611     AUTHLIBS="$AUTHLIBS -lpam"
2612     with_pam_for_crypt=yes
2613     ;;
2614   *)
2615     AC_MSG_RESULT(no)
2616     ;;
2617   esac ],
2618   AC_MSG_RESULT(no)
2621 # we can't build a pam module if we don't have pam.
2622 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2624 #################################################
2625 # check for pam_smbpass support
2626 AC_MSG_CHECKING(whether to use pam_smbpass)
2627 AC_ARG_WITH(pam_smbpass,
2628 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2629 [ case "$withval" in
2630   yes)
2631     AC_MSG_RESULT(yes)
2633 # Conditions under which pam_smbpass should not be built.
2635        if test x$PICFLAG = x; then
2636           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2637        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2638           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2639        else
2640           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2641        fi
2642     ;;
2643   *)
2644     AC_MSG_RESULT(no)
2645     ;;
2646   esac ],
2647   AC_MSG_RESULT(no)
2651 ###############################################
2652 # test for where we get crypt() from
2653 AC_SEARCH_LIBS(crypt, [crypt],
2654   [test "$ac_cv_search_crypt" = "none required" || AUTHLIBS="-lcrypt $AUTHLIBS"
2655   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
2658 ## moved after the check for -lcrypt in order to
2659 ## ensure that the necessary libraries are included
2660 ## check checking for truncated salt.  Wrapped by the
2661 ## $with_pam_for_crypt variable as above   --jerry
2663 if test $with_pam_for_crypt = no; then
2664 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2665 crypt_LIBS="$LIBS"
2666 LIBS="$AUTHLIBS $LIBS"
2667 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2668         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2669 LIBS="$crypt_LIBS"])
2670 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2671         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2675 ########################################################################################
2677 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2679 ########################################################################################
2681 #################################################
2682 # check for a LDAP password database configuration backwards compatibility
2683 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2684 AC_ARG_WITH(ldapsam,
2685 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
2686 [ case "$withval" in
2687   yes)
2688     AC_MSG_RESULT(yes)
2689     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
2690     ;;
2691   *)
2692     AC_MSG_RESULT(no)
2693     ;;
2694   esac ],
2695   AC_MSG_RESULT(no)
2698 ########################################################################################
2700 ## END OF TESTS FOR SAM BACKENDS.  
2702 ########################################################################################
2704 #################################################
2705 # check for a NISPLUS_HOME support 
2706 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2707 AC_ARG_WITH(nisplus-home,
2708 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2709 [ case "$withval" in
2710   yes)
2711     AC_MSG_RESULT(yes)
2712     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2713     ;;
2714   *)
2715     AC_MSG_RESULT(no)
2716     ;;
2717   esac ],
2718   AC_MSG_RESULT(no)
2721 #################################################
2722 # check for syslog logging
2723 AC_MSG_CHECKING(whether to use syslog logging)
2724 AC_ARG_WITH(syslog,
2725 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2726 [ case "$withval" in
2727   yes)
2728     AC_MSG_RESULT(yes)
2729     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2730     ;;
2731   *)
2732     AC_MSG_RESULT(no)
2733     ;;
2734   esac ],
2735   AC_MSG_RESULT(no)
2738 #################################################
2739 # check for a shared memory profiling support
2740 AC_MSG_CHECKING(whether to use profiling)
2741 AC_ARG_WITH(profiling-data,
2742 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2743 [ case "$withval" in
2744   yes)
2745     AC_MSG_RESULT(yes)
2746     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2747     ;;
2748   *)
2749     AC_MSG_RESULT(no)
2750     ;;
2751   esac ],
2752   AC_MSG_RESULT(no)
2756 #################################################
2757 # check for experimental disk-quotas support
2759 samba_cv_WITH_QUOTAS=auto
2760 samba_cv_TRY_QUOTAS=no
2761 samba_cv_RUN_QUOTA_TESTS=auto
2762 samba_cv_WITH_SYS_QUOTAS=auto
2763 samba_cv_TRY_SYS_QUOTAS=no
2765 AC_MSG_CHECKING(whether to try disk-quotas support)
2766 AC_ARG_WITH(quotas,
2767 [  --with-quotas           Include disk-quota support (default=no)],
2768 [ case "$withval" in
2769   yes)
2770     AC_MSG_RESULT(yes)
2771     samba_cv_WITH_QUOTAS=yes
2772     samba_cv_TRY_QUOTAS=yes
2773     samba_cv_RUN_QUOTA_TESTS=yes
2774     #set sys quotas to auto in this case
2775     samba_cv_TRY_SYS_QUOTAS=auto
2776     ;;
2777   auto)
2778     AC_MSG_RESULT(auto)
2779     samba_cv_WITH_QUOTAS=auto
2780     samba_cv_TRY_QUOTAS=auto
2781     samba_cv_RUN_QUOTA_TESTS=auto
2782     #set sys quotas to auto in this case
2783     samba_cv_TRY_SYS_QUOTAS=auto
2784     ;;
2785   no)
2786     AC_MSG_RESULT(no)
2787     samba_cv_WITH_QUOTAS=no
2788     samba_cv_TRY_QUOTAS=no
2789     samba_cv_RUN_QUOTA_TESTS=no
2790     ;;
2791   *)
2792     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2793     ;;
2794   esac ],
2795   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2798 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
2799 AC_ARG_WITH(sys-quotas,
2800 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
2801 [ case "$withval" in
2802   yes)
2803     AC_MSG_RESULT(yes)
2804     samba_cv_WITH_SYS_QUOTAS=yes
2805     samba_cv_TRY_SYS_QUOTAS=yes
2806     samba_cv_RUN_QUOTA_TESTS=yes
2807     ;;
2808   auto)
2809     AC_MSG_RESULT(auto)
2810     samba_cv_WITH_SYS_QUOTAS=auto
2811     samba_cv_TRY_SYS_QUOTAS=auto
2812     samba_cv_RUN_QUOTA_TESTS=auto
2813     ;;
2814   no)
2815     AC_MSG_RESULT(no)
2816     samba_cv_WITH_SYS_QUOTAS=no
2817     samba_cv_TRY_SYS_QUOTAS=no
2818     ;;
2819   *)
2820     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2821     ;;
2822   esac ],
2823   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2826 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
2827 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
2828   case "$host_os" in
2829         *linux*)
2830             AC_MSG_RESULT(yes)
2831             samba_cv_TRY_SYS_QUOTAS=yes
2832             samba_cv_RUN_QUOTA_TESTS=yes
2833             ;;
2834         *)
2835             AC_MSG_RESULT(no)
2836             samba_cv_TRY_SYS_QUOTAS=no
2837             ;;
2838   esac
2841 #############################################
2842 # only check for quota stuff if --with-quotas
2843 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
2845 # For quotas on Veritas VxFS filesystems
2846 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
2848 # For sys/quota.h and linux/quota.h
2849 AC_CHECK_HEADERS(sys/quota.h)
2850 AC_CHECK_HEADERS(asm/types.h linux/quota.h)
2852 # For quotas on Linux XFS filesystems
2853 AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
2854 AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)
2855 # For linux > 2.5.56 
2856 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
2858 # if we have struct if_dqblk in <linux/quota.h> we should use it
2859 AC_CACHE_CHECK([for struct if_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_IF_DQBLK, [
2860 AC_TRY_COMPILE([
2861 #include "confdefs.h"
2862 #ifdef HAVE_SYS_TYPES_H
2863 #include <sys/types.h>
2864 #endif
2865 #ifdef HAVE_ASM_TYPES_H
2866 #include <asm/types.h>
2867 #endif
2868 #include <linux/quota.h>
2869 ],[struct if_dqblk D;],
2870 samba_cv_HAVE_STRUCT_IF_DQBLK=yes,samba_cv_HAVE_STRUCT_IF_DQBLK=no)])
2871 if test "$samba_cv_HAVE_STRUCT_IF_DQBLK"x = "yes"x; then
2872         AC_DEFINE(HAVE_STRUCT_IF_DQBLK,1,[struct if_dqblk])
2875 # if we have struct mem_dqblk in <linux/quota.h> we should use it
2876 AC_CACHE_CHECK([for struct mem_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_MEM_DQBLK, [
2877 AC_TRY_COMPILE([
2878 #include "confdefs.h"
2879 #ifdef HAVE_SYS_TYPES_H
2880 #include <sys/types.h>
2881 #endif
2882 #ifdef HAVE_ASM_TYPES_H
2883 #include <asm/types.h>
2884 #endif
2885 #include <linux/quota.h>
2886 ],[struct mem_dqblk D;],
2887 samba_cv_HAVE_STRUCT_MEM_DQBLK=yes,samba_cv_HAVE_STRUCT_MEM_DQBLK=no)])
2888 if test "$samba_cv_HAVE_STRUCT_MEM_DQBLK"x = "yes"x; then
2889         AC_DEFINE(HAVE_STRUCT_MEM_DQBLK,1,[struct mem_dqblk])
2892 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
2893 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
2894 AC_TRY_COMPILE([
2895 #include "confdefs.h"
2896 #ifdef HAVE_SYS_QUOTA_H
2897 #include <sys/quota.h>
2898 #endif
2900 struct dqblk D;
2901 D.dqb_fsoftlimit = 0;],
2902 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
2903 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
2904         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
2907 ##################
2908 # look for a working quota system
2909 samba_cv_SYSQUOTA_FOUND=no;
2911 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2912 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
2913 AC_TRY_RUN_STRICT([
2914 #define HAVE_QUOTACTL_4A 1
2915 #define AUTOCONF_TEST 1
2916 #include "confdefs.h"
2917 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
2918            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
2919 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
2920     samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
2924 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2925 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
2926 AC_TRY_RUN_STRICT([
2927 #define HAVE_QUOTACTL_4B 1
2928 #define AUTOCONF_TEST 1
2929 #include "confdefs.h"
2930 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
2931            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
2932 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
2933     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
2934 #    samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
2938 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2939 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
2940 AC_TRY_RUN_STRICT([
2941 #define HAVE_QUOTACTL_3 1
2942 #define AUTOCONF_TEST 1
2943 #include "confdefs.h"
2944 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
2945            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
2946 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
2947     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
2948 #    samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
2952 #################################################
2953 # check for mntent.h and struct mntent
2954 AC_CHECK_HEADERS(mntent.h)
2955 #################################################
2956 # check for setmntent,getmntent,endmntent
2957 AC_CHECK_FUNCS(setmntent getmntent endmntent)
2959 #################################################
2960 # check for devnm.h and struct mntent
2961 AC_CHECK_HEADERS(devnm.h)
2962 #################################################
2963 # check for devnm
2964 AC_CHECK_FUNCS(devnm)
2966 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
2967     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2968         # if --with-sys-quotas=yes then build it 
2969         # you have can use the get/set quota command smb.conf
2970         # options then
2971         samba_cv_SYSQUOTA_FOUND=auto
2972     fi
2973     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
2974         # if --with-sys-quotas=yes then build it 
2975         # you have can use the get/set quota command smb.conf
2976         # options then
2977         samba_cv_TRY_SYS_QUOTAS=auto
2978     fi
2981 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
2982 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
2983 SAVE_CPPFLAGS="$CPPFLAGS"
2984 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
2985 AC_TRY_COMPILE([
2986 #include "confdefs.h"
2987 #define NO_PROTO_H 1
2988 #define NO_CONFIG_H 1
2989 #define HAVE_SYS_QUOTAS 1
2990 #include "${srcdir-.}/lib/sysquotas.c"
2991 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
2992 CPPFLAGS="$SAVE_CPPFLAGS"
2994 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
2995 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
2996     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
2997         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
2998         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
2999         samba_cv_WE_USE_SYS_QUOTAS=yes
3000         AC_MSG_RESULT(yes)
3001     else
3002         AC_MSG_RESULT(no)
3003     fi
3007 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3008 SAVE_CPPFLAGS="$CPPFLAGS"
3009 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3010 AC_TRY_COMPILE([
3011 #include "confdefs.h"
3012 #define NO_PROTO_H 1
3013 #define NO_CONFIG_H 1
3014 #include "${srcdir-.}/smbd/quotas.c"
3015 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3016 CPPFLAGS="$SAVE_CPPFLAGS"
3018 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3019 AC_MSG_CHECKING(whether to use the old quota support)
3020     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3021       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3022         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3023         AC_MSG_RESULT(yes)
3024       else
3025         AC_MSG_RESULT(no)
3026       fi
3027     else
3028       AC_MSG_RESULT(no)
3029     fi
3032 ####################
3033 # End of quota check samba_cv_RUN_QUOTA_TESTS
3036 #################################################
3037 # check for experimental utmp accounting
3039 AC_MSG_CHECKING(whether to support utmp accounting)
3040 WITH_UTMP=yes
3041 AC_ARG_WITH(utmp,
3042 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3043 [ case "$withval" in
3044   no)
3045                 WITH_UTMP=no
3046                 ;;
3047   *)
3048                 WITH_UTMP=yes
3049                 ;;
3050   esac ],
3053 # utmp requires utmp.h
3054 # Note similar check earlier, when checking utmp details.
3056 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3057         utmp_no_reason=", no utmp.h on $host_os"
3058         WITH_UTMP=no
3061 # Display test results
3063 if test x"$WITH_UTMP" = x"yes"; then
3064         AC_MSG_RESULT(yes)
3065         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3066 else
3067         AC_MSG_RESULT(no$utmp_no_reason)
3070 #################################################
3071 # choose native language(s) of man pages
3072 AC_MSG_CHECKING(chosen man pages' language(s))
3073 AC_ARG_WITH(manpages-langs,
3074 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3075 [ case "$withval" in
3076   yes|no)
3077     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3078     manlangs="en"
3079   ;;
3080   *)
3081     manlangs="$withval"
3082   ;;
3083   esac
3085   AC_MSG_RESULT($manlangs)
3086   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3087   AC_SUBST(manlangs)],
3089   [manlangs="en"
3090   AC_MSG_RESULT($manlangs)
3091   AC_SUBST(manlangs)]
3094 #################################################
3095 # should we build libsmbclient?
3097 INSTALLCLIENTCMD_SH=:
3098 INSTALLCLIENTCMD_A=:
3099 LIBSMBCLIENT_SHARED=
3100 LIBSMBCLIENT=
3101 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3102 AC_ARG_WITH(libsmbclient,
3103 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3104 [ case "$withval" in
3105   no) 
3106      AC_MSG_RESULT(no)
3107      ;;
3108   *)
3109      if test $BLDSHARED = true; then
3110         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3111         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3112         LIBSMBCLIENT=libsmbclient
3113         AC_MSG_RESULT(yes)
3114      else
3115         enable_static=yes
3116         AC_MSG_RESULT(no shared library support -- will supply static library)
3117      fi
3118      if test $enable_static = yes; then
3119         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3120         LIBSMBCLIENT=libsmbclient
3121      fi
3122      ;;
3123   esac ],
3125 # if unspecified, default is to built it iff possible.
3126   if test $BLDSHARED = true; then
3127      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3128      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3129      LIBSMBCLIENT=libsmbclient
3130      AC_MSG_RESULT(yes)
3131    else
3132      enable_static=yes
3133      AC_MSG_RESULT(no shared library support -- will supply static library)
3134    fi
3135    if test $enable_static = yes; then
3136      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3137      LIBSMBCLIENT=libsmbclient
3138   fi]
3142 #################################################
3143 # these tests are taken from the GNU fileutils package
3144 AC_CHECKING(how to get filesystem space usage)
3145 space=no
3147 # Test for statvfs64.
3148 if test $space = no; then
3149   # SVR4
3150   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3151   [AC_TRY_RUN([
3152 #if defined(HAVE_UNISTD_H)
3153 #include <unistd.h>
3154 #endif
3155 #include <sys/types.h>
3156 #include <sys/statvfs.h>
3157   main ()
3158   {
3159     struct statvfs64 fsd;
3160     exit (statvfs64 (".", &fsd));
3161   }],
3162   fu_cv_sys_stat_statvfs64=yes,
3163   fu_cv_sys_stat_statvfs64=no,
3164   fu_cv_sys_stat_statvfs64=cross)])
3165   if test $fu_cv_sys_stat_statvfs64 = yes; then
3166     space=yes
3167     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3168   fi
3171 # Perform only the link test since it seems there are no variants of the
3172 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3173 # because that got a false positive on SCO OSR5.  Adding the declaration
3174 # of a `struct statvfs' causes this test to fail (as it should) on such
3175 # systems.  That system is reported to work fine with STAT_STATFS4 which
3176 # is what it gets when this test fails.
3177 if test $space = no; then
3178   # SVR4
3179   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3180                  [AC_TRY_LINK([#include <sys/types.h>
3181 #include <sys/statvfs.h>],
3182                               [struct statvfs fsd; statvfs (0, &fsd);],
3183                               fu_cv_sys_stat_statvfs=yes,
3184                               fu_cv_sys_stat_statvfs=no)])
3185   if test $fu_cv_sys_stat_statvfs = yes; then
3186     space=yes
3187     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3188   fi
3191 if test $space = no; then
3192   # DEC Alpha running OSF/1
3193   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3194   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3195   [AC_TRY_RUN([
3196 #include <sys/param.h>
3197 #include <sys/types.h>
3198 #include <sys/mount.h>
3199   main ()
3200   {
3201     struct statfs fsd;
3202     fsd.f_fsize = 0;
3203     exit (statfs (".", &fsd, sizeof (struct statfs)));
3204   }],
3205   fu_cv_sys_stat_statfs3_osf1=yes,
3206   fu_cv_sys_stat_statfs3_osf1=no,
3207   fu_cv_sys_stat_statfs3_osf1=no)])
3208   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3209   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3210     space=yes
3211     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3212   fi
3215 if test $space = no; then
3216 # AIX
3217   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3218 member (AIX, 4.3BSD)])
3219   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3220   [AC_TRY_RUN([
3221 #ifdef HAVE_SYS_PARAM_H
3222 #include <sys/param.h>
3223 #endif
3224 #ifdef HAVE_SYS_MOUNT_H
3225 #include <sys/mount.h>
3226 #endif
3227 #ifdef HAVE_SYS_VFS_H
3228 #include <sys/vfs.h>
3229 #endif
3230   main ()
3231   {
3232   struct statfs fsd;
3233   fsd.f_bsize = 0;
3234   exit (statfs (".", &fsd));
3235   }],
3236   fu_cv_sys_stat_statfs2_bsize=yes,
3237   fu_cv_sys_stat_statfs2_bsize=no,
3238   fu_cv_sys_stat_statfs2_bsize=no)])
3239   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3240   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3241     space=yes
3242     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3243   fi
3246 if test $space = no; then
3247 # SVR3
3248   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3249   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3250   [AC_TRY_RUN([#include <sys/types.h>
3251 #include <sys/statfs.h>
3252   main ()
3253   {
3254   struct statfs fsd;
3255   exit (statfs (".", &fsd, sizeof fsd, 0));
3256   }],
3257     fu_cv_sys_stat_statfs4=yes,
3258     fu_cv_sys_stat_statfs4=no,
3259     fu_cv_sys_stat_statfs4=no)])
3260   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3261   if test $fu_cv_sys_stat_statfs4 = yes; then
3262     space=yes
3263     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3264   fi
3267 if test $space = no; then
3268 # 4.4BSD and NetBSD
3269   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3270 member (4.4BSD and NetBSD)])
3271   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3272   [AC_TRY_RUN([#include <sys/types.h>
3273 #ifdef HAVE_SYS_PARAM_H
3274 #include <sys/param.h>
3275 #endif
3276 #ifdef HAVE_SYS_MOUNT_H
3277 #include <sys/mount.h>
3278 #endif
3279   main ()
3280   {
3281   struct statfs fsd;
3282   fsd.f_fsize = 0;
3283   exit (statfs (".", &fsd));
3284   }],
3285   fu_cv_sys_stat_statfs2_fsize=yes,
3286   fu_cv_sys_stat_statfs2_fsize=no,
3287   fu_cv_sys_stat_statfs2_fsize=no)])
3288   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3289   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3290     space=yes
3291         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3292   fi
3295 if test $space = no; then
3296   # Ultrix
3297   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3298   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3299   [AC_TRY_RUN([#include <sys/types.h>
3300 #ifdef HAVE_SYS_PARAM_H
3301 #include <sys/param.h>
3302 #endif
3303 #ifdef HAVE_SYS_MOUNT_H
3304 #include <sys/mount.h>
3305 #endif
3306 #ifdef HAVE_SYS_FS_TYPES_H
3307 #include <sys/fs_types.h>
3308 #endif
3309   main ()
3310   {
3311   struct fs_data fsd;
3312   /* Ultrix's statfs returns 1 for success,
3313      0 for not mounted, -1 for failure.  */
3314   exit (statfs (".", &fsd) != 1);
3315   }],
3316   fu_cv_sys_stat_fs_data=yes,
3317   fu_cv_sys_stat_fs_data=no,
3318   fu_cv_sys_stat_fs_data=no)])
3319   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3320   if test $fu_cv_sys_stat_fs_data = yes; then
3321     space=yes
3322     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3323   fi
3327 # As a gating factor for large file support, in order to
3328 # use <4GB files we must have the following minimal support
3329 # available.
3330 # long long, and a 64 bit off_t or off64_t.
3331 # If we don't have all of these then disable large
3332 # file support.
3334 AC_MSG_CHECKING([if large file support can be enabled])
3335 AC_TRY_COMPILE([
3336 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3337 #include <sys/types.h>
3338 #else
3339 __COMPILE_ERROR_
3340 #endif
3342 [int i],
3343 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3344 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3345         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3347 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3349 AC_ARG_WITH(spinlocks, 
3350 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3351 if test "x$with_spinlocks" = "xyes"; then
3352     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3354     case "$host_cpu" in
3355         sparc)
3356             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3357             ;;
3359         i386|i486|i586|i686)
3360             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3361             ;;
3363         mips)
3364             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3365             ;;
3367         powerpc)
3368             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3369             ;;
3370     esac
3373 #################################################
3374 # check for ACL support
3376 AC_MSG_CHECKING(whether to support ACLs)
3377 AC_ARG_WITH(acl-support,
3378 [  --with-acl-support      Include ACL support (default=no)],
3379 [ case "$withval" in
3380   yes)
3382         case "$host_os" in
3383         *sysv5*)
3384                 AC_MSG_RESULT(Using UnixWare ACLs)
3385                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3386                 ;;
3387         *solaris*)
3388                 AC_MSG_RESULT(Using solaris ACLs)
3389                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3390                 ;;
3391         *hpux*)
3392                 AC_MSG_RESULT(Using HPUX ACLs)
3393                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3394                 ;;
3395         *irix*)
3396                 AC_MSG_RESULT(Using IRIX ACLs)
3397                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3398                 ;;
3399         *aix*)
3400                 AC_MSG_RESULT(Using AIX ACLs)
3401                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3402                 ;;
3403         *osf*)
3404                 AC_MSG_RESULT(Using Tru64 ACLs)
3405                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3406                 ACLLIBS="$ACLLIBS -lpacl"
3407                 ;;
3408         *freebsd5*)
3409                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3410                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3411                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3412                 ;;
3413         *linux*)
3414                 AC_CHECK_LIB(attr,getxattr,[ACLLIBS="$ACLLIBS -lattr"])
3415                 AC_CHECK_LIB(acl,acl_get_file,[ACLLIBS="$ACLLIBS -lacl"])
3416                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3417                 acl_LIBS=$LIBS
3418                 LIBS="$LIBS -lacl"
3419                 AC_TRY_LINK([#include <sys/types.h>
3420 #include <sys/acl.h>],
3421 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3422 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3423                 LIBS=$acl_LIBS])
3424                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3425                                 AC_MSG_RESULT(Using posix ACLs)
3426                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3427                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3428                                 acl_LIBS=$LIBS
3429                                 LIBS="$LIBS -lacl"
3430                                 AC_TRY_LINK([#include <sys/types.h>
3431 #include <sys/acl.h>],
3432 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3433 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3434                                 LIBS=$acl_LIBS])
3435                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3436                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3437                                 fi
3438                         fi
3439             ;;
3440          *)
3441                 AC_CHECK_LIB(acl,acl_get_file,[ACLLIBS="$ACLLIBS -lacl"])
3442                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3443                 acl_LIBS=$LIBS
3444                 LIBS="$LIBS -lacl"
3445                 AC_TRY_LINK([#include <sys/types.h>
3446 #include <sys/acl.h>],
3447 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3448 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3449                 LIBS=$acl_LIBS])
3450                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3451                                 AC_MSG_RESULT(Using posix ACLs)
3452                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3453                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3454                                 acl_LIBS=$LIBS
3455                                 LIBS="$LIBS -lacl"
3456                                 AC_TRY_LINK([#include <sys/types.h>
3457 #include <sys/acl.h>],
3458 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3459 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3460                                 LIBS=$acl_LIBS])
3461                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3462                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3463                                 fi
3464                         fi
3465             ;;
3466         esac
3467         ;;
3468   *)
3469     AC_MSG_RESULT(no)
3470     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3471     ;;
3472   esac ],
3473   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3474   AC_MSG_RESULT(no)
3477 #################################################
3478 # check for sendfile support
3480 with_sendfile_support=yes
3481 AC_MSG_CHECKING(whether to check to support sendfile)
3482 AC_ARG_WITH(sendfile-support,
3483 [  --with-sendfile-support Check for sendfile support (default=yes)],
3484 [ case "$withval" in
3485   yes)
3487         AC_MSG_RESULT(yes);
3489         case "$host_os" in
3490         *linux*)
3491                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3492                 AC_TRY_LINK([#include <sys/sendfile.h>],
3494 int tofd, fromfd;
3495 off64_t offset;
3496 size_t total;
3497 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3499 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3501                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3502                 AC_TRY_LINK([#include <sys/sendfile.h>],
3504 int tofd, fromfd;
3505 off_t offset;
3506 size_t total;
3507 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3509 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3511 # Try and cope with broken Linux sendfile....
3512                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3513                 AC_TRY_LINK([\
3514 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3515 #undef _FILE_OFFSET_BITS
3516 #endif
3517 #include <sys/sendfile.h>],
3519 int tofd, fromfd;
3520 off_t offset;
3521 size_t total;
3522 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3524 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3526         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3527                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3528                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3529                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3530         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3531                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3532                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3533                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3534         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3535                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3536                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3537         else
3538                 AC_MSG_RESULT(no);
3539         fi
3541         ;;
3542         *freebsd*)
3543                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3544                 AC_TRY_LINK([\
3545 #include <sys/types.h>
3546 #include <unistd.h>
3547 #include <sys/socket.h>
3548 #include <sys/uio.h>],
3550         int fromfd, tofd, ret, total=0;
3551         off_t offset, nwritten;
3552         struct sf_hdtr hdr;
3553         struct iovec hdtrl;
3554         hdr.headers = &hdtrl;
3555         hdr.hdr_cnt = 1;
3556         hdr.trailers = NULL;
3557         hdr.trl_cnt = 0;
3558         hdtrl.iov_base = NULL;
3559         hdtrl.iov_len = 0;
3560         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3562 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3564         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3565                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3566                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3567                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3568         else
3569                 AC_MSG_RESULT(no);
3570         fi
3571         ;;
3573         *hpux*)
3574                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3575                 AC_TRY_LINK([\
3576 #include <sys/socket.h>
3577 #include <sys/uio.h>],
3579         int fromfd, tofd;
3580         size_t total=0;
3581         struct iovec hdtrl[2];
3582         ssize_t nwritten;
3583         off64_t offset;
3585         hdtrl[0].iov_base = 0;
3586         hdtrl[0].iov_len = 0;
3588         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3590 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3591         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3592                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3593                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3594                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3595         else
3596                 AC_MSG_RESULT(no);
3597         fi
3599                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3600                 AC_TRY_LINK([\
3601 #include <sys/socket.h>
3602 #include <sys/uio.h>],
3604         int fromfd, tofd;
3605         size_t total=0;
3606         struct iovec hdtrl[2];
3607         ssize_t nwritten;
3608         off_t offset;
3610         hdtrl[0].iov_base = 0;
3611         hdtrl[0].iov_len = 0;
3613         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3615 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3616         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3617                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3618                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3619                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3620         else
3621                 AC_MSG_RESULT(no);
3622         fi
3623         ;;
3625         *solaris*)
3626                 AC_CHECK_LIB(sendfile,sendfilev)
3627                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3628                 AC_TRY_LINK([\
3629 #include <sys/sendfile.h>],
3631         int sfvcnt;
3632         size_t xferred;
3633         struct sendfilevec vec[2];
3634         ssize_t nwritten;
3635         int tofd;
3637         sfvcnt = 2;
3639         vec[0].sfv_fd = SFV_FD_SELF;
3640         vec[0].sfv_flag = 0;
3641         vec[0].sfv_off = 0;
3642         vec[0].sfv_len = 0;
3644         vec[1].sfv_fd = 0;
3645         vec[1].sfv_flag = 0;
3646         vec[1].sfv_off = 0;
3647         vec[1].sfv_len = 0;
3648         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3650 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3652         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3653                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3654                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3655                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3656         else
3657                 AC_MSG_RESULT(no);
3658         fi
3660                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3661                 AC_TRY_LINK([\
3662 #include <sys/sendfile.h>],
3664         int sfvcnt;
3665         size_t xferred;
3666         struct sendfilevec vec[2];
3667         ssize_t nwritten;
3668         int tofd;
3670         sfvcnt = 2;
3672         vec[0].sfv_fd = SFV_FD_SELF;
3673         vec[0].sfv_flag = 0;
3674         vec[0].sfv_off = 0;
3675         vec[0].sfv_len = 0;
3677         vec[1].sfv_fd = 0;
3678         vec[1].sfv_flag = 0;
3679         vec[1].sfv_off = 0;
3680         vec[1].sfv_len = 0;
3681         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3683 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3685         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3686                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3687                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3688                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3689         else
3690                 AC_MSG_RESULT(no);
3691         fi
3692         ;;
3694         *)
3695         ;;
3696         esac
3697         ;;
3698   *)
3699     AC_MSG_RESULT(no)
3700     ;;
3701   esac ],
3702   AC_MSG_RESULT(yes)
3706 #################################################
3707 # Check whether winbind is supported on this platform.  If so we need to
3708 # build and install client programs, sbin programs and shared libraries
3710 AC_MSG_CHECKING(whether to build winbind)
3712 # Initially, the value of $host_os decides whether winbind is supported
3714 HAVE_WINBIND=yes
3716 # Define the winbind shared library name and any specific linker flags
3717 # it needs to be built with.
3719 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
3720 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
3721 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
3723 case "$host_os" in
3724         *linux*|*freebsd*)
3725                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
3726                 ;;
3727         *irix*)
3728                 # IRIX has differently named shared libraries
3729                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
3730                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
3731                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
3732                 ;;
3733         *solaris*)
3734                 # Solaris winbind client is implemented as a wrapper around
3735                 # the Linux version.
3736                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
3737                     nsswitch/winbind_nss_linux.o"
3738                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3739                 ;;
3740         *hpux11*)
3741                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3742                 ;;
3743         *aix*)
3744                 # AIX has even differently named shared libraries.  No
3745                 # WINS support has been implemented yet.
3746                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
3747                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
3748                 WINBIND_NSS="nsswitch/WINBIND"
3749                 WINBIND_WINS_NSS=""
3750                 ;;
3751         *)
3752                 HAVE_WINBIND=no
3753                 winbind_no_reason=", unsupported on $host_os"
3754                 ;;
3755 esac
3757 AC_SUBST(WINBIND_NSS)
3758 AC_SUBST(WINBIND_WINS_NSS)
3759 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
3760 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3761 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3763 # Check the setting of --with-winbindd
3765 AC_ARG_WITH(winbind,
3766 [  --with-winbind          Build winbind (default, if supported by OS)],
3768   case "$withval" in
3769         yes)
3770                 HAVE_WINBIND=yes
3771                 ;;
3772         no)
3773                 HAVE_WINBIND=no
3774                 winbind_reason=""
3775                 ;;
3776   esac ],
3779 # We need unix domain sockets for winbind
3781 if test x"$HAVE_WINBIND" = x"yes"; then
3782         if test x"$samba_cv_unixsocket" = x"no"; then
3783                 winbind_no_reason=", no unix domain socket support on $host_os"
3784                 HAVE_WINBIND=no
3785         fi
3788 # Display test results
3790 if test x"$HAVE_WINBIND" = x"yes"; then
3791         AC_MSG_RESULT(yes)
3792         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3794         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3795         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3796         if test x"$BLDSHARED" = x"true"; then
3797                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
3799                 if test x"$with_pam" = x"yes"; then
3800                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
3801                 fi
3802         fi
3803 else
3804         AC_MSG_RESULT(no$winbind_no_reason)
3807 # Solaris has some extra fields in struct passwd that need to be
3808 # initialised otherwise nscd crashes.  
3810 AC_CHECK_MEMBER(struct passwd.pw_comment,
3811                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
3812                 [#include <pwd.h>])
3814 AC_CHECK_MEMBER(struct passwd.pw_age,
3815                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
3816                 [#include <pwd.h>])
3818 #################################################
3819 # Check to see if we should use the included popt 
3821 AC_ARG_WITH(included-popt,
3822 [  --with-included-popt    use bundled popt library, not from system],
3824   case "$withval" in
3825         yes)
3826                 INCLUDED_POPT=yes
3827                 ;;
3828         no)
3829                 INCLUDED_POPT=no
3830                 ;;
3831   esac ],
3833 if test x"$INCLUDED_POPT" != x"yes"; then
3834     AC_CHECK_LIB(popt, poptGetContext,
3835                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3838 AC_MSG_CHECKING(whether to use included popt)
3839 if test x"$INCLUDED_POPT" = x"yes"; then
3840     AC_MSG_RESULT(yes)
3841     BUILD_POPT='$(POPT_OBJS)'
3842         POPTLIBS='$(POPT_OBJS)'
3843     FLAGS1="-I$srcdir/popt"
3844 else
3845     AC_MSG_RESULT(no)
3846         BUILD_POPT=""
3847     POPTLIBS="-lpopt"
3849 AC_SUBST(BUILD_POPT)
3850 AC_SUBST(POPTLIBS)
3851 AC_SUBST(FLAGS1)
3853 #################################################
3854 # Check if the user wants Python
3856 # At the moment, you can use this to set which Python binary to link
3857 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3858 # though they can coexist in different directories.)  In the future
3859 # this might make the Python stuff be built by default.
3861 # Defaulting python breaks the clean target if python isn't installed
3863 PYTHON=
3865 AC_ARG_WITH(python,
3866 [  --with-python=PYTHONNAME  build Python libraries],
3867 [ case "${withval-python}" in
3868   yes)
3869         PYTHON=python
3870         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
3871         ;;
3872   no)
3873         PYTHON=
3874         ;;
3875   *)
3876         PYTHON=${withval-python}
3877         ;;
3878   esac ])
3879 AC_SUBST(PYTHON)
3881 for i in `echo $default_static_modules | sed -e's/,/ /g'`
3883         eval MODULE_DEFAULT_$i=STATIC
3884 done
3886 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
3888         dnl Fall back to static if dlopen() is not available
3889         eval MODULE_DEFAULT_$i=STATIC
3891         if test x"$ac_cv_func_dlopen" = xyes; then
3892                 eval MODULE_DEFAULT_$i=SHARED
3893         fi
3894 done
3896 dnl Always built these modules static
3897 MODULE_pdb_guest=STATIC
3898 MODULE_rpc_spoolss=STATIC
3899 MODULE_rpc_srv=STATIC
3900 MODULE_idmap_tdb=STATIC
3902 AC_ARG_WITH(static-modules,
3903 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
3904 [ if test $withval; then
3905         for i in `echo $withval | sed -e's/,/ /g'`
3906         do
3907                 eval MODULE_$i=STATIC
3908         done
3909 fi ])
3911 AC_ARG_WITH(shared-modules,
3912 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
3913 [ if test $withval; then
3914         for i in `echo $withval | sed -e's/,/ /g'`
3915         do
3916                         eval MODULE_$i=SHARED
3917         done
3918 fi ])
3920 ###########################################################################
3921 ## contributed pdb_modules
3923 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
3924                   [ PASSDBLIBS="$PASSDBLIBS $XML_LIBS" ] )
3925 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
3926                    [ PASSDBLIBS="$PASSDBLIBS $MYSQL_LIBS" ]     )
3928 ## end of contributed pdb_modules
3929 ###########################################################################
3931 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
3932                    [ PASSDBLIBS="$PASSDBLIBS $LDAP_LIBS" ] )
3933 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
3934 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
3935 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
3936 SMB_SUBSYSTEM(PDB)
3938 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
3939 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
3940 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
3941 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
3942 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
3943 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
3944 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
3945 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
3946 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
3947 SMB_SUBSYSTEM(RPC)
3949 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
3950 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
3951 SMB_SUBSYSTEM(IDMAP)
3953 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
3954 SMB_SUBSYSTEM(CHARSET)
3956 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
3957 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
3958 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
3959 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
3960 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/server.$SHLIBEXT", AUTH)
3961 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
3962 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
3963 SMB_SUBSYSTEM(AUTH)
3965 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
3966 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
3967 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
3968 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
3969 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
3970 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
3971 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
3972 SMB_SUBSYSTEM(VFS)
3974 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
3976 #################################################
3977 # do extra things if we are running insure
3979 if test "${ac_cv_prog_CC}" = "insure"; then
3980         CPPFLAGS="$CPPFLAGS -D__INSURE__"
3983 #################################################
3984 # Display summary of libraries detected
3986 AC_MSG_RESULT([Using libraries:])
3987 AC_MSG_RESULT([    LIBS = $LIBS])
3988 if test x"$with_ads_support" != x"no"; then
3989    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
3991 if test x"$with_ldap_support" != x"no"; then
3992    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
3995 #################################################
3996 # final configure stuff
3998 AC_MSG_CHECKING([configure summary])
3999 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4000            AC_MSG_RESULT(yes),
4001            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4002            AC_MSG_WARN([cannot run when cross-compiling]))
4004 builddir=`pwd`
4005 AC_SUBST(builddir)
4007 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4008 LIB_REMOVE_USR_LIB(LDFLAGS)
4009 LIB_REMOVE_USR_LIB(LIBS)
4011 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4012 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4013 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4015 AC_OUTPUT(include/stamp-h Makefile script/findsmb)
4017 #################################################
4018 # Print very concise instructions on building/use
4019 if test "x$enable_dmalloc" = xyes
4020 then
4021         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4022         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])