oopss. message for previous commit should have been
[Samba.git] / source / configure.in
blobc4f0c7aab854cdeefee3d32c30cbaa4710789384
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 dnl look for executable suffix
191 AC_EXEEXT
192 AC_PATH_PROG(passwd_program, passwd, /bin/passwd)
193 AC_SUBST(passwd_program)
195 dnl Check if C compiler understands -c and -o at the same time
196 AC_PROG_CC_C_O
197 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
198       BROKEN_CC=
199 else
200       BROKEN_CC=#
202 AC_SUBST(BROKEN_CC)
204 dnl Check if the C compiler understands volatile (it should, being ANSI).
205 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
206     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
207         samba_cv_volatile=yes,samba_cv_volatile=no)])
208 if test x"$samba_cv_volatile" = x"yes"; then
209    AC_DEFINE(HAVE_VOLATILE)
214 AC_CANONICAL_SYSTEM
216 dnl Add #include for broken IRIX header files
217   case "$host_os" in
218         *irix6*) AC_ADD_INCLUDE(<standards.h>)
219         ;;
220 esac
222 AC_VALIDATE_CACHE_SYSTEM_TYPE
224 DYNEXP=
227 # Config CPPFLAG settings for strange OS's that must be set
228 # before other tests.
230 case "$host_os" in
231 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
232     *hpux*)
233       AC_PROG_CC_FLAG(Ae)
234       # mmap on HPUX is completely broken...
235       AC_DEFINE(MMAP_BLACKLIST)
236       if test $ac_cv_prog_cc_Ae = yes; then
237         CPPFLAGS="$CPPFLAGS -Ae"
238       fi
240 # Defines needed for HPUX support.
241 # HPUX has bigcrypt but (sometimes?) doesn't use it for
242 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
244       case `uname -r` in
245                         *9*|*10*)
246                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
247                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
248                                 AC_DEFINE(_HPUX_SOURCE)
249                                 AC_DEFINE(_POSIX_SOURCE)
250                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
251                                 AC_DEFINE(_MAX_ALIGNMENT,4)
252                                 ;;
253                         *11*)
254                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
255                                 AC_DEFINE(_HPUX_SOURCE)
256                                 AC_DEFINE(_POSIX_SOURCE)
257                                 AC_DEFINE(_LARGEFILE64_SOURCE)
258                                 AC_DEFINE(POSIX_ACL_NEEDS_MASK)
259                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
260                                 AC_DEFINE(_MAX_ALIGNMENT,4)
261                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
262                                 ;;
263       esac
264       DYNEXP="-Wl,-E"
265       ;;
269 # CRAY Unicos has broken const handling
270         *unicos*)
271                 AC_MSG_RESULT([disabling const])
272                 CPPFLAGS="$CPPFLAGS -Dconst="
273                 ;;
276 # AIX4.x doesn't even admit to having large
277 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
279     *aix4*)
280           AC_MSG_RESULT([enabling large file support])
281       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
282       AC_DEFINE(_LARGE_FILES)
283       ;;    
285 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
286 # to the existance of large files..
287 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
288 # recommendations on large file support, however it makes the
289 # compile work using gcc 2.7 and 2.8, whereas using the Sun
290 # recommendation makes the compile fail on gcc2.7. JRA.
292         *solaris*)
293                 case `uname -r` in
294                         5.0*|5.1*|5.2*|5.3*|5.5*)
295                                 AC_MSG_RESULT([no large file support])
296                                 ;;
297                         5.*)
298                         AC_MSG_RESULT([enabling large file support])
299                         if test "$ac_cv_prog_gcc" = yes; then
300                                 ${CC-cc} -v >conftest.c 2>&1
301                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
302                                 rm -fr conftest.c
303                                 case "$ac_cv_gcc_compiler_version_number" in
304                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
305                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
306                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
307                                                 ;;
308                                         *)
309                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
310                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
311                                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
312                                                 ;;
313                                 esac
314                         else
315                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
316                                 AC_DEFINE(_LARGEFILE64_SOURCE)
317                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
318                         fi
319                         ;;
320                 esac
321                 ;;
323 # VOS may need to have POSIX support and System V compatibility enabled.
325     *vos*)
326     case "$CPPFLAGS" in
327           *-D_POSIX_C_SOURCE*)
328                 ;;
329           *)
330                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
331                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
332                 ;;
333     esac
334     case "$CPPFLAGS" in
335           *-D_SYSV*|*-D_SVID_SOURCE*)
336                 ;;
337           *)
338                 CPPFLAGS="$CPPFLAGS -D_SYSV"
339                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
340     esac
341     ;;
343 # Tests needed for SINIX large file support.
345     *sysv4*)
346       if test $host = mips-sni-sysv4 ; then
347         AC_MSG_CHECKING([for LFS support])
348         old_CPPFLAGS="$CPPFLAGS"
349         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
350         AC_TRY_RUN([
351 #include <unistd.h>
352 main () {
353 #if _LFS64_LARGEFILE == 1
354 exit(0);
355 #else
356 exit(1);
357 #endif
358 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
359         CPPFLAGS="$old_CPPFLAGS"
360         if test x$SINIX_LFS_SUPPORT = xyes ; then
361           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
362           AC_DEFINE(_LARGEFILE64_SOURCE)
363           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
364           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
365           LIBS="`getconf LFS64_LIBS` $LIBS"
366         fi
367       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
368       fi
369     ;;
371 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
373     *linux*)
374         AC_MSG_CHECKING([for LFS support])
375         old_CPPFLAGS="$CPPFLAGS"
376         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
377        AC_TRY_RUN([
378 #include <unistd.h>
379 #include <sys/utsname.h>
380 main() {
381 #if _LFS64_LARGEFILE == 1
382        struct utsname uts;
383        char *release;
384        int major, minor;
386        /* Ensure this is glibc 2.2 or higher */
387 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
388        int libc_major = __GLIBC__;
389        int libc_minor = __GLIBC_MINOR__;
391        if (libc_major < 2)
392               exit(1);
393        if (libc_minor < 2)
394               exit(1);
395 #endif
397        /* Ensure this is kernel 2.4 or higher */
399        uname(&uts);
400        release = uts.release;
401        major = atoi(strsep(&release, "."));
402        minor = atoi(strsep(&release, "."));
404        if (major > 2 || (major == 2 && minor > 3))
405                exit(0);
406        exit(1);
407 #else
408        exit(1);
409 #endif
411 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
412         CPPFLAGS="$old_CPPFLAGS"
413         if test x$LINUX_LFS_SUPPORT = xyes ; then
414           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
415           AC_DEFINE(_LARGEFILE64_SOURCE)
416           AC_DEFINE(_FILE_OFFSET_BITS,64)
417           AC_DEFINE(_GNU_SOURCE)
418         fi
419        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
420                 ;;
422     *hurd*)
423         AC_MSG_CHECKING([for LFS support])
424         old_CPPFLAGS="$CPPFLAGS"
425         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
426         AC_TRY_RUN([
427 #include <unistd.h>
428 main () {
429 #if _LFS64_LARGEFILE == 1
430 exit(0);
431 #else
432 exit(1);
433 #endif
434 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
435         CPPFLAGS="$old_CPPFLAGS"
436         if test x$GLIBC_LFS_SUPPORT = xyes ; then
437           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
438           AC_DEFINE(_LARGEFILE64_SOURCE)
439           AC_DEFINE(_GNU_SOURCE)
440         fi
441       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
442     ;;
444 esac
446 AC_INLINE
447 AC_HEADER_STDC
448 AC_HEADER_DIRENT
449 AC_HEADER_TIME
450 AC_HEADER_SYS_WAIT
451 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
452 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
453 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
454 AC_CHECK_HEADERS(stdlib.h string.h strings.h syslog.h sys/file.h)
455 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
456 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h sys/socket.h)
457 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)
458 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
459 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h)
462 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
463 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
465 case "$host_os" in
466     *hpux*)
467                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
468                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
469                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
470                    AC_DEFINE(HAVE_SHADOW_H)
471                 fi
472         ;;
473 esac
474 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
475 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
476 AC_CHECK_HEADERS(stropts.h poll.h)
477 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
478 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
480 # For experimental utmp support (lastlog on some BSD-like systems)
481 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
483 # For quotas on Veritas VxFS filesystems
484 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
486 # For quotas on Linux XFS filesystems
487 AC_CHECK_HEADERS(linux/xqm.h)
489 AC_CHECK_SIZEOF(int,cross)
490 AC_CHECK_SIZEOF(long,cross)
491 AC_CHECK_SIZEOF(short,cross)
493 AC_C_CONST
494 AC_C_INLINE
495 AC_C_BIGENDIAN
496 AC_C_CHAR_UNSIGNED
498 AC_TYPE_SIGNAL
499 AC_TYPE_UID_T
500 AC_TYPE_MODE_T
501 AC_TYPE_OFF_T
502 AC_TYPE_SIZE_T
503 AC_TYPE_PID_T
504 AC_STRUCT_ST_RDEV
505 AC_DIRENT_D_OFF
506 AC_CHECK_TYPE(ino_t,unsigned)
507 AC_CHECK_TYPE(loff_t,off_t)
508 AC_CHECK_TYPE(offset_t,loff_t)
509 AC_CHECK_TYPE(ssize_t, int)
510 AC_CHECK_TYPE(wchar_t, unsigned short)
512 ############################################
513 # for cups support we need libcups, and a handful of header files
515 AC_ARG_ENABLE(cups,
516 [  --enable-cups           Turn on CUPS support (default=auto)])
518 if test x$enable_cups != xno; then
519         AC_PATH_PROG(CUPS_CONFIG, cups-config)
521         if test "x$CUPS_CONFIG" != x; then
522                 AC_DEFINE(HAVE_CUPS)
523                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
524                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
525                 LIBS="$LIBS `$CUPS_CONFIG --libs`"
526         fi
529 ############################################
530 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code
531 AC_CHECK_FUNCS(dlopen)
532 if test x"$ac_cv_func_dlopen" = x"no"; then
533         AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
534         AC_DEFINE(HAVE_DLOPEN)])
536 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
538 ############################################
539 # check if the compiler can do immediate structures
540 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
541     AC_TRY_COMPILE([
542 #include <stdio.h>],
544         typedef struct {unsigned x;} FOOBAR;
545 #define X_FOOBAR(x) ((FOOBAR) { x })
546 #define FOO_ONE X_FOOBAR(1)
547         FOOBAR f = FOO_ONE;
548         static struct {
549         FOOBAR y;
550         } f2[] = {
551                 {FOO_ONE}
552         };
554         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
555 if test x"$samba_cv_immediate_structures" = x"yes"; then
556    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES)
559 ############################################
560 # check for unix domain sockets
561 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
562     AC_TRY_COMPILE([
563 #include <sys/types.h>
564 #include <stdlib.h>
565 #include <stddef.h>
566 #include <sys/socket.h>
567 #include <sys/un.h>],
569   struct sockaddr_un sunaddr; 
570   sunaddr.sun_family = AF_UNIX;
572         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
573 if test x"$samba_cv_unixsocket" = x"yes"; then
574    AC_DEFINE(HAVE_UNIXSOCKET)
577 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
578     AC_TRY_COMPILE([
579 #include <sys/types.h>
580 #if STDC_HEADERS
581 #include <stdlib.h>
582 #include <stddef.h>
583 #endif
584 #include <sys/socket.h>],[socklen_t i = 0],
585     samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
586 if test x"$samba_cv_socklen_t" = x"yes"; then
587    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
590 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
591     AC_TRY_COMPILE([
592 #include <sys/types.h>
593 #if STDC_HEADERS
594 #include <stdlib.h>
595 #include <stddef.h>
596 #endif
597 #include <signal.h>],[sig_atomic_t i = 0],
598         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
599 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
600    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
603 # stupid headers have the functions but no declaration. grrrr.
604 AC_HAVE_DECL(errno, [#include <errno.h>])
605 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
606 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
607 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
608 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
609 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
610 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
612 # and glibc has setresuid under linux but the function does
613 # nothing until kernel 2.1.44! very dumb.
614 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
615     AC_TRY_RUN([#include <errno.h>
616 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
617         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
618 if test x"$samba_cv_have_setresuid" = x"yes"; then
619     AC_DEFINE(HAVE_SETRESUID)
622 # Do the same check for setresguid...
624 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
625     AC_TRY_RUN([#include <unistd.h>
626 #include <errno.h>
627 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
628         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
629 if test x"$samba_cv_have_setresgid" = x"yes"; then
630     AC_DEFINE(HAVE_SETRESGID)
633 AC_FUNC_MEMCMP
635 ###############################################
636 # Readline included by default unless explicitly asked not to
637 test "${with_readline+set}" != "set" && with_readline=yes
639 # test for where we get readline() from
640 AC_MSG_CHECKING(whether to use readline)
641 AC_ARG_WITH(readline,
642 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto)],
643 [  case "$with_readline" in
644   yes)
645     AC_MSG_RESULT(yes)
647     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
648     AC_CHECK_HEADERS(readline/history.h)
650     AC_CHECK_HEADERS(readline.h readline/readline.h,[
651       for termlib in ncurses curses termcap terminfo termlib; do
652        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
653       done
654       AC_CHECK_LIB(readline, rl_callback_handler_install,
655        [TERMLIBS="-lreadline $TERMLIBS"
656        AC_DEFINE(HAVE_LIBREADLINE)
657        break], [TERMLIBS=], $TERMLIBS)])
658     ;;
659   no)
660     AC_MSG_RESULT(no)
661     ;;
662   *)
663     AC_MSG_RESULT(yes)
665     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
666     # alternate readline path
667     _ldflags=${LDFLAGS}
668     _cppflags=${CPPFLAGS}
670     # Add additional search path
671     LDFLAGS="-L$with_readline/lib $LDFLAGS"
672     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
674     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
675     AC_CHECK_HEADERS(readline/history.h)
677     AC_CHECK_HEADERS(readline.h readline/readline.h,[
678       for termlib in ncurses curses termcap terminfo termlib; do
679        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
680       done
681       AC_CHECK_LIB(readline, rl_callback_handler_install,
682        [TERMLDFLAGS="-L$with_readline/lib"
683        TERMCPPFLAGS="-I$with_readline/include"
684        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
685        TERMLIBS="-lreadline $TERMLIBS"
686        AC_DEFINE(HAVE_LIBREADLINE)
687        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
689     LDFLAGS=$_ldflags
690     ;;
691   esac],
692   AC_MSG_RESULT(no)
694 AC_SUBST(TERMLIBS)
695 AC_SUBST(TERMLDFLAGS)
697 # The following test taken from the cvs sources
698 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
699 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
700 # libsocket.so which has a bad implementation of gethostbyname (it
701 # only looks in /etc/hosts), so we only look for -lsocket if we need
702 # it.
703 AC_CHECK_FUNCS(connect)
704 if test x"$ac_cv_func_connect" = x"no"; then
705     case "$LIBS" in
706     *-lnsl*) ;;
707     *) AC_CHECK_LIB(nsl_s, printf) ;;
708     esac
709     case "$LIBS" in
710     *-lnsl*) ;;
711     *) AC_CHECK_LIB(nsl, printf) ;;
712     esac
713     case "$LIBS" in
714     *-lsocket*) ;;
715     *) AC_CHECK_LIB(socket, connect) ;;
716     esac
717     case "$LIBS" in
718     *-linet*) ;;
719     *) AC_CHECK_LIB(inet, connect) ;;
720     esac
721     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
722     dnl has been cached.
723     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
724        test x"$ac_cv_lib_inet_connect" = x"yes"; then
725         # ac_cv_func_connect=yes
726         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
727         AC_DEFINE(HAVE_CONNECT)
728     fi
731 ###############################################
732 # test for where we get get_yp_default_domain() from
733 AC_CHECK_FUNCS(yp_get_default_domain)
734 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
735         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
736         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
739 # Check if we have execl, if not we need to compile smbrun.
740 AC_CHECK_FUNCS(execl)
741 if test x"$ac_cv_func_execl" = x"no"; then
742     RUNPROG="bin/smbrun\$(EXEEXT)"
743 else
744     RUNPROG=""
747 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link)
748 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64)
749 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
750 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
751 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
752 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
753 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
754 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
755 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
756 AC_CHECK_FUNCS(syslog vsyslog)
758 # syscall() is needed for smbwrapper.
759 AC_CHECK_FUNCS(syscall)
761 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
762 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
763 AC_CHECK_FUNCS(__getcwd _getcwd)
764 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
765 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
766 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
767 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
768 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
769 AC_CHECK_FUNCS(_write __write _fork __fork)
770 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
771 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
772 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
773 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
774 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
777 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
780 if test x$ac_cv_func_stat64 = xno ; then
781   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
782   AC_TRY_LINK([
783 #if defined(HAVE_UNISTD_H)
784 #include <unistd.h>
785 #endif
786 #include <sys/stat.h>
787 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
788   AC_MSG_RESULT([$ac_cv_func_stat64])
789   if test x$ac_cv_func_stat64 = xyes ; then
790     AC_DEFINE(HAVE_STAT64)
791   fi
794 if test x$ac_cv_func_lstat64 = xno ; then
795   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
796   AC_TRY_LINK([
797 #if defined(HAVE_UNISTD_H)
798 #include <unistd.h>
799 #endif
800 #include <sys/stat.h>
801 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
802   AC_MSG_RESULT([$ac_cv_func_lstat64])
803   if test x$ac_cv_func_lstat64 = xyes ; then
804     AC_DEFINE(HAVE_LSTAT64)
805   fi
808 if test x$ac_cv_func_fstat64 = xno ; then
809   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
810   AC_TRY_LINK([
811 #if defined(HAVE_UNISTD_H)
812 #include <unistd.h>
813 #endif
814 #include <sys/stat.h>
815 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
816   AC_MSG_RESULT([$ac_cv_func_fstat64])
817   if test x$ac_cv_func_fstat64 = xyes ; then
818     AC_DEFINE(HAVE_FSTAT64)
819   fi
823 # If no strcasecmp, check for it in some known places
824 # It is in -lresolv on ReliantUNIX and UnixWare
825 #   -lresolve *must* follow -lnsl for name resolution to work properly
828 if test x$ac_cv_func_strcasecmp = xno ; then
829         AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
830                 AC_DEFINE(HAVE_STRCASECMP))
834 # Check for the functions putprpwnam, set_auth_parameters,
835 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
836 # Needed for OSF1 and HPUX.
839 AC_LIBTESTFUNC(security, putprpwnam)
840 AC_LIBTESTFUNC(sec, putprpwnam)
842 AC_LIBTESTFUNC(security, set_auth_parameters)
843 AC_LIBTESTFUNC(sec, set_auth_parameters)
845 # UnixWare 7.x has its getspnam in -lgen
846 AC_LIBTESTFUNC(gen, getspnam)
848 AC_LIBTESTFUNC(security, getspnam)
849 AC_LIBTESTFUNC(sec, getspnam)
851 AC_LIBTESTFUNC(security, bigcrypt)
852 AC_LIBTESTFUNC(sec, bigcrypt)
854 AC_LIBTESTFUNC(security, getprpwnam)
855 AC_LIBTESTFUNC(sec, getprpwnam)
857 # this bit needs to be modified for each OS that is suported by
858 # smbwrapper. You need to specify how to created a shared library and
859 # how to compile C code to produce PIC object files
861 # these are the defaults, good for lots of systems
862 HOST_OS="$host_os"
863 LDSHFLAGS="-shared"
864 SONAMEFLAG="#"
865 SHLD="\${CC}" 
866 PICFLAG=""
867 PICSUFFIX="po.o"
868 SHLIBEXT="so"
869 # Assume non-shared by default and override below
870 BLDSHARED="false" 
871 AC_MSG_CHECKING([ability to build shared libraries])
873 # and these are for particular systems
874 case "$host_os" in
875                 *linux*)   AC_DEFINE(LINUX)
876                         BLDSHARED="true"
877                         LDSHFLAGS="-shared"
878                         DYNEXP="-Wl,--export-dynamic"
879                         PICFLAG="-fPIC"
880                         SONAMEFLAG="-Wl,-soname="
881                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
882                         ;;
883                 *solaris*) AC_DEFINE(SUNOS5)
884                         BLDSHARED="true"
885                         LDSHFLAGS="-G"
886                         SONAMEFLAG="-h "
887                         if test "${GCC}" = "yes"; then
888                                 PICFLAG="-fPIC"
889                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
890                                         DYNEXP="-Wl,-E"
891                                 fi
892                         else
893                                 PICFLAG="-KPIC"
894                                 ## ${CFLAGS} added for building 64-bit shared 
895                                 ## libs using Sun's Compiler
896                                 LDSHFLAGS="-G \${CFLAGS}"
897                                 POBAD_CC=""
898                                 PICSUFFIX="po.o"
899                         fi
900                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
901                         AC_DEFINE(BROKEN_GETGRNAM)
902                 ;;
903                 *sunos*) AC_DEFINE(SUNOS4)
904                         BLDSHARED="true"
905                         LDSHFLAGS="-G"
906                         SONAMEFLAG="-Wl,-h,"
907                         PICFLAG="-KPIC"   # Is this correct for SunOS
908                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
909                         AC_DEFINE(BROKEN_GETGRNAM)
910                 ;;
911                 *freebsd*)  BLDSHARED="true"
912                         LDSHFLAGS="-shared"
913                         DYNEXP="-Wl,--export-dynamic"
914                         SONAMEFLAG="-Wl,-soname,"
915                         PICFLAG="-fPIC -DPIC"
916                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
917                         AC_DEFINE(BROKEN_GETGRNAM)
918                 ;;
919                 *openbsd*)  BLDSHARED="true"
920                         LDSHFLAGS="-shared"
921                         DYNEXP="-Wl,-Bdynamic"
922                         SONAMEFLAG="-Wl,-soname,"
923                         PICFLAG="-fPIC"
924                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
925                         AC_DEFINE(BROKEN_GETGRNAM)
926                 ;;
927                 *irix*) AC_DEFINE(IRIX)
928                         case "$host_os" in
929                         *irix6*) AC_DEFINE(IRIX6)
930                         ;;
931                         esac
932                         ATTEMPT_WRAP32_BUILD=yes
933                         BLDSHARED="true"
934                         LDSHFLAGS="-set_version sgi1.0 -shared"
935                         SONAMEFLAG="-soname "
936                         SHLD="\${LD}" 
937                         if test "${GCC}" = "yes"; then
938                                 PICFLAG="-fPIC"
939                         else 
940                                 PICFLAG="-KPIC"
941                         fi
942                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
943                 ;;
944                 *aix*) AC_DEFINE(AIX)
945                         BLDSHARED="true"
946                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
947                         DYNEXP="-Wl,-brtl,-bexpall"
948                         PICFLAG="-O2"
949                         if test "${GCC}" != "yes"; then
950                                 ## for funky AIX compiler using strncpy()
951                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
952                         fi
954                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
955                 ;;
956                 *hpux*) AC_DEFINE(HPUX)
957                         SHLIBEXT="sl"
958                         # Use special PIC flags for the native HP-UX compiler.
959                         if test $ac_cv_prog_cc_Ae = yes; then
960                                 BLDSHARED="true"
961                                 SHLD="/usr/bin/ld"
962                                 LDSHFLAGS="-B symbolic -b -z"
963                                 SONAMEFLAG="+h "
964                                 PICFLAG="+z"
965                         fi
966                         DYNEXP="-Wl,-E"
967                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192)
968                         AC_DEFINE(POSIX_ACL_NEEDS_MASK)
969                         ;;
970                 *qnx*) AC_DEFINE(QNX)
971                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
972                         ;;
973                 *osf*) AC_DEFINE(OSF1)
974                         BLDSHARED="true"
975                         LDSHFLAGS="-shared"
976                         SONAMEFLAG="-Wl,-soname,"
977                         PICFLAG="-fPIC"
978                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
979                         AC_DEFINE(BROKEN_GETGRNAM)
980                 ;;
981                 *sco*) AC_DEFINE(SCO)
982                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
983                         ;;
984                 *unixware*) AC_DEFINE(UNIXWARE)
985                         BLDSHARED="true"
986                         LDSHFLAGS="-shared"
987                         SONAMEFLAG="-Wl,-soname,"
988                         PICFLAG="-KPIC"
989                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
990                 ;;
991                 *next2*) AC_DEFINE(NEXT2)
992                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
993                         ;;
994                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
995                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
996                         ;;
997                 *sysv4*)
998                         case "$host" in
999                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1000                                                                         AC_DEFINE(HAVE_MEMSET)
1001                                                                 fi
1002                                                                 LDSHFLAGS="-G"
1003                                                                 DYNEXP="-Bexport"
1004                                 ;;
1005                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
1006                         esac
1007                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1008                         ;;
1009                 *sysv5*)
1010                         if [ test "$GCC" != yes ]; then
1011                                 AC_DEFINE(HAVE_MEMSET)
1012                         fi
1013                         LDSHFLAGS="-G"
1014                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1015                         ;;
1016                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1017                         BLDSHARED="false"
1018                         LDSHFLAGS=""
1019                         ;;
1020                 *)
1021                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1022                         ;;
1023 esac
1024 AC_SUBST(DYNEXP)
1025 AC_MSG_RESULT($BLDSHARED)
1026 AC_MSG_CHECKING([linker flags for shared libraries])
1027 AC_MSG_RESULT([$LDSHFLAGS])
1028 AC_MSG_CHECKING([compiler flags for position-independent code])
1029 AC_MSG_RESULT([$PICFLAGS])
1031 # try to work out how to produce pic code with this compiler
1032 if test x$PICFLAG = x; then
1033   AC_PROG_CC_FLAG(fpic)
1034   if test $ac_cv_prog_cc_fpic = yes; then
1035       PICFLAG="-fpic";
1036   fi
1038 if test x$PICFLAG = x; then
1039   AC_PROG_CC_FLAG(KPIC)
1040   if test $ac_cv_prog_cc_KPIC = yes; then
1041     PICFLAG="-KPIC";
1042   fi
1044 if test x$PICFLAG = x; then
1045   AC_PROG_CC_FLAG(Kpic)
1046   if test $ac_cv_prog_cc_Kpic = yes; then
1047     PICFLAG="-Kpic";
1048   fi
1051 ################
1053 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1054 AC_TRY_RUN([#include <stdio.h>
1055 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1056 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1057 if test x"$samba_cv_have_longlong" = x"yes"; then
1058     AC_DEFINE(HAVE_LONGLONG)
1062 # Check if the compiler supports the LL prefix on long long integers.
1063 # AIX needs this.
1065 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1066     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1067         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1068 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1069    AC_DEFINE(COMPILER_SUPPORTS_LL)
1072   
1073 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1074 AC_TRY_RUN([#include <stdio.h>
1075 #include <sys/stat.h>
1076 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1077 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1078 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1079     AC_DEFINE(SIZEOF_OFF_T,8)
1082 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1083 AC_TRY_RUN([
1084 #if defined(HAVE_UNISTD_H)
1085 #include <unistd.h>
1086 #endif
1087 #include <stdio.h>
1088 #include <sys/stat.h>
1089 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1090 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1091 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1092     AC_DEFINE(HAVE_OFF64_T)
1095 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1096 AC_TRY_RUN([#include <stdio.h>
1097 #include <sys/stat.h>
1098 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1099 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1100 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1101     AC_DEFINE(SIZEOF_INO_T,8)
1104 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1105 AC_TRY_RUN([
1106 #if defined(HAVE_UNISTD_H)
1107 #include <unistd.h>
1108 #endif
1109 #include <stdio.h>
1110 #include <sys/stat.h>
1111 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1112 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1113 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1114     AC_DEFINE(HAVE_INO64_T)
1117 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1118 AC_TRY_RUN([
1119 #if defined(HAVE_UNISTD_H)
1120 #include <unistd.h>
1121 #endif
1122 #include <stdio.h>
1123 #include <sys/stat.h>
1124 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1125 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1126 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1127     AC_DEFINE(HAVE_DEV64_T)
1130 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1131 AC_TRY_COMPILE([
1132 #if defined(HAVE_UNISTD_H)
1133 #include <unistd.h>
1134 #endif
1135 #include <sys/types.h>
1136 #include <dirent.h>],
1137 [struct dirent64 de;],
1138 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1139 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1140     AC_DEFINE(HAVE_STRUCT_DIRENT64)
1143 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1144 AC_TRY_RUN([
1145 #if defined(HAVE_UNISTD_H)
1146 #include <unistd.h>
1147 #endif
1148 #include <sys/types.h>
1149 main() { dev_t dev; int i = major(dev); return 0; }],
1150 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1151 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1152     AC_DEFINE(HAVE_DEVICE_MAJOR_FN)
1155 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1156 AC_TRY_RUN([
1157 #if defined(HAVE_UNISTD_H)
1158 #include <unistd.h>
1159 #endif
1160 #include <sys/types.h>
1161 main() { dev_t dev; int i = minor(dev); return 0; }],
1162 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1163 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1164     AC_DEFINE(HAVE_DEVICE_MINOR_FN)
1167 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV_FN,[
1168 AC_TRY_RUN([
1169 #if defined(HAVE_UNISTD_H)
1170 #include <unistd.h>
1171 #endif
1172 #include <sys/types.h>
1173 main() { dev_t dev = makedev(1,2); return 0; }],
1174 samba_cv_HAVE_MAKEDEV_FN=yes,samba_cv_HAVE_MAKEDEV_FN=no,samba_cv_HAVE_MAKEDEV_FN=cross)])
1175 if test x"$samba_cv_HAVE_MAKEDEV_FN" = x"yes"; then
1176     AC_DEFINE(MAKEDEV_FN)
1179 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1180 AC_TRY_RUN([#include <stdio.h>
1181 main() { char c; c=250; exit((c > 0)?0:1); }],
1182 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1183 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1184     AC_DEFINE(HAVE_UNSIGNED_CHAR)
1187 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1188 AC_TRY_COMPILE([#include <sys/types.h>
1189 #include <sys/socket.h>
1190 #include <netinet/in.h>],
1191 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1192 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1193 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1194     AC_DEFINE(HAVE_SOCK_SIN_LEN)
1197 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1198 AC_TRY_COMPILE([#include <sys/types.h>
1199 #include <dirent.h>
1200 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1201 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1202 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1203     AC_DEFINE(SEEKDIR_RETURNS_VOID)
1206 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
1207 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
1208 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
1209 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
1210     AC_DEFINE(HAVE_FILE_MACRO)
1213 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1214 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1215 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1216 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1217     AC_DEFINE(HAVE_FUNCTION_MACRO)
1220 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1221 AC_TRY_RUN([
1222 #include <sys/time.h>
1223 #include <unistd.h>
1224 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1225            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1226 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1227     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
1230 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1231 AC_TRY_LINK([#include <stdarg.h>
1232 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1233 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1234 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1235     AC_DEFINE(HAVE_VA_COPY)
1238 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1239 AC_TRY_RUN([
1240 #include <sys/types.h>
1241 #include <stdarg.h>
1242 void foo(const char *format, ...) {
1243         va_list ap;
1244         int len;
1245         char buf[5];
1247         va_start(ap, format);
1248         len = vsnprintf(buf, 0, format, ap);
1249         va_end(ap);
1250         if (len != 5) exit(1);
1252         va_start(ap, format);
1253         len = vsnprintf(0, 0, format, ap);
1254         va_end(ap);
1255         if (len != 5) exit(1);
1257         if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1259         exit(0);
1261 main() { foo("hello"); }
1263 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1264 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1265         AC_DEFINE(HAVE_C99_VSNPRINTF)
1268 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1269 AC_TRY_RUN([#include <sys/types.h>
1270 #include <dirent.h>
1271 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1272 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1273 di->d_name[0] == 0) exit(0); exit(1);} ],
1274 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1275 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1276     AC_DEFINE(HAVE_BROKEN_READDIR)
1279 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1280 AC_TRY_COMPILE([#include <sys/types.h>
1281 #include <utime.h>],
1282 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1283 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1284 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1285     AC_DEFINE(HAVE_UTIMBUF)
1288 dnl  utmp and utmpx come in many flavours
1289 dnl  We need to check for many of them
1290 dnl  But we don't need to do each and every one, because our code uses
1291 dnl  mostly just the utmp (not utmpx) fields.
1293 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1295 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1296 AC_TRY_COMPILE([#include <sys/types.h>
1297 #include <utmp.h>],
1298 [struct utmp ut;  ut.ut_name[0] = 'a';],
1299 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1300 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1301     AC_DEFINE(HAVE_UT_UT_NAME)
1302 fi 
1304 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1305 AC_TRY_COMPILE([#include <sys/types.h>
1306 #include <utmp.h>],
1307 [struct utmp ut;  ut.ut_user[0] = 'a';],
1308 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1309 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1310     AC_DEFINE(HAVE_UT_UT_USER)
1311 fi 
1313 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1314 AC_TRY_COMPILE([#include <sys/types.h>
1315 #include <utmp.h>],
1316 [struct utmp ut;  ut.ut_id[0] = 'a';],
1317 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1318 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1319     AC_DEFINE(HAVE_UT_UT_ID)
1320 fi 
1322 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1323 AC_TRY_COMPILE([#include <sys/types.h>
1324 #include <utmp.h>],
1325 [struct utmp ut;  ut.ut_host[0] = 'a';],
1326 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1327 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1328     AC_DEFINE(HAVE_UT_UT_HOST)
1329 fi 
1331 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1332 AC_TRY_COMPILE([#include <sys/types.h>
1333 #include <utmp.h>],
1334 [struct utmp ut;  time_t t; ut.ut_time = t;],
1335 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1336 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1337     AC_DEFINE(HAVE_UT_UT_TIME)
1338 fi 
1340 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1341 AC_TRY_COMPILE([#include <sys/types.h>
1342 #include <utmp.h>],
1343 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1344 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1345 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1346     AC_DEFINE(HAVE_UT_UT_TV)
1347 fi 
1349 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1350 AC_TRY_COMPILE([#include <sys/types.h>
1351 #include <utmp.h>],
1352 [struct utmp ut;  ut.ut_type = 0;],
1353 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1354 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1355     AC_DEFINE(HAVE_UT_UT_TYPE)
1356 fi 
1358 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1359 AC_TRY_COMPILE([#include <sys/types.h>
1360 #include <utmp.h>],
1361 [struct utmp ut;  ut.ut_pid = 0;],
1362 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1363 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1364     AC_DEFINE(HAVE_UT_UT_PID)
1365 fi 
1367 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1368 AC_TRY_COMPILE([#include <sys/types.h>
1369 #include <utmp.h>],
1370 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1371 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1372 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1373     AC_DEFINE(HAVE_UT_UT_EXIT)
1374 fi 
1376 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1377 AC_TRY_COMPILE([#include <sys/types.h>
1378 #include <utmp.h>],
1379 [struct utmp ut;  ut.ut_addr = 0;],
1380 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1381 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1382     AC_DEFINE(HAVE_UT_UT_ADDR)
1383 fi 
1385 if test x$ac_cv_func_pututline = xyes ; then
1386   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1387   AC_TRY_COMPILE([#include <sys/types.h>
1388 #include <utmp.h>],
1389   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1390   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1391   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1392       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
1393   fi
1396 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1397 AC_TRY_COMPILE([#include <sys/types.h>
1398 #include <utmpx.h>],
1399 [struct utmpx ux;  ux.ut_syslen = 0;],
1400 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1401 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1402     AC_DEFINE(HAVE_UX_UT_SYSLEN)
1403 fi 
1405 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1406 AC_TRY_RUN([
1407 #include <sys/types.h>
1408 #include <fcntl.h>
1409 #ifndef F_GETLEASE
1410 #define F_GETLEASE      1025
1411 #endif
1412 main() {
1413        int fd = open("/dev/null", O_RDONLY);
1414        return fcntl(fd, F_GETLEASE, 0) == -1;
1417 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1418 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1419     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1422 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1423 AC_TRY_RUN([
1424 #include <sys/types.h>
1425 #include <fcntl.h>
1426 #include <signal.h>
1427 #ifndef F_NOTIFY
1428 #define F_NOTIFY 1026
1429 #endif
1430 main() {
1431         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1434 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1435 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" && test x"$target_cpu" != x"s390"; then
1436     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1439 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1440 AC_TRY_RUN([
1441 #include <sys/types.h>
1442 #include <fcntl.h>
1443 #include <signal.h>
1444 #include <sys/file.h>
1445 #ifndef LOCK_MAND
1446 #define LOCK_MAND       32
1447 #define LOCK_READ       64
1448 #endif
1449 main() {
1450         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1453 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1454 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1455     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1461 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1462 AC_TRY_COMPILE([#include <sys/types.h>
1463 #include <fcntl.h>],
1464 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1465 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1466 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1467     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1470 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1471 AC_TRY_RUN([#include <sys/types.h>
1472 #include <sys/capability.h>
1473 main() {
1474  cap_t cap;
1475  if ((cap = cap_get_proc()) == NULL)
1476    exit(1);
1477  cap->cap_effective |= CAP_NETWORK_MGT;
1478  cap->cap_inheritable |= CAP_NETWORK_MGT;
1479  cap_set_proc(cap);
1480  exit(0);
1483 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1484 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1485     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1489 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1490 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1493 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1494 AC_TRY_COMPILE([#include <sys/types.h>
1495 #if defined(HAVE_RPC_RPC_H)
1496 #include <rpc/rpc.h>
1497 #endif],
1498 [int16 testvar;],
1499 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1500 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1501     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1504 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1505 AC_TRY_COMPILE([#include <sys/types.h>
1506 #if defined(HAVE_RPC_RPC_H)
1507 #include <rpc/rpc.h>
1508 #endif],
1509 [uint16 testvar;],
1510 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1511 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1512     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1515 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1516 AC_TRY_COMPILE([#include <sys/types.h>
1517 #if defined(HAVE_RPC_RPC_H)
1518 #include <rpc/rpc.h>
1519 #endif],
1520 [int32 testvar;],
1521 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1522 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1523     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1526 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1527 AC_TRY_COMPILE([#include <sys/types.h>
1528 #if defined(HAVE_RPC_RPC_H)
1529 #include <rpc/rpc.h>
1530 #endif],
1531 [uint32 testvar;],
1532 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1533 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1534     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1538 dnl Some systems (SCO) have a problem including
1539 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1540 dnl as a #define in <prot.h> and as part of an enum
1541 dnl in <rpc/rpc.h>.
1544 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1545 AC_TRY_COMPILE([#include <sys/types.h>
1546 #ifdef HAVE_SYS_SECURITY_H
1547 #include <sys/security.h>
1548 #include <prot.h>
1549 #endif  /* HAVE_SYS_SECURITY_H */
1550 #if defined(HAVE_RPC_RPC_H)
1551 #include <rpc/rpc.h>
1552 #endif],
1553 [int testvar;],
1554 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1555 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1556     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1559 AC_MSG_CHECKING([for test routines])
1560 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1561            AC_MSG_RESULT(yes),
1562            AC_MSG_ERROR([cant find test code. Aborting config]),
1563            AC_MSG_WARN([cannot run when cross-compiling]))
1565 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1566 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1567            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1568 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1569     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1572 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1573 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1574            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1575 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1576     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1579 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1580 SAVE_CPPFLAGS="$CPPFLAGS"
1581 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1582 AC_TRY_COMPILE([
1583 #define REPLACE_GETPASS 1
1584 #define NO_CONFIG_H 1
1585 #define main dont_declare_main
1586 #include "${srcdir-.}/lib/getsmbpass.c"
1587 #undef main
1588 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1589 CPPFLAGS="$SAVE_CPPFLAGS"
1591 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1592         AC_DEFINE(REPLACE_GETPASS)
1595 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1596 AC_TRY_RUN([
1597 #include <stdio.h>
1598 #include <sys/types.h>
1599 #include <netinet/in.h>
1600 #ifdef HAVE_ARPA_INET_H
1601 #include <arpa/inet.h>
1602 #endif
1603 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1604 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1605     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1606 exit(1);}],
1607            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1608 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1609     AC_DEFINE(REPLACE_INET_NTOA)
1612 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1613 AC_TRY_RUN([#include <stdlib.h>
1614 #include <sys/types.h>
1615 #include <sys/stat.h>
1616 #include <unistd.h>
1617 main() { 
1618   struct stat st;
1619   char tpl[20]="/tmp/test.XXXXXX"; 
1620   int fd = mkstemp(tpl); 
1621   if (fd == -1) exit(1);
1622   unlink(tpl);
1623   if (fstat(fd, &st) != 0) exit(1);
1624   if ((st.st_mode & 0777) != 0600) exit(1);
1625   exit(0);
1627 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1628 samba_cv_HAVE_SECURE_MKSTEMP=no,
1629 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1630 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1631     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1634 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1635 AC_TRY_RUN([#include <unistd.h>
1636 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1637 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1638 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1639     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1642 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1643 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1644            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1645 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1646     AC_DEFINE(HAVE_ROOT)
1647 else
1648     AC_MSG_WARN(running as non-root will disable some tests)
1651 ##################
1652 # look for a method of finding the list of network interfaces
1653 iface=no;
1654 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1655 AC_TRY_RUN([
1656 #define HAVE_IFACE_AIX 1
1657 #define AUTOCONF_TEST 1
1658 #include "confdefs.h"
1659 #include "${srcdir-.}/lib/interfaces.c"],
1660            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1661 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1662     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1665 if test $iface = no; then
1666 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1667 AC_TRY_RUN([
1668 #define HAVE_IFACE_IFCONF 1
1669 #define AUTOCONF_TEST 1
1670 #include "confdefs.h"
1671 #include "${srcdir-.}/lib/interfaces.c"],
1672            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1673 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1674     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1678 if test $iface = no; then
1679 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1680 AC_TRY_RUN([
1681 #define HAVE_IFACE_IFREQ 1
1682 #define AUTOCONF_TEST 1
1683 #include "confdefs.h"
1684 #include "${srcdir-.}/lib/interfaces.c"],
1685            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1686 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1687     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1692 ################################################
1693 # look for a method of setting the effective uid
1694 seteuid=no;
1695 if test $seteuid = no; then
1696 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1697 AC_TRY_RUN([
1698 #define AUTOCONF_TEST 1
1699 #define USE_SETRESUID 1
1700 #include "confdefs.h"
1701 #include "${srcdir-.}/lib/util_sec.c"],
1702            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1703 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1704     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1709 if test $seteuid = no; then
1710 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1711 AC_TRY_RUN([
1712 #define AUTOCONF_TEST 1
1713 #define USE_SETREUID 1
1714 #include "confdefs.h"
1715 #include "${srcdir-.}/lib/util_sec.c"],
1716            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1717 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1718     seteuid=yes;AC_DEFINE(USE_SETREUID)
1722 if test $seteuid = no; then
1723 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1724 AC_TRY_RUN([
1725 #define AUTOCONF_TEST 1
1726 #define USE_SETEUID 1
1727 #include "confdefs.h"
1728 #include "${srcdir-.}/lib/util_sec.c"],
1729            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1730 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1731     seteuid=yes;AC_DEFINE(USE_SETEUID)
1735 if test $seteuid = no; then
1736 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1737 AC_TRY_RUN([
1738 #define AUTOCONF_TEST 1
1739 #define USE_SETUIDX 1
1740 #include "confdefs.h"
1741 #include "${srcdir-.}/lib/util_sec.c"],
1742            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1743 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1744     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1749 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1750 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1751            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1752 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1753     AC_DEFINE(HAVE_MMAP)
1756 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1757 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1758            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1759 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1760     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1763 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1764 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1765            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1766 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1767     AC_DEFINE(HAVE_FCNTL_LOCK)
1770 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1771 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1772            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1773 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1774     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1776 else
1779 dnl Don't check for 64 bit fcntl locking if we know that the
1780 dnl glibc2.1 broken check has succeeded.
1781 dnl 
1783   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1784   AC_TRY_RUN([
1785 #if defined(HAVE_UNISTD_H)
1786 #include <unistd.h>
1787 #endif
1788 #include <stdio.h>
1789 #include <stdlib.h>
1791 #ifdef HAVE_FCNTL_H
1792 #include <fcntl.h>
1793 #endif
1795 #ifdef HAVE_SYS_FCNTL_H
1796 #include <sys/fcntl.h>
1797 #endif
1798 main() { struct flock64 fl64;
1799 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1800 exit(0);
1801 #else
1802 exit(1);
1803 #endif
1805        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1807   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1808       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1809   fi
1812 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1813 AC_TRY_COMPILE([#include <sys/types.h>
1814 #include <sys/stat.h>
1815 #include <unistd.h>],
1816 [struct stat st;  st.st_blocks = 0;],
1817 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1818 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1819     AC_DEFINE(HAVE_STAT_ST_BLOCKS)
1820 fi 
1822 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1823 AC_TRY_COMPILE([#include <sys/types.h>
1824 #include <sys/stat.h>
1825 #include <unistd.h>],
1826 [struct stat st;  st.st_blksize = 0;],
1827 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1828 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1829     AC_DEFINE(HAVE_STAT_ST_BLKSIZE)
1832 case "$host_os" in
1833 *linux*)
1834 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1835 AC_TRY_COMPILE([
1836 #ifdef HAVE_SYS_VFS_H
1837 #include <sys/vfs.h>
1838 #endif
1839 #ifdef HAVE_SYS_CAPABILITY_H
1840 #include <sys/capability.h>
1841 #endif
1842 ],[int i;],
1843    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1844 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1845    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS)
1848 esac
1850 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1851 AC_TRY_COMPILE([#include <sys/acl.h>
1852 #if defined(HAVE_RPCSVC_NIS_H)
1853 #include <rpcsvc/nis.h>
1854 #endif],
1855 [int i;],
1856 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1857 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1858     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1862 #################################################
1863 # check for smbwrapper support
1864 AC_MSG_CHECKING(whether to use smbwrapper)
1865 AC_ARG_WITH(smbwrapper,
1866 [  --with-smbwrapper       Include SMB wrapper support (default=no)],
1867 [ case "$withval" in
1868   yes)
1869     AC_MSG_RESULT(yes)
1870     AC_DEFINE(WITH_SMBWRAPPER)
1871         WRAPPROG="bin/smbsh\$(EXEEXT)"
1872         WRAP="bin/smbwrapper.$SHLIBEXT"
1874         if test x$ATTEMPT_WRAP32_BUILD = x; then
1875                 WRAP32=""
1876         else
1877                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1878         fi
1880 # Conditions under which smbwrapper should not be built.
1882         if test x$PICFLAG = x; then
1883            echo No support for PIC code - disabling smbwrapper and smbsh
1884            WRAPPROG=""
1885            WRAP=""
1886            WRAP32=""
1887         elif test x$ac_cv_func_syscall = xno; then
1888            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1889            WRAPPROG=""
1890            WRAP=""
1891            WRAP32=""
1892         fi
1893     ;;
1894   *)
1895     AC_MSG_RESULT(no)
1896     ;;
1897   esac ],
1898   AC_MSG_RESULT(no)
1901 #################################################
1902 # check for the AFS filesystem
1903 AC_MSG_CHECKING(whether to use AFS)
1904 AC_ARG_WITH(afs,
1905 [  --with-afs              Include AFS support (default=no)],
1906 [ case "$withval" in
1907   yes)
1908     AC_MSG_RESULT(yes)
1909     AC_DEFINE(WITH_AFS)
1910     ;;
1911   *)
1912     AC_MSG_RESULT(no)
1913     ;;
1914   esac ],
1915   AC_MSG_RESULT(no)
1919 #################################################
1920 # check for the DFS auth system
1921 AC_MSG_CHECKING(whether to use DCE/DFS auth)
1922 AC_ARG_WITH(dfs,
1923 [  --with-dce-dfs          Include DCE/DFS support (default=no)],
1924 [ case "$withval" in
1925   yes)
1926     AC_MSG_RESULT(yes)
1927     AC_DEFINE(WITH_DFS)
1928     ;;
1929   *)
1930     AC_MSG_RESULT(no)
1931     ;;
1932   esac ],
1933   AC_MSG_RESULT(no)
1936 #################################################
1937 # check for Kerberos IV auth system
1938 AC_MSG_CHECKING(whether to use Kerberos IV)
1939 AC_ARG_WITH(krb4,
1940 [  --with-krb4=base-dir    Include Kerberos IV support (default=no)],
1941 [ case "$withval" in
1942   yes)
1943     AC_MSG_RESULT(yes)
1944     AC_DEFINE(KRB4_AUTH)
1945     AC_CHECK_LIB(resolv, dn_expand)
1946     LIBS="$LIBS -lkrb -ldes"
1947     CFLAGS="$CFLAGS -I$withval/include"
1948     LDFLAGS="$LDFLAGS -L$withval/lib"
1949     ;;
1950   *)
1951     AC_MSG_RESULT(no)
1952     ;;
1953   esac ],
1954   AC_MSG_RESULT(no)
1957 #################################################
1958 # check for Kerberos 5 auth system
1959 AC_MSG_CHECKING(whether to use Kerberos 5)
1960 AC_ARG_WITH(krb5,
1961 [  --with-krb5=base-dir    Include Kerberos 5 support (default=no)],
1962 [ case "$withval" in
1963   yes)
1964     AC_MSG_RESULT(yes)
1965     AC_DEFINE(KRB5_AUTH)
1966     LIBS="$LIBS -ldes425 -lkrb5 -lcrypto -lcom_err"
1967     CFLAGS="$CFLAGS -I$withval/include"
1968     LDFLAGS="$LDFLAGS -L$withval/lib"
1969     ;;
1970   *)
1971     AC_MSG_RESULT(no)
1972     ;;
1973   esac ],
1974   AC_MSG_RESULT(no)
1977 #################################################
1978 # check for automount support
1979 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1980 AC_ARG_WITH(automount,
1981 [  --with-automount        Include AUTOMOUNT support (default=no)],
1982 [ case "$withval" in
1983   yes)
1984     AC_MSG_RESULT(yes)
1985     AC_DEFINE(WITH_AUTOMOUNT)
1986     ;;
1987   *)
1988     AC_MSG_RESULT(no)
1989     ;;
1990   esac ],
1991   AC_MSG_RESULT(no)
1994 #################################################
1995 # check for smbmount support
1996 AC_MSG_CHECKING(whether to use SMBMOUNT)
1997 AC_ARG_WITH(smbmount,
1998 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
1999 [ case "$withval" in
2000   yes)
2001         case "$host_os" in
2002         *linux*)
2003                 AC_MSG_RESULT(yes)
2004                 AC_DEFINE(WITH_SMBMOUNT)
2005                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
2006                 ;;
2007         *)
2008                 AC_MSG_ERROR(not on a linux system!)
2009                 ;;
2010         esac
2011     ;;
2012   *)
2013     AC_MSG_RESULT(no)
2014     MPROGS=
2015     ;;
2016   esac ],
2017   AC_MSG_RESULT(no)
2018   MPROGS=
2022 #################################################
2023 # check for a PAM password database
2024 with_pam_for_crypt=no
2025 AC_MSG_CHECKING(whether to use PAM password database)
2026 AC_ARG_WITH(pam,
2027 [  --with-pam              Include PAM password database support (default=no)],
2028 [ case "$withval" in
2029   yes)
2030     AC_MSG_RESULT(yes)
2031     AC_DEFINE(WITH_PAM)
2032     LIBS="$LIBS -lpam"
2033     with_pam_for_crypt=yes
2034     ;;
2035   *)
2036     AC_MSG_RESULT(no)
2037     ;;
2038   esac ],
2039   AC_MSG_RESULT(no)
2042 # we can't build a pam module if we don't have pam.
2043 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
2045 #################################################
2046 # check for pam_smbpass support
2047 AC_MSG_CHECKING(whether to use pam_smbpass)
2048 AC_ARG_WITH(pam_smbpass,
2049 [  --with-pam_smbpass      Include the smbpass PAM module (default=no)],
2050 [ case "$withval" in
2051   yes)
2052     AC_MSG_RESULT(yes)
2054 # Conditions under which pam_smbpass should not be built.
2056        if test x$PICFLAG = x; then
2057           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2058           PAM_MOD=""
2059        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2060           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2061           PAM_MOD=""
2062        else
2063           AC_DEFINE(WITH_PAM_SMBPASS)
2064           PAM_MOD="bin/pam_smbpass.so"
2065        fi
2066     ;;
2067   *)
2068     AC_MSG_RESULT(no)
2069     ;;
2070   esac ],
2071   AC_MSG_RESULT(no)
2075 ###############################################
2076 # test for where we get crypt() from, but only
2077 # if not using PAM
2078 if test $with_pam_for_crypt = no; then
2079 AC_CHECK_FUNCS(crypt)
2080 if test x"$ac_cv_func_crypt" = x"no"; then
2081     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
2082         AC_DEFINE(HAVE_CRYPT)])
2087 ## moved after the check for -lcrypt in order to
2088 ## ensure that the necessary libraries are included
2089 ## check checking for truncated salt.  Wrapped by the
2090 ## $with_pam_for_crypt variable as above   --jerry
2092 if test $with_pam_for_crypt = no; then
2093 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2094 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2095         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
2096 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2097         AC_DEFINE(HAVE_TRUNCATED_SALT)
2102 ########################################################################################
2104 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2106 ########################################################################################
2108 ## set the with_smbpasswd_sam as the default
2109 with_smbpasswd_sam=yes
2113 #################################################
2114 # check for a TDB password database
2115 AC_MSG_CHECKING(whether to use TDB SAM database)
2116 AC_ARG_WITH(tdbsam,
2117 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2118 [ case "$withval" in
2119   yes)
2120     AC_MSG_RESULT(yes)
2121     AC_DEFINE(WITH_TDB_SAM)
2122     with_smbpasswd_sam=no
2123     ;;
2124   *)
2125     AC_MSG_RESULT(no)
2126     ;;
2127   esac ],
2128   AC_MSG_RESULT(no)
2131 #################################################
2132 # check for a LDAP password database
2133 AC_MSG_CHECKING(whether to use LDAP SAM database)
2134 AC_ARG_WITH(ldapsam,
2135 [  --with-ldapsam          Include experimental LDAP SAM support (default=no)],
2136 [ case "$withval" in
2137   yes)
2138     AC_MSG_RESULT(yes)
2139     AC_DEFINE(WITH_LDAP_SAM)
2140     LDAPLIBS="-lldap"
2141     AC_CHECK_LIB(lber, ber_bvfree, [LDAPLIBS="$LDAPLIBS -llber"])
2142     ## remove -lresolv as this should be included by the -lsasl dependency 
2143     ## in the OpenLDAP clients.  By not requiring it specifically, we avoid
2144     ## issues on platforms that don't have it
2145     LDAPLIBS="$LDAPLIBS"
2146     old_LDFLAGS="$LDFLAGS"
2147     LDFLAGS="$LDFLAGS $LDAPLIBS"
2148     AC_CHECK_FUNCS(ldap_start_tls_s)
2149     LDFLAGS="$old_LDFLAGS"
2150     with_smbpasswd_sam=no
2151     AC_SUBST(LDAPLIBS)
2152 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, samba_cv_ldap_set_rebind_proc, [
2153 AC_TRY_COMPILE([
2154 #include <lber.h>
2155 #include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [samba_cv_ldap_set_rebind_proc=3], [samba_cv_ldap_set_rebind_proc=2]) ])
2156 if test x"$samba_cv_ldap_set_rebind_proc" = x"3"; then
2157    AC_DEFINE(LDAP_SET_REBIND_PROC_ARGS,3)
2158 else
2159    AC_DEFINE(LDAP_SET_REBIND_PROC_ARGS,2)
2161     ;;
2162   *)
2163     AC_MSG_RESULT(no)
2164     ;;
2165   esac ],
2166   AC_MSG_RESULT(no)
2170 #################################################
2171 # check for a NISPLUS password database
2172 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2173 AC_ARG_WITH(nisplussam,
2174 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2175 [ case "$withval" in
2176   yes)
2177     AC_MSG_RESULT(yes)
2178     AC_DEFINE(WITH_NISPLUS_SAM)
2179     with_smbpasswd_sam=no
2180     ;;
2181   *)
2182     AC_MSG_RESULT(no)
2183     ;;
2184   esac ],
2185   AC_MSG_RESULT(no)
2188 ################################################
2189 # This test should come last because the
2190 # smbpasswd SAM is only used if another format
2191 # has not been defined
2192 AC_MSG_CHECKING(whether to use traditional smbpasswd file)
2193 if test $with_smbpasswd_sam = yes; then
2194         AC_MSG_RESULT(yes)
2195         AC_DEFINE(WITH_SMBPASSWD_SAM)
2196         PDBEDIT=""
2197 else
2198         AC_MSG_RESULT(no)
2199         PDBEDIT="bin/pdbedit\$(EXEEXT)"
2202 ########################################################################################
2204 ## END OF TESTS FOR SAM BACKENDS.  
2206 ########################################################################################
2208 #################################################
2209 # check for a NISPLUS_HOME support 
2210 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2211 AC_ARG_WITH(nisplus-home,
2212 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2213 [ case "$withval" in
2214   yes)
2215     AC_MSG_RESULT(yes)
2216     AC_DEFINE(WITH_NISPLUS_HOME)
2217     ;;
2218   *)
2219     AC_MSG_RESULT(no)
2220     ;;
2221   esac ],
2222   AC_MSG_RESULT(no)
2225 #################################################
2226 # check for the secure socket layer
2227 AC_MSG_CHECKING(whether to use SSL)
2228 AC_ARG_WITH(ssl,
2229 [  --with-ssl              Include SSL support (default=no)
2230   --with-sslinc=DIR          Where the SSL includes are (defaults to /usr/local/ssl/include)
2231   --with-ssllib=DIR          Where the SSL libraries are (defaults to /usr/local/ssl/lib)],
2232 [ case "$withval" in
2233   yes)
2234     AC_MSG_RESULT(yes)
2235     AC_DEFINE(WITH_SSL)
2236     withval="/usr/local/ssl"     # default
2238     if test "${with_sslinc+set}" = set; then
2240         withval="$with_sslinc"
2241         case "$withval" in
2242         yes|no)
2243           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
2244           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
2245         ;;
2246         * )
2247           CFLAGS="-I${withval} $CFLAGS"
2248         ;;
2249         esac
2251     else
2253         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
2255     fi
2257     if test "${with_ssllib+set}" = set; then
2259         withval="$with_ssllib"
2260         case "$withval" in
2261         yes|no)
2262           echo "configure: warning: --with-ssllib called without argument - will use default" 1>&w
2263           LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2264         ;;
2265         * )
2266           LDFLAGS="-L${withval}/lib $LDFLAGS"
2267         ;;
2268         esac
2270     else
2272         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2274     fi
2276     LIBS="-lssl -lcrypto $LIBS"
2278 #    if test ! -d ${withval}; then
2279 #      echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
2280 #      exit 1
2281 #    fi 
2283     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
2285     ;;
2286   *)
2287     AC_MSG_RESULT(no)
2288     ;;
2289   esac ],
2290   AC_MSG_RESULT(no)
2293 #################################################
2294 # check for syslog logging
2295 AC_MSG_CHECKING(whether to use syslog logging)
2296 AC_ARG_WITH(syslog,
2297 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2298 [ case "$withval" in
2299   yes)
2300     AC_MSG_RESULT(yes)
2301     AC_DEFINE(WITH_SYSLOG)
2302     ;;
2303   *)
2304     AC_MSG_RESULT(no)
2305     ;;
2306   esac ],
2307   AC_MSG_RESULT(no)
2310 #################################################
2311 # check for a shared memory profiling support
2312 AC_MSG_CHECKING(whether to use profiling)
2313 AC_ARG_WITH(profiling-data,
2314 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2315 [ case "$withval" in
2316   yes)
2317     AC_MSG_RESULT(yes)
2318     AC_DEFINE(WITH_PROFILE)
2319     ;;
2320   *)
2321     AC_MSG_RESULT(no)
2322     ;;
2323   esac ],
2324   AC_MSG_RESULT(no)
2328 #################################################
2329 # check for experimental disk-quotas support
2330 QUOTAOBJS=smbd/noquotas.o
2332 AC_MSG_CHECKING(whether to support disk-quotas)
2333 AC_ARG_WITH(quotas,
2334 [  --with-quotas           Include experimental disk-quota support (default=no)],
2335 [ case "$withval" in
2336   yes)
2337     AC_MSG_RESULT(yes)
2338     QUOTAOBJS=smbd/quotas.o
2339     ;;
2340   *)
2341     AC_MSG_RESULT(no)
2342     ;;
2343   esac ],
2344   AC_MSG_RESULT(no)
2346 AC_SUBST(QUOTAOBJS)
2348 #################################################
2349 # check for experimental utmp accounting
2351 AC_MSG_CHECKING(whether to support utmp accounting)
2352 AC_ARG_WITH(utmp,
2353 [  --with-utmp             Include experimental utmp accounting (default=no)],
2354 [ case "$withval" in
2355   yes)
2356     AC_MSG_RESULT(yes)
2357     AC_DEFINE(WITH_UTMP)
2358     ;;
2359   *)
2360     AC_MSG_RESULT(no)
2361     ;;
2362   esac ],
2363   AC_MSG_RESULT(no)
2366 #################################################
2367 # check for MS Dfs support
2369 AC_MSG_CHECKING(whether to support Microsoft Dfs)
2370 AC_ARG_WITH(msdfs,
2371 [  --with-msdfs            Include MS Dfs support (default=no)],
2372 [ case "$withval" in
2373   yes)
2374      AC_MSG_RESULT(yes)
2375      AC_DEFINE(WITH_MSDFS)
2376      ;;
2377   *)
2378     AC_MSG_RESULT(no)
2379     ;;
2380   esac ],
2381   AC_MSG_RESULT(no)
2384 #################################################
2385 # should we build libsmbclient?
2387 INSTALLCLIENTCMD_SH=:
2388 INSTALLCLIENTCMD_A=:
2389 LIBSMBCLIENT_SHARED=
2390 LIBSMBCLIENT=
2391 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2392 AC_ARG_WITH(libsmbclient,
2393 [  --with-libsmbclient     Build the libsmbclient shared library (default=no)],
2394 [ case "$withval" in
2395   yes)
2396      if test $BLDSHARED = true; then
2397         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
2398         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2399         LIBSMBCLIENT=libsmbclient
2400         AC_MSG_RESULT(yes)
2401      else
2402         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
2403         LIBSMBCLIENT=libsmbclient
2404         AC_MSG_RESULT(no shared library support -- will supply static library)
2405      fi
2406      ;;
2407   *)
2408     AC_MSG_RESULT(no)
2409     ;;
2410   esac ],
2411   AC_MSG_RESULT(no)
2414 #################################################
2415 # these tests are taken from the GNU fileutils package
2416 AC_CHECKING(how to get filesystem space usage)
2417 space=no
2419 # Test for statvfs64.
2420 if test $space = no; then
2421   # SVR4
2422   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2423   [AC_TRY_RUN([
2424 #if defined(HAVE_UNISTD_H)
2425 #include <unistd.h>
2426 #endif
2427 #include <sys/types.h>
2428 #include <sys/statvfs.h>
2429   main ()
2430   {
2431     struct statvfs64 fsd;
2432     exit (statvfs64 (".", &fsd));
2433   }],
2434   fu_cv_sys_stat_statvfs64=yes,
2435   fu_cv_sys_stat_statvfs64=no,
2436   fu_cv_sys_stat_statvfs64=cross)])
2437   if test $fu_cv_sys_stat_statvfs64 = yes; then
2438     space=yes
2439     AC_DEFINE(STAT_STATVFS64)
2440   fi
2443 # Perform only the link test since it seems there are no variants of the
2444 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2445 # because that got a false positive on SCO OSR5.  Adding the declaration
2446 # of a `struct statvfs' causes this test to fail (as it should) on such
2447 # systems.  That system is reported to work fine with STAT_STATFS4 which
2448 # is what it gets when this test fails.
2449 if test $space = no; then
2450   # SVR4
2451   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2452                  [AC_TRY_LINK([#include <sys/types.h>
2453 #include <sys/statvfs.h>],
2454                               [struct statvfs fsd; statvfs (0, &fsd);],
2455                               fu_cv_sys_stat_statvfs=yes,
2456                               fu_cv_sys_stat_statvfs=no)])
2457   if test $fu_cv_sys_stat_statvfs = yes; then
2458     space=yes
2459     AC_DEFINE(STAT_STATVFS)
2460   fi
2463 if test $space = no; then
2464   # DEC Alpha running OSF/1
2465   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2466   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2467   [AC_TRY_RUN([
2468 #include <sys/param.h>
2469 #include <sys/types.h>
2470 #include <sys/mount.h>
2471   main ()
2472   {
2473     struct statfs fsd;
2474     fsd.f_fsize = 0;
2475     exit (statfs (".", &fsd, sizeof (struct statfs)));
2476   }],
2477   fu_cv_sys_stat_statfs3_osf1=yes,
2478   fu_cv_sys_stat_statfs3_osf1=no,
2479   fu_cv_sys_stat_statfs3_osf1=no)])
2480   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2481   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2482     space=yes
2483     AC_DEFINE(STAT_STATFS3_OSF1)
2484   fi
2487 if test $space = no; then
2488 # AIX
2489   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2490 member (AIX, 4.3BSD)])
2491   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2492   [AC_TRY_RUN([
2493 #ifdef HAVE_SYS_PARAM_H
2494 #include <sys/param.h>
2495 #endif
2496 #ifdef HAVE_SYS_MOUNT_H
2497 #include <sys/mount.h>
2498 #endif
2499 #ifdef HAVE_SYS_VFS_H
2500 #include <sys/vfs.h>
2501 #endif
2502   main ()
2503   {
2504   struct statfs fsd;
2505   fsd.f_bsize = 0;
2506   exit (statfs (".", &fsd));
2507   }],
2508   fu_cv_sys_stat_statfs2_bsize=yes,
2509   fu_cv_sys_stat_statfs2_bsize=no,
2510   fu_cv_sys_stat_statfs2_bsize=no)])
2511   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2512   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2513     space=yes
2514     AC_DEFINE(STAT_STATFS2_BSIZE)
2515   fi
2518 if test $space = no; then
2519 # SVR3
2520   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2521   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2522   [AC_TRY_RUN([#include <sys/types.h>
2523 #include <sys/statfs.h>
2524   main ()
2525   {
2526   struct statfs fsd;
2527   exit (statfs (".", &fsd, sizeof fsd, 0));
2528   }],
2529     fu_cv_sys_stat_statfs4=yes,
2530     fu_cv_sys_stat_statfs4=no,
2531     fu_cv_sys_stat_statfs4=no)])
2532   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2533   if test $fu_cv_sys_stat_statfs4 = yes; then
2534     space=yes
2535     AC_DEFINE(STAT_STATFS4)
2536   fi
2539 if test $space = no; then
2540 # 4.4BSD and NetBSD
2541   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2542 member (4.4BSD and NetBSD)])
2543   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2544   [AC_TRY_RUN([#include <sys/types.h>
2545 #ifdef HAVE_SYS_PARAM_H
2546 #include <sys/param.h>
2547 #endif
2548 #ifdef HAVE_SYS_MOUNT_H
2549 #include <sys/mount.h>
2550 #endif
2551   main ()
2552   {
2553   struct statfs fsd;
2554   fsd.f_fsize = 0;
2555   exit (statfs (".", &fsd));
2556   }],
2557   fu_cv_sys_stat_statfs2_fsize=yes,
2558   fu_cv_sys_stat_statfs2_fsize=no,
2559   fu_cv_sys_stat_statfs2_fsize=no)])
2560   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2561   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2562     space=yes
2563     AC_DEFINE(STAT_STATFS2_FSIZE)
2564   fi
2567 if test $space = no; then
2568   # Ultrix
2569   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2570   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2571   [AC_TRY_RUN([#include <sys/types.h>
2572 #ifdef HAVE_SYS_PARAM_H
2573 #include <sys/param.h>
2574 #endif
2575 #ifdef HAVE_SYS_MOUNT_H
2576 #include <sys/mount.h>
2577 #endif
2578 #ifdef HAVE_SYS_FS_TYPES_H
2579 #include <sys/fs_types.h>
2580 #endif
2581   main ()
2582   {
2583   struct fs_data fsd;
2584   /* Ultrix's statfs returns 1 for success,
2585      0 for not mounted, -1 for failure.  */
2586   exit (statfs (".", &fsd) != 1);
2587   }],
2588   fu_cv_sys_stat_fs_data=yes,
2589   fu_cv_sys_stat_fs_data=no,
2590   fu_cv_sys_stat_fs_data=no)])
2591   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2592   if test $fu_cv_sys_stat_fs_data = yes; then
2593     space=yes
2594     AC_DEFINE(STAT_STATFS2_FS_DATA)
2595   fi
2599 # As a gating factor for large file support, in order to
2600 # use <4GB files we must have the following minimal support
2601 # available.
2602 # long long, and a 64 bit off_t or off64_t.
2603 # If we don't have all of these then disable large
2604 # file support.
2606 AC_MSG_CHECKING(if large file support can be enabled)
2607 AC_TRY_COMPILE([
2608 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2609 #include <sys/types.h>
2610 #else
2611 __COMPILE_ERROR_
2612 #endif
2614 [int i],
2615 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2616 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2617     AC_MSG_RESULT(yes)
2618     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2619 else
2620     AC_MSG_RESULT(no)
2623 AC_ARG_WITH(spinlocks, 
2624 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no)])
2625 if test "x$with_spinlocks" = "xyes"; then
2626     AC_DEFINE(USE_SPINLOCKS)
2628     case "$host_cpu" in
2629         sparc)
2630             AC_DEFINE(SPARC_SPINLOCKS)
2631             ;;
2633         i386|i486|i586|i686)
2634             AC_DEFINE(INTEL_SPINLOCKS)
2635             ;;
2637         mips)
2638             AC_DEFINE(MIPS_SPINLOCKS)
2639             ;;
2641         powerpc)
2642             AC_DEFINE(POWERPC_SPINLOCKS)
2643             ;;
2644     esac
2647 #################################################
2648 # check for ACL support
2650 AC_MSG_CHECKING(whether to support ACLs)
2651 AC_ARG_WITH(acl-support,
2652 [  --with-acl-support      Include ACL support (default=no)],
2653 [ case "$withval" in
2654   yes)
2656                 case "$host_os" in
2657                 *sysv5*)
2658                         AC_MSG_RESULT(Using UnixWare ACLs)
2659                         AC_DEFINE(HAVE_UNIXWARE_ACLS)
2660                         ;;
2661                 *solaris*)
2662                         AC_MSG_RESULT(Using solaris ACLs)
2663                         AC_DEFINE(HAVE_SOLARIS_ACLS)
2664                         ;;
2665                 *hpux*)
2666                         AC_MSG_RESULT(Using HPUX ACLs)
2667                         AC_DEFINE(HAVE_HPUX_ACLS)
2668                         ;;
2669                 *irix*)
2670                         AC_MSG_RESULT(Using IRIX ACLs)
2671                         AC_DEFINE(HAVE_IRIX_ACLS)
2672                         ;;
2673                 *aix*)
2674                         AC_MSG_RESULT(Using AIX ACLs)
2675                         AC_DEFINE(HAVE_AIX_ACLS)
2676                         ;;
2677                 *osf*)
2678                         AC_MSG_RESULT(Using Tru64 ACLs)
2679                         AC_DEFINE(HAVE_TRU64_ACLS)
2680                         LIBS="$LIBS -lpacl"
2681                         ;;
2682                 *)
2683                     AC_CHECK_LIB(acl,acl_get_file)
2684                         AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2685                         AC_TRY_LINK([#include <sys/types.h>
2686 #include <sys/acl.h>],
2687 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2688 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2689                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2690                             AC_MSG_RESULT(Using posix ACLs)
2691                             AC_DEFINE(HAVE_POSIX_ACLS)
2692                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2693                                 AC_TRY_LINK([#include <sys/types.h>
2694 #include <sys/acl.h>],
2695 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2696 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2697                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2698                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2699                                 fi
2700                         fi
2701                         ;;
2702                 esac
2703                 ;;
2704   *)
2705     AC_MSG_RESULT(no)
2706         AC_DEFINE(HAVE_NO_ACLS)
2707     ;;
2708   esac ],
2709   AC_DEFINE(HAVE_NO_ACLS)
2710   AC_MSG_RESULT(no)
2713 #################################################
2714 # check for the historical SAMBA installation
2716 if test "x$prefix" = xNONE -a "$sbindir" = "\${exec_prefix}/sbin"; then
2717         # Put all binaries under the /usr/local/samba/bin directory.
2718         sbindir="$bindir"
2721 #################################################
2722 # check for sendfile support
2724 AC_MSG_CHECKING(whether to check for support sendfile)
2725 AC_ARG_WITH(sendfile-support,
2726 [  --with-sendfile-support      Check for sendfile support (default=no)],
2727 [ case "$withval" in
2728   yes)
2730         AC_MSG_RESULT(yes);
2732         case "$host_os" in
2733         *linux*)
2734                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2735                 AC_TRY_LINK([#include <sys/sendfile.h>],
2737 int tofd, fromfd;
2738 off64_t offset;
2739 size_t total;
2740 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2742 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2744                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2745                 AC_TRY_LINK([#include <sys/sendfile.h>],
2747 int tofd, fromfd;
2748 off_t offset;
2749 size_t total;
2750 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2752 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2754 # Try and cope with broken Linux sendfile....
2755                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2756                 AC_TRY_LINK([\
2757 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2758 #undef _FILE_OFFSET_BITS
2759 #endif
2760 #include <sys/sendfile.h>],
2762 int tofd, fromfd;
2763 off_t offset;
2764 size_t total;
2765 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2767 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2769         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2770                 AC_DEFINE(HAVE_SENDFILE64)
2771                 AC_DEFINE(LINUX_SENDFILE_API)
2772                 AC_DEFINE(WITH_SENDFILE)
2773         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2774                 AC_DEFINE(HAVE_SENDFILE)
2775                 AC_DEFINE(LINUX_SENDFILE_API)
2776                 AC_DEFINE(WITH_SENDFILE)
2777         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2778                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API)
2779                 AC_DEFINE(WITH_SENDFILE)
2780         else
2781                 AC_MSG_RESULT(no);
2782         fi
2784         ;;
2785         *freebsd*)
2786                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2787                 AC_TRY_LINK([\
2788 #include <sys/types.h>
2789 #include <sys/socket.h>
2790 #include <sys/uio.h>],
2792 #define NULL (void *)0
2793         int fromfd, tofd, ret, total;
2794         off_t offset, nwritten;
2795         struct sf_hdtr {
2796                 struct iovec *headers;
2797                 int hdr_cnt;
2798                 struct iovec *trailers;
2799                 int trl_cnt;
2800         } hdr;
2801         struct iovec hdtrl;
2802         hdr.headers = &hdtrl;
2803         hdr.hdr_cnt = 1;
2804         hdr.trailers = NULL;
2805         hdr.trl_cnt = 0;
2806         hdtrl.iov_base = NULL;
2807         hdtrl.iov_len = 0;
2808         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2810 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2812         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2813                 AC_DEFINE(HAVE_SENDFILE)
2814                 AC_DEFINE(FREEBSD_SENDFILE_API)
2815                 AC_DEFINE(WITH_SENDFILE)
2816         else
2817                 AC_MSG_RESULT(no);
2818         fi
2819         ;;
2821         *hpux*)
2822                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2823                 AC_TRY_LINK([\
2824 #include <sys/socket.h>
2825 #include <sys/uio.h>],
2827         int fromfd, tofd;
2828         size_t total=0;
2829         struct iovec hdtrl[2];
2830         ssize_t nwritten;
2831         off64_t offset;
2833         hdtrl[0].iov_base = 0;
2834         hdtrl[0].iov_len = 0;
2836         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2838 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2839         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2840                 AC_DEFINE(HAVE_SENDFILE64)
2841                 AC_DEFINE(HPUX_SENDFILE_API)
2842                 AC_DEFINE(WITH_SENDFILE)
2843         else
2844                 AC_MSG_RESULT(no);
2845         fi
2847                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2848                 AC_TRY_LINK([\
2849 #include <sys/socket.h>
2850 #include <sys/uio.h>],
2852         int fromfd, tofd;
2853         size_t total=0;
2854         struct iovec hdtrl[2];
2855         ssize_t nwritten;
2856         off_t offset;
2858         hdtrl[0].iov_base = 0;
2859         hdtrl[0].iov_len = 0;
2861         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2863 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2864         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2865                 AC_DEFINE(HAVE_SENDFILE)
2866                 AC_DEFINE(HPUX_SENDFILE_API)
2867                 AC_DEFINE(WITH_SENDFILE)
2868         else
2869                 AC_MSG_RESULT(no);
2870         fi
2871         ;;
2873         *solaris*)
2874                 LIBS="$LIBS -lsendfile"
2875                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
2876                 AC_TRY_LINK([\
2877 #include <sys/sendfile.h>],
2879         int sfvcnt;
2880         size_t xferred;
2881         struct sendfilevec vec[2];
2882         ssize_t nwritten;
2883         int tofd;
2885         sfvcnt = 2;
2887         vec[0].sfv_fd = SFV_FD_SELF;
2888         vec[0].sfv_flag = 0;
2889         vec[0].sfv_off = 0;
2890         vec[0].sfv_len = 0;
2892         vec[1].sfv_fd = 0;
2893         vec[1].sfv_flag = 0;
2894         vec[1].sfv_off = 0;
2895         vec[1].sfv_len = 0;
2896         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
2898 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
2900         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
2901                 AC_DEFINE(HAVE_SENDFILEV64)
2902                 AC_DEFINE(SOLARIS_SENDFILE_API)
2903                 AC_DEFINE(WITH_SENDFILE)
2904         else
2905                 AC_MSG_RESULT(no);
2906         fi
2908                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
2909                 AC_TRY_LINK([\
2910 #include <sys/sendfile.h>],
2912         int sfvcnt;
2913         size_t xferred;
2914         struct sendfilevec vec[2];
2915         ssize_t nwritten;
2916         int tofd;
2918         sfvcnt = 2;
2920         vec[0].sfv_fd = SFV_FD_SELF;
2921         vec[0].sfv_flag = 0;
2922         vec[0].sfv_off = 0;
2923         vec[0].sfv_len = 0;
2925         vec[1].sfv_fd = 0;
2926         vec[1].sfv_flag = 0;
2927         vec[1].sfv_off = 0;
2928         vec[1].sfv_len = 0;
2929         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
2931 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
2933         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
2934                 AC_DEFINE(HAVE_SENDFILEV)
2935                 AC_DEFINE(SOLARIS_SENDFILE_API)
2936                 AC_DEFINE(WITH_SENDFILE)
2937         else
2938                 AC_MSG_RESULT(no);
2939         fi
2940         ;;
2942         *)
2943         ;;
2944         esac
2945         ;;
2946   *)
2947     AC_MSG_RESULT(no)
2948     ;;
2949   esac ],
2950   AC_MSG_RESULT(no)
2953 #################################################
2954 # Check whether winbind is supported on this platform.  If so we need to
2955 # build and install client programs (WINBIND_TARGETS), sbin programs
2956 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2958 AC_MSG_CHECKING(whether to build winbind)
2960 # Initially, the value of $host_os decides whether winbind is supported
2962 case "$host_os" in 
2963         *linux*|*irix*)
2964                 HAVE_WINBIND=yes
2965                 ;;
2966         *solaris*)
2967                 HAVE_WINBIND=yes
2968                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2969                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
2970                 ;;
2971         *hpux11*)
2972                 HAVE_WINBIND=yes
2973                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2974                ;;
2975         *aix4*)
2976                 HAVE_WINBIND=yes
2977                 ;;
2978         *)
2979                 HAVE_WINBIND=no
2980                 winbind_no_reason=", unsupported on $host_os"
2981                 ;;
2982 esac
2984 # Check the setting of --with-winbindd
2986 AC_ARG_WITH(winbind,
2987 [  --with-winbind          Build winbind (default, if supported by OS)],
2989   case "$withval" in
2990         yes)
2991                 HAVE_WINBIND=yes
2992                 ;;
2993         no)
2994                 HAVE_WINBIND=no
2995                 winbind_reason=""
2996                 ;;
2997   esac ],
3000 # We need unix domain sockets for winbind
3002 if test x"$HAVE_WINBIND" = x"yes"; then
3003         if test x"$samba_cv_unixsocket" = x"no"; then
3004                 winbind_no_reason=", no unix domain socket support on $host_os"
3005                 HAVE_WINBIND=no
3006         fi
3009 # Display test results
3011 if test x"$HAVE_WINBIND" = x"yes"; then
3013         AC_MSG_RESULT(yes)
3015         AC_MSG_CHECKING(whether to enable winbind auth challenge/response code)
3016         AC_ARG_WITH(winbind-auth-challenge,
3017         [  --with-winbind-auth-challenge   Enable winbindd_pam_auth_crap() functionality (default no)],
3018         [ 
3019           case "$withval" in
3020                 yes)
3021                         AC_DEFINE(WITH_WINBIND_AUTH_CRAP)
3022                         AC_MSG_RESULT(yes)
3023                         ;;
3024                 *)
3025                         AC_MSG_RESULT(no)
3026                         ;;
3027           esac ],
3028           AC_MSG_RESULT(no)
3029         )
3031 # Check for FreeBSD problem with getgroups
3033         WINBIND_TARGETS="bin/wbinfo\$(EXEEXT)"
3034         WINBIND_STARGETS="bin/winbindd\$(EXEEXT)"
3035         case "$host_os" in
3036         *irix*)
3037                 WINBIND_LTARGETS="nsswitch/libns_winbind.so"
3038                 ;;
3039         *)
3040                 WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
3041                 ;;
3042         esac
3045         case "$with_pam" in
3046                 yes)
3047                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
3048                 ;;
3049         esac
3051 # Check for Horrible winbindd ldap hack.
3053         AC_MSG_CHECKING(whether to enable winbind ldap hack)
3054         AC_ARG_WITH(winbind-ldap-hack,
3055         [  --with-winbind-ldap-hack   Enable winbindd_ldap_hack() functionality (default no)],
3056         [
3057           case "$withval" in
3058                 yes)
3059                         AC_DEFINE(WITH_HORRIBLE_LDAP_NATIVE_MODE_HACK)
3060                         LIBS="$LIBS -lldap";
3061                         AC_MSG_RESULT(yes)
3062                         ;;
3063                 no)
3064                         AC_MSG_RESULT(no)
3065                         ;;
3066           esac ],
3067           AC_MSG_RESULT(no)
3068         )
3070 else
3071         AC_MSG_RESULT(no$winbind_no_reason)
3073         WINBIND_TARGETS=""
3074         WINBIND_STARGETS=""
3075         WINBIND_LTARGETS=""
3076         WINBIND_PAM_TARGETS=""
3080 # Check for FreeBSD problem with getgroups
3081 # It returns EGID too many times in the list of groups
3082 # and causes a security problem
3083 AC_CACHE_CHECK([whether or not getgroups returns EGID too many times],
3084     samba_cv_have_getgroups_too_many_egids,[AC_TRY_RUN([
3085 #include <sys/types.h>
3086 #include <stdio.h>
3088 int main(int argc, char *argv[])
3090   gid_t groups[10];
3091   int n = 10;
3093   n = getgroups(n, &groups);
3094   /* Could actually pass back the number of EGIDs there ... */
3095   exit((n > 1 && groups[0] == getegid() && groups[1] == getegid()) ? 1 : 0);
3097         samba_cv_have_getgroups_too_many_egids=no,samba_cv_have_getgroups_too_many_egids=yes, samba_cv_have_getgroups_too_many_egids=cross)])
3098 if test x"$samba_cv_have_getgroups_too_many_egids" = x"yes"; then
3099     AC_DEFINE(HAVE_GETGROUPS_TOO_MANY_EGIDS)
3102 # Substitution time!
3104 AC_SUBST(WINBIND_TARGETS)
3105 AC_SUBST(WINBIND_STARGETS)
3106 AC_SUBST(WINBIND_LTARGETS)
3107 AC_SUBST(WINBIND_PAM_TARGETS)
3108 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3109 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3111 # Solaris has some extra fields in struct passwd that need to be
3112 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3113 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3114 # this.
3116 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3117 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3118 #               [#include <pwd.h>])
3120 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3121         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3122         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3123 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3124         AC_DEFINE(HAVE_PASSWD_PW_COMMENT)
3127 #AC_CHECK_MEMBER(struct passwd.pw_age,
3128 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3129 #               [#include <pwd.h>])
3131 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3132         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3133         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3134 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3135         AC_DEFINE(HAVE_PASSWD_PW_AGE)
3138 #################################################
3139 # Check to see if we should use the included popt
3141 AC_ARG_WITH(included-popt,
3142 [  --with-included-popt    use bundled popt library, not from system],
3144   case "$withval" in
3145         yes)
3146                 INCLUDED_POPT=yes
3147                 ;;
3148         no)
3149                 INCLUDED_POPT=no
3150                 ;;
3151   esac ],
3153 if test x"$INCLUDED_POPT" != x"yes"; then
3154     AC_CHECK_LIB(popt, poptGetContext,
3155                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3158 AC_MSG_CHECKING(whether to use included popt)
3159 if test x"$INCLUDED_POPT" = x"yes"; then
3160     AC_MSG_RESULT($srcdir/popt)
3161     BUILD_POPT='$(POPT_OBJS)'
3162     FLAGS1="-I$srcdir/popt"
3163 else
3164     AC_MSG_RESULT(no)
3165     LIBS="$LIBS -lpopt"
3167 AC_SUBST(BUILD_POPT)
3168 AC_SUBST(FLAGS1)
3170 #################################################
3171 # final configure stuff
3172 AC_MSG_CHECKING([configure summary])
3173 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3174         AC_MSG_RESULT(yes),
3175         AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3176         AC_MSG_WARN([cannot run when cross-compiling]))
3178 builddir=`pwd`
3179 AC_SUBST(builddir)
3181 AC_OUTPUT(include/stamp-h Makefile script/findsmb)