DEBUG(0, -> DEBUG(10, Caught by Andrew Bartlett (thanks !).
[Samba.git] / source / configure.in
blob3adb5cc04809da311b5041c6a63ed332dbf1d694
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(LIBSMBCLIENT_SHARED)
168 AC_SUBST(LIBSMBCLIENT)
170 # compile with optimization and without debugging by default
171 CFLAGS="-O ${CFLAGS}"
173 AC_ARG_ENABLE(debug, 
174 [  --enable-debug          Turn on compiler debugging information (default=no)],
175     [if eval "test x$enable_debug = xyes"; then
176         CFLAGS="${CFLAGS} -g"
177     fi])
181 dnl Checks for programs.
182 AC_PROG_CC
183 AC_PROG_INSTALL
184 AC_PROG_AWK
185 dnl Check if we use GNU ld
186 LD=ld
187 AC_PROG_LD_GNU
188 AC_PATH_PROG(passwd_program, passwd, /bin/passwd)
189 AC_SUBST(passwd_program)
191 dnl Check if C compiler understands -c and -o at the same time
192 AC_PROG_CC_C_O
193 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
194       BROKEN_CC=
195 else
196       BROKEN_CC=#
198 AC_SUBST(BROKEN_CC)
200 dnl Check if the C compiler understands volatile (it should, being ANSI).
201 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
202     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
203         samba_cv_volatile=yes,samba_cv_volatile=no)])
204 if test x"$samba_cv_volatile" = x"yes"; then
205    AC_DEFINE(HAVE_VOLATILE)
210 AC_CANONICAL_SYSTEM
212 dnl Add #include for broken IRIX header files
213   case "$host_os" in
214         *irix6*) AC_ADD_INCLUDE(<standards.h>)
215         ;;
216 esac
218 AC_VALIDATE_CACHE_SYSTEM_TYPE
220 DYNEXP=
223 # Config CPPFLAG settings for strange OS's that must be set
224 # before other tests.
226 case "$host_os" in
227 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
228     *hpux*)
229       AC_PROG_CC_FLAG(Ae)
230       # mmap on HPUX is completely broken...
231       AC_DEFINE(MMAP_BLACKLIST)
232       if test $ac_cv_prog_cc_Ae = yes; then
233         CPPFLAGS="$CPPFLAGS -Ae"
234       fi
236 # Defines needed for HPUX support.
237 # HPUX has bigcrypt but (sometimes?) doesn't use it for
238 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
240       case `uname -r` in
241                         *9*|*10*)
242                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
243                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
244                                 AC_DEFINE(_HPUX_SOURCE)
245                                 AC_DEFINE(_POSIX_SOURCE)
246                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
247                                 AC_DEFINE(_MAX_ALIGNMENT,4)
248                                 ;;
249                         *11*)
250                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
251                                 AC_DEFINE(_HPUX_SOURCE)
252                                 AC_DEFINE(_POSIX_SOURCE)
253                                 AC_DEFINE(_LARGEFILE64_SOURCE)
254                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
255                                 AC_DEFINE(_MAX_ALIGNMENT,4)
256                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
257                                 ;;
258       esac
259       DYNEXP="-Wl,-E"
260       ;;
264 # CRAY Unicos has broken const handling
265         *unicos*)
266                 AC_MSG_RESULT([disabling const])
267                 CPPFLAGS="$CPPFLAGS -Dconst="
268                 ;;
271 # AIX4.x doesn't even admit to having large
272 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
274     *aix4*)
275           AC_MSG_RESULT([enabling large file support])
276       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
277       AC_DEFINE(_LARGE_FILES)
278       ;;    
280 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
281 # to the existance of large files..
282 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
283 # recommendations on large file support, however it makes the
284 # compile work using gcc 2.7 and 2.8, whereas using the Sun
285 # recommendation makes the compile fail on gcc2.7. JRA.
287         *solaris*)
288                 case `uname -r` in
289                         5.0*|5.1*|5.2*|5.3*|5.5*)
290                                 AC_MSG_RESULT([no large file support])
291                                 ;;
292                         5.*)
293                         AC_MSG_RESULT([enabling large file support])
294                         if test "$ac_cv_prog_gcc" = yes; then
295                                 ${CC-cc} -v >conftest.c 2>&1
296                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
297                                 rm -fr conftest.c
298                                 case "$ac_cv_gcc_compiler_version_number" in
299                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
300                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
301                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
302                                                 ;;
303                                         *)
304                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
305                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
306                                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
307                                                 ;;
308                                 esac
309                         else
310                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
311                                 AC_DEFINE(_LARGEFILE64_SOURCE)
312                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
313                         fi
314                         ;;
315                 esac
316                 ;;
318 # Tests needed for SINIX large file support.
320     *sysv4*)
321       if test $host = mips-sni-sysv4 ; then
322         AC_MSG_CHECKING([for LFS support])
323         old_CPPFLAGS="$CPPFLAGS"
324         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
325         AC_TRY_RUN([
326 #include <unistd.h>
327 main () {
328 #if _LFS64_LARGEFILE == 1
329 exit(0);
330 #else
331 exit(1);
332 #endif
333 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
334         CPPFLAGS="$old_CPPFLAGS"
335         if test x$SINIX_LFS_SUPPORT = xyes ; then
336           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
337           AC_DEFINE(_LARGEFILE64_SOURCE)
338           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
339           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
340           LIBS="`getconf LFS64_LIBS` $LIBS"
341         fi
342       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
343       fi
344     ;;
346 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
348     *linux*)
349         AC_MSG_CHECKING([for LFS support])
350         old_CPPFLAGS="$CPPFLAGS"
351         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
352        AC_TRY_RUN([
353 #include <unistd.h>
354 #include <sys/utsname.h>
355 main() {
356 #if _LFS64_LARGEFILE == 1
357        struct utsname uts;
358        char *release;
359        int major, minor;
361        /* Ensure this is glibc 2.2 or higher */
362 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
363        int libc_major = __GLIBC__;
364        int libc_minor = __GLIBC_MINOR__;
366        if (libc_major < 2)
367               exit(1);
368        if (libc_minor < 2)
369               exit(1);
370 #endif
372        /* Ensure this is kernel 2.4 or higher */
374        uname(&uts);
375        release = uts.release;
376        major = atoi(strsep(&release, "."));
377        minor = atoi(strsep(&release, "."));
379        if (major > 2 || (major == 2 && minor > 3))
380                exit(0);
381        exit(1);
382 #else
383        exit(1);
384 #endif
386 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
387         CPPFLAGS="$old_CPPFLAGS"
388         if test x$LINUX_LFS_SUPPORT = xyes ; then
389           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
390           AC_DEFINE(_LARGEFILE64_SOURCE)
391           AC_DEFINE(_FILE_OFFSET_BITS,64)
392           AC_DEFINE(_GNU_SOURCE)
393         fi
394        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
395                 ;;
397     *hurd*)
398         AC_MSG_CHECKING([for LFS support])
399         old_CPPFLAGS="$CPPFLAGS"
400         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
401         AC_TRY_RUN([
402 #include <unistd.h>
403 main () {
404 #if _LFS64_LARGEFILE == 1
405 exit(0);
406 #else
407 exit(1);
408 #endif
409 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
410         CPPFLAGS="$old_CPPFLAGS"
411         if test x$GLIBC_LFS_SUPPORT = xyes ; then
412           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
413           AC_DEFINE(_LARGEFILE64_SOURCE)
414           AC_DEFINE(_GNU_SOURCE)
415         fi
416       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
417     ;;
419 esac
421 AC_INLINE
422 AC_HEADER_STDC
423 AC_HEADER_DIRENT
424 AC_HEADER_TIME
425 AC_HEADER_SYS_WAIT
426 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
427 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
428 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
429 AC_CHECK_HEADERS(stdlib.h string.h strings.h syslog.h sys/file.h)
430 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
431 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h sys/socket.h)
432 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)
433 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
434 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h)
437 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
438 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
440 case "$host_os" in
441     *hpux*)
442                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
443                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
444                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
445                    AC_DEFINE(HAVE_SHADOW_H)
446                 fi
447         ;;
448 esac
449 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
450 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
451 AC_CHECK_HEADERS(stropts.h poll.h)
452 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
453 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
455 # For experimental utmp support (lastlog on some BSD-like systems)
456 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
458 # For quotas on Veritas VxFS filesystems
459 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
461 # For quotas on Linux XFS filesystems
462 AC_CHECK_HEADERS(linux/xqm.h)
464 AC_CHECK_SIZEOF(int,cross)
465 AC_CHECK_SIZEOF(long,cross)
466 AC_CHECK_SIZEOF(short,cross)
468 AC_C_CONST
469 AC_C_INLINE
470 AC_C_BIGENDIAN
471 AC_C_CHAR_UNSIGNED
473 AC_TYPE_SIGNAL
474 AC_TYPE_UID_T
475 AC_TYPE_MODE_T
476 AC_TYPE_OFF_T
477 AC_TYPE_SIZE_T
478 AC_TYPE_PID_T
479 AC_STRUCT_ST_RDEV
480 AC_DIRENT_D_OFF
481 AC_CHECK_TYPE(ino_t,unsigned)
482 AC_CHECK_TYPE(loff_t,off_t)
483 AC_CHECK_TYPE(offset_t,loff_t)
484 AC_CHECK_TYPE(ssize_t, int)
485 AC_CHECK_TYPE(wchar_t, unsigned short)
487 ############################################
488 # for cups support we need libcups, and a handful of header files
490 AC_ARG_ENABLE(cups,
491 [  --enable-cups           Turn on CUPS support (default=auto)])
493 if test x$enable_cups != xno; then
494         AC_PATH_PROG(CUPS_CONFIG, cups-config)
496         if test "x$CUPS_CONFIG" != x; then
497                 AC_DEFINE(HAVE_CUPS)
498                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
499                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
500                 LIBS="$LIBS `$CUPS_CONFIG --libs`"
501         fi
504 ############################################
505 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code
506 AC_CHECK_FUNCS(dlopen)
507 if test x"$ac_cv_func_dlopen" = x"no"; then
508         AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
509         AC_DEFINE(HAVE_DLOPEN)])
511 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
513 ############################################
514 # check if the compiler can do immediate structures
515 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
516     AC_TRY_COMPILE([
517 #include <stdio.h>],
519         typedef struct {unsigned x;} FOOBAR;
520 #define X_FOOBAR(x) ((FOOBAR) { x })
521 #define FOO_ONE X_FOOBAR(1)
522         FOOBAR f = FOO_ONE;
523         static struct {
524         FOOBAR y;
525         } f2[] = {
526                 {FOO_ONE}
527         };
529         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
530 if test x"$samba_cv_immediate_structures" = x"yes"; then
531    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES)
534 ############################################
535 # check for unix domain sockets
536 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
537     AC_TRY_COMPILE([
538 #include <sys/types.h>
539 #include <stdlib.h>
540 #include <stddef.h>
541 #include <sys/socket.h>
542 #include <sys/un.h>],
544   struct sockaddr_un sunaddr; 
545   sunaddr.sun_family = AF_UNIX;
547         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
548 if test x"$samba_cv_unixsocket" = x"yes"; then
549    AC_DEFINE(HAVE_UNIXSOCKET)
552 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
553     AC_TRY_COMPILE([
554 #include <sys/types.h>
555 #if STDC_HEADERS
556 #include <stdlib.h>
557 #include <stddef.h>
558 #endif
559 #include <sys/socket.h>],[socklen_t i = 0],
560     samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
561 if test x"$samba_cv_socklen_t" = x"yes"; then
562    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
565 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
566     AC_TRY_COMPILE([
567 #include <sys/types.h>
568 #if STDC_HEADERS
569 #include <stdlib.h>
570 #include <stddef.h>
571 #endif
572 #include <signal.h>],[sig_atomic_t i = 0],
573         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
574 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
575    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
578 # stupid headers have the functions but no declaration. grrrr.
579 AC_HAVE_DECL(errno, [#include <errno.h>])
580 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
581 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
582 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
583 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
584 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
585 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
587 # and glibc has setresuid under linux but the function does
588 # nothing until kernel 2.1.44! very dumb.
589 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
590     AC_TRY_RUN([#include <errno.h>
591 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
592         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
593 if test x"$samba_cv_have_setresuid" = x"yes"; then
594     AC_DEFINE(HAVE_SETRESUID)
597 # Do the same check for setresguid...
599 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
600     AC_TRY_RUN([#include <unistd.h>
601 #include <errno.h>
602 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
603         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
604 if test x"$samba_cv_have_setresgid" = x"yes"; then
605     AC_DEFINE(HAVE_SETRESGID)
608 AC_FUNC_MEMCMP
610 ###############################################
611 # Readline included by default unless explicitly asked not to
612 test "${with_readline+set}" != "set" && with_readline=yes
614 # test for where we get readline() from
615 AC_MSG_CHECKING(whether to use readline)
616 AC_ARG_WITH(readline,
617 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto)],
618 [  case "$with_readline" in
619   yes)
620     AC_MSG_RESULT(yes)
622     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
623     AC_CHECK_HEADERS(readline/history.h)
625     AC_CHECK_HEADERS(readline.h readline/readline.h,[
626       for termlib in ncurses curses termcap terminfo termlib; do
627        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
628       done
629       AC_CHECK_LIB(readline, rl_callback_handler_install,
630        [TERMLIBS="-lreadline $TERMLIBS"
631        AC_DEFINE(HAVE_LIBREADLINE)
632        break], [TERMLIBS=], $TERMLIBS)])
633     ;;
634   no)
635     AC_MSG_RESULT(no)
636     ;;
637   *)
638     AC_MSG_RESULT(yes)
640     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
641     # alternate readline path
642     _ldflags=${LDFLAGS}
643     _cppflags=${CPPFLAGS}
645     # Add additional search path
646     LDFLAGS="-L$with_readline/lib $LDFLAGS"
647     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
649     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
650     AC_CHECK_HEADERS(readline/history.h)
652     AC_CHECK_HEADERS(readline.h readline/readline.h,[
653       for termlib in ncurses curses termcap terminfo termlib; do
654        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
655       done
656       AC_CHECK_LIB(readline, rl_callback_handler_install,
657        [TERMLDFLAGS="-L$with_readline/lib"
658        TERMCPPFLAGS="-I$with_readline/include"
659        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
660        TERMLIBS="-lreadline $TERMLIBS"
661        AC_DEFINE(HAVE_LIBREADLINE)
662        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
664     LDFLAGS=$_ldflags
665     ;;
666   esac],
667   AC_MSG_RESULT(no)
669 AC_SUBST(TERMLIBS)
670 AC_SUBST(TERMLDFLAGS)
672 # The following test taken from the cvs sources
673 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
674 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
675 # libsocket.so which has a bad implementation of gethostbyname (it
676 # only looks in /etc/hosts), so we only look for -lsocket if we need
677 # it.
678 AC_CHECK_FUNCS(connect)
679 if test x"$ac_cv_func_connect" = x"no"; then
680     case "$LIBS" in
681     *-lnsl*) ;;
682     *) AC_CHECK_LIB(nsl_s, printf) ;;
683     esac
684     case "$LIBS" in
685     *-lnsl*) ;;
686     *) AC_CHECK_LIB(nsl, printf) ;;
687     esac
688     case "$LIBS" in
689     *-lsocket*) ;;
690     *) AC_CHECK_LIB(socket, connect) ;;
691     esac
692     case "$LIBS" in
693     *-linet*) ;;
694     *) AC_CHECK_LIB(inet, connect) ;;
695     esac
696     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
697     dnl has been cached.
698     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
699        test x"$ac_cv_lib_inet_connect" = x"yes"; then
700         # ac_cv_func_connect=yes
701         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
702         AC_DEFINE(HAVE_CONNECT)
703     fi
706 ###############################################
707 # test for where we get get_yp_default_domain() from
708 AC_CHECK_FUNCS(yp_get_default_domain)
709 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
710         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
711         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
714 # Check if we have execl, if not we need to compile smbrun.
715 AC_CHECK_FUNCS(execl)
716 if test x"$ac_cv_func_execl" = x"no"; then
717     RUNPROG="bin/smbrun"
718 else
719     RUNPROG=""
722 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link)
723 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64)
724 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
725 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
726 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
727 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
728 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
729 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
730 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
731 AC_CHECK_FUNCS(syslog vsyslog)
733 # syscall() is needed for smbwrapper.
734 AC_CHECK_FUNCS(syscall)
736 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
737 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
738 AC_CHECK_FUNCS(__getcwd _getcwd)
739 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
740 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
741 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
742 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
743 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
744 AC_CHECK_FUNCS(_write __write _fork __fork)
745 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
746 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
747 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
748 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
749 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
752 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
755 if test x$ac_cv_func_stat64 = xno ; then
756   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
757   AC_TRY_LINK([
758 #if defined(HAVE_UNISTD_H)
759 #include <unistd.h>
760 #endif
761 #include <sys/stat.h>
762 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
763   AC_MSG_RESULT([$ac_cv_func_stat64])
764   if test x$ac_cv_func_stat64 = xyes ; then
765     AC_DEFINE(HAVE_STAT64)
766   fi
769 if test x$ac_cv_func_lstat64 = xno ; then
770   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
771   AC_TRY_LINK([
772 #if defined(HAVE_UNISTD_H)
773 #include <unistd.h>
774 #endif
775 #include <sys/stat.h>
776 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
777   AC_MSG_RESULT([$ac_cv_func_lstat64])
778   if test x$ac_cv_func_lstat64 = xyes ; then
779     AC_DEFINE(HAVE_LSTAT64)
780   fi
783 if test x$ac_cv_func_fstat64 = xno ; then
784   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
785   AC_TRY_LINK([
786 #if defined(HAVE_UNISTD_H)
787 #include <unistd.h>
788 #endif
789 #include <sys/stat.h>
790 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
791   AC_MSG_RESULT([$ac_cv_func_fstat64])
792   if test x$ac_cv_func_fstat64 = xyes ; then
793     AC_DEFINE(HAVE_FSTAT64)
794   fi
798 # If no strcasecmp, check for it in some known places
799 # It is in -lresolv on ReliantUNIX and UnixWare
800 #   -lresolve *must* follow -lnsl for name resolution to work properly
803 if test x$ac_cv_func_strcasecmp = xno ; then
804         AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
805                 AC_DEFINE(HAVE_STRCASECMP))
809 # Check for the functions putprpwnam, set_auth_parameters,
810 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
811 # Needed for OSF1 and HPUX.
814 AC_LIBTESTFUNC(security, putprpwnam)
815 AC_LIBTESTFUNC(sec, putprpwnam)
817 AC_LIBTESTFUNC(security, set_auth_parameters)
818 AC_LIBTESTFUNC(sec, set_auth_parameters)
820 # UnixWare 7.x has its getspnam in -lgen
821 AC_LIBTESTFUNC(gen, getspnam)
823 AC_LIBTESTFUNC(security, getspnam)
824 AC_LIBTESTFUNC(sec, getspnam)
826 AC_LIBTESTFUNC(security, bigcrypt)
827 AC_LIBTESTFUNC(sec, bigcrypt)
829 AC_LIBTESTFUNC(security, getprpwnam)
830 AC_LIBTESTFUNC(sec, getprpwnam)
832 # this bit needs to be modified for each OS that is suported by
833 # smbwrapper. You need to specify how to created a shared library and
834 # how to compile C code to produce PIC object files
836 # these are the defaults, good for lots of systems
837 HOST_OS="$host_os"
838 LDSHFLAGS="-shared"
839 SONAMEFLAG="#"
840 SHLD="\${CC}" 
841 PICFLAG=""
842 PICSUFFIX="po.o"
843 SHLIBEXT="so"
844 # Assume non-shared by default and override below
845 BLDSHARED="false" 
846 AC_MSG_CHECKING([ability to build shared libraries])
848 # and these are for particular systems
849 case "$host_os" in
850                 *linux*)   AC_DEFINE(LINUX)
851                         BLDSHARED="true"
852                         LDSHFLAGS="-shared"
853                         DYNEXP="-Wl,--export-dynamic"
854                         PICFLAG="-fPIC"
855                         SONAMEFLAG="-Wl,-soname="
856                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
857                         ;;
858                 *solaris*) AC_DEFINE(SUNOS5)
859                         BLDSHARED="true"
860                         LDSHFLAGS="-G"
861                         SONAMEFLAG="-h "
862                         if test "${GCC}" = "yes"; then
863                                 PICFLAG="-fPIC"
864                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
865                                         DYNEXP="-Wl,-E"
866                                 fi
867                         else
868                                 PICFLAG="-KPIC"
869                                 ## ${CFLAGS} added for building 64-bit shared 
870                                 ## libs using Sun's Compiler
871                                 LDSHFLAGS="-G \${CFLAGS}"
872                                 POBAD_CC=""
873                                 PICSUFFIX="po.o"
874                         fi
875                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
876                 ;;
877                 *sunos*) AC_DEFINE(SUNOS4)
878                         BLDSHARED="true"
879                         LDSHFLAGS="-G"
880                         SONAMEFLAG="-Wl,-h,"
881                         PICFLAG="-KPIC"   # Is this correct for SunOS
882                 ;;
883                 *freebsd*)  BLDSHARED="true"
884                         LDSHFLAGS="-shared"
885                         DYNEXP="-Wl,--export-dynamic"
886                         SONAMEFLAG="-Wl,-soname,"
887                         PICFLAG="-fPIC -DPIC"
888                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
889                 ;;
890                 *openbsd*)  BLDSHARED="true"
891                         LDSHFLAGS="-shared"
892                         DYNEXP="-Wl,-Bdynamic"
893                         SONAMEFLAG="-Wl,-soname,"
894                         PICFLAG="-fPIC"
895                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
896                 ;;
897                 *irix*) AC_DEFINE(IRIX)
898                         case "$host_os" in
899                         *irix6*) AC_DEFINE(IRIX6)
900                         ;;
901                         esac
902                         ATTEMPT_WRAP32_BUILD=yes
903                         BLDSHARED="true"
904                         LDSHFLAGS="-set_version sgi1.0 -shared"
905                         SONAMEFLAG="-soname "
906                         SHLD="\${LD}" 
907                         if test "${GCC}" = "yes"; then
908                                 PICFLAG="-fPIC"
909                         else 
910                                 PICFLAG="-KPIC"
911                         fi
912                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
913                 ;;
914                 *aix*) AC_DEFINE(AIX)
915                         BLDSHARED="true"
916                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
917                         DYNEXP="-Wl,-brtl,-bexpall"
918                         PICFLAG="-O2"
919                         if test "${GCC}" != "yes"; then
920                                 ## for funky AIX compiler using strncpy()
921                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
922                         fi
924                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
925                 ;;
926                 *hpux*) AC_DEFINE(HPUX)
927                         SHLIBEXT="sl"
928                         # Use special PIC flags for the native HP-UX compiler.
929                         if test $ac_cv_prog_cc_Ae = yes; then
930                                 BLDSHARED="true"
931                                 SHLD="/usr/bin/ld"
932                                 LDSHFLAGS="-B symbolic -b -z"
933                                 SONAMEFLAG="+h "
934                                 PICFLAG="+z"
935                         fi
936                         DYNEXP="-Wl,-E"
937                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192)
938                         ;;
939                 *qnx*) AC_DEFINE(QNX);;
940                 *osf*) AC_DEFINE(OSF1)
941                         BLDSHARED="true"
942                         LDSHFLAGS="-shared"
943                         SONAMEFLAG="-Wl,-soname,"
944                         PICFLAG="-fPIC"
945                 ;;
946                 *sco*) AC_DEFINE(SCO);;
947                 *unixware*) AC_DEFINE(UNIXWARE)
948                         BLDSHARED="true"
949                         LDSHFLAGS="-shared"
950                         SONAMEFLAG="-Wl,-soname,"
951                         PICFLAG="-KPIC"
952                 ;;
953                 *next2*) AC_DEFINE(NEXT2);;
954                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
955                 *sysv4*)
956                         case "$host" in
957                                 *-univel-*)     if [ test "$GCC" != yes ]; then
958                                                                         AC_DEFINE(HAVE_MEMSET)
959                                                                 fi
960                                                                 LDSHFLAGS="-G"
961                                                                 DYNEXP="-Bexport"
962                                 ;;
963                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
964                         esac
965                         ;;
966                 *sysv5*)
967                         if [ test "$GCC" != yes ]; then
968                                 AC_DEFINE(HAVE_MEMSET)
969                         fi
970                         LDSHFLAGS="-G"
971                         ;;
972 esac
973 AC_SUBST(DYNEXP)
974 AC_MSG_RESULT($BLDSHARED)
975 AC_MSG_CHECKING([linker flags for shared libraries])
976 AC_MSG_RESULT([$LDSHFLAGS])
977 AC_MSG_CHECKING([compiler flags for position-independent code])
978 AC_MSG_RESULT([$PICFLAGS])
980 # try to work out how to produce pic code with this compiler
981 if test x$PICFLAG = x; then
982   AC_PROG_CC_FLAG(fpic)
983   if test $ac_cv_prog_cc_fpic = yes; then
984       PICFLAG="-fpic";
985   fi
987 if test x$PICFLAG = x; then
988   AC_PROG_CC_FLAG(KPIC)
989   if test $ac_cv_prog_cc_KPIC = yes; then
990     PICFLAG="-KPIC";
991   fi
993 if test x$PICFLAG = x; then
994   AC_PROG_CC_FLAG(Kpic)
995   if test $ac_cv_prog_cc_Kpic = yes; then
996     PICFLAG="-Kpic";
997   fi
1000 ################
1002 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1003 AC_TRY_RUN([#include <stdio.h>
1004 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1005 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1006 if test x"$samba_cv_have_longlong" = x"yes"; then
1007     AC_DEFINE(HAVE_LONGLONG)
1011 # Check if the compiler supports the LL prefix on long long integers.
1012 # AIX needs this.
1014 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1015     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1016         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1017 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1018    AC_DEFINE(COMPILER_SUPPORTS_LL)
1021   
1022 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1023 AC_TRY_RUN([#include <stdio.h>
1024 #include <sys/stat.h>
1025 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1026 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1027 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1028     AC_DEFINE(SIZEOF_OFF_T,8)
1031 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1032 AC_TRY_RUN([
1033 #if defined(HAVE_UNISTD_H)
1034 #include <unistd.h>
1035 #endif
1036 #include <stdio.h>
1037 #include <sys/stat.h>
1038 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1039 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1040 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1041     AC_DEFINE(HAVE_OFF64_T)
1044 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1045 AC_TRY_RUN([#include <stdio.h>
1046 #include <sys/stat.h>
1047 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1048 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1049 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1050     AC_DEFINE(SIZEOF_INO_T,8)
1053 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1054 AC_TRY_RUN([
1055 #if defined(HAVE_UNISTD_H)
1056 #include <unistd.h>
1057 #endif
1058 #include <stdio.h>
1059 #include <sys/stat.h>
1060 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1061 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1062 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1063     AC_DEFINE(HAVE_INO64_T)
1066 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1067 AC_TRY_RUN([
1068 #if defined(HAVE_UNISTD_H)
1069 #include <unistd.h>
1070 #endif
1071 #include <stdio.h>
1072 #include <sys/stat.h>
1073 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1074 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1075 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1076     AC_DEFINE(HAVE_DEV64_T)
1079 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1080 AC_TRY_COMPILE([
1081 #if defined(HAVE_UNISTD_H)
1082 #include <unistd.h>
1083 #endif
1084 #include <sys/types.h>
1085 #include <dirent.h>],
1086 [struct dirent64 de;],
1087 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1088 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1089     AC_DEFINE(HAVE_STRUCT_DIRENT64)
1092 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1093 AC_TRY_RUN([
1094 #if defined(HAVE_UNISTD_H)
1095 #include <unistd.h>
1096 #endif
1097 #include <sys/types.h>
1098 main() { dev_t dev; int i = major(dev); return 0; }],
1099 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1100 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1101     AC_DEFINE(HAVE_DEVICE_MAJOR_FN)
1104 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1105 AC_TRY_RUN([
1106 #if defined(HAVE_UNISTD_H)
1107 #include <unistd.h>
1108 #endif
1109 #include <sys/types.h>
1110 main() { dev_t dev; int i = minor(dev); return 0; }],
1111 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1112 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1113     AC_DEFINE(HAVE_DEVICE_MINOR_FN)
1116 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV_FN,[
1117 AC_TRY_RUN([
1118 #if defined(HAVE_UNISTD_H)
1119 #include <unistd.h>
1120 #endif
1121 #include <sys/types.h>
1122 main() { dev_t dev = makedev(1,2); return 0; }],
1123 samba_cv_HAVE_MAKEDEV_FN=yes,samba_cv_HAVE_MAKEDEV_FN=no,samba_cv_HAVE_MAKEDEV_FN=cross)])
1124 if test x"$samba_cv_HAVE_MAKEDEV_FN" = x"yes"; then
1125     AC_DEFINE(MAKEDEV_FN)
1128 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1129 AC_TRY_RUN([#include <stdio.h>
1130 main() { char c; c=250; exit((c > 0)?0:1); }],
1131 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1132 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1133     AC_DEFINE(HAVE_UNSIGNED_CHAR)
1136 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1137 AC_TRY_COMPILE([#include <sys/types.h>
1138 #include <sys/socket.h>
1139 #include <netinet/in.h>],
1140 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1141 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1142 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1143     AC_DEFINE(HAVE_SOCK_SIN_LEN)
1146 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1147 AC_TRY_COMPILE([#include <sys/types.h>
1148 #include <dirent.h>
1149 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1150 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1151 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1152     AC_DEFINE(SEEKDIR_RETURNS_VOID)
1155 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
1156 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
1157 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
1158 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
1159     AC_DEFINE(HAVE_FILE_MACRO)
1162 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1163 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1164 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1165 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1166     AC_DEFINE(HAVE_FUNCTION_MACRO)
1169 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1170 AC_TRY_RUN([
1171 #include <sys/time.h>
1172 #include <unistd.h>
1173 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1174            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1175 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1176     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
1179 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1180 AC_TRY_LINK([#include <stdarg.h>
1181 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1182 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1183 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1184     AC_DEFINE(HAVE_VA_COPY)
1187 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1188 AC_TRY_RUN([
1189 #include <sys/types.h>
1190 #include <stdarg.h>
1191 void foo(const char *format, ...) {
1192         va_list ap;
1193         int len;
1194         char buf[5];
1196         va_start(ap, format);
1197         len = vsnprintf(buf, 0, format, ap);
1198         va_end(ap);
1199         if (len != 5) exit(1);
1201         va_start(ap, format);
1202         len = vsnprintf(0, 0, format, ap);
1203         va_end(ap);
1204         if (len != 5) exit(1);
1206         if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1208         exit(0);
1210 main() { foo("hello"); }
1212 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1213 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1214         AC_DEFINE(HAVE_C99_VSNPRINTF)
1217 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1218 AC_TRY_RUN([#include <sys/types.h>
1219 #include <dirent.h>
1220 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1221 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1222 di->d_name[0] == 0) exit(0); exit(1);} ],
1223 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1224 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1225     AC_DEFINE(HAVE_BROKEN_READDIR)
1228 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1229 AC_TRY_COMPILE([#include <sys/types.h>
1230 #include <utime.h>],
1231 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1232 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1233 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1234     AC_DEFINE(HAVE_UTIMBUF)
1237 dnl  utmp and utmpx come in many flavours
1238 dnl  We need to check for many of them
1239 dnl  But we don't need to do each and every one, because our code uses
1240 dnl  mostly just the utmp (not utmpx) fields.
1242 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1244 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1245 AC_TRY_COMPILE([#include <sys/types.h>
1246 #include <utmp.h>],
1247 [struct utmp ut;  ut.ut_name[0] = 'a';],
1248 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1249 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1250     AC_DEFINE(HAVE_UT_UT_NAME)
1251 fi 
1253 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1254 AC_TRY_COMPILE([#include <sys/types.h>
1255 #include <utmp.h>],
1256 [struct utmp ut;  ut.ut_user[0] = 'a';],
1257 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1258 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1259     AC_DEFINE(HAVE_UT_UT_USER)
1260 fi 
1262 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1263 AC_TRY_COMPILE([#include <sys/types.h>
1264 #include <utmp.h>],
1265 [struct utmp ut;  ut.ut_id[0] = 'a';],
1266 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1267 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1268     AC_DEFINE(HAVE_UT_UT_ID)
1269 fi 
1271 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1272 AC_TRY_COMPILE([#include <sys/types.h>
1273 #include <utmp.h>],
1274 [struct utmp ut;  ut.ut_host[0] = 'a';],
1275 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1276 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1277     AC_DEFINE(HAVE_UT_UT_HOST)
1278 fi 
1280 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1281 AC_TRY_COMPILE([#include <sys/types.h>
1282 #include <utmp.h>],
1283 [struct utmp ut;  time_t t; ut.ut_time = t;],
1284 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1285 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1286     AC_DEFINE(HAVE_UT_UT_TIME)
1287 fi 
1289 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1290 AC_TRY_COMPILE([#include <sys/types.h>
1291 #include <utmp.h>],
1292 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1293 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1294 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1295     AC_DEFINE(HAVE_UT_UT_TV)
1296 fi 
1298 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1299 AC_TRY_COMPILE([#include <sys/types.h>
1300 #include <utmp.h>],
1301 [struct utmp ut;  ut.ut_type = 0;],
1302 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1303 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1304     AC_DEFINE(HAVE_UT_UT_TYPE)
1305 fi 
1307 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1308 AC_TRY_COMPILE([#include <sys/types.h>
1309 #include <utmp.h>],
1310 [struct utmp ut;  ut.ut_pid = 0;],
1311 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1312 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1313     AC_DEFINE(HAVE_UT_UT_PID)
1314 fi 
1316 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1317 AC_TRY_COMPILE([#include <sys/types.h>
1318 #include <utmp.h>],
1319 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1320 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1321 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1322     AC_DEFINE(HAVE_UT_UT_EXIT)
1323 fi 
1325 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1326 AC_TRY_COMPILE([#include <sys/types.h>
1327 #include <utmp.h>],
1328 [struct utmp ut;  ut.ut_addr = 0;],
1329 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1330 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1331     AC_DEFINE(HAVE_UT_UT_ADDR)
1332 fi 
1334 if test x$ac_cv_func_pututline = xyes ; then
1335   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1336   AC_TRY_COMPILE([#include <sys/types.h>
1337 #include <utmp.h>],
1338   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1339   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1340   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1341       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
1342   fi
1345 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1346 AC_TRY_COMPILE([#include <sys/types.h>
1347 #include <utmpx.h>],
1348 [struct utmpx ux;  ux.ut_syslen = 0;],
1349 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1350 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1351     AC_DEFINE(HAVE_UX_UT_SYSLEN)
1352 fi 
1354 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1355 AC_TRY_RUN([
1356 #include <sys/types.h>
1357 #include <fcntl.h>
1358 #ifndef F_GETLEASE
1359 #define F_GETLEASE      1025
1360 #endif
1361 main() {
1362        int fd = open("/dev/null", O_RDONLY);
1363        return fcntl(fd, F_GETLEASE, 0) == -1;
1366 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1367 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1368     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1371 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1372 AC_TRY_RUN([
1373 #include <sys/types.h>
1374 #include <fcntl.h>
1375 #include <signal.h>
1376 #ifndef F_NOTIFY
1377 #define F_NOTIFY 1026
1378 #endif
1379 main() {
1380         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1383 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1384 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" && test x"$target_cpu" != x"s390"; then
1385     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1388 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1389 AC_TRY_RUN([
1390 #include <sys/types.h>
1391 #include <fcntl.h>
1392 #include <signal.h>
1393 #include <sys/file.h>
1394 #ifndef LOCK_MAND
1395 #define LOCK_MAND       32
1396 #define LOCK_READ       64
1397 #endif
1398 main() {
1399         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1402 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1403 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1404     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1410 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1411 AC_TRY_COMPILE([#include <sys/types.h>
1412 #include <fcntl.h>],
1413 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1414 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1415 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1416     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1419 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1420 AC_TRY_RUN([#include <sys/types.h>
1421 #include <sys/capability.h>
1422 main() {
1423  cap_t cap;
1424  if ((cap = cap_get_proc()) == NULL)
1425    exit(1);
1426  cap->cap_effective |= CAP_NETWORK_MGT;
1427  cap->cap_inheritable |= CAP_NETWORK_MGT;
1428  cap_set_proc(cap);
1429  exit(0);
1432 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1433 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1434     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1438 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1439 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1442 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1443 AC_TRY_COMPILE([#include <sys/types.h>
1444 #if defined(HAVE_RPC_RPC_H)
1445 #include <rpc/rpc.h>
1446 #endif],
1447 [int16 testvar;],
1448 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1449 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1450     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1453 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1454 AC_TRY_COMPILE([#include <sys/types.h>
1455 #if defined(HAVE_RPC_RPC_H)
1456 #include <rpc/rpc.h>
1457 #endif],
1458 [uint16 testvar;],
1459 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1460 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1461     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1464 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1465 AC_TRY_COMPILE([#include <sys/types.h>
1466 #if defined(HAVE_RPC_RPC_H)
1467 #include <rpc/rpc.h>
1468 #endif],
1469 [int32 testvar;],
1470 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1471 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1472     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1475 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1476 AC_TRY_COMPILE([#include <sys/types.h>
1477 #if defined(HAVE_RPC_RPC_H)
1478 #include <rpc/rpc.h>
1479 #endif],
1480 [uint32 testvar;],
1481 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1482 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1483     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1487 dnl Some systems (SCO) have a problem including
1488 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1489 dnl as a #define in <prot.h> and as part of an enum
1490 dnl in <rpc/rpc.h>.
1493 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1494 AC_TRY_COMPILE([#include <sys/types.h>
1495 #ifdef HAVE_SYS_SECURITY_H
1496 #include <sys/security.h>
1497 #include <prot.h>
1498 #endif  /* HAVE_SYS_SECURITY_H */
1499 #if defined(HAVE_RPC_RPC_H)
1500 #include <rpc/rpc.h>
1501 #endif],
1502 [int testvar;],
1503 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1504 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1505     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1508 AC_MSG_CHECKING([for test routines])
1509 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1510            AC_MSG_RESULT(yes),
1511            AC_MSG_ERROR([cant find test code. Aborting config]),
1512            AC_MSG_WARN([cannot run when cross-compiling]))
1514 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1515 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1516            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1517 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1518     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1521 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1522 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1523            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1524 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1525     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1528 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1529 SAVE_CPPFLAGS="$CPPFLAGS"
1530 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1531 AC_TRY_COMPILE([
1532 #define REPLACE_GETPASS 1
1533 #define NO_CONFIG_H 1
1534 #define main dont_declare_main
1535 #include "${srcdir-.}/lib/getsmbpass.c"
1536 #undef main
1537 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1538 CPPFLAGS="$SAVE_CPPFLAGS"
1540 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1541         AC_DEFINE(REPLACE_GETPASS)
1544 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1545 AC_TRY_RUN([
1546 #include <stdio.h>
1547 #include <sys/types.h>
1548 #include <netinet/in.h>
1549 #ifdef HAVE_ARPA_INET_H
1550 #include <arpa/inet.h>
1551 #endif
1552 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1553 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1554     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1555 exit(1);}],
1556            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1557 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1558     AC_DEFINE(REPLACE_INET_NTOA)
1561 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1562 AC_TRY_RUN([#include <stdlib.h>
1563 #include <sys/types.h>
1564 #include <sys/stat.h>
1565 #include <unistd.h>
1566 main() { 
1567   struct stat st;
1568   char tpl[20]="/tmp/test.XXXXXX"; 
1569   int fd = mkstemp(tpl); 
1570   if (fd == -1) exit(1);
1571   unlink(tpl);
1572   if (fstat(fd, &st) != 0) exit(1);
1573   if ((st.st_mode & 0777) != 0600) exit(1);
1574   exit(0);
1576 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1577 samba_cv_HAVE_SECURE_MKSTEMP=no,
1578 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1579 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1580     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1583 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1584 AC_TRY_RUN([#include <unistd.h>
1585 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1586 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1587 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1588     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1591 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1592 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1593            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1594 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1595     AC_DEFINE(HAVE_ROOT)
1596 else
1597     AC_MSG_WARN(running as non-root will disable some tests)
1600 ##################
1601 # look for a method of finding the list of network interfaces
1602 iface=no;
1603 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1604 AC_TRY_RUN([
1605 #define HAVE_IFACE_AIX 1
1606 #define AUTOCONF_TEST 1
1607 #include "confdefs.h"
1608 #include "${srcdir-.}/lib/interfaces.c"],
1609            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1610 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1611     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1614 if test $iface = no; then
1615 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1616 AC_TRY_RUN([
1617 #define HAVE_IFACE_IFCONF 1
1618 #define AUTOCONF_TEST 1
1619 #include "confdefs.h"
1620 #include "${srcdir-.}/lib/interfaces.c"],
1621            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1622 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1623     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1627 if test $iface = no; then
1628 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1629 AC_TRY_RUN([
1630 #define HAVE_IFACE_IFREQ 1
1631 #define AUTOCONF_TEST 1
1632 #include "confdefs.h"
1633 #include "${srcdir-.}/lib/interfaces.c"],
1634            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1635 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1636     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1641 ################################################
1642 # look for a method of setting the effective uid
1643 seteuid=no;
1644 if test $seteuid = no; then
1645 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1646 AC_TRY_RUN([
1647 #define AUTOCONF_TEST 1
1648 #define USE_SETRESUID 1
1649 #include "confdefs.h"
1650 #include "${srcdir-.}/lib/util_sec.c"],
1651            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1652 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1653     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1658 if test $seteuid = no; then
1659 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1660 AC_TRY_RUN([
1661 #define AUTOCONF_TEST 1
1662 #define USE_SETREUID 1
1663 #include "confdefs.h"
1664 #include "${srcdir-.}/lib/util_sec.c"],
1665            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1666 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1667     seteuid=yes;AC_DEFINE(USE_SETREUID)
1671 if test $seteuid = no; then
1672 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1673 AC_TRY_RUN([
1674 #define AUTOCONF_TEST 1
1675 #define USE_SETEUID 1
1676 #include "confdefs.h"
1677 #include "${srcdir-.}/lib/util_sec.c"],
1678            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1679 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1680     seteuid=yes;AC_DEFINE(USE_SETEUID)
1684 if test $seteuid = no; then
1685 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1686 AC_TRY_RUN([
1687 #define AUTOCONF_TEST 1
1688 #define USE_SETUIDX 1
1689 #include "confdefs.h"
1690 #include "${srcdir-.}/lib/util_sec.c"],
1691            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1692 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1693     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1698 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1699 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1700            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1701 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1702     AC_DEFINE(HAVE_MMAP)
1705 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1706 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1707            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1708 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1709     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1712 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1713 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1714            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1715 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1716     AC_DEFINE(HAVE_FCNTL_LOCK)
1719 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1720 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1721            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1722 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1723     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1725 else
1728 dnl Don't check for 64 bit fcntl locking if we know that the
1729 dnl glibc2.1 broken check has succeeded.
1730 dnl 
1732   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1733   AC_TRY_RUN([
1734 #if defined(HAVE_UNISTD_H)
1735 #include <unistd.h>
1736 #endif
1737 #include <stdio.h>
1738 #include <stdlib.h>
1740 #ifdef HAVE_FCNTL_H
1741 #include <fcntl.h>
1742 #endif
1744 #ifdef HAVE_SYS_FCNTL_H
1745 #include <sys/fcntl.h>
1746 #endif
1747 main() { struct flock64 fl64;
1748 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1749 exit(0);
1750 #else
1751 exit(1);
1752 #endif
1754        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1756   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1757       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1758   fi
1761 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1762 AC_TRY_COMPILE([#include <sys/types.h>
1763 #include <sys/stat.h>
1764 #include <unistd.h>],
1765 [struct stat st;  st.st_blocks = 0;],
1766 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1767 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1768     AC_DEFINE(HAVE_STAT_ST_BLOCKS)
1769 fi 
1771 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1772 AC_TRY_COMPILE([#include <sys/types.h>
1773 #include <sys/stat.h>
1774 #include <unistd.h>],
1775 [struct stat st;  st.st_blksize = 0;],
1776 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1777 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1778     AC_DEFINE(HAVE_STAT_ST_BLKSIZE)
1781 case "$host_os" in
1782 *linux*)
1783 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1784 AC_TRY_COMPILE([
1785 #ifdef HAVE_SYS_VFS_H
1786 #include <sys/vfs.h>
1787 #endif
1788 #ifdef HAVE_SYS_CAPABILITY_H
1789 #include <sys/capability.h>
1790 #endif
1791 ],[int i;],
1792    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1793 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1794    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS)
1797 esac
1799 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1800 AC_TRY_COMPILE([#include <sys/acl.h>
1801 #if defined(HAVE_RPCSVC_NIS_H)
1802 #include <rpcsvc/nis.h>
1803 #endif],
1804 [int i;],
1805 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1806 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1807     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1811 #################################################
1812 # check for smbwrapper support
1813 AC_MSG_CHECKING(whether to use smbwrapper)
1814 AC_ARG_WITH(smbwrapper,
1815 [  --with-smbwrapper       Include SMB wrapper support (default=no)],
1816 [ case "$withval" in
1817   yes)
1818     AC_MSG_RESULT(yes)
1819     AC_DEFINE(WITH_SMBWRAPPER)
1820         WRAPPROG="bin/smbsh"
1821         WRAP="bin/smbwrapper.$SHLIBEXT"
1823         if test x$ATTEMPT_WRAP32_BUILD = x; then
1824                 WRAP32=""
1825         else
1826                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1827         fi
1829 # Conditions under which smbwrapper should not be built.
1831         if test x$PICFLAG = x; then
1832            echo No support for PIC code - disabling smbwrapper and smbsh
1833            WRAPPROG=""
1834            WRAP=""
1835            WRAP32=""
1836         elif test x$ac_cv_func_syscall = xno; then
1837            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1838            WRAPPROG=""
1839            WRAP=""
1840            WRAP32=""
1841         fi
1842     ;;
1843   *)
1844     AC_MSG_RESULT(no)
1845     ;;
1846   esac ],
1847   AC_MSG_RESULT(no)
1850 #################################################
1851 # check for the AFS filesystem
1852 AC_MSG_CHECKING(whether to use AFS)
1853 AC_ARG_WITH(afs,
1854 [  --with-afs              Include AFS support (default=no)],
1855 [ case "$withval" in
1856   yes)
1857     AC_MSG_RESULT(yes)
1858     AC_DEFINE(WITH_AFS)
1859     ;;
1860   *)
1861     AC_MSG_RESULT(no)
1862     ;;
1863   esac ],
1864   AC_MSG_RESULT(no)
1868 #################################################
1869 # check for the DFS auth system
1870 AC_MSG_CHECKING(whether to use DCE/DFS auth)
1871 AC_ARG_WITH(dfs,
1872 [  --with-dce-dfs          Include DCE/DFS support (default=no)],
1873 [ case "$withval" in
1874   yes)
1875     AC_MSG_RESULT(yes)
1876     AC_DEFINE(WITH_DFS)
1877     ;;
1878   *)
1879     AC_MSG_RESULT(no)
1880     ;;
1881   esac ],
1882   AC_MSG_RESULT(no)
1885 #################################################
1886 # check for Kerberos IV auth system
1887 AC_MSG_CHECKING(whether to use Kerberos IV)
1888 AC_ARG_WITH(krb4,
1889 [  --with-krb4=base-dir    Include Kerberos IV support (default=no)],
1890 [ case "$withval" in
1891   yes)
1892     AC_MSG_RESULT(yes)
1893     AC_DEFINE(KRB4_AUTH)
1894     AC_CHECK_LIB(resolv, dn_expand)
1895     LIBS="$LIBS -lkrb -ldes"
1896     CFLAGS="$CFLAGS -I$withval/include"
1897     LDFLAGS="$LDFLAGS -L$withval/lib"
1898     ;;
1899   *)
1900     AC_MSG_RESULT(no)
1901     ;;
1902   esac ],
1903   AC_MSG_RESULT(no)
1906 #################################################
1907 # check for Kerberos 5 auth system
1908 AC_MSG_CHECKING(whether to use Kerberos 5)
1909 AC_ARG_WITH(krb5,
1910 [  --with-krb5=base-dir    Include Kerberos 5 support (default=no)],
1911 [ case "$withval" in
1912   yes)
1913     AC_MSG_RESULT(yes)
1914     AC_DEFINE(KRB5_AUTH)
1915     LIBS="$LIBS -ldes425 -lkrb5 -lcrypto -lcom_err"
1916     CFLAGS="$CFLAGS -I$withval/include"
1917     LDFLAGS="$LDFLAGS -L$withval/lib"
1918     ;;
1919   *)
1920     AC_MSG_RESULT(no)
1921     ;;
1922   esac ],
1923   AC_MSG_RESULT(no)
1926 #################################################
1927 # check for automount support
1928 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1929 AC_ARG_WITH(automount,
1930 [  --with-automount        Include AUTOMOUNT support (default=no)],
1931 [ case "$withval" in
1932   yes)
1933     AC_MSG_RESULT(yes)
1934     AC_DEFINE(WITH_AUTOMOUNT)
1935     ;;
1936   *)
1937     AC_MSG_RESULT(no)
1938     ;;
1939   esac ],
1940   AC_MSG_RESULT(no)
1943 #################################################
1944 # check for smbmount support
1945 AC_MSG_CHECKING(whether to use SMBMOUNT)
1946 AC_ARG_WITH(smbmount,
1947 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
1948 [ case "$withval" in
1949   yes)
1950         case "$host_os" in
1951         *linux*)
1952                 AC_MSG_RESULT(yes)
1953                 AC_DEFINE(WITH_SMBMOUNT)
1954                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
1955                 ;;
1956         *)
1957                 AC_MSG_ERROR(not on a linux system!)
1958                 ;;
1959         esac
1960     ;;
1961   *)
1962     AC_MSG_RESULT(no)
1963     MPROGS=
1964     ;;
1965   esac ],
1966   AC_MSG_RESULT(no)
1967   MPROGS=
1971 #################################################
1972 # check for a PAM password database
1973 with_pam_for_crypt=no
1974 AC_MSG_CHECKING(whether to use PAM password database)
1975 AC_ARG_WITH(pam,
1976 [  --with-pam              Include PAM password database support (default=no)],
1977 [ case "$withval" in
1978   yes)
1979     AC_MSG_RESULT(yes)
1980     AC_DEFINE(WITH_PAM)
1981     LIBS="$LIBS -lpam"
1982     with_pam_for_crypt=yes
1983     ;;
1984   *)
1985     AC_MSG_RESULT(no)
1986     ;;
1987   esac ],
1988   AC_MSG_RESULT(no)
1991 # we can't build a pam module if we don't have pam.
1992 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
1994 #################################################
1995 # check for pam_smbpass support
1996 AC_MSG_CHECKING(whether to use pam_smbpass)
1997 AC_ARG_WITH(pam_smbpass,
1998 [  --with-pam_smbpass      Include the smbpass PAM module (default=no)],
1999 [ case "$withval" in
2000   yes)
2001     AC_MSG_RESULT(yes)
2003 # Conditions under which pam_smbpass should not be built.
2005        if test x$PICFLAG = x; then
2006           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2007           PAM_MOD=""
2008        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2009           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2010           PAM_MOD=""
2011        else
2012           AC_DEFINE(WITH_PAM_SMBPASS)
2013           PAM_MOD="bin/pam_smbpass.so"
2014        fi
2015     ;;
2016   *)
2017     AC_MSG_RESULT(no)
2018     ;;
2019   esac ],
2020   AC_MSG_RESULT(no)
2024 ###############################################
2025 # test for where we get crypt() from, but only
2026 # if not using PAM
2027 if test $with_pam_for_crypt = no; then
2028 AC_CHECK_FUNCS(crypt)
2029 if test x"$ac_cv_func_crypt" = x"no"; then
2030     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
2031         AC_DEFINE(HAVE_CRYPT)])
2036 ## moved after the check for -lcrypt in order to
2037 ## ensure that the necessary libraries are included
2038 ## check checking for truncated salt.  Wrapped by the
2039 ## $with_pam_for_crypt variable as above   --jerry
2041 if test $with_pam_for_crypt = no; then
2042 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2043 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2044         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
2045 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2046         AC_DEFINE(HAVE_TRUNCATED_SALT)
2051 ########################################################################################
2053 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2055 ########################################################################################
2057 ## set the with_smbpasswd_sam as the default
2058 with_smbpasswd_sam=yes
2062 #################################################
2063 # check for a TDB password database
2064 AC_MSG_CHECKING(whether to use TDB SAM database)
2065 AC_ARG_WITH(tdbsam,
2066 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2067 [ case "$withval" in
2068   yes)
2069     AC_MSG_RESULT(yes)
2070     AC_DEFINE(WITH_TDB_SAM)
2071     with_smbpasswd_sam=no
2072     ;;
2073   *)
2074     AC_MSG_RESULT(no)
2075     ;;
2076   esac ],
2077   AC_MSG_RESULT(no)
2080 #################################################
2081 # check for a LDAP password database
2082 AC_MSG_CHECKING(whether to use LDAP SAM database)
2083 AC_ARG_WITH(ldapsam,
2084 [  --with-ldapsam          Include experimental LDAP SAM support (default=no)],
2085 [ case "$withval" in
2086   yes)
2087     AC_MSG_RESULT(yes)
2088     AC_DEFINE(WITH_LDAP_SAM)
2089     LDAPLIBS="-lldap"
2090     AC_CHECK_LIB(lber, ber_bvfree, [LDAPLIBS="$LDAPLIBS -llber"])
2091     ## remove -lresolv as this should be included by the -lsasl dependency 
2092     ## in the OpenLDAP clients.  By not requiring it specifically, we avoid
2093     ## issues on platforms that don't have it
2094     LDAPLIBS="$LDAPLIBS"
2095     old_LDFLAGS="$LDFLAGS"
2096     LDFLAGS="$LDFLAGS $LDAPLIBS"
2097     AC_CHECK_FUNCS(ldap_start_tls_s)
2098     LDFLAGS="$old_LDFLAGS"
2099     with_smbpasswd_sam=no
2100     AC_SUBST(LDAPLIBS)
2101     ;;
2102   *)
2103     AC_MSG_RESULT(no)
2104     ;;
2105   esac ],
2106   AC_MSG_RESULT(no)
2109 #################################################
2110 # check for a NISPLUS password database
2111 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2112 AC_ARG_WITH(nisplussam,
2113 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2114 [ case "$withval" in
2115   yes)
2116     AC_MSG_RESULT(yes)
2117     AC_DEFINE(WITH_NISPLUS_SAM)
2118     with_smbpasswd_sam=no
2119     ;;
2120   *)
2121     AC_MSG_RESULT(no)
2122     ;;
2123   esac ],
2124   AC_MSG_RESULT(no)
2127 ################################################
2128 # This test should come last because the
2129 # smbpasswd SAM is only used if another format
2130 # has not been defined
2131 AC_MSG_CHECKING(whether to use traditional smbpasswd file)
2132 if test $with_smbpasswd_sam = yes; then
2133         AC_MSG_RESULT(yes)
2134         AC_DEFINE(WITH_SMBPASSWD_SAM)
2135         PDBEDIT=""
2136 else
2137         AC_MSG_RESULT(no)
2138         PDBEDIT=bin/pdbedit
2141 ########################################################################################
2143 ## END OF TESTS FOR SAM BACKENDS.  
2145 ########################################################################################
2147 #################################################
2148 # check for a NISPLUS_HOME support 
2149 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2150 AC_ARG_WITH(nisplus-home,
2151 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2152 [ case "$withval" in
2153   yes)
2154     AC_MSG_RESULT(yes)
2155     AC_DEFINE(WITH_NISPLUS_HOME)
2156     ;;
2157   *)
2158     AC_MSG_RESULT(no)
2159     ;;
2160   esac ],
2161   AC_MSG_RESULT(no)
2164 #################################################
2165 # check for the secure socket layer
2166 AC_MSG_CHECKING(whether to use SSL)
2167 AC_ARG_WITH(ssl,
2168 [  --with-ssl              Include SSL support (default=no)
2169   --with-sslinc=DIR          Where the SSL includes are (defaults to /usr/local/ssl/include)
2170   --with-ssllib=DIR          Where the SSL libraries are (defaults to /usr/local/ssl/lib)],
2171 [ case "$withval" in
2172   yes)
2173     AC_MSG_RESULT(yes)
2174     AC_DEFINE(WITH_SSL)
2175     withval="/usr/local/ssl"     # default
2177     if test "${with_sslinc+set}" = set; then
2179         withval="$with_sslinc"
2180         case "$withval" in
2181         yes|no)
2182           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
2183           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
2184         ;;
2185         * )
2186           CFLAGS="-I${withval} $CFLAGS"
2187         ;;
2188         esac
2190     else
2192         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
2194     fi
2196     if test "${with_ssllib+set}" = set; then
2198         withval="$with_ssllib"
2199         case "$withval" in
2200         yes|no)
2201           echo "configure: warning: --with-ssllib called without argument - will use default" 1>&w
2202           LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2203         ;;
2204         * )
2205           LDFLAGS="-L${withval}/lib $LDFLAGS"
2206         ;;
2207         esac
2209     else
2211         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2213     fi
2215     LIBS="-lssl -lcrypto $LIBS"
2217 #    if test ! -d ${withval}; then
2218 #      echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
2219 #      exit 1
2220 #    fi 
2222     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
2224     ;;
2225   *)
2226     AC_MSG_RESULT(no)
2227     ;;
2228   esac ],
2229   AC_MSG_RESULT(no)
2232 #################################################
2233 # check for syslog logging
2234 AC_MSG_CHECKING(whether to use syslog logging)
2235 AC_ARG_WITH(syslog,
2236 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2237 [ case "$withval" in
2238   yes)
2239     AC_MSG_RESULT(yes)
2240     AC_DEFINE(WITH_SYSLOG)
2241     ;;
2242   *)
2243     AC_MSG_RESULT(no)
2244     ;;
2245   esac ],
2246   AC_MSG_RESULT(no)
2249 #################################################
2250 # check for a shared memory profiling support
2251 AC_MSG_CHECKING(whether to use profiling)
2252 AC_ARG_WITH(profiling-data,
2253 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2254 [ case "$withval" in
2255   yes)
2256     AC_MSG_RESULT(yes)
2257     AC_DEFINE(WITH_PROFILE)
2258     ;;
2259   *)
2260     AC_MSG_RESULT(no)
2261     ;;
2262   esac ],
2263   AC_MSG_RESULT(no)
2267 #################################################
2268 # check for experimental disk-quotas support
2269 QUOTAOBJS=smbd/noquotas.o
2271 AC_MSG_CHECKING(whether to support disk-quotas)
2272 AC_ARG_WITH(quotas,
2273 [  --with-quotas           Include experimental disk-quota support (default=no)],
2274 [ case "$withval" in
2275   yes)
2276     AC_MSG_RESULT(yes)
2277     QUOTAOBJS=smbd/quotas.o
2278     ;;
2279   *)
2280     AC_MSG_RESULT(no)
2281     ;;
2282   esac ],
2283   AC_MSG_RESULT(no)
2285 AC_SUBST(QUOTAOBJS)
2287 #################################################
2288 # check for experimental utmp accounting
2290 AC_MSG_CHECKING(whether to support utmp accounting)
2291 AC_ARG_WITH(utmp,
2292 [  --with-utmp             Include experimental utmp accounting (default=no)],
2293 [ case "$withval" in
2294   yes)
2295     AC_MSG_RESULT(yes)
2296     AC_DEFINE(WITH_UTMP)
2297     ;;
2298   *)
2299     AC_MSG_RESULT(no)
2300     ;;
2301   esac ],
2302   AC_MSG_RESULT(no)
2305 #################################################
2306 # check for MS Dfs support
2308 AC_MSG_CHECKING(whether to support Microsoft Dfs)
2309 AC_ARG_WITH(msdfs,
2310 [  --with-msdfs            Include MS Dfs support (default=no)],
2311 [ case "$withval" in
2312   yes)
2313      AC_MSG_RESULT(yes)
2314      AC_DEFINE(WITH_MSDFS)
2315      ;;
2316   *)
2317     AC_MSG_RESULT(no)
2318     ;;
2319   esac ],
2320   AC_MSG_RESULT(no)
2323 #################################################
2324 # should we build libsmbclient?
2326 LIBSMBCLIENT_SHARED=
2327 LIBSMBCLIENT=
2328 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2329 AC_ARG_WITH(libsmbclient,
2330 [  --with-libsmbclient     Build the libsmbclient shared library (default=no)],
2331 [ case "$withval" in
2332   yes)
2333      if test $BLDSHARED = true; then
2334         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2335         LIBSMBCLIENT=libsmbclient
2336         AC_MSG_RESULT(yes)
2337      else
2338         AC_MSG_RESULT(no shared library support)
2339      fi
2340      ;;
2341   *)
2342     AC_MSG_RESULT(no)
2343     ;;
2344   esac ],
2345   AC_MSG_RESULT(no)
2348 #################################################
2349 # these tests are taken from the GNU fileutils package
2350 AC_CHECKING(how to get filesystem space usage)
2351 space=no
2353 # Test for statvfs64.
2354 if test $space = no; then
2355   # SVR4
2356   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2357   [AC_TRY_RUN([
2358 #if defined(HAVE_UNISTD_H)
2359 #include <unistd.h>
2360 #endif
2361 #include <sys/types.h>
2362 #include <sys/statvfs.h>
2363   main ()
2364   {
2365     struct statvfs64 fsd;
2366     exit (statvfs64 (".", &fsd));
2367   }],
2368   fu_cv_sys_stat_statvfs64=yes,
2369   fu_cv_sys_stat_statvfs64=no,
2370   fu_cv_sys_stat_statvfs64=cross)])
2371   if test $fu_cv_sys_stat_statvfs64 = yes; then
2372     space=yes
2373     AC_DEFINE(STAT_STATVFS64)
2374   fi
2377 # Perform only the link test since it seems there are no variants of the
2378 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2379 # because that got a false positive on SCO OSR5.  Adding the declaration
2380 # of a `struct statvfs' causes this test to fail (as it should) on such
2381 # systems.  That system is reported to work fine with STAT_STATFS4 which
2382 # is what it gets when this test fails.
2383 if test $space = no; then
2384   # SVR4
2385   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2386                  [AC_TRY_LINK([#include <sys/types.h>
2387 #include <sys/statvfs.h>],
2388                               [struct statvfs fsd; statvfs (0, &fsd);],
2389                               fu_cv_sys_stat_statvfs=yes,
2390                               fu_cv_sys_stat_statvfs=no)])
2391   if test $fu_cv_sys_stat_statvfs = yes; then
2392     space=yes
2393     AC_DEFINE(STAT_STATVFS)
2394   fi
2397 if test $space = no; then
2398   # DEC Alpha running OSF/1
2399   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2400   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2401   [AC_TRY_RUN([
2402 #include <sys/param.h>
2403 #include <sys/types.h>
2404 #include <sys/mount.h>
2405   main ()
2406   {
2407     struct statfs fsd;
2408     fsd.f_fsize = 0;
2409     exit (statfs (".", &fsd, sizeof (struct statfs)));
2410   }],
2411   fu_cv_sys_stat_statfs3_osf1=yes,
2412   fu_cv_sys_stat_statfs3_osf1=no,
2413   fu_cv_sys_stat_statfs3_osf1=no)])
2414   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2415   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2416     space=yes
2417     AC_DEFINE(STAT_STATFS3_OSF1)
2418   fi
2421 if test $space = no; then
2422 # AIX
2423   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2424 member (AIX, 4.3BSD)])
2425   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2426   [AC_TRY_RUN([
2427 #ifdef HAVE_SYS_PARAM_H
2428 #include <sys/param.h>
2429 #endif
2430 #ifdef HAVE_SYS_MOUNT_H
2431 #include <sys/mount.h>
2432 #endif
2433 #ifdef HAVE_SYS_VFS_H
2434 #include <sys/vfs.h>
2435 #endif
2436   main ()
2437   {
2438   struct statfs fsd;
2439   fsd.f_bsize = 0;
2440   exit (statfs (".", &fsd));
2441   }],
2442   fu_cv_sys_stat_statfs2_bsize=yes,
2443   fu_cv_sys_stat_statfs2_bsize=no,
2444   fu_cv_sys_stat_statfs2_bsize=no)])
2445   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2446   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2447     space=yes
2448     AC_DEFINE(STAT_STATFS2_BSIZE)
2449   fi
2452 if test $space = no; then
2453 # SVR3
2454   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2455   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2456   [AC_TRY_RUN([#include <sys/types.h>
2457 #include <sys/statfs.h>
2458   main ()
2459   {
2460   struct statfs fsd;
2461   exit (statfs (".", &fsd, sizeof fsd, 0));
2462   }],
2463     fu_cv_sys_stat_statfs4=yes,
2464     fu_cv_sys_stat_statfs4=no,
2465     fu_cv_sys_stat_statfs4=no)])
2466   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2467   if test $fu_cv_sys_stat_statfs4 = yes; then
2468     space=yes
2469     AC_DEFINE(STAT_STATFS4)
2470   fi
2473 if test $space = no; then
2474 # 4.4BSD and NetBSD
2475   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2476 member (4.4BSD and NetBSD)])
2477   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2478   [AC_TRY_RUN([#include <sys/types.h>
2479 #ifdef HAVE_SYS_PARAM_H
2480 #include <sys/param.h>
2481 #endif
2482 #ifdef HAVE_SYS_MOUNT_H
2483 #include <sys/mount.h>
2484 #endif
2485   main ()
2486   {
2487   struct statfs fsd;
2488   fsd.f_fsize = 0;
2489   exit (statfs (".", &fsd));
2490   }],
2491   fu_cv_sys_stat_statfs2_fsize=yes,
2492   fu_cv_sys_stat_statfs2_fsize=no,
2493   fu_cv_sys_stat_statfs2_fsize=no)])
2494   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2495   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2496     space=yes
2497     AC_DEFINE(STAT_STATFS2_FSIZE)
2498   fi
2501 if test $space = no; then
2502   # Ultrix
2503   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2504   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2505   [AC_TRY_RUN([#include <sys/types.h>
2506 #ifdef HAVE_SYS_PARAM_H
2507 #include <sys/param.h>
2508 #endif
2509 #ifdef HAVE_SYS_MOUNT_H
2510 #include <sys/mount.h>
2511 #endif
2512 #ifdef HAVE_SYS_FS_TYPES_H
2513 #include <sys/fs_types.h>
2514 #endif
2515   main ()
2516   {
2517   struct fs_data fsd;
2518   /* Ultrix's statfs returns 1 for success,
2519      0 for not mounted, -1 for failure.  */
2520   exit (statfs (".", &fsd) != 1);
2521   }],
2522   fu_cv_sys_stat_fs_data=yes,
2523   fu_cv_sys_stat_fs_data=no,
2524   fu_cv_sys_stat_fs_data=no)])
2525   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2526   if test $fu_cv_sys_stat_fs_data = yes; then
2527     space=yes
2528     AC_DEFINE(STAT_STATFS2_FS_DATA)
2529   fi
2533 # As a gating factor for large file support, in order to
2534 # use <4GB files we must have the following minimal support
2535 # available.
2536 # long long, and a 64 bit off_t or off64_t.
2537 # If we don't have all of these then disable large
2538 # file support.
2540 AC_MSG_CHECKING(if large file support can be enabled)
2541 AC_TRY_COMPILE([
2542 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2543 #include <sys/types.h>
2544 #else
2545 __COMPILE_ERROR_
2546 #endif
2548 [int i],
2549 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2550 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2551     AC_MSG_RESULT(yes)
2552     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2553 else
2554     AC_MSG_RESULT(no)
2557 AC_ARG_WITH(spinlocks, 
2558 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no)])
2559 if test "x$with_spinlocks" = "xyes"; then
2560     AC_DEFINE(USE_SPINLOCKS)
2562     case "$host_cpu" in
2563         sparc)
2564             AC_DEFINE(SPARC_SPINLOCKS)
2565             ;;
2567         i386|i486|i586|i686)
2568             AC_DEFINE(INTEL_SPINLOCKS)
2569             ;;
2571         mips)
2572             AC_DEFINE(MIPS_SPINLOCKS)
2573             ;;
2575         powerpc)
2576             AC_DEFINE(POWERPC_SPINLOCKS)
2577             ;;
2578     esac
2581 #################################################
2582 # check for ACL support
2584 AC_MSG_CHECKING(whether to support ACLs)
2585 AC_ARG_WITH(acl-support,
2586 [  --with-acl-support      Include ACL support (default=no)],
2587 [ case "$withval" in
2588   yes)
2590                 case "$host_os" in
2591                 *sysv5*)
2592                         AC_MSG_RESULT(Using UnixWare ACLs)
2593                         AC_DEFINE(HAVE_UNIXWARE_ACLS)
2594                         ;;
2595                 *solaris*)
2596                         AC_MSG_RESULT(Using solaris ACLs)
2597                         AC_DEFINE(HAVE_SOLARIS_ACLS)
2598                         ;;
2599                 *hpux*)
2600                         AC_MSG_RESULT(Using HPUX ACLs)
2601                         AC_DEFINE(HAVE_HPUX_ACLS)
2602                         ;;
2603                 *irix*)
2604                         AC_MSG_RESULT(Using IRIX ACLs)
2605                         AC_DEFINE(HAVE_IRIX_ACLS)
2606                         ;;
2607                 *aix*)
2608                         AC_MSG_RESULT(Using AIX ACLs)
2609                         AC_DEFINE(HAVE_AIX_ACLS)
2610                         ;;
2611                 *osf*)
2612                         AC_MSG_RESULT(Using Tru64 ACLs)
2613                         AC_DEFINE(HAVE_TRU64_ACLS)
2614                         LIBS="$LIBS -lpacl"
2615                         ;;
2616                 *)
2617                     AC_CHECK_LIB(acl,acl_get_file)
2618                         AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2619                         AC_TRY_LINK([#include <sys/types.h>
2620 #include <sys/acl.h>],
2621 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2622 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2623                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2624                             AC_MSG_RESULT(Using posix ACLs)
2625                             AC_DEFINE(HAVE_POSIX_ACLS)
2626                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2627                                 AC_TRY_LINK([#include <sys/types.h>
2628 #include <sys/acl.h>],
2629 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2630 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2631                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2632                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2633                                 fi
2634                         fi
2635                         ;;
2636                 esac
2637                 ;;
2638   *)
2639     AC_MSG_RESULT(no)
2640         AC_DEFINE(HAVE_NO_ACLS)
2641     ;;
2642   esac ],
2643   AC_DEFINE(HAVE_NO_ACLS)
2644   AC_MSG_RESULT(no)
2647 #################################################
2648 # check for the historical SAMBA installation
2650 if test "x$prefix" = xNONE -a "$sbindir" = "\${exec_prefix}/sbin"; then
2651         # Put all binaries under the /usr/local/samba/bin directory.
2652         sbindir="$bindir"
2655 #################################################
2656 # check for sendfile support
2658 AC_MSG_CHECKING(whether to check for support sendfile)
2659 AC_ARG_WITH(sendfile-support,
2660 [  --with-sendfile-support      Check for sendfile support (default=no)],
2661 [ case "$withval" in
2662   yes)
2664         AC_MSG_RESULT(yes);
2666         case "$host_os" in
2667         *linux*)
2668                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2669                 AC_TRY_LINK([#include <sys/sendfile.h>],
2671 int tofd, fromfd;
2672 off64_t offset;
2673 size_t total;
2674 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2676 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2678                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2679                 AC_TRY_LINK([#include <sys/sendfile.h>],
2681 int tofd, fromfd;
2682 off_t offset;
2683 size_t total;
2684 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2686 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2688 # Try and cope with broken Linux sendfile....
2689                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2690                 AC_TRY_LINK([\
2691 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2692 #undef _FILE_OFFSET_BITS
2693 #endif
2694 #include <sys/sendfile.h>],
2696 int tofd, fromfd;
2697 off_t offset;
2698 size_t total;
2699 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2701 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2703         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2704                 AC_DEFINE(HAVE_SENDFILE64)
2705                 AC_DEFINE(LINUX_SENDFILE_API)
2706                 AC_DEFINE(WITH_SENDFILE)
2707         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2708                 AC_DEFINE(HAVE_SENDFILE)
2709                 AC_DEFINE(LINUX_SENDFILE_API)
2710                 AC_DEFINE(WITH_SENDFILE)
2711         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2712                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API)
2713                 AC_DEFINE(WITH_SENDFILE)
2714         else
2715                 AC_MSG_RESULT(no);
2716         fi
2718         ;;
2719         *freebsd*)
2720                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2721                 AC_TRY_LINK([\
2722 #include <sys/types.h>
2723 #include <sys/socket.h>
2724 #include <sys/uio.h>],
2726 #define NULL (void *)0
2727         int fromfd, tofd, ret, total;
2728         off_t offset, nwritten;
2729         struct sf_hdtr {
2730                 struct iovec *headers;
2731                 int hdr_cnt;
2732                 struct iovec *trailers;
2733                 int trl_cnt;
2734         } hdr;
2735         struct iovec hdtrl;
2736         hdr.headers = &hdtrl;
2737         hdr.hdr_cnt = 1;
2738         hdr.trailers = NULL;
2739         hdr.trl_cnt = 0;
2740         hdtrl.iov_base = NULL;
2741         hdtrl.iov_len = 0;
2742         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2744 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2746         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2747                 AC_DEFINE(HAVE_SENDFILE)
2748                 AC_DEFINE(FREEBSD_SENDFILE_API)
2749                 AC_DEFINE(WITH_SENDFILE)
2750         else
2751                 AC_MSG_RESULT(no);
2752         fi
2753         ;;
2755         *hpux*)
2756                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2757                 AC_TRY_LINK([\
2758 #include <sys/socket.h>
2759 #include <sys/uio.h>],
2761         int fromfd, tofd;
2762         size_t total=0;
2763         struct iovec hdtrl[2];
2764         ssize_t nwritten;
2765         off64_t offset;
2767         hdtrl[0].iov_base = 0;
2768         hdtrl[0].iov_len = 0;
2770         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2772 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2773         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2774                 AC_DEFINE(HAVE_SENDFILE64)
2775                 AC_DEFINE(HPUX_SENDFILE_API)
2776                 AC_DEFINE(WITH_SENDFILE)
2777         else
2778                 AC_MSG_RESULT(no);
2779         fi
2781                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2782                 AC_TRY_LINK([\
2783 #include <sys/socket.h>
2784 #include <sys/uio.h>],
2786         int fromfd, tofd;
2787         size_t total=0;
2788         struct iovec hdtrl[2];
2789         ssize_t nwritten;
2790         off_t offset;
2792         hdtrl[0].iov_base = 0;
2793         hdtrl[0].iov_len = 0;
2795         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2797 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2798         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2799                 AC_DEFINE(HAVE_SENDFILE)
2800                 AC_DEFINE(HPUX_SENDFILE_API)
2801                 AC_DEFINE(WITH_SENDFILE)
2802         else
2803                 AC_MSG_RESULT(no);
2804         fi
2805         ;;
2807         *solaris*)
2808                 LIBS="$LIBS -lsendfile"
2809                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
2810                 AC_TRY_LINK([\
2811 #include <sys/sendfile.h>],
2813         int sfvcnt;
2814         size_t xferred;
2815         struct sendfilevec vec[2];
2816         ssize_t nwritten;
2817         int tofd;
2819         sfvcnt = 2;
2821         vec[0].sfv_fd = SFV_FD_SELF;
2822         vec[0].sfv_flag = 0;
2823         vec[0].sfv_off = 0;
2824         vec[0].sfv_len = 0;
2826         vec[1].sfv_fd = 0;
2827         vec[1].sfv_flag = 0;
2828         vec[1].sfv_off = 0;
2829         vec[1].sfv_len = 0;
2830         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
2832 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
2834         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
2835                 AC_DEFINE(HAVE_SENDFILEV64)
2836                 AC_DEFINE(SOLARIS_SENDFILE_API)
2837                 AC_DEFINE(WITH_SENDFILE)
2838         else
2839                 AC_MSG_RESULT(no);
2840         fi
2842                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
2843                 AC_TRY_LINK([\
2844 #include <sys/sendfile.h>],
2846         int sfvcnt;
2847         size_t xferred;
2848         struct sendfilevec vec[2];
2849         ssize_t nwritten;
2850         int tofd;
2852         sfvcnt = 2;
2854         vec[0].sfv_fd = SFV_FD_SELF;
2855         vec[0].sfv_flag = 0;
2856         vec[0].sfv_off = 0;
2857         vec[0].sfv_len = 0;
2859         vec[1].sfv_fd = 0;
2860         vec[1].sfv_flag = 0;
2861         vec[1].sfv_off = 0;
2862         vec[1].sfv_len = 0;
2863         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
2865 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
2867         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
2868                 AC_DEFINE(HAVE_SENDFILEV)
2869                 AC_DEFINE(SOLARIS_SENDFILE_API)
2870                 AC_DEFINE(WITH_SENDFILE)
2871         else
2872                 AC_MSG_RESULT(no);
2873         fi
2874         ;;
2876         *)
2877         ;;
2878         esac
2879         ;;
2880   *)
2881     AC_MSG_RESULT(no)
2882     ;;
2883   esac ],
2884   AC_MSG_RESULT(no)
2887 #################################################
2888 # Check whether winbind is supported on this platform.  If so we need to
2889 # build and install client programs (WINBIND_TARGETS), sbin programs
2890 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2892 AC_MSG_CHECKING(whether to build winbind)
2894 # Initially, the value of $host_os decides whether winbind is supported
2896 case "$host_os" in 
2897         *linux*|*irix*)
2898                 HAVE_WINBIND=yes
2899                 ;;
2900         *solaris*)
2901                 HAVE_WINBIND=yes
2902                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2903                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
2904                 ;;
2905         *hpux11*)
2906                 HAVE_WINBIND=yes
2907                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2908                ;;
2909         *aix4*)
2910                 HAVE_WINBIND=yes
2911                 ;;
2912         *)
2913                 HAVE_WINBIND=no
2914                 winbind_no_reason=", unsupported on $host_os"
2915                 ;;
2916 esac
2918 # Check the setting of --with-winbindd
2920 AC_ARG_WITH(winbind,
2921 [  --with-winbind          Build winbind (default, if supported by OS)],
2923   case "$withval" in
2924         yes)
2925                 HAVE_WINBIND=yes
2926                 ;;
2927         no)
2928                 HAVE_WINBIND=no
2929                 winbind_reason=""
2930                 ;;
2931   esac ],
2934 # We need unix domain sockets for winbind
2936 if test x"$HAVE_WINBIND" = x"yes"; then
2937         if test x"$samba_cv_unixsocket" = x"no"; then
2938                 winbind_no_reason=", no unix domain socket support on $host_os"
2939                 HAVE_WINBIND=no
2940         fi
2943 # Display test results
2945 if test x"$HAVE_WINBIND" = x"yes"; then
2947         AC_MSG_RESULT(yes)
2949         AC_MSG_CHECKING(whether to enable winbind auth challenge/response code)
2950         AC_ARG_WITH(winbind-auth-challenge,
2951         [  --with-winbind-auth-challenge   Enable winbindd_pam_auth_crap() functionality (default no)],
2952         [ 
2953           case "$withval" in
2954                 yes)
2955                         AC_DEFINE(WITH_WINBIND_AUTH_CRAP)
2956                         AC_MSG_RESULT(yes)
2957                         ;;
2958                 *)
2959                         AC_MSG_RESULT(no)
2960                         ;;
2961           esac ],
2962           AC_MSG_RESULT(no)
2963         )
2965 # Check for FreeBSD problem with getgroups
2967         WINBIND_TARGETS="bin/wbinfo"
2968         WINBIND_STARGETS="bin/winbindd"
2969         case "$host_os" in
2970         *irix*)
2971                 WINBIND_LTARGETS="nsswitch/libns_winbind.so"
2972                 ;;
2973         *)
2974                 WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
2975                 ;;
2976         esac
2979         case "$with_pam" in
2980                 yes)
2981                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
2982                 ;;
2983         esac
2985 # Check for Horrible winbindd ldap hack.
2987         AC_MSG_CHECKING(whether to enable winbind ldap hack)
2988         AC_ARG_WITH(winbind-ldap-hack,
2989         [  --with-winbind-ldap-hack   Enable winbindd_ldap_hack() functionality (default no)],
2990         [
2991           case "$withval" in
2992                 yes)
2993                         AC_DEFINE(WITH_HORRIBLE_LDAP_NATIVE_MODE_HACK)
2994                         LIBS="$LIBS -lldap";
2995                         AC_MSG_RESULT(yes)
2996                         ;;
2997                 no)
2998                         AC_MSG_RESULT(no)
2999                         ;;
3000           esac ],
3001           AC_MSG_RESULT(no)
3002         )
3004 else
3005         AC_MSG_RESULT(no$winbind_no_reason)
3007         WINBIND_TARGETS=""
3008         WINBIND_STARGETS=""
3009         WINBIND_LTARGETS=""
3010         WINBIND_PAM_TARGETS=""
3014 # Check for FreeBSD problem with getgroups
3015 # It returns EGID too many times in the list of groups
3016 # and causes a security problem
3017 AC_CACHE_CHECK([whether or not getgroups returns EGID too many times],
3018     samba_cv_have_getgroups_too_many_egids,[AC_TRY_RUN([
3019 #include <sys/types.h>
3020 #include <stdio.h>
3022 int main(int argc, char *argv[])
3024   gid_t groups[10];
3025   int n = 10;
3027   n = getgroups(n, &groups);
3028   /* Could actually pass back the number of EGIDs there ... */
3029   exit((n > 1 && groups[0] == getegid() && groups[1] == getegid()) ? 1 : 0);
3031         samba_cv_have_getgroups_too_many_egids=no,samba_cv_have_getgroups_too_many_egids=yes, samba_cv_have_getgroups_too_many_egids=cross)])
3032 if test x"$samba_cv_have_getgroups_too_many_egids" = x"yes"; then
3033     AC_DEFINE(HAVE_GETGROUPS_TOO_MANY_EGIDS)
3036 # Substitution time!
3038 AC_SUBST(WINBIND_TARGETS)
3039 AC_SUBST(WINBIND_STARGETS)
3040 AC_SUBST(WINBIND_LTARGETS)
3041 AC_SUBST(WINBIND_PAM_TARGETS)
3042 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3043 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3045 # Solaris has some extra fields in struct passwd that need to be
3046 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3047 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3048 # this.
3050 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3051 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3052 #               [#include <pwd.h>])
3054 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3055         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3056         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3057 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3058         AC_DEFINE(HAVE_PASSWD_PW_COMMENT)
3061 #AC_CHECK_MEMBER(struct passwd.pw_age,
3062 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3063 #               [#include <pwd.h>])
3065 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3066         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3067         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3068 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3069         AC_DEFINE(HAVE_PASSWD_PW_AGE)
3072 #################################################
3073 # Check to see if we should use the included popt
3075 AC_ARG_WITH(included-popt,
3076 [  --with-included-popt    use bundled popt library, not from system],
3078   case "$withval" in
3079         yes)
3080                 INCLUDED_POPT=yes
3081                 ;;
3082         no)
3083                 INCLUDED_POPT=no
3084                 ;;
3085   esac ],
3087 if test x"$INCLUDED_POPT" != x"yes"; then
3088     AC_CHECK_LIB(popt, poptGetContext,
3089                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3092 AC_MSG_CHECKING(whether to use included popt)
3093 if test x"$INCLUDED_POPT" = x"yes"; then
3094     AC_MSG_RESULT($srcdir/popt)
3095     BUILD_POPT='$(POPT_OBJS)'
3096     FLAGS1="-I$srcdir/popt"
3097 else
3098     AC_MSG_RESULT(no)
3099     LIBS="$LIBS -lpopt"
3101 AC_SUBST(BUILD_POPT)
3102 AC_SUBST(FLAGS1)
3104 #################################################
3105 # final configure stuff
3106 AC_MSG_CHECKING([configure summary])
3107 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3108         AC_MSG_RESULT(yes),
3109         AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3110         AC_MSG_WARN([cannot run when cross-compiling]))
3112 builddir=`pwd`
3113 AC_SUBST(builddir)
3115 AC_OUTPUT(include/stamp-h Makefile script/findsmb)