Add BROKEN_GETGRNAM and POSIX_ACL_NEEDS_MASK to systems that need them.
[Samba.git] / source / configure.in
blob52902e9ee5659c397c4bc2d49d2b93359cf71940
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(include/includes.h)
3 AC_CONFIG_HEADER(include/config.h)
5 #################################################
6 # Directory handling stuff to support both the
7 # legacy SAMBA directories and FHS compliant
8 # ones...
9 AC_PREFIX_DEFAULT(/usr/local/samba)
11 AC_ARG_WITH(fhs, 
12 [  --with-fhs              Use FHS-compliant paths (default=no)],
13     codepagedir="\$(DATADIR)/samba/codepages"
14     configdir="${sysconfdir}/samba"
15     lockdir="\${VARDIR}/cache/samba"
16     piddir="\$(VARDIR)/run/samba"
17     logfilebase="\${VARDIR}/log/samba"
18     privatedir="\${CONFIGDIR}/private"
19     swatdir="\${DATADIR}/samba/swat",
20     codepagedir="\$(LIBDIR)/codepages"
21     configdir="\$(LIBDIR)"
22     logfilebase="\$(VARDIR)"
23     lockdir="\${VARDIR}/locks"
24     piddir="\$(VARDIR)/locks"
25     privatedir="\${prefix}/private"
26     swatdir="\${prefix}/swat")
28 #################################################
29 # set private directory location
30 AC_ARG_WITH(privatedir,
31 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
32 [ case "$withval" in
33   yes|no)
34   #
35   # Just in case anybody calls it without argument
36   #
37     AC_MSG_WARN([--with-privatedir called without argument - will use default])
38   ;;
39   * )
40     privatedir="$withval"
41     ;;
42   esac])
44 #################################################
45 # set lock directory location
46 AC_ARG_WITH(lockdir,
47 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
48 [ case "$withval" in
49   yes|no)
50   #
51   # Just in case anybody calls it without argument
52   #
53     AC_MSG_WARN([--with-lockdir called without argument - will use default])
54   ;;
55   * )
56     lockdir="$withval"
57     ;;
58   esac])
60 #################################################
61 # set pid directory location
62 AC_ARG_WITH(piddir,
63 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
64 [ case "$withval" in
65   yes|no)
66   #
67   # Just in case anybody calls it without argument
68   #
69     AC_MSG_WARN([--with-piddir called without argument - will use default])
70   ;;
71   * )
72     piddir="$withval"
73     ;;
74   esac])
76 #################################################
77 # set SWAT directory location
78 AC_ARG_WITH(swatdir,
79 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
80 [ case "$withval" in
81   yes|no)
82   #
83   # Just in case anybody does it
84   #
85     AC_MSG_WARN([--with-swatdir called without argument - will use default])
86   ;;
87   * )
88     swatdir="$withval"
89     ;;
90   esac])
92 #################################################
93 # set configuration directory location
94 AC_ARG_WITH(configdir,
95 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
96 [ case "$withval" in
97   yes|no)
98   #
99   # Just in case anybody does it
100   #
101     AC_MSG_WARN([--with-configdir called without argument - will use default])
102   ;;
103   * )
104     configdir="$withval"
105     ;;
106   esac])
108 #################################################
109 # set codepage directory location
110 AC_ARG_WITH(codepagedir,
111 [  --with-codepagedir=DIR  Where to put codepage files (\$libdir/codepages)],
112 [ case "$withval" in
113   yes|no)
114   #
115   # Just in case anybody does it
116   #
117     AC_MSG_WARN([--with-codepagedir called without argument - will use default])
118   ;;
119   * )
120     codepagedir="$withval"
121     ;;
122   esac])
124 #################################################
125 # set log directory location
126 AC_ARG_WITH(logfilebase,
127 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
128 [ case "$withval" in
129   yes|no)
130   #
131   # Just in case anybody does it
132   #
133     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
134   ;;
135   * )
136     logfilebase="$withval"
137     ;;
138   esac])
140 AC_SUBST(codepagedir)
141 AC_SUBST(configdir)
142 AC_SUBST(lockdir)
143 AC_SUBST(piddir)
144 AC_SUBST(logfilebase)
145 AC_SUBST(privatedir)
146 AC_SUBST(swatdir)
147 AC_SUBST(bindir)
148 AC_SUBST(sbindir)
150 dnl Unique-to-Samba variables we'll be playing with.
151 AC_SUBST(SHELL)
152 AC_SUBST(RUNPROG)
153 AC_SUBST(MPROGS)
154 AC_SUBST(LDSHFLAGS)
155 AC_SUBST(SONAMEFLAG)
156 AC_SUBST(SHLD) 
157 AC_SUBST(HOST_OS)
158 AC_SUBST(PAM_MOD)
159 AC_SUBST(PDBEDIT)
160 AC_SUBST(WRAP)
161 AC_SUBST(WRAP32)
162 AC_SUBST(WRAPPROG)
163 AC_SUBST(PICFLAG)
164 AC_SUBST(PICSUFFIX)
165 AC_SUBST(SHLIBEXT)
166 AC_SUBST(BLDSHARED)
167 AC_SUBST(INSTALLCLIENTCMD_SH)
168 AC_SUBST(INSTALLCLIENTCMD_A)
169 AC_SUBST(LIBSMBCLIENT_SHARED)
170 AC_SUBST(LIBSMBCLIENT)
172 # compile with optimization and without debugging by default
173 CFLAGS="-O ${CFLAGS}"
175 AC_ARG_ENABLE(debug, 
176 [  --enable-debug          Turn on compiler debugging information (default=no)],
177     [if eval "test x$enable_debug = xyes"; then
178         CFLAGS="${CFLAGS} -g"
179     fi])
183 dnl Checks for programs.
184 AC_PROG_CC
185 AC_PROG_INSTALL
186 AC_PROG_AWK
187 dnl Check if we use GNU ld
188 LD=ld
189 AC_PROG_LD_GNU
190 AC_PATH_PROG(passwd_program, passwd, /bin/passwd)
191 AC_SUBST(passwd_program)
193 dnl Check if C compiler understands -c and -o at the same time
194 AC_PROG_CC_C_O
195 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
196       BROKEN_CC=
197 else
198       BROKEN_CC=#
200 AC_SUBST(BROKEN_CC)
202 dnl Check if the C compiler understands volatile (it should, being ANSI).
203 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
204     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
205         samba_cv_volatile=yes,samba_cv_volatile=no)])
206 if test x"$samba_cv_volatile" = x"yes"; then
207    AC_DEFINE(HAVE_VOLATILE)
212 AC_CANONICAL_SYSTEM
214 dnl Add #include for broken IRIX header files
215   case "$host_os" in
216         *irix6*) AC_ADD_INCLUDE(<standards.h>)
217         ;;
218 esac
220 AC_VALIDATE_CACHE_SYSTEM_TYPE
222 DYNEXP=
225 # Config CPPFLAG settings for strange OS's that must be set
226 # before other tests.
228 case "$host_os" in
229 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
230     *hpux*)
231       AC_PROG_CC_FLAG(Ae)
232       # mmap on HPUX is completely broken...
233       AC_DEFINE(MMAP_BLACKLIST)
234       if test $ac_cv_prog_cc_Ae = yes; then
235         CPPFLAGS="$CPPFLAGS -Ae"
236       fi
238 # Defines needed for HPUX support.
239 # HPUX has bigcrypt but (sometimes?) doesn't use it for
240 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
242       case `uname -r` in
243                         *9*|*10*)
244                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
245                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
246                                 AC_DEFINE(_HPUX_SOURCE)
247                                 AC_DEFINE(_POSIX_SOURCE)
248                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
249                                 AC_DEFINE(_MAX_ALIGNMENT,4)
250                                 ;;
251                         *11*)
252                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
253                                 AC_DEFINE(_HPUX_SOURCE)
254                                 AC_DEFINE(_POSIX_SOURCE)
255                                 AC_DEFINE(_LARGEFILE64_SOURCE)
256                                 AC_DEFINE(POSIX_ACL_NEEDS_MASK)
257                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
258                                 AC_DEFINE(_MAX_ALIGNMENT,4)
259                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
260                                 ;;
261       esac
262       DYNEXP="-Wl,-E"
263       ;;
267 # CRAY Unicos has broken const handling
268         *unicos*)
269                 AC_MSG_RESULT([disabling const])
270                 CPPFLAGS="$CPPFLAGS -Dconst="
271                 ;;
274 # AIX4.x doesn't even admit to having large
275 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
277     *aix4*)
278           AC_MSG_RESULT([enabling large file support])
279       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
280       AC_DEFINE(_LARGE_FILES)
281       ;;    
283 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
284 # to the existance of large files..
285 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
286 # recommendations on large file support, however it makes the
287 # compile work using gcc 2.7 and 2.8, whereas using the Sun
288 # recommendation makes the compile fail on gcc2.7. JRA.
290         *solaris*)
291                 case `uname -r` in
292                         5.0*|5.1*|5.2*|5.3*|5.5*)
293                                 AC_MSG_RESULT([no large file support])
294                                 ;;
295                         5.*)
296                         AC_MSG_RESULT([enabling large file support])
297                         if test "$ac_cv_prog_gcc" = yes; then
298                                 ${CC-cc} -v >conftest.c 2>&1
299                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
300                                 rm -fr conftest.c
301                                 case "$ac_cv_gcc_compiler_version_number" in
302                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
303                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
304                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
305                                                 ;;
306                                         *)
307                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
308                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
309                                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
310                                                 ;;
311                                 esac
312                         else
313                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
314                                 AC_DEFINE(_LARGEFILE64_SOURCE)
315                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
316                         fi
317                         ;;
318                 esac
319                 ;;
321 # VOS may need to have POSIX support and System V compatibility enabled.
323     *vos*)
324     case "$CPPFLAGS" in
325           *-D_POSIX_C_SOURCE*)
326                 ;;
327           *)
328                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
329                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
330                 ;;
331     esac
332     case "$CPPFLAGS" in
333           *-D_SYSV*|*-D_SVID_SOURCE*)
334                 ;;
335           *)
336                 CPPFLAGS="$CPPFLAGS -D_SYSV"
337                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
338     esac
339     ;;
341 # Tests needed for SINIX large file support.
343     *sysv4*)
344       if test $host = mips-sni-sysv4 ; then
345         AC_MSG_CHECKING([for LFS support])
346         old_CPPFLAGS="$CPPFLAGS"
347         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
348         AC_TRY_RUN([
349 #include <unistd.h>
350 main () {
351 #if _LFS64_LARGEFILE == 1
352 exit(0);
353 #else
354 exit(1);
355 #endif
356 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
357         CPPFLAGS="$old_CPPFLAGS"
358         if test x$SINIX_LFS_SUPPORT = xyes ; then
359           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
360           AC_DEFINE(_LARGEFILE64_SOURCE)
361           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
362           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
363           LIBS="`getconf LFS64_LIBS` $LIBS"
364         fi
365       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
366       fi
367     ;;
369 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
371     *linux*)
372         AC_MSG_CHECKING([for LFS support])
373         old_CPPFLAGS="$CPPFLAGS"
374         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
375        AC_TRY_RUN([
376 #include <unistd.h>
377 #include <sys/utsname.h>
378 main() {
379 #if _LFS64_LARGEFILE == 1
380        struct utsname uts;
381        char *release;
382        int major, minor;
384        /* Ensure this is glibc 2.2 or higher */
385 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
386        int libc_major = __GLIBC__;
387        int libc_minor = __GLIBC_MINOR__;
389        if (libc_major < 2)
390               exit(1);
391        if (libc_minor < 2)
392               exit(1);
393 #endif
395        /* Ensure this is kernel 2.4 or higher */
397        uname(&uts);
398        release = uts.release;
399        major = atoi(strsep(&release, "."));
400        minor = atoi(strsep(&release, "."));
402        if (major > 2 || (major == 2 && minor > 3))
403                exit(0);
404        exit(1);
405 #else
406        exit(1);
407 #endif
409 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
410         CPPFLAGS="$old_CPPFLAGS"
411         if test x$LINUX_LFS_SUPPORT = xyes ; then
412           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
413           AC_DEFINE(_LARGEFILE64_SOURCE)
414           AC_DEFINE(_FILE_OFFSET_BITS,64)
415           AC_DEFINE(_GNU_SOURCE)
416         fi
417        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
418                 ;;
420     *hurd*)
421         AC_MSG_CHECKING([for LFS support])
422         old_CPPFLAGS="$CPPFLAGS"
423         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
424         AC_TRY_RUN([
425 #include <unistd.h>
426 main () {
427 #if _LFS64_LARGEFILE == 1
428 exit(0);
429 #else
430 exit(1);
431 #endif
432 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
433         CPPFLAGS="$old_CPPFLAGS"
434         if test x$GLIBC_LFS_SUPPORT = xyes ; then
435           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
436           AC_DEFINE(_LARGEFILE64_SOURCE)
437           AC_DEFINE(_GNU_SOURCE)
438         fi
439       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
440     ;;
442 esac
444 AC_INLINE
445 AC_HEADER_STDC
446 AC_HEADER_DIRENT
447 AC_HEADER_TIME
448 AC_HEADER_SYS_WAIT
449 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
450 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
451 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
452 AC_CHECK_HEADERS(stdlib.h string.h strings.h syslog.h sys/file.h)
453 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
454 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h sys/socket.h)
455 AC_CHECK_HEADERS(syslog.h sys/syslog.h sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
456 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
457 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h)
460 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
461 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
463 case "$host_os" in
464     *hpux*)
465                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
466                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
467                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
468                    AC_DEFINE(HAVE_SHADOW_H)
469                 fi
470         ;;
471 esac
472 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
473 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
474 AC_CHECK_HEADERS(stropts.h poll.h)
475 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
476 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
478 # For experimental utmp support (lastlog on some BSD-like systems)
479 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
481 # For quotas on Veritas VxFS filesystems
482 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
484 # For quotas on Linux XFS filesystems
485 AC_CHECK_HEADERS(linux/xqm.h)
487 AC_CHECK_SIZEOF(int,cross)
488 AC_CHECK_SIZEOF(long,cross)
489 AC_CHECK_SIZEOF(short,cross)
491 AC_C_CONST
492 AC_C_INLINE
493 AC_C_BIGENDIAN
494 AC_C_CHAR_UNSIGNED
496 AC_TYPE_SIGNAL
497 AC_TYPE_UID_T
498 AC_TYPE_MODE_T
499 AC_TYPE_OFF_T
500 AC_TYPE_SIZE_T
501 AC_TYPE_PID_T
502 AC_STRUCT_ST_RDEV
503 AC_DIRENT_D_OFF
504 AC_CHECK_TYPE(ino_t,unsigned)
505 AC_CHECK_TYPE(loff_t,off_t)
506 AC_CHECK_TYPE(offset_t,loff_t)
507 AC_CHECK_TYPE(ssize_t, int)
508 AC_CHECK_TYPE(wchar_t, unsigned short)
510 ############################################
511 # for cups support we need libcups, and a handful of header files
513 AC_ARG_ENABLE(cups,
514 [  --enable-cups           Turn on CUPS support (default=auto)])
516 if test x$enable_cups != xno; then
517         AC_PATH_PROG(CUPS_CONFIG, cups-config)
519         if test "x$CUPS_CONFIG" != x; then
520                 AC_DEFINE(HAVE_CUPS)
521                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
522                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
523                 LIBS="$LIBS `$CUPS_CONFIG --libs`"
524         fi
527 ############################################
528 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code
529 AC_CHECK_FUNCS(dlopen)
530 if test x"$ac_cv_func_dlopen" = x"no"; then
531         AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
532         AC_DEFINE(HAVE_DLOPEN)])
534 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
536 ############################################
537 # check if the compiler can do immediate structures
538 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
539     AC_TRY_COMPILE([
540 #include <stdio.h>],
542         typedef struct {unsigned x;} FOOBAR;
543 #define X_FOOBAR(x) ((FOOBAR) { x })
544 #define FOO_ONE X_FOOBAR(1)
545         FOOBAR f = FOO_ONE;
546         static struct {
547         FOOBAR y;
548         } f2[] = {
549                 {FOO_ONE}
550         };
552         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
553 if test x"$samba_cv_immediate_structures" = x"yes"; then
554    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES)
557 ############################################
558 # check for unix domain sockets
559 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
560     AC_TRY_COMPILE([
561 #include <sys/types.h>
562 #include <stdlib.h>
563 #include <stddef.h>
564 #include <sys/socket.h>
565 #include <sys/un.h>],
567   struct sockaddr_un sunaddr; 
568   sunaddr.sun_family = AF_UNIX;
570         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
571 if test x"$samba_cv_unixsocket" = x"yes"; then
572    AC_DEFINE(HAVE_UNIXSOCKET)
575 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
576     AC_TRY_COMPILE([
577 #include <sys/types.h>
578 #if STDC_HEADERS
579 #include <stdlib.h>
580 #include <stddef.h>
581 #endif
582 #include <sys/socket.h>],[socklen_t i = 0],
583     samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
584 if test x"$samba_cv_socklen_t" = x"yes"; then
585    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
588 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
589     AC_TRY_COMPILE([
590 #include <sys/types.h>
591 #if STDC_HEADERS
592 #include <stdlib.h>
593 #include <stddef.h>
594 #endif
595 #include <signal.h>],[sig_atomic_t i = 0],
596         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
597 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
598    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
601 # stupid headers have the functions but no declaration. grrrr.
602 AC_HAVE_DECL(errno, [#include <errno.h>])
603 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
604 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
605 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
606 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
607 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
608 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
610 # and glibc has setresuid under linux but the function does
611 # nothing until kernel 2.1.44! very dumb.
612 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
613     AC_TRY_RUN([#include <errno.h>
614 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
615         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
616 if test x"$samba_cv_have_setresuid" = x"yes"; then
617     AC_DEFINE(HAVE_SETRESUID)
620 # Do the same check for setresguid...
622 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
623     AC_TRY_RUN([#include <unistd.h>
624 #include <errno.h>
625 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
626         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
627 if test x"$samba_cv_have_setresgid" = x"yes"; then
628     AC_DEFINE(HAVE_SETRESGID)
631 AC_FUNC_MEMCMP
633 ###############################################
634 # Readline included by default unless explicitly asked not to
635 test "${with_readline+set}" != "set" && with_readline=yes
637 # test for where we get readline() from
638 AC_MSG_CHECKING(whether to use readline)
639 AC_ARG_WITH(readline,
640 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto)],
641 [  case "$with_readline" in
642   yes)
643     AC_MSG_RESULT(yes)
645     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
646     AC_CHECK_HEADERS(readline/history.h)
648     AC_CHECK_HEADERS(readline.h readline/readline.h,[
649       for termlib in ncurses curses termcap terminfo termlib; do
650        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
651       done
652       AC_CHECK_LIB(readline, rl_callback_handler_install,
653        [TERMLIBS="-lreadline $TERMLIBS"
654        AC_DEFINE(HAVE_LIBREADLINE)
655        break], [TERMLIBS=], $TERMLIBS)])
656     ;;
657   no)
658     AC_MSG_RESULT(no)
659     ;;
660   *)
661     AC_MSG_RESULT(yes)
663     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
664     # alternate readline path
665     _ldflags=${LDFLAGS}
666     _cppflags=${CPPFLAGS}
668     # Add additional search path
669     LDFLAGS="-L$with_readline/lib $LDFLAGS"
670     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
672     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
673     AC_CHECK_HEADERS(readline/history.h)
675     AC_CHECK_HEADERS(readline.h readline/readline.h,[
676       for termlib in ncurses curses termcap terminfo termlib; do
677        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
678       done
679       AC_CHECK_LIB(readline, rl_callback_handler_install,
680        [TERMLDFLAGS="-L$with_readline/lib"
681        TERMCPPFLAGS="-I$with_readline/include"
682        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
683        TERMLIBS="-lreadline $TERMLIBS"
684        AC_DEFINE(HAVE_LIBREADLINE)
685        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
687     LDFLAGS=$_ldflags
688     ;;
689   esac],
690   AC_MSG_RESULT(no)
692 AC_SUBST(TERMLIBS)
693 AC_SUBST(TERMLDFLAGS)
695 # The following test taken from the cvs sources
696 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
697 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
698 # libsocket.so which has a bad implementation of gethostbyname (it
699 # only looks in /etc/hosts), so we only look for -lsocket if we need
700 # it.
701 AC_CHECK_FUNCS(connect)
702 if test x"$ac_cv_func_connect" = x"no"; then
703     case "$LIBS" in
704     *-lnsl*) ;;
705     *) AC_CHECK_LIB(nsl_s, printf) ;;
706     esac
707     case "$LIBS" in
708     *-lnsl*) ;;
709     *) AC_CHECK_LIB(nsl, printf) ;;
710     esac
711     case "$LIBS" in
712     *-lsocket*) ;;
713     *) AC_CHECK_LIB(socket, connect) ;;
714     esac
715     case "$LIBS" in
716     *-linet*) ;;
717     *) AC_CHECK_LIB(inet, connect) ;;
718     esac
719     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
720     dnl has been cached.
721     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
722        test x"$ac_cv_lib_inet_connect" = x"yes"; then
723         # ac_cv_func_connect=yes
724         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
725         AC_DEFINE(HAVE_CONNECT)
726     fi
729 ###############################################
730 # test for where we get get_yp_default_domain() from
731 AC_CHECK_FUNCS(yp_get_default_domain)
732 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
733         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
734         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
737 # Check if we have execl, if not we need to compile smbrun.
738 AC_CHECK_FUNCS(execl)
739 if test x"$ac_cv_func_execl" = x"no"; then
740     RUNPROG="bin/smbrun"
741 else
742     RUNPROG=""
745 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link)
746 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64)
747 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
748 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
749 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
750 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
751 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
752 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
753 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
754 AC_CHECK_FUNCS(syslog vsyslog)
756 # syscall() is needed for smbwrapper.
757 AC_CHECK_FUNCS(syscall)
759 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
760 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
761 AC_CHECK_FUNCS(__getcwd _getcwd)
762 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
763 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
764 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
765 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
766 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
767 AC_CHECK_FUNCS(_write __write _fork __fork)
768 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
769 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
770 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
771 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
772 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
775 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
778 if test x$ac_cv_func_stat64 = xno ; then
779   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
780   AC_TRY_LINK([
781 #if defined(HAVE_UNISTD_H)
782 #include <unistd.h>
783 #endif
784 #include <sys/stat.h>
785 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
786   AC_MSG_RESULT([$ac_cv_func_stat64])
787   if test x$ac_cv_func_stat64 = xyes ; then
788     AC_DEFINE(HAVE_STAT64)
789   fi
792 if test x$ac_cv_func_lstat64 = xno ; then
793   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
794   AC_TRY_LINK([
795 #if defined(HAVE_UNISTD_H)
796 #include <unistd.h>
797 #endif
798 #include <sys/stat.h>
799 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
800   AC_MSG_RESULT([$ac_cv_func_lstat64])
801   if test x$ac_cv_func_lstat64 = xyes ; then
802     AC_DEFINE(HAVE_LSTAT64)
803   fi
806 if test x$ac_cv_func_fstat64 = xno ; then
807   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
808   AC_TRY_LINK([
809 #if defined(HAVE_UNISTD_H)
810 #include <unistd.h>
811 #endif
812 #include <sys/stat.h>
813 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
814   AC_MSG_RESULT([$ac_cv_func_fstat64])
815   if test x$ac_cv_func_fstat64 = xyes ; then
816     AC_DEFINE(HAVE_FSTAT64)
817   fi
821 # If no strcasecmp, check for it in some known places
822 # It is in -lresolv on ReliantUNIX and UnixWare
823 #   -lresolve *must* follow -lnsl for name resolution to work properly
826 if test x$ac_cv_func_strcasecmp = xno ; then
827         AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
828                 AC_DEFINE(HAVE_STRCASECMP))
832 # Check for the functions putprpwnam, set_auth_parameters,
833 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
834 # Needed for OSF1 and HPUX.
837 AC_LIBTESTFUNC(security, putprpwnam)
838 AC_LIBTESTFUNC(sec, putprpwnam)
840 AC_LIBTESTFUNC(security, set_auth_parameters)
841 AC_LIBTESTFUNC(sec, set_auth_parameters)
843 # UnixWare 7.x has its getspnam in -lgen
844 AC_LIBTESTFUNC(gen, getspnam)
846 AC_LIBTESTFUNC(security, getspnam)
847 AC_LIBTESTFUNC(sec, getspnam)
849 AC_LIBTESTFUNC(security, bigcrypt)
850 AC_LIBTESTFUNC(sec, bigcrypt)
852 AC_LIBTESTFUNC(security, getprpwnam)
853 AC_LIBTESTFUNC(sec, getprpwnam)
855 # this bit needs to be modified for each OS that is suported by
856 # smbwrapper. You need to specify how to created a shared library and
857 # how to compile C code to produce PIC object files
859 # these are the defaults, good for lots of systems
860 HOST_OS="$host_os"
861 LDSHFLAGS="-shared"
862 SONAMEFLAG="#"
863 SHLD="\${CC}" 
864 PICFLAG=""
865 PICSUFFIX="po.o"
866 SHLIBEXT="so"
867 # Assume non-shared by default and override below
868 BLDSHARED="false" 
869 AC_MSG_CHECKING([ability to build shared libraries])
871 # and these are for particular systems
872 case "$host_os" in
873                 *linux*)   AC_DEFINE(LINUX)
874                         BLDSHARED="true"
875                         LDSHFLAGS="-shared"
876                         DYNEXP="-Wl,--export-dynamic"
877                         PICFLAG="-fPIC"
878                         SONAMEFLAG="-Wl,-soname="
879                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
880                         ;;
881                 *solaris*) AC_DEFINE(SUNOS5)
882                         BLDSHARED="true"
883                         LDSHFLAGS="-G"
884                         SONAMEFLAG="-h "
885                         if test "${GCC}" = "yes"; then
886                                 PICFLAG="-fPIC"
887                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
888                                         DYNEXP="-Wl,-E"
889                                 fi
890                         else
891                                 PICFLAG="-KPIC"
892                                 ## ${CFLAGS} added for building 64-bit shared 
893                                 ## libs using Sun's Compiler
894                                 LDSHFLAGS="-G \${CFLAGS}"
895                                 POBAD_CC=""
896                                 PICSUFFIX="po.o"
897                         fi
898                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
899                         AC_DEFINE(BROKEN_GETGRNAM)
900                 ;;
901                 *sunos*) AC_DEFINE(SUNOS4)
902                         BLDSHARED="true"
903                         LDSHFLAGS="-G"
904                         SONAMEFLAG="-Wl,-h,"
905                         PICFLAG="-KPIC"   # Is this correct for SunOS
906                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
907                         AC_DEFINE(BROKEN_GETGRNAM)
908                 ;;
909                 *freebsd*)  BLDSHARED="true"
910                         LDSHFLAGS="-shared"
911                         DYNEXP="-Wl,--export-dynamic"
912                         SONAMEFLAG="-Wl,-soname,"
913                         PICFLAG="-fPIC -DPIC"
914                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
915                         AC_DEFINE(BROKEN_GETGRNAM)
916                 ;;
917                 *openbsd*)  BLDSHARED="true"
918                         LDSHFLAGS="-shared"
919                         DYNEXP="-Wl,-Bdynamic"
920                         SONAMEFLAG="-Wl,-soname,"
921                         PICFLAG="-fPIC"
922                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
923                         AC_DEFINE(BROKEN_GETGRNAM)
924                 ;;
925                 *irix*) AC_DEFINE(IRIX)
926                         case "$host_os" in
927                         *irix6*) AC_DEFINE(IRIX6)
928                         ;;
929                         esac
930                         ATTEMPT_WRAP32_BUILD=yes
931                         BLDSHARED="true"
932                         LDSHFLAGS="-set_version sgi1.0 -shared"
933                         SONAMEFLAG="-soname "
934                         SHLD="\${LD}" 
935                         if test "${GCC}" = "yes"; then
936                                 PICFLAG="-fPIC"
937                         else 
938                                 PICFLAG="-KPIC"
939                         fi
940                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
941                 ;;
942                 *aix*) AC_DEFINE(AIX)
943                         BLDSHARED="true"
944                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
945                         DYNEXP="-Wl,-brtl,-bexpall"
946                         PICFLAG="-O2"
947                         if test "${GCC}" != "yes"; then
948                                 ## for funky AIX compiler using strncpy()
949                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
950                         fi
952                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
953                 ;;
954                 *hpux*) AC_DEFINE(HPUX)
955                         SHLIBEXT="sl"
956                         # Use special PIC flags for the native HP-UX compiler.
957                         if test $ac_cv_prog_cc_Ae = yes; then
958                                 BLDSHARED="true"
959                                 SHLD="/usr/bin/ld"
960                                 LDSHFLAGS="-B symbolic -b -z"
961                                 SONAMEFLAG="+h "
962                                 PICFLAG="+z"
963                         fi
964                         DYNEXP="-Wl,-E"
965                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192)
966                         AC_DEFINE(POSIX_ACL_NEEDS_MASK)
967                         ;;
968                 *qnx*) AC_DEFINE(QNX)
969                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
970                         ;;
971                 *osf*) AC_DEFINE(OSF1)
972                         BLDSHARED="true"
973                         LDSHFLAGS="-shared"
974                         SONAMEFLAG="-Wl,-soname,"
975                         PICFLAG="-fPIC"
976                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
977                         AC_DEFINE(BROKEN_GETGRNAM)
978                 ;;
979                 *sco*) AC_DEFINE(SCO)
980                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
981                         ;;
982                 *unixware*) AC_DEFINE(UNIXWARE)
983                         BLDSHARED="true"
984                         LDSHFLAGS="-shared"
985                         SONAMEFLAG="-Wl,-soname,"
986                         PICFLAG="-KPIC"
987                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
988                 ;;
989                 *next2*) AC_DEFINE(NEXT2)
990                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
991                         ;;
992                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
993                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
994                         ;;
995                 *sysv4*)
996                         case "$host" in
997                                 *-univel-*)     if [ test "$GCC" != yes ]; then
998                                                                         AC_DEFINE(HAVE_MEMSET)
999                                                                 fi
1000                                                                 LDSHFLAGS="-G"
1001                                                                 DYNEXP="-Bexport"
1002                                 ;;
1003                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
1004                         esac
1005                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1006                         ;;
1007                 *sysv5*)
1008                         if [ test "$GCC" != yes ]; then
1009                                 AC_DEFINE(HAVE_MEMSET)
1010                         fi
1011                         LDSHFLAGS="-G"
1012                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1013                         ;;
1014                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1015                         BLDSHARED="false"
1016                         LDSHFLAGS=""
1017                         ;;
1018                 *)
1019                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1020                         ;;
1021 esac
1022 AC_SUBST(DYNEXP)
1023 AC_MSG_RESULT($BLDSHARED)
1024 AC_MSG_CHECKING([linker flags for shared libraries])
1025 AC_MSG_RESULT([$LDSHFLAGS])
1026 AC_MSG_CHECKING([compiler flags for position-independent code])
1027 AC_MSG_RESULT([$PICFLAGS])
1029 # try to work out how to produce pic code with this compiler
1030 if test x$PICFLAG = x; then
1031   AC_PROG_CC_FLAG(fpic)
1032   if test $ac_cv_prog_cc_fpic = yes; then
1033       PICFLAG="-fpic";
1034   fi
1036 if test x$PICFLAG = x; then
1037   AC_PROG_CC_FLAG(KPIC)
1038   if test $ac_cv_prog_cc_KPIC = yes; then
1039     PICFLAG="-KPIC";
1040   fi
1042 if test x$PICFLAG = x; then
1043   AC_PROG_CC_FLAG(Kpic)
1044   if test $ac_cv_prog_cc_Kpic = yes; then
1045     PICFLAG="-Kpic";
1046   fi
1049 ################
1051 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1052 AC_TRY_RUN([#include <stdio.h>
1053 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1054 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1055 if test x"$samba_cv_have_longlong" = x"yes"; then
1056     AC_DEFINE(HAVE_LONGLONG)
1060 # Check if the compiler supports the LL prefix on long long integers.
1061 # AIX needs this.
1063 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1064     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1065         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1066 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1067    AC_DEFINE(COMPILER_SUPPORTS_LL)
1070   
1071 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1072 AC_TRY_RUN([#include <stdio.h>
1073 #include <sys/stat.h>
1074 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1075 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1076 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1077     AC_DEFINE(SIZEOF_OFF_T,8)
1080 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1081 AC_TRY_RUN([
1082 #if defined(HAVE_UNISTD_H)
1083 #include <unistd.h>
1084 #endif
1085 #include <stdio.h>
1086 #include <sys/stat.h>
1087 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1088 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1089 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1090     AC_DEFINE(HAVE_OFF64_T)
1093 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1094 AC_TRY_RUN([#include <stdio.h>
1095 #include <sys/stat.h>
1096 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1097 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1098 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1099     AC_DEFINE(SIZEOF_INO_T,8)
1102 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1103 AC_TRY_RUN([
1104 #if defined(HAVE_UNISTD_H)
1105 #include <unistd.h>
1106 #endif
1107 #include <stdio.h>
1108 #include <sys/stat.h>
1109 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1110 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1111 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1112     AC_DEFINE(HAVE_INO64_T)
1115 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1116 AC_TRY_RUN([
1117 #if defined(HAVE_UNISTD_H)
1118 #include <unistd.h>
1119 #endif
1120 #include <stdio.h>
1121 #include <sys/stat.h>
1122 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1123 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1124 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1125     AC_DEFINE(HAVE_DEV64_T)
1128 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1129 AC_TRY_COMPILE([
1130 #if defined(HAVE_UNISTD_H)
1131 #include <unistd.h>
1132 #endif
1133 #include <sys/types.h>
1134 #include <dirent.h>],
1135 [struct dirent64 de;],
1136 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1137 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1138     AC_DEFINE(HAVE_STRUCT_DIRENT64)
1141 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1142 AC_TRY_RUN([
1143 #if defined(HAVE_UNISTD_H)
1144 #include <unistd.h>
1145 #endif
1146 #include <sys/types.h>
1147 main() { dev_t dev; int i = major(dev); return 0; }],
1148 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1149 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1150     AC_DEFINE(HAVE_DEVICE_MAJOR_FN)
1153 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1154 AC_TRY_RUN([
1155 #if defined(HAVE_UNISTD_H)
1156 #include <unistd.h>
1157 #endif
1158 #include <sys/types.h>
1159 main() { dev_t dev; int i = minor(dev); return 0; }],
1160 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1161 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1162     AC_DEFINE(HAVE_DEVICE_MINOR_FN)
1165 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV_FN,[
1166 AC_TRY_RUN([
1167 #if defined(HAVE_UNISTD_H)
1168 #include <unistd.h>
1169 #endif
1170 #include <sys/types.h>
1171 main() { dev_t dev = makedev(1,2); return 0; }],
1172 samba_cv_HAVE_MAKEDEV_FN=yes,samba_cv_HAVE_MAKEDEV_FN=no,samba_cv_HAVE_MAKEDEV_FN=cross)])
1173 if test x"$samba_cv_HAVE_MAKEDEV_FN" = x"yes"; then
1174     AC_DEFINE(MAKEDEV_FN)
1177 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1178 AC_TRY_RUN([#include <stdio.h>
1179 main() { char c; c=250; exit((c > 0)?0:1); }],
1180 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1181 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1182     AC_DEFINE(HAVE_UNSIGNED_CHAR)
1185 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1186 AC_TRY_COMPILE([#include <sys/types.h>
1187 #include <sys/socket.h>
1188 #include <netinet/in.h>],
1189 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1190 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1191 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1192     AC_DEFINE(HAVE_SOCK_SIN_LEN)
1195 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1196 AC_TRY_COMPILE([#include <sys/types.h>
1197 #include <dirent.h>
1198 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1199 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1200 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1201     AC_DEFINE(SEEKDIR_RETURNS_VOID)
1204 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
1205 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
1206 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
1207 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
1208     AC_DEFINE(HAVE_FILE_MACRO)
1211 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1212 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1213 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1214 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1215     AC_DEFINE(HAVE_FUNCTION_MACRO)
1218 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1219 AC_TRY_RUN([
1220 #include <sys/time.h>
1221 #include <unistd.h>
1222 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1223            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1224 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1225     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
1228 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1229 AC_TRY_LINK([#include <stdarg.h>
1230 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1231 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1232 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1233     AC_DEFINE(HAVE_VA_COPY)
1236 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1237 AC_TRY_RUN([
1238 #include <sys/types.h>
1239 #include <stdarg.h>
1240 void foo(const char *format, ...) {
1241         va_list ap;
1242         int len;
1243         char buf[5];
1245         va_start(ap, format);
1246         len = vsnprintf(buf, 0, format, ap);
1247         va_end(ap);
1248         if (len != 5) exit(1);
1250         va_start(ap, format);
1251         len = vsnprintf(0, 0, format, ap);
1252         va_end(ap);
1253         if (len != 5) exit(1);
1255         if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1257         exit(0);
1259 main() { foo("hello"); }
1261 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1262 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1263         AC_DEFINE(HAVE_C99_VSNPRINTF)
1266 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1267 AC_TRY_RUN([#include <sys/types.h>
1268 #include <dirent.h>
1269 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1270 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1271 di->d_name[0] == 0) exit(0); exit(1);} ],
1272 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1273 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1274     AC_DEFINE(HAVE_BROKEN_READDIR)
1277 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1278 AC_TRY_COMPILE([#include <sys/types.h>
1279 #include <utime.h>],
1280 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1281 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1282 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1283     AC_DEFINE(HAVE_UTIMBUF)
1286 dnl  utmp and utmpx come in many flavours
1287 dnl  We need to check for many of them
1288 dnl  But we don't need to do each and every one, because our code uses
1289 dnl  mostly just the utmp (not utmpx) fields.
1291 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1293 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1294 AC_TRY_COMPILE([#include <sys/types.h>
1295 #include <utmp.h>],
1296 [struct utmp ut;  ut.ut_name[0] = 'a';],
1297 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1298 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1299     AC_DEFINE(HAVE_UT_UT_NAME)
1300 fi 
1302 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1303 AC_TRY_COMPILE([#include <sys/types.h>
1304 #include <utmp.h>],
1305 [struct utmp ut;  ut.ut_user[0] = 'a';],
1306 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1307 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1308     AC_DEFINE(HAVE_UT_UT_USER)
1309 fi 
1311 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1312 AC_TRY_COMPILE([#include <sys/types.h>
1313 #include <utmp.h>],
1314 [struct utmp ut;  ut.ut_id[0] = 'a';],
1315 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1316 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1317     AC_DEFINE(HAVE_UT_UT_ID)
1318 fi 
1320 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1321 AC_TRY_COMPILE([#include <sys/types.h>
1322 #include <utmp.h>],
1323 [struct utmp ut;  ut.ut_host[0] = 'a';],
1324 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1325 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1326     AC_DEFINE(HAVE_UT_UT_HOST)
1327 fi 
1329 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1330 AC_TRY_COMPILE([#include <sys/types.h>
1331 #include <utmp.h>],
1332 [struct utmp ut;  time_t t; ut.ut_time = t;],
1333 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1334 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1335     AC_DEFINE(HAVE_UT_UT_TIME)
1336 fi 
1338 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1339 AC_TRY_COMPILE([#include <sys/types.h>
1340 #include <utmp.h>],
1341 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1342 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1343 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1344     AC_DEFINE(HAVE_UT_UT_TV)
1345 fi 
1347 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1348 AC_TRY_COMPILE([#include <sys/types.h>
1349 #include <utmp.h>],
1350 [struct utmp ut;  ut.ut_type = 0;],
1351 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1352 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1353     AC_DEFINE(HAVE_UT_UT_TYPE)
1354 fi 
1356 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1357 AC_TRY_COMPILE([#include <sys/types.h>
1358 #include <utmp.h>],
1359 [struct utmp ut;  ut.ut_pid = 0;],
1360 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1361 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1362     AC_DEFINE(HAVE_UT_UT_PID)
1363 fi 
1365 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1366 AC_TRY_COMPILE([#include <sys/types.h>
1367 #include <utmp.h>],
1368 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1369 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1370 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1371     AC_DEFINE(HAVE_UT_UT_EXIT)
1372 fi 
1374 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1375 AC_TRY_COMPILE([#include <sys/types.h>
1376 #include <utmp.h>],
1377 [struct utmp ut;  ut.ut_addr = 0;],
1378 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1379 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1380     AC_DEFINE(HAVE_UT_UT_ADDR)
1381 fi 
1383 if test x$ac_cv_func_pututline = xyes ; then
1384   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1385   AC_TRY_COMPILE([#include <sys/types.h>
1386 #include <utmp.h>],
1387   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1388   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1389   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1390       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
1391   fi
1394 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1395 AC_TRY_COMPILE([#include <sys/types.h>
1396 #include <utmpx.h>],
1397 [struct utmpx ux;  ux.ut_syslen = 0;],
1398 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1399 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1400     AC_DEFINE(HAVE_UX_UT_SYSLEN)
1401 fi 
1403 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1404 AC_TRY_RUN([
1405 #include <sys/types.h>
1406 #include <fcntl.h>
1407 #ifndef F_GETLEASE
1408 #define F_GETLEASE      1025
1409 #endif
1410 main() {
1411        int fd = open("/dev/null", O_RDONLY);
1412        return fcntl(fd, F_GETLEASE, 0) == -1;
1415 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1416 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1417     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1420 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1421 AC_TRY_RUN([
1422 #include <sys/types.h>
1423 #include <fcntl.h>
1424 #include <signal.h>
1425 #ifndef F_NOTIFY
1426 #define F_NOTIFY 1026
1427 #endif
1428 main() {
1429         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1432 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1433 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" && test x"$target_cpu" != x"s390"; then
1434     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1437 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1438 AC_TRY_RUN([
1439 #include <sys/types.h>
1440 #include <fcntl.h>
1441 #include <signal.h>
1442 #include <sys/file.h>
1443 #ifndef LOCK_MAND
1444 #define LOCK_MAND       32
1445 #define LOCK_READ       64
1446 #endif
1447 main() {
1448         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1451 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1452 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1453     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1459 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1460 AC_TRY_COMPILE([#include <sys/types.h>
1461 #include <fcntl.h>],
1462 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1463 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1464 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1465     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1468 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1469 AC_TRY_RUN([#include <sys/types.h>
1470 #include <sys/capability.h>
1471 main() {
1472  cap_t cap;
1473  if ((cap = cap_get_proc()) == NULL)
1474    exit(1);
1475  cap->cap_effective |= CAP_NETWORK_MGT;
1476  cap->cap_inheritable |= CAP_NETWORK_MGT;
1477  cap_set_proc(cap);
1478  exit(0);
1481 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1482 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1483     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1487 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1488 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1491 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1492 AC_TRY_COMPILE([#include <sys/types.h>
1493 #if defined(HAVE_RPC_RPC_H)
1494 #include <rpc/rpc.h>
1495 #endif],
1496 [int16 testvar;],
1497 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1498 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1499     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1502 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1503 AC_TRY_COMPILE([#include <sys/types.h>
1504 #if defined(HAVE_RPC_RPC_H)
1505 #include <rpc/rpc.h>
1506 #endif],
1507 [uint16 testvar;],
1508 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1509 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1510     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1513 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1514 AC_TRY_COMPILE([#include <sys/types.h>
1515 #if defined(HAVE_RPC_RPC_H)
1516 #include <rpc/rpc.h>
1517 #endif],
1518 [int32 testvar;],
1519 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1520 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1521     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1524 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1525 AC_TRY_COMPILE([#include <sys/types.h>
1526 #if defined(HAVE_RPC_RPC_H)
1527 #include <rpc/rpc.h>
1528 #endif],
1529 [uint32 testvar;],
1530 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1531 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1532     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1536 dnl Some systems (SCO) have a problem including
1537 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1538 dnl as a #define in <prot.h> and as part of an enum
1539 dnl in <rpc/rpc.h>.
1542 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1543 AC_TRY_COMPILE([#include <sys/types.h>
1544 #ifdef HAVE_SYS_SECURITY_H
1545 #include <sys/security.h>
1546 #include <prot.h>
1547 #endif  /* HAVE_SYS_SECURITY_H */
1548 #if defined(HAVE_RPC_RPC_H)
1549 #include <rpc/rpc.h>
1550 #endif],
1551 [int testvar;],
1552 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1553 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1554     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1557 AC_MSG_CHECKING([for test routines])
1558 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1559            AC_MSG_RESULT(yes),
1560            AC_MSG_ERROR([cant find test code. Aborting config]),
1561            AC_MSG_WARN([cannot run when cross-compiling]))
1563 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1564 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1565            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1566 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1567     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1570 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1571 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1572            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1573 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1574     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1577 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1578 SAVE_CPPFLAGS="$CPPFLAGS"
1579 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1580 AC_TRY_COMPILE([
1581 #define REPLACE_GETPASS 1
1582 #define NO_CONFIG_H 1
1583 #define main dont_declare_main
1584 #include "${srcdir-.}/lib/getsmbpass.c"
1585 #undef main
1586 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1587 CPPFLAGS="$SAVE_CPPFLAGS"
1589 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1590         AC_DEFINE(REPLACE_GETPASS)
1593 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1594 AC_TRY_RUN([
1595 #include <stdio.h>
1596 #include <sys/types.h>
1597 #include <netinet/in.h>
1598 #ifdef HAVE_ARPA_INET_H
1599 #include <arpa/inet.h>
1600 #endif
1601 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1602 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1603     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1604 exit(1);}],
1605            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1606 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1607     AC_DEFINE(REPLACE_INET_NTOA)
1610 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1611 AC_TRY_RUN([#include <stdlib.h>
1612 #include <sys/types.h>
1613 #include <sys/stat.h>
1614 #include <unistd.h>
1615 main() { 
1616   struct stat st;
1617   char tpl[20]="/tmp/test.XXXXXX"; 
1618   int fd = mkstemp(tpl); 
1619   if (fd == -1) exit(1);
1620   unlink(tpl);
1621   if (fstat(fd, &st) != 0) exit(1);
1622   if ((st.st_mode & 0777) != 0600) exit(1);
1623   exit(0);
1625 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1626 samba_cv_HAVE_SECURE_MKSTEMP=no,
1627 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1628 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1629     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1632 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1633 AC_TRY_RUN([#include <unistd.h>
1634 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1635 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1636 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1637     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1640 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1641 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1642            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1643 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1644     AC_DEFINE(HAVE_ROOT)
1645 else
1646     AC_MSG_WARN(running as non-root will disable some tests)
1649 ##################
1650 # look for a method of finding the list of network interfaces
1651 iface=no;
1652 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1653 AC_TRY_RUN([
1654 #define HAVE_IFACE_AIX 1
1655 #define AUTOCONF_TEST 1
1656 #include "confdefs.h"
1657 #include "${srcdir-.}/lib/interfaces.c"],
1658            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1659 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1660     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1663 if test $iface = no; then
1664 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1665 AC_TRY_RUN([
1666 #define HAVE_IFACE_IFCONF 1
1667 #define AUTOCONF_TEST 1
1668 #include "confdefs.h"
1669 #include "${srcdir-.}/lib/interfaces.c"],
1670            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1671 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1672     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1676 if test $iface = no; then
1677 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1678 AC_TRY_RUN([
1679 #define HAVE_IFACE_IFREQ 1
1680 #define AUTOCONF_TEST 1
1681 #include "confdefs.h"
1682 #include "${srcdir-.}/lib/interfaces.c"],
1683            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1684 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1685     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1690 ################################################
1691 # look for a method of setting the effective uid
1692 seteuid=no;
1693 if test $seteuid = no; then
1694 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1695 AC_TRY_RUN([
1696 #define AUTOCONF_TEST 1
1697 #define USE_SETRESUID 1
1698 #include "confdefs.h"
1699 #include "${srcdir-.}/lib/util_sec.c"],
1700            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1701 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1702     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1707 if test $seteuid = no; then
1708 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1709 AC_TRY_RUN([
1710 #define AUTOCONF_TEST 1
1711 #define USE_SETREUID 1
1712 #include "confdefs.h"
1713 #include "${srcdir-.}/lib/util_sec.c"],
1714            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1715 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1716     seteuid=yes;AC_DEFINE(USE_SETREUID)
1720 if test $seteuid = no; then
1721 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1722 AC_TRY_RUN([
1723 #define AUTOCONF_TEST 1
1724 #define USE_SETEUID 1
1725 #include "confdefs.h"
1726 #include "${srcdir-.}/lib/util_sec.c"],
1727            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1728 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1729     seteuid=yes;AC_DEFINE(USE_SETEUID)
1733 if test $seteuid = no; then
1734 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1735 AC_TRY_RUN([
1736 #define AUTOCONF_TEST 1
1737 #define USE_SETUIDX 1
1738 #include "confdefs.h"
1739 #include "${srcdir-.}/lib/util_sec.c"],
1740            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1741 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1742     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1747 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1748 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1749            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1750 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1751     AC_DEFINE(HAVE_MMAP)
1754 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1755 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1756            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1757 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1758     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1761 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1762 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1763            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1764 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1765     AC_DEFINE(HAVE_FCNTL_LOCK)
1768 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1769 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1770            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1771 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1772     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1774 else
1777 dnl Don't check for 64 bit fcntl locking if we know that the
1778 dnl glibc2.1 broken check has succeeded.
1779 dnl 
1781   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1782   AC_TRY_RUN([
1783 #if defined(HAVE_UNISTD_H)
1784 #include <unistd.h>
1785 #endif
1786 #include <stdio.h>
1787 #include <stdlib.h>
1789 #ifdef HAVE_FCNTL_H
1790 #include <fcntl.h>
1791 #endif
1793 #ifdef HAVE_SYS_FCNTL_H
1794 #include <sys/fcntl.h>
1795 #endif
1796 main() { struct flock64 fl64;
1797 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1798 exit(0);
1799 #else
1800 exit(1);
1801 #endif
1803        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1805   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1806       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1807   fi
1810 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1811 AC_TRY_COMPILE([#include <sys/types.h>
1812 #include <sys/stat.h>
1813 #include <unistd.h>],
1814 [struct stat st;  st.st_blocks = 0;],
1815 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1816 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1817     AC_DEFINE(HAVE_STAT_ST_BLOCKS)
1818 fi 
1820 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1821 AC_TRY_COMPILE([#include <sys/types.h>
1822 #include <sys/stat.h>
1823 #include <unistd.h>],
1824 [struct stat st;  st.st_blksize = 0;],
1825 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1826 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1827     AC_DEFINE(HAVE_STAT_ST_BLKSIZE)
1830 case "$host_os" in
1831 *linux*)
1832 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1833 AC_TRY_COMPILE([
1834 #ifdef HAVE_SYS_VFS_H
1835 #include <sys/vfs.h>
1836 #endif
1837 #ifdef HAVE_SYS_CAPABILITY_H
1838 #include <sys/capability.h>
1839 #endif
1840 ],[int i;],
1841    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1842 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1843    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS)
1846 esac
1848 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1849 AC_TRY_COMPILE([#include <sys/acl.h>
1850 #if defined(HAVE_RPCSVC_NIS_H)
1851 #include <rpcsvc/nis.h>
1852 #endif],
1853 [int i;],
1854 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1855 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1856     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1860 #################################################
1861 # check for smbwrapper support
1862 AC_MSG_CHECKING(whether to use smbwrapper)
1863 AC_ARG_WITH(smbwrapper,
1864 [  --with-smbwrapper       Include SMB wrapper support (default=no)],
1865 [ case "$withval" in
1866   yes)
1867     AC_MSG_RESULT(yes)
1868     AC_DEFINE(WITH_SMBWRAPPER)
1869         WRAPPROG="bin/smbsh"
1870         WRAP="bin/smbwrapper.$SHLIBEXT"
1872         if test x$ATTEMPT_WRAP32_BUILD = x; then
1873                 WRAP32=""
1874         else
1875                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1876         fi
1878 # Conditions under which smbwrapper should not be built.
1880         if test x$PICFLAG = x; then
1881            echo No support for PIC code - disabling smbwrapper and smbsh
1882            WRAPPROG=""
1883            WRAP=""
1884            WRAP32=""
1885         elif test x$ac_cv_func_syscall = xno; then
1886            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1887            WRAPPROG=""
1888            WRAP=""
1889            WRAP32=""
1890         fi
1891     ;;
1892   *)
1893     AC_MSG_RESULT(no)
1894     ;;
1895   esac ],
1896   AC_MSG_RESULT(no)
1899 #################################################
1900 # check for the AFS filesystem
1901 AC_MSG_CHECKING(whether to use AFS)
1902 AC_ARG_WITH(afs,
1903 [  --with-afs              Include AFS support (default=no)],
1904 [ case "$withval" in
1905   yes)
1906     AC_MSG_RESULT(yes)
1907     AC_DEFINE(WITH_AFS)
1908     ;;
1909   *)
1910     AC_MSG_RESULT(no)
1911     ;;
1912   esac ],
1913   AC_MSG_RESULT(no)
1917 #################################################
1918 # check for the DFS auth system
1919 AC_MSG_CHECKING(whether to use DCE/DFS auth)
1920 AC_ARG_WITH(dfs,
1921 [  --with-dce-dfs          Include DCE/DFS support (default=no)],
1922 [ case "$withval" in
1923   yes)
1924     AC_MSG_RESULT(yes)
1925     AC_DEFINE(WITH_DFS)
1926     ;;
1927   *)
1928     AC_MSG_RESULT(no)
1929     ;;
1930   esac ],
1931   AC_MSG_RESULT(no)
1934 #################################################
1935 # check for Kerberos IV auth system
1936 AC_MSG_CHECKING(whether to use Kerberos IV)
1937 AC_ARG_WITH(krb4,
1938 [  --with-krb4=base-dir    Include Kerberos IV support (default=no)],
1939 [ case "$withval" in
1940   yes)
1941     AC_MSG_RESULT(yes)
1942     AC_DEFINE(KRB4_AUTH)
1943     AC_CHECK_LIB(resolv, dn_expand)
1944     LIBS="$LIBS -lkrb -ldes"
1945     CFLAGS="$CFLAGS -I$withval/include"
1946     LDFLAGS="$LDFLAGS -L$withval/lib"
1947     ;;
1948   *)
1949     AC_MSG_RESULT(no)
1950     ;;
1951   esac ],
1952   AC_MSG_RESULT(no)
1955 #################################################
1956 # check for Kerberos 5 auth system
1957 AC_MSG_CHECKING(whether to use Kerberos 5)
1958 AC_ARG_WITH(krb5,
1959 [  --with-krb5=base-dir    Include Kerberos 5 support (default=no)],
1960 [ case "$withval" in
1961   yes)
1962     AC_MSG_RESULT(yes)
1963     AC_DEFINE(KRB5_AUTH)
1964     LIBS="$LIBS -ldes425 -lkrb5 -lcrypto -lcom_err"
1965     CFLAGS="$CFLAGS -I$withval/include"
1966     LDFLAGS="$LDFLAGS -L$withval/lib"
1967     ;;
1968   *)
1969     AC_MSG_RESULT(no)
1970     ;;
1971   esac ],
1972   AC_MSG_RESULT(no)
1975 #################################################
1976 # check for automount support
1977 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1978 AC_ARG_WITH(automount,
1979 [  --with-automount        Include AUTOMOUNT support (default=no)],
1980 [ case "$withval" in
1981   yes)
1982     AC_MSG_RESULT(yes)
1983     AC_DEFINE(WITH_AUTOMOUNT)
1984     ;;
1985   *)
1986     AC_MSG_RESULT(no)
1987     ;;
1988   esac ],
1989   AC_MSG_RESULT(no)
1992 #################################################
1993 # check for smbmount support
1994 AC_MSG_CHECKING(whether to use SMBMOUNT)
1995 AC_ARG_WITH(smbmount,
1996 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
1997 [ case "$withval" in
1998   yes)
1999         case "$host_os" in
2000         *linux*)
2001                 AC_MSG_RESULT(yes)
2002                 AC_DEFINE(WITH_SMBMOUNT)
2003                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
2004                 ;;
2005         *)
2006                 AC_MSG_ERROR(not on a linux system!)
2007                 ;;
2008         esac
2009     ;;
2010   *)
2011     AC_MSG_RESULT(no)
2012     MPROGS=
2013     ;;
2014   esac ],
2015   AC_MSG_RESULT(no)
2016   MPROGS=
2020 #################################################
2021 # check for a PAM password database
2022 with_pam_for_crypt=no
2023 AC_MSG_CHECKING(whether to use PAM password database)
2024 AC_ARG_WITH(pam,
2025 [  --with-pam              Include PAM password database support (default=no)],
2026 [ case "$withval" in
2027   yes)
2028     AC_MSG_RESULT(yes)
2029     AC_DEFINE(WITH_PAM)
2030     LIBS="$LIBS -lpam"
2031     with_pam_for_crypt=yes
2032     ;;
2033   *)
2034     AC_MSG_RESULT(no)
2035     ;;
2036   esac ],
2037   AC_MSG_RESULT(no)
2040 # we can't build a pam module if we don't have pam.
2041 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
2043 #################################################
2044 # check for pam_smbpass support
2045 AC_MSG_CHECKING(whether to use pam_smbpass)
2046 AC_ARG_WITH(pam_smbpass,
2047 [  --with-pam_smbpass      Include the smbpass PAM module (default=no)],
2048 [ case "$withval" in
2049   yes)
2050     AC_MSG_RESULT(yes)
2052 # Conditions under which pam_smbpass should not be built.
2054        if test x$PICFLAG = x; then
2055           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2056           PAM_MOD=""
2057        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2058           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2059           PAM_MOD=""
2060        else
2061           AC_DEFINE(WITH_PAM_SMBPASS)
2062           PAM_MOD="bin/pam_smbpass.so"
2063        fi
2064     ;;
2065   *)
2066     AC_MSG_RESULT(no)
2067     ;;
2068   esac ],
2069   AC_MSG_RESULT(no)
2073 ###############################################
2074 # test for where we get crypt() from, but only
2075 # if not using PAM
2076 if test $with_pam_for_crypt = no; then
2077 AC_CHECK_FUNCS(crypt)
2078 if test x"$ac_cv_func_crypt" = x"no"; then
2079     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
2080         AC_DEFINE(HAVE_CRYPT)])
2085 ## moved after the check for -lcrypt in order to
2086 ## ensure that the necessary libraries are included
2087 ## check checking for truncated salt.  Wrapped by the
2088 ## $with_pam_for_crypt variable as above   --jerry
2090 if test $with_pam_for_crypt = no; then
2091 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2092 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2093         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
2094 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2095         AC_DEFINE(HAVE_TRUNCATED_SALT)
2100 ########################################################################################
2102 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2104 ########################################################################################
2106 ## set the with_smbpasswd_sam as the default
2107 with_smbpasswd_sam=yes
2111 #################################################
2112 # check for a TDB password database
2113 AC_MSG_CHECKING(whether to use TDB SAM database)
2114 AC_ARG_WITH(tdbsam,
2115 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2116 [ case "$withval" in
2117   yes)
2118     AC_MSG_RESULT(yes)
2119     AC_DEFINE(WITH_TDB_SAM)
2120     with_smbpasswd_sam=no
2121     ;;
2122   *)
2123     AC_MSG_RESULT(no)
2124     ;;
2125   esac ],
2126   AC_MSG_RESULT(no)
2129 #################################################
2130 # check for a LDAP password database
2131 AC_MSG_CHECKING(whether to use LDAP SAM database)
2132 AC_ARG_WITH(ldapsam,
2133 [  --with-ldapsam          Include experimental LDAP SAM support (default=no)],
2134 [ case "$withval" in
2135   yes)
2136     AC_MSG_RESULT(yes)
2137     AC_DEFINE(WITH_LDAP_SAM)
2138     LDAPLIBS="-lldap"
2139     AC_CHECK_LIB(lber, ber_bvfree, [LDAPLIBS="$LDAPLIBS -llber"])
2140     ## remove -lresolv as this should be included by the -lsasl dependency 
2141     ## in the OpenLDAP clients.  By not requiring it specifically, we avoid
2142     ## issues on platforms that don't have it
2143     LDAPLIBS="$LDAPLIBS"
2144     old_LDFLAGS="$LDFLAGS"
2145     LDFLAGS="$LDFLAGS $LDAPLIBS"
2146     AC_CHECK_FUNCS(ldap_start_tls_s)
2147     LDFLAGS="$old_LDFLAGS"
2148     with_smbpasswd_sam=no
2149     AC_SUBST(LDAPLIBS)
2150 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, samba_cv_ldap_set_rebind_proc, [
2151 AC_TRY_COMPILE([
2152 #include <lber.h>
2153 #include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [samba_cv_ldap_set_rebind_proc=3], [samba_cv_ldap_set_rebind_proc=2]) ])
2154 if test x"$samba_cv_ldap_set_rebind_proc" = x"3"; then
2155    AC_DEFINE(LDAP_SET_REBIND_PROC_ARGS,3)
2156 else
2157    AC_DEFINE(LDAP_SET_REBIND_PROC_ARGS,2)
2159     ;;
2160   *)
2161     AC_MSG_RESULT(no)
2162     ;;
2163   esac ],
2164   AC_MSG_RESULT(no)
2168 #################################################
2169 # check for a NISPLUS password database
2170 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2171 AC_ARG_WITH(nisplussam,
2172 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2173 [ case "$withval" in
2174   yes)
2175     AC_MSG_RESULT(yes)
2176     AC_DEFINE(WITH_NISPLUS_SAM)
2177     with_smbpasswd_sam=no
2178     ;;
2179   *)
2180     AC_MSG_RESULT(no)
2181     ;;
2182   esac ],
2183   AC_MSG_RESULT(no)
2186 ################################################
2187 # This test should come last because the
2188 # smbpasswd SAM is only used if another format
2189 # has not been defined
2190 AC_MSG_CHECKING(whether to use traditional smbpasswd file)
2191 if test $with_smbpasswd_sam = yes; then
2192         AC_MSG_RESULT(yes)
2193         AC_DEFINE(WITH_SMBPASSWD_SAM)
2194         PDBEDIT=""
2195 else
2196         AC_MSG_RESULT(no)
2197         PDBEDIT=bin/pdbedit
2200 ########################################################################################
2202 ## END OF TESTS FOR SAM BACKENDS.  
2204 ########################################################################################
2206 #################################################
2207 # check for a NISPLUS_HOME support 
2208 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2209 AC_ARG_WITH(nisplus-home,
2210 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2211 [ case "$withval" in
2212   yes)
2213     AC_MSG_RESULT(yes)
2214     AC_DEFINE(WITH_NISPLUS_HOME)
2215     ;;
2216   *)
2217     AC_MSG_RESULT(no)
2218     ;;
2219   esac ],
2220   AC_MSG_RESULT(no)
2223 #################################################
2224 # check for the secure socket layer
2225 AC_MSG_CHECKING(whether to use SSL)
2226 AC_ARG_WITH(ssl,
2227 [  --with-ssl              Include SSL support (default=no)
2228   --with-sslinc=DIR          Where the SSL includes are (defaults to /usr/local/ssl/include)
2229   --with-ssllib=DIR          Where the SSL libraries are (defaults to /usr/local/ssl/lib)],
2230 [ case "$withval" in
2231   yes)
2232     AC_MSG_RESULT(yes)
2233     AC_DEFINE(WITH_SSL)
2234     withval="/usr/local/ssl"     # default
2236     if test "${with_sslinc+set}" = set; then
2238         withval="$with_sslinc"
2239         case "$withval" in
2240         yes|no)
2241           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
2242           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
2243         ;;
2244         * )
2245           CFLAGS="-I${withval} $CFLAGS"
2246         ;;
2247         esac
2249     else
2251         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
2253     fi
2255     if test "${with_ssllib+set}" = set; then
2257         withval="$with_ssllib"
2258         case "$withval" in
2259         yes|no)
2260           echo "configure: warning: --with-ssllib called without argument - will use default" 1>&w
2261           LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2262         ;;
2263         * )
2264           LDFLAGS="-L${withval}/lib $LDFLAGS"
2265         ;;
2266         esac
2268     else
2270         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2272     fi
2274     LIBS="-lssl -lcrypto $LIBS"
2276 #    if test ! -d ${withval}; then
2277 #      echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
2278 #      exit 1
2279 #    fi 
2281     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
2283     ;;
2284   *)
2285     AC_MSG_RESULT(no)
2286     ;;
2287   esac ],
2288   AC_MSG_RESULT(no)
2291 #################################################
2292 # check for syslog logging
2293 AC_MSG_CHECKING(whether to use syslog logging)
2294 AC_ARG_WITH(syslog,
2295 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2296 [ case "$withval" in
2297   yes)
2298     AC_MSG_RESULT(yes)
2299     AC_DEFINE(WITH_SYSLOG)
2300     ;;
2301   *)
2302     AC_MSG_RESULT(no)
2303     ;;
2304   esac ],
2305   AC_MSG_RESULT(no)
2308 #################################################
2309 # check for a shared memory profiling support
2310 AC_MSG_CHECKING(whether to use profiling)
2311 AC_ARG_WITH(profiling-data,
2312 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2313 [ case "$withval" in
2314   yes)
2315     AC_MSG_RESULT(yes)
2316     AC_DEFINE(WITH_PROFILE)
2317     ;;
2318   *)
2319     AC_MSG_RESULT(no)
2320     ;;
2321   esac ],
2322   AC_MSG_RESULT(no)
2326 #################################################
2327 # check for experimental disk-quotas support
2328 QUOTAOBJS=smbd/noquotas.o
2330 AC_MSG_CHECKING(whether to support disk-quotas)
2331 AC_ARG_WITH(quotas,
2332 [  --with-quotas           Include experimental disk-quota support (default=no)],
2333 [ case "$withval" in
2334   yes)
2335     AC_MSG_RESULT(yes)
2336     QUOTAOBJS=smbd/quotas.o
2337     ;;
2338   *)
2339     AC_MSG_RESULT(no)
2340     ;;
2341   esac ],
2342   AC_MSG_RESULT(no)
2344 AC_SUBST(QUOTAOBJS)
2346 #################################################
2347 # check for experimental utmp accounting
2349 AC_MSG_CHECKING(whether to support utmp accounting)
2350 AC_ARG_WITH(utmp,
2351 [  --with-utmp             Include experimental utmp accounting (default=no)],
2352 [ case "$withval" in
2353   yes)
2354     AC_MSG_RESULT(yes)
2355     AC_DEFINE(WITH_UTMP)
2356     ;;
2357   *)
2358     AC_MSG_RESULT(no)
2359     ;;
2360   esac ],
2361   AC_MSG_RESULT(no)
2364 #################################################
2365 # check for MS Dfs support
2367 AC_MSG_CHECKING(whether to support Microsoft Dfs)
2368 AC_ARG_WITH(msdfs,
2369 [  --with-msdfs            Include MS Dfs support (default=no)],
2370 [ case "$withval" in
2371   yes)
2372      AC_MSG_RESULT(yes)
2373      AC_DEFINE(WITH_MSDFS)
2374      ;;
2375   *)
2376     AC_MSG_RESULT(no)
2377     ;;
2378   esac ],
2379   AC_MSG_RESULT(no)
2382 #################################################
2383 # should we build libsmbclient?
2385 INSTALLCLIENTCMD_SH=:
2386 INSTALLCLIENTCMD_A=:
2387 LIBSMBCLIENT_SHARED=
2388 LIBSMBCLIENT=
2389 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2390 AC_ARG_WITH(libsmbclient,
2391 [  --with-libsmbclient     Build the libsmbclient shared library (default=no)],
2392 [ case "$withval" in
2393   yes)
2394      if test $BLDSHARED = true; then
2395         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
2396         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2397         LIBSMBCLIENT=libsmbclient
2398         AC_MSG_RESULT(yes)
2399      else
2400         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
2401         LIBSMBCLIENT=libsmbclient
2402         AC_MSG_RESULT(no shared library support -- will supply static library)
2403      fi
2404      ;;
2405   *)
2406     AC_MSG_RESULT(no)
2407     ;;
2408   esac ],
2409   AC_MSG_RESULT(no)
2412 #################################################
2413 # these tests are taken from the GNU fileutils package
2414 AC_CHECKING(how to get filesystem space usage)
2415 space=no
2417 # Test for statvfs64.
2418 if test $space = no; then
2419   # SVR4
2420   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2421   [AC_TRY_RUN([
2422 #if defined(HAVE_UNISTD_H)
2423 #include <unistd.h>
2424 #endif
2425 #include <sys/types.h>
2426 #include <sys/statvfs.h>
2427   main ()
2428   {
2429     struct statvfs64 fsd;
2430     exit (statvfs64 (".", &fsd));
2431   }],
2432   fu_cv_sys_stat_statvfs64=yes,
2433   fu_cv_sys_stat_statvfs64=no,
2434   fu_cv_sys_stat_statvfs64=cross)])
2435   if test $fu_cv_sys_stat_statvfs64 = yes; then
2436     space=yes
2437     AC_DEFINE(STAT_STATVFS64)
2438   fi
2441 # Perform only the link test since it seems there are no variants of the
2442 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2443 # because that got a false positive on SCO OSR5.  Adding the declaration
2444 # of a `struct statvfs' causes this test to fail (as it should) on such
2445 # systems.  That system is reported to work fine with STAT_STATFS4 which
2446 # is what it gets when this test fails.
2447 if test $space = no; then
2448   # SVR4
2449   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2450                  [AC_TRY_LINK([#include <sys/types.h>
2451 #include <sys/statvfs.h>],
2452                               [struct statvfs fsd; statvfs (0, &fsd);],
2453                               fu_cv_sys_stat_statvfs=yes,
2454                               fu_cv_sys_stat_statvfs=no)])
2455   if test $fu_cv_sys_stat_statvfs = yes; then
2456     space=yes
2457     AC_DEFINE(STAT_STATVFS)
2458   fi
2461 if test $space = no; then
2462   # DEC Alpha running OSF/1
2463   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2464   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2465   [AC_TRY_RUN([
2466 #include <sys/param.h>
2467 #include <sys/types.h>
2468 #include <sys/mount.h>
2469   main ()
2470   {
2471     struct statfs fsd;
2472     fsd.f_fsize = 0;
2473     exit (statfs (".", &fsd, sizeof (struct statfs)));
2474   }],
2475   fu_cv_sys_stat_statfs3_osf1=yes,
2476   fu_cv_sys_stat_statfs3_osf1=no,
2477   fu_cv_sys_stat_statfs3_osf1=no)])
2478   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2479   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2480     space=yes
2481     AC_DEFINE(STAT_STATFS3_OSF1)
2482   fi
2485 if test $space = no; then
2486 # AIX
2487   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2488 member (AIX, 4.3BSD)])
2489   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2490   [AC_TRY_RUN([
2491 #ifdef HAVE_SYS_PARAM_H
2492 #include <sys/param.h>
2493 #endif
2494 #ifdef HAVE_SYS_MOUNT_H
2495 #include <sys/mount.h>
2496 #endif
2497 #ifdef HAVE_SYS_VFS_H
2498 #include <sys/vfs.h>
2499 #endif
2500   main ()
2501   {
2502   struct statfs fsd;
2503   fsd.f_bsize = 0;
2504   exit (statfs (".", &fsd));
2505   }],
2506   fu_cv_sys_stat_statfs2_bsize=yes,
2507   fu_cv_sys_stat_statfs2_bsize=no,
2508   fu_cv_sys_stat_statfs2_bsize=no)])
2509   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2510   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2511     space=yes
2512     AC_DEFINE(STAT_STATFS2_BSIZE)
2513   fi
2516 if test $space = no; then
2517 # SVR3
2518   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2519   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2520   [AC_TRY_RUN([#include <sys/types.h>
2521 #include <sys/statfs.h>
2522   main ()
2523   {
2524   struct statfs fsd;
2525   exit (statfs (".", &fsd, sizeof fsd, 0));
2526   }],
2527     fu_cv_sys_stat_statfs4=yes,
2528     fu_cv_sys_stat_statfs4=no,
2529     fu_cv_sys_stat_statfs4=no)])
2530   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2531   if test $fu_cv_sys_stat_statfs4 = yes; then
2532     space=yes
2533     AC_DEFINE(STAT_STATFS4)
2534   fi
2537 if test $space = no; then
2538 # 4.4BSD and NetBSD
2539   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2540 member (4.4BSD and NetBSD)])
2541   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2542   [AC_TRY_RUN([#include <sys/types.h>
2543 #ifdef HAVE_SYS_PARAM_H
2544 #include <sys/param.h>
2545 #endif
2546 #ifdef HAVE_SYS_MOUNT_H
2547 #include <sys/mount.h>
2548 #endif
2549   main ()
2550   {
2551   struct statfs fsd;
2552   fsd.f_fsize = 0;
2553   exit (statfs (".", &fsd));
2554   }],
2555   fu_cv_sys_stat_statfs2_fsize=yes,
2556   fu_cv_sys_stat_statfs2_fsize=no,
2557   fu_cv_sys_stat_statfs2_fsize=no)])
2558   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2559   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2560     space=yes
2561     AC_DEFINE(STAT_STATFS2_FSIZE)
2562   fi
2565 if test $space = no; then
2566   # Ultrix
2567   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2568   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2569   [AC_TRY_RUN([#include <sys/types.h>
2570 #ifdef HAVE_SYS_PARAM_H
2571 #include <sys/param.h>
2572 #endif
2573 #ifdef HAVE_SYS_MOUNT_H
2574 #include <sys/mount.h>
2575 #endif
2576 #ifdef HAVE_SYS_FS_TYPES_H
2577 #include <sys/fs_types.h>
2578 #endif
2579   main ()
2580   {
2581   struct fs_data fsd;
2582   /* Ultrix's statfs returns 1 for success,
2583      0 for not mounted, -1 for failure.  */
2584   exit (statfs (".", &fsd) != 1);
2585   }],
2586   fu_cv_sys_stat_fs_data=yes,
2587   fu_cv_sys_stat_fs_data=no,
2588   fu_cv_sys_stat_fs_data=no)])
2589   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2590   if test $fu_cv_sys_stat_fs_data = yes; then
2591     space=yes
2592     AC_DEFINE(STAT_STATFS2_FS_DATA)
2593   fi
2597 # As a gating factor for large file support, in order to
2598 # use <4GB files we must have the following minimal support
2599 # available.
2600 # long long, and a 64 bit off_t or off64_t.
2601 # If we don't have all of these then disable large
2602 # file support.
2604 AC_MSG_CHECKING(if large file support can be enabled)
2605 AC_TRY_COMPILE([
2606 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2607 #include <sys/types.h>
2608 #else
2609 __COMPILE_ERROR_
2610 #endif
2612 [int i],
2613 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2614 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2615     AC_MSG_RESULT(yes)
2616     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2617 else
2618     AC_MSG_RESULT(no)
2621 AC_ARG_WITH(spinlocks, 
2622 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no)])
2623 if test "x$with_spinlocks" = "xyes"; then
2624     AC_DEFINE(USE_SPINLOCKS)
2626     case "$host_cpu" in
2627         sparc)
2628             AC_DEFINE(SPARC_SPINLOCKS)
2629             ;;
2631         i386|i486|i586|i686)
2632             AC_DEFINE(INTEL_SPINLOCKS)
2633             ;;
2635         mips)
2636             AC_DEFINE(MIPS_SPINLOCKS)
2637             ;;
2639         powerpc)
2640             AC_DEFINE(POWERPC_SPINLOCKS)
2641             ;;
2642     esac
2645 #################################################
2646 # check for ACL support
2648 AC_MSG_CHECKING(whether to support ACLs)
2649 AC_ARG_WITH(acl-support,
2650 [  --with-acl-support      Include ACL support (default=no)],
2651 [ case "$withval" in
2652   yes)
2654                 case "$host_os" in
2655                 *sysv5*)
2656                         AC_MSG_RESULT(Using UnixWare ACLs)
2657                         AC_DEFINE(HAVE_UNIXWARE_ACLS)
2658                         ;;
2659                 *solaris*)
2660                         AC_MSG_RESULT(Using solaris ACLs)
2661                         AC_DEFINE(HAVE_SOLARIS_ACLS)
2662                         ;;
2663                 *hpux*)
2664                         AC_MSG_RESULT(Using HPUX ACLs)
2665                         AC_DEFINE(HAVE_HPUX_ACLS)
2666                         ;;
2667                 *irix*)
2668                         AC_MSG_RESULT(Using IRIX ACLs)
2669                         AC_DEFINE(HAVE_IRIX_ACLS)
2670                         ;;
2671                 *aix*)
2672                         AC_MSG_RESULT(Using AIX ACLs)
2673                         AC_DEFINE(HAVE_AIX_ACLS)
2674                         ;;
2675                 *osf*)
2676                         AC_MSG_RESULT(Using Tru64 ACLs)
2677                         AC_DEFINE(HAVE_TRU64_ACLS)
2678                         LIBS="$LIBS -lpacl"
2679                         ;;
2680                 *)
2681                     AC_CHECK_LIB(acl,acl_get_file)
2682                         AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2683                         AC_TRY_LINK([#include <sys/types.h>
2684 #include <sys/acl.h>],
2685 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2686 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2687                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2688                             AC_MSG_RESULT(Using posix ACLs)
2689                             AC_DEFINE(HAVE_POSIX_ACLS)
2690                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2691                                 AC_TRY_LINK([#include <sys/types.h>
2692 #include <sys/acl.h>],
2693 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2694 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2695                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2696                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2697                                 fi
2698                         fi
2699                         ;;
2700                 esac
2701                 ;;
2702   *)
2703     AC_MSG_RESULT(no)
2704         AC_DEFINE(HAVE_NO_ACLS)
2705     ;;
2706   esac ],
2707   AC_DEFINE(HAVE_NO_ACLS)
2708   AC_MSG_RESULT(no)
2711 #################################################
2712 # check for the historical SAMBA installation
2714 if test "x$prefix" = xNONE -a "$sbindir" = "\${exec_prefix}/sbin"; then
2715         # Put all binaries under the /usr/local/samba/bin directory.
2716         sbindir="$bindir"
2719 #################################################
2720 # check for sendfile support
2722 AC_MSG_CHECKING(whether to check for support sendfile)
2723 AC_ARG_WITH(sendfile-support,
2724 [  --with-sendfile-support      Check for sendfile support (default=no)],
2725 [ case "$withval" in
2726   yes)
2728         AC_MSG_RESULT(yes);
2730         case "$host_os" in
2731         *linux*)
2732                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2733                 AC_TRY_LINK([#include <sys/sendfile.h>],
2735 int tofd, fromfd;
2736 off64_t offset;
2737 size_t total;
2738 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2740 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2742                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2743                 AC_TRY_LINK([#include <sys/sendfile.h>],
2745 int tofd, fromfd;
2746 off_t offset;
2747 size_t total;
2748 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2750 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2752 # Try and cope with broken Linux sendfile....
2753                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2754                 AC_TRY_LINK([\
2755 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2756 #undef _FILE_OFFSET_BITS
2757 #endif
2758 #include <sys/sendfile.h>],
2760 int tofd, fromfd;
2761 off_t offset;
2762 size_t total;
2763 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2765 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2767         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2768                 AC_DEFINE(HAVE_SENDFILE64)
2769                 AC_DEFINE(LINUX_SENDFILE_API)
2770                 AC_DEFINE(WITH_SENDFILE)
2771         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2772                 AC_DEFINE(HAVE_SENDFILE)
2773                 AC_DEFINE(LINUX_SENDFILE_API)
2774                 AC_DEFINE(WITH_SENDFILE)
2775         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2776                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API)
2777                 AC_DEFINE(WITH_SENDFILE)
2778         else
2779                 AC_MSG_RESULT(no);
2780         fi
2782         ;;
2783         *freebsd*)
2784                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2785                 AC_TRY_LINK([\
2786 #include <sys/types.h>
2787 #include <sys/socket.h>
2788 #include <sys/uio.h>],
2790 #define NULL (void *)0
2791         int fromfd, tofd, ret, total;
2792         off_t offset, nwritten;
2793         struct sf_hdtr {
2794                 struct iovec *headers;
2795                 int hdr_cnt;
2796                 struct iovec *trailers;
2797                 int trl_cnt;
2798         } hdr;
2799         struct iovec hdtrl;
2800         hdr.headers = &hdtrl;
2801         hdr.hdr_cnt = 1;
2802         hdr.trailers = NULL;
2803         hdr.trl_cnt = 0;
2804         hdtrl.iov_base = NULL;
2805         hdtrl.iov_len = 0;
2806         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2808 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2810         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2811                 AC_DEFINE(HAVE_SENDFILE)
2812                 AC_DEFINE(FREEBSD_SENDFILE_API)
2813                 AC_DEFINE(WITH_SENDFILE)
2814         else
2815                 AC_MSG_RESULT(no);
2816         fi
2817         ;;
2819         *hpux*)
2820                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2821                 AC_TRY_LINK([\
2822 #include <sys/socket.h>
2823 #include <sys/uio.h>],
2825         int fromfd, tofd;
2826         size_t total=0;
2827         struct iovec hdtrl[2];
2828         ssize_t nwritten;
2829         off64_t offset;
2831         hdtrl[0].iov_base = 0;
2832         hdtrl[0].iov_len = 0;
2834         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2836 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2837         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2838                 AC_DEFINE(HAVE_SENDFILE64)
2839                 AC_DEFINE(HPUX_SENDFILE_API)
2840                 AC_DEFINE(WITH_SENDFILE)
2841         else
2842                 AC_MSG_RESULT(no);
2843         fi
2845                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2846                 AC_TRY_LINK([\
2847 #include <sys/socket.h>
2848 #include <sys/uio.h>],
2850         int fromfd, tofd;
2851         size_t total=0;
2852         struct iovec hdtrl[2];
2853         ssize_t nwritten;
2854         off_t offset;
2856         hdtrl[0].iov_base = 0;
2857         hdtrl[0].iov_len = 0;
2859         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2861 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2862         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2863                 AC_DEFINE(HAVE_SENDFILE)
2864                 AC_DEFINE(HPUX_SENDFILE_API)
2865                 AC_DEFINE(WITH_SENDFILE)
2866         else
2867                 AC_MSG_RESULT(no);
2868         fi
2869         ;;
2871         *solaris*)
2872                 LIBS="$LIBS -lsendfile"
2873                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
2874                 AC_TRY_LINK([\
2875 #include <sys/sendfile.h>],
2877         int sfvcnt;
2878         size_t xferred;
2879         struct sendfilevec vec[2];
2880         ssize_t nwritten;
2881         int tofd;
2883         sfvcnt = 2;
2885         vec[0].sfv_fd = SFV_FD_SELF;
2886         vec[0].sfv_flag = 0;
2887         vec[0].sfv_off = 0;
2888         vec[0].sfv_len = 0;
2890         vec[1].sfv_fd = 0;
2891         vec[1].sfv_flag = 0;
2892         vec[1].sfv_off = 0;
2893         vec[1].sfv_len = 0;
2894         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
2896 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
2898         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
2899                 AC_DEFINE(HAVE_SENDFILEV64)
2900                 AC_DEFINE(SOLARIS_SENDFILE_API)
2901                 AC_DEFINE(WITH_SENDFILE)
2902         else
2903                 AC_MSG_RESULT(no);
2904         fi
2906                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
2907                 AC_TRY_LINK([\
2908 #include <sys/sendfile.h>],
2910         int sfvcnt;
2911         size_t xferred;
2912         struct sendfilevec vec[2];
2913         ssize_t nwritten;
2914         int tofd;
2916         sfvcnt = 2;
2918         vec[0].sfv_fd = SFV_FD_SELF;
2919         vec[0].sfv_flag = 0;
2920         vec[0].sfv_off = 0;
2921         vec[0].sfv_len = 0;
2923         vec[1].sfv_fd = 0;
2924         vec[1].sfv_flag = 0;
2925         vec[1].sfv_off = 0;
2926         vec[1].sfv_len = 0;
2927         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
2929 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
2931         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
2932                 AC_DEFINE(HAVE_SENDFILEV)
2933                 AC_DEFINE(SOLARIS_SENDFILE_API)
2934                 AC_DEFINE(WITH_SENDFILE)
2935         else
2936                 AC_MSG_RESULT(no);
2937         fi
2938         ;;
2940         *)
2941         ;;
2942         esac
2943         ;;
2944   *)
2945     AC_MSG_RESULT(no)
2946     ;;
2947   esac ],
2948   AC_MSG_RESULT(no)
2951 #################################################
2952 # Check whether winbind is supported on this platform.  If so we need to
2953 # build and install client programs (WINBIND_TARGETS), sbin programs
2954 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2956 AC_MSG_CHECKING(whether to build winbind)
2958 # Initially, the value of $host_os decides whether winbind is supported
2960 case "$host_os" in 
2961         *linux*|*irix*)
2962                 HAVE_WINBIND=yes
2963                 ;;
2964         *solaris*)
2965                 HAVE_WINBIND=yes
2966                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2967                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
2968                 ;;
2969         *hpux11*)
2970                 HAVE_WINBIND=yes
2971                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2972                ;;
2973         *aix4*)
2974                 HAVE_WINBIND=yes
2975                 ;;
2976         *)
2977                 HAVE_WINBIND=no
2978                 winbind_no_reason=", unsupported on $host_os"
2979                 ;;
2980 esac
2982 # Check the setting of --with-winbindd
2984 AC_ARG_WITH(winbind,
2985 [  --with-winbind          Build winbind (default, if supported by OS)],
2987   case "$withval" in
2988         yes)
2989                 HAVE_WINBIND=yes
2990                 ;;
2991         no)
2992                 HAVE_WINBIND=no
2993                 winbind_reason=""
2994                 ;;
2995   esac ],
2998 # We need unix domain sockets for winbind
3000 if test x"$HAVE_WINBIND" = x"yes"; then
3001         if test x"$samba_cv_unixsocket" = x"no"; then
3002                 winbind_no_reason=", no unix domain socket support on $host_os"
3003                 HAVE_WINBIND=no
3004         fi
3007 # Display test results
3009 if test x"$HAVE_WINBIND" = x"yes"; then
3011         AC_MSG_RESULT(yes)
3013         AC_MSG_CHECKING(whether to enable winbind auth challenge/response code)
3014         AC_ARG_WITH(winbind-auth-challenge,
3015         [  --with-winbind-auth-challenge   Enable winbindd_pam_auth_crap() functionality (default no)],
3016         [ 
3017           case "$withval" in
3018                 yes)
3019                         AC_DEFINE(WITH_WINBIND_AUTH_CRAP)
3020                         AC_MSG_RESULT(yes)
3021                         ;;
3022                 *)
3023                         AC_MSG_RESULT(no)
3024                         ;;
3025           esac ],
3026           AC_MSG_RESULT(no)
3027         )
3029 # Check for FreeBSD problem with getgroups
3031         WINBIND_TARGETS="bin/wbinfo"
3032         WINBIND_STARGETS="bin/winbindd"
3033         case "$host_os" in
3034         *irix*)
3035                 WINBIND_LTARGETS="nsswitch/libns_winbind.so"
3036                 ;;
3037         *)
3038                 WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
3039                 ;;
3040         esac
3043         case "$with_pam" in
3044                 yes)
3045                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
3046                 ;;
3047         esac
3049 # Check for Horrible winbindd ldap hack.
3051         AC_MSG_CHECKING(whether to enable winbind ldap hack)
3052         AC_ARG_WITH(winbind-ldap-hack,
3053         [  --with-winbind-ldap-hack   Enable winbindd_ldap_hack() functionality (default no)],
3054         [
3055           case "$withval" in
3056                 yes)
3057                         AC_DEFINE(WITH_HORRIBLE_LDAP_NATIVE_MODE_HACK)
3058                         LIBS="$LIBS -lldap";
3059                         AC_MSG_RESULT(yes)
3060                         ;;
3061                 no)
3062                         AC_MSG_RESULT(no)
3063                         ;;
3064           esac ],
3065           AC_MSG_RESULT(no)
3066         )
3068 else
3069         AC_MSG_RESULT(no$winbind_no_reason)
3071         WINBIND_TARGETS=""
3072         WINBIND_STARGETS=""
3073         WINBIND_LTARGETS=""
3074         WINBIND_PAM_TARGETS=""
3078 # Check for FreeBSD problem with getgroups
3079 # It returns EGID too many times in the list of groups
3080 # and causes a security problem
3081 AC_CACHE_CHECK([whether or not getgroups returns EGID too many times],
3082     samba_cv_have_getgroups_too_many_egids,[AC_TRY_RUN([
3083 #include <sys/types.h>
3084 #include <stdio.h>
3086 int main(int argc, char *argv[])
3088   gid_t groups[10];
3089   int n = 10;
3091   n = getgroups(n, &groups);
3092   /* Could actually pass back the number of EGIDs there ... */
3093   exit((n > 1 && groups[0] == getegid() && groups[1] == getegid()) ? 1 : 0);
3095         samba_cv_have_getgroups_too_many_egids=no,samba_cv_have_getgroups_too_many_egids=yes, samba_cv_have_getgroups_too_many_egids=cross)])
3096 if test x"$samba_cv_have_getgroups_too_many_egids" = x"yes"; then
3097     AC_DEFINE(HAVE_GETGROUPS_TOO_MANY_EGIDS)
3100 # Substitution time!
3102 AC_SUBST(WINBIND_TARGETS)
3103 AC_SUBST(WINBIND_STARGETS)
3104 AC_SUBST(WINBIND_LTARGETS)
3105 AC_SUBST(WINBIND_PAM_TARGETS)
3106 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3107 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3109 # Solaris has some extra fields in struct passwd that need to be
3110 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3111 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3112 # this.
3114 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3115 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3116 #               [#include <pwd.h>])
3118 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3119         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3120         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3121 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3122         AC_DEFINE(HAVE_PASSWD_PW_COMMENT)
3125 #AC_CHECK_MEMBER(struct passwd.pw_age,
3126 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3127 #               [#include <pwd.h>])
3129 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3130         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3131         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3132 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3133         AC_DEFINE(HAVE_PASSWD_PW_AGE)
3136 #################################################
3137 # Check to see if we should use the included popt
3139 AC_ARG_WITH(included-popt,
3140 [  --with-included-popt    use bundled popt library, not from system],
3142   case "$withval" in
3143         yes)
3144                 INCLUDED_POPT=yes
3145                 ;;
3146         no)
3147                 INCLUDED_POPT=no
3148                 ;;
3149   esac ],
3151 if test x"$INCLUDED_POPT" != x"yes"; then
3152     AC_CHECK_LIB(popt, poptGetContext,
3153                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3156 AC_MSG_CHECKING(whether to use included popt)
3157 if test x"$INCLUDED_POPT" = x"yes"; then
3158     AC_MSG_RESULT($srcdir/popt)
3159     BUILD_POPT='$(POPT_OBJS)'
3160     FLAGS1="-I$srcdir/popt"
3161 else
3162     AC_MSG_RESULT(no)
3163     LIBS="$LIBS -lpopt"
3165 AC_SUBST(BUILD_POPT)
3166 AC_SUBST(FLAGS1)
3168 #################################################
3169 # final configure stuff
3170 AC_MSG_CHECKING([configure summary])
3171 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3172         AC_MSG_RESULT(yes),
3173         AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3174         AC_MSG_WARN([cannot run when cross-compiling]))
3176 builddir=`pwd`
3177 AC_SUBST(builddir)
3179 AC_OUTPUT(include/stamp-h Makefile script/findsmb)