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