typo on solaris when using GCC
[Samba.git] / source / configure.in
blob9f53932130c121cca6f269e6f1d6f3274d81d9b1
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(include/includes.h)
3 AC_CONFIG_HEADER(include/config.h)
5 #################################################
6 # Directory handling stuff to support both the
7 # legacy SAMBA directories and FHS compliant
8 # ones...
9 AC_PREFIX_DEFAULT(/usr/local/samba)
11 AC_ARG_WITH(fhs, 
12 [  --with-fhs              Use FHS-compliant paths (default=no)],
13     codepagedir="\$(DATADIR)/samba/codepages"
14     configdir="${sysconfdir}/samba"
15     lockdir="\${VARDIR}/cache/samba"
16     piddir="\$(VARDIR)/run/samba"
17     logfilebase="\${VARDIR}/log/samba"
18     privatedir="\${CONFIGDIR}/private"
19     swatdir="\${DATADIR}/samba/swat",
20     codepagedir="\$(LIBDIR)/codepages"
21     configdir="\$(LIBDIR)"
22     logfilebase="\$(VARDIR)"
23     lockdir="\${VARDIR}/locks"
24     piddir="\$(VARDIR)/locks"
25     privatedir="\${prefix}/private"
26     swatdir="\${prefix}/swat")
28 #################################################
29 # set private directory location
30 AC_ARG_WITH(privatedir,
31 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
32 [ case "$withval" in
33   yes|no)
34   #
35   # Just in case anybody calls it without argument
36   #
37     AC_MSG_WARN([--with-privatedir called without argument - will use default])
38   ;;
39   * )
40     privatedir="$withval"
41     ;;
42   esac])
44 #################################################
45 # set lock directory location
46 AC_ARG_WITH(lockdir,
47 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
48 [ case "$withval" in
49   yes|no)
50   #
51   # Just in case anybody calls it without argument
52   #
53     AC_MSG_WARN([--with-lockdir called without argument - will use default])
54   ;;
55   * )
56     lockdir="$withval"
57     ;;
58   esac])
60 #################################################
61 # set pid directory location
62 AC_ARG_WITH(piddir,
63 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
64 [ case "$withval" in
65   yes|no)
66   #
67   # Just in case anybody calls it without argument
68   #
69     AC_MSG_WARN([--with-piddir called without argument - will use default])
70   ;;
71   * )
72     piddir="$withval"
73     ;;
74   esac])
76 #################################################
77 # set SWAT directory location
78 AC_ARG_WITH(swatdir,
79 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
80 [ case "$withval" in
81   yes|no)
82   #
83   # Just in case anybody does it
84   #
85     AC_MSG_WARN([--with-swatdir called without argument - will use default])
86   ;;
87   * )
88     swatdir="$withval"
89     ;;
90   esac])
92 #################################################
93 # set configuration directory location
94 AC_ARG_WITH(configdir,
95 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
96 [ case "$withval" in
97   yes|no)
98   #
99   # Just in case anybody does it
100   #
101     AC_MSG_WARN([--with-configdir called without argument - will use default])
102   ;;
103   * )
104     configdir="$withval"
105     ;;
106   esac])
108 #################################################
109 # set codepage directory location
110 AC_ARG_WITH(codepagedir,
111 [  --with-codepagedir=DIR  Where to put codepage files (\$libdir/codepages)],
112 [ case "$withval" in
113   yes|no)
114   #
115   # Just in case anybody does it
116   #
117     AC_MSG_WARN([--with-codepagedir called without argument - will use default])
118   ;;
119   * )
120     codepagedir="$withval"
121     ;;
122   esac])
124 #################################################
125 # set log directory location
126 AC_ARG_WITH(logfilebase,
127 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
128 [ case "$withval" in
129   yes|no)
130   #
131   # Just in case anybody does it
132   #
133     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
134   ;;
135   * )
136     logfilebase="$withval"
137     ;;
138   esac])
140 AC_SUBST(codepagedir)
141 AC_SUBST(configdir)
142 AC_SUBST(lockdir)
143 AC_SUBST(piddir)
144 AC_SUBST(logfilebase)
145 AC_SUBST(privatedir)
146 AC_SUBST(swatdir)
147 AC_SUBST(bindir)
148 AC_SUBST(sbindir)
150 dnl Unique-to-Samba variables we'll be playing with.
151 AC_SUBST(SHELL)
152 AC_SUBST(RUNPROG)
153 AC_SUBST(MPROGS)
154 AC_SUBST(LDSHFLAGS)
155 AC_SUBST(SONAMEFLAG)
156 AC_SUBST(SHLD) 
157 AC_SUBST(HOST_OS)
158 AC_SUBST(PAM_MOD)
159 AC_SUBST(PDBEDIT)
160 AC_SUBST(WRAP)
161 AC_SUBST(WRAP32)
162 AC_SUBST(WRAPPROG)
163 AC_SUBST(PICFLAG)
164 AC_SUBST(PICSUFFIX)
165 AC_SUBST(SHLIBEXT)
166 AC_SUBST(BLDSHARED)
167 AC_SUBST(LIBSMBCLIENT_SHARED)
168 AC_SUBST(LIBSMBCLIENT)
170 # compile with optimization and without debugging by default
171 CFLAGS="-O ${CFLAGS}"
173 AC_ARG_ENABLE(debug, 
174 [  --enable-debug          Turn on compiler debugging information (default=no)],
175     [if eval "test x$enable_debug = xyes"; then
176         CFLAGS="${CFLAGS} -g"
177     fi])
181 dnl Checks for programs.
182 AC_PROG_CC
183 AC_PROG_INSTALL
184 AC_PROG_AWK
185 AC_PATH_PROG(passwd_program, passwd, /bin/passwd)
186 AC_SUBST(passwd_program)
188 dnl Check if C compiler understands -c and -o at the same time
189 AC_PROG_CC_C_O
190 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
191       BROKEN_CC=
192 else
193       BROKEN_CC=#
195 AC_SUBST(BROKEN_CC)
197 dnl Check if the C compiler understands volatile (it should, being ANSI).
198 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
199     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
200         samba_cv_volatile=yes,samba_cv_volatile=no)])
201 if test x"$samba_cv_volatile" = x"yes"; then
202    AC_DEFINE(HAVE_VOLATILE)
207 AC_CANONICAL_SYSTEM
209 dnl Add #include for broken IRIX header files
210   case "$host_os" in
211         *irix6*) AC_ADD_INCLUDE(<standards.h>)
212         ;;
213 esac
215 AC_VALIDATE_CACHE_SYSTEM_TYPE
217 DYNEXP=
220 # Config CPPFLAG settings for strange OS's that must be set
221 # before other tests.
223 case "$host_os" in
224 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
225     *hpux*)
226       AC_PROG_CC_FLAG(Ae)
227       # mmap on HPUX is completely broken...
228       AC_DEFINE(MMAP_BLACKLIST)
229       if test $ac_cv_prog_cc_Ae = yes; then
230         CPPFLAGS="$CPPFLAGS -Ae"
231       fi
233 # Defines needed for HPUX support.
234 # HPUX has bigcrypt but (sometimes?) doesn't use it for
235 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
237       case `uname -r` in
238                         *9*|*10*)
239                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
240                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
241                                 AC_DEFINE(_HPUX_SOURCE)
242                                 AC_DEFINE(_POSIX_SOURCE)
243                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
244                                 AC_DEFINE(_MAX_ALIGNMENT,4)
245                                 ;;
246                         *11*)
247                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
248                                 AC_DEFINE(_HPUX_SOURCE)
249                                 AC_DEFINE(_POSIX_SOURCE)
250                                 AC_DEFINE(_LARGEFILE64_SOURCE)
251                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
252                                 AC_DEFINE(_MAX_ALIGNMENT,4)
253                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
254                                 ;;
255       esac
256       DYNEXP="-Wl,-E"
257       ;;
261 # CRAY Unicos has broken const handling
262         *unicos*)
263                 AC_MSG_RESULT([disabling const])
264                 CPPFLAGS="$CPPFLAGS -Dconst="
265                 ;;
268 # AIX4.x doesn't even admit to having large
269 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
271     *aix4*)
272           AC_MSG_RESULT([enabling large file support])
273       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
274       AC_DEFINE(_LARGE_FILES)
275       ;;    
277 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
278 # to the existance of large files..
279 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
280 # recommendations on large file support, however it makes the
281 # compile work using gcc 2.7 and 2.8, whereas using the Sun
282 # recommendation makes the compile fail on gcc2.7. JRA.
284         *solaris*)
285                 case `uname -r` in
286                         5.0*|5.1*|5.2*|5.3*|5.5*)
287                                 AC_MSG_RESULT([no large file support])
288                                 ;;
289                         5.*)
290                         AC_MSG_RESULT([enabling large file support])
291                         if test "$ac_cv_prog_gcc" = yes; then
292                                 ${CC-cc} -v >conftest.c 2>&1
293                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
294                                 rm -fr conftest.c
295                                 case "$ac_cv_gcc_compiler_version_number" in
296                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
297                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
298                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
299                                                 ;;
300                                         *)
301                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
302                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
303                                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
304                                                 ;;
305                                 esac
306                         else
307                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
308                                 AC_DEFINE(_LARGEFILE64_SOURCE)
309                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
310                         fi
311                         ;;
312                 esac
313                 ;;
315 # Tests needed for SINIX large file support.
317     *sysv4*)
318       if test $host = mips-sni-sysv4 ; then
319         AC_MSG_CHECKING([for LFS support])
320         old_CPPFLAGS="$CPPFLAGS"
321         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
322         AC_TRY_RUN([
323 #include <unistd.h>
324 main () {
325 #if _LFS64_LARGEFILE == 1
326 exit(0);
327 #else
328 exit(1);
329 #endif
330 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
331         CPPFLAGS="$old_CPPFLAGS"
332         if test x$SINIX_LFS_SUPPORT = xyes ; then
333           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
334           AC_DEFINE(_LARGEFILE64_SOURCE)
335           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
336           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
337           LIBS="`getconf LFS64_LIBS` $LIBS"
338         fi
339       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
340       fi
341     ;;
343 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
345     *linux*)
346         AC_MSG_CHECKING([for LFS support])
347         old_CPPFLAGS="$CPPFLAGS"
348         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
349        AC_TRY_RUN([
350 #include <unistd.h>
351 #include <sys/utsname.h>
352 main() {
353 #if _LFS64_LARGEFILE == 1
354        struct utsname uts;
355        char *release;
356        int major, minor;
358        /* Ensure this is glibc 2.2 or higher */
359 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
360        int libc_major = __GLIBC__;
361        int libc_minor = __GLIBC_MINOR__;
363        if (libc_major < 2)
364               exit(1);
365        if (libc_minor < 2)
366               exit(1);
367 #endif
369        /* Ensure this is kernel 2.4 or higher */
371        uname(&uts);
372        release = uts.release;
373        major = atoi(strsep(&release, "."));
374        minor = atoi(strsep(&release, "."));
376        if (major > 2 || (major == 2 && minor > 3))
377                exit(0);
378        exit(1);
379 #else
380        exit(1);
381 #endif
383 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
384         CPPFLAGS="$old_CPPFLAGS"
385         if test x$LINUX_LFS_SUPPORT = xyes ; then
386           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
387           AC_DEFINE(_LARGEFILE64_SOURCE)
388           AC_DEFINE(_FILE_OFFSET_BITS,64)
389           AC_DEFINE(_GNU_SOURCE)
390         fi
391        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
392                 ;;
394     *hurd*)
395         AC_MSG_CHECKING([for LFS support])
396         old_CPPFLAGS="$CPPFLAGS"
397         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
398         AC_TRY_RUN([
399 #include <unistd.h>
400 main () {
401 #if _LFS64_LARGEFILE == 1
402 exit(0);
403 #else
404 exit(1);
405 #endif
406 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
407         CPPFLAGS="$old_CPPFLAGS"
408         if test x$GLIBC_LFS_SUPPORT = xyes ; then
409           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
410           AC_DEFINE(_LARGEFILE64_SOURCE)
411           AC_DEFINE(_GNU_SOURCE)
412         fi
413       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
414     ;;
416 esac
418 AC_INLINE
419 AC_HEADER_STDC
420 AC_HEADER_DIRENT
421 AC_HEADER_TIME
422 AC_HEADER_SYS_WAIT
423 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
424 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
425 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
426 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
427 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
428 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)
429 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
430 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h)
433 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
434 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
436 case "$host_os" in
437     *hpux*)
438                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
439                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
440                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
441                    AC_DEFINE(HAVE_SHADOW_H)
442                 fi
443         ;;
444 esac
445 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
446 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
447 AC_CHECK_HEADERS(stropts.h poll.h)
448 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
449 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
451 # For experimental utmp support (lastlog on some BSD-like systems)
452 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
454 # For quotas on Veritas VxFS filesystems
455 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
457 # For quotas on Linux XFS filesystems
458 AC_CHECK_HEADERS(linux/xqm.h)
460 AC_CHECK_SIZEOF(int,cross)
461 AC_CHECK_SIZEOF(long,cross)
462 AC_CHECK_SIZEOF(short,cross)
464 AC_C_CONST
465 AC_C_INLINE
466 AC_C_BIGENDIAN
467 AC_C_CHAR_UNSIGNED
469 AC_TYPE_SIGNAL
470 AC_TYPE_UID_T
471 AC_TYPE_MODE_T
472 AC_TYPE_OFF_T
473 AC_TYPE_SIZE_T
474 AC_TYPE_PID_T
475 AC_STRUCT_ST_RDEV
476 AC_DIRENT_D_OFF
477 AC_CHECK_TYPE(ino_t,unsigned)
478 AC_CHECK_TYPE(loff_t,off_t)
479 AC_CHECK_TYPE(offset_t,loff_t)
480 AC_CHECK_TYPE(ssize_t, int)
481 AC_CHECK_TYPE(wchar_t, unsigned short)
483 ############################################
484 # for cups support we need libcups, and a handful of header files
486 AC_ARG_ENABLE(cups,
487 [  --enable-cups           Turn on CUPS support (default=auto)])
489 if test x$enable_cups != xno; then
490         AC_PATH_PROG(CUPS_CONFIG, cups-config)
492         if test "x$CUPS_CONFIG" != x; then
493                 AC_DEFINE(HAVE_CUPS)
494                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
495                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
496                 LIBS="$LIBS `$CUPS_CONFIG --libs`"
497         fi
500 ############################################
501 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code
502 AC_CHECK_FUNCS(dlopen)
503 if test x"$ac_cv_func_dlopen" = x"no"; then
504         AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
505         AC_DEFINE(HAVE_DLOPEN)])
507 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
509 ############################################
510 # check if the compiler can do immediate structures
511 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
512     AC_TRY_COMPILE([
513 #include <stdio.h>],
515         typedef struct {unsigned x;} FOOBAR;
516 #define X_FOOBAR(x) ((FOOBAR) { x })
517 #define FOO_ONE X_FOOBAR(1)
518         FOOBAR f = FOO_ONE;
519         static struct {
520         FOOBAR y;
521         } f2[] = {
522                 {FOO_ONE}
523         };
525         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
526 if test x"$samba_cv_immediate_structures" = x"yes"; then
527    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES)
530 ############################################
531 # check for unix domain sockets
532 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
533     AC_TRY_COMPILE([
534 #include <sys/types.h>
535 #include <stdlib.h>
536 #include <stddef.h>
537 #include <sys/socket.h>
538 #include <sys/un.h>],
540   struct sockaddr_un sunaddr; 
541   sunaddr.sun_family = AF_UNIX;
543         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
544 if test x"$samba_cv_unixsocket" = x"yes"; then
545    AC_DEFINE(HAVE_UNIXSOCKET)
548 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
549     AC_TRY_COMPILE([
550 #include <sys/types.h>
551 #if STDC_HEADERS
552 #include <stdlib.h>
553 #include <stddef.h>
554 #endif
555 #include <sys/socket.h>],[socklen_t i = 0],
556     samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
557 if test x"$samba_cv_socklen_t" = x"yes"; then
558    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
561 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
562     AC_TRY_COMPILE([
563 #include <sys/types.h>
564 #if STDC_HEADERS
565 #include <stdlib.h>
566 #include <stddef.h>
567 #endif
568 #include <signal.h>],[sig_atomic_t i = 0],
569         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
570 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
571    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
574 # stupid headers have the functions but no declaration. grrrr.
575 AC_HAVE_DECL(errno, [#include <errno.h>])
576 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
577 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
578 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
579 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
580 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
581 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
583 # and glibc has setresuid under linux but the function does
584 # nothing until kernel 2.1.44! very dumb.
585 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
586     AC_TRY_RUN([#include <errno.h>
587 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
588         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
589 if test x"$samba_cv_have_setresuid" = x"yes"; then
590     AC_DEFINE(HAVE_SETRESUID)
593 # Do the same check for setresguid...
595 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
596     AC_TRY_RUN([#include <unistd.h>
597 #include <errno.h>
598 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
599         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
600 if test x"$samba_cv_have_setresgid" = x"yes"; then
601     AC_DEFINE(HAVE_SETRESGID)
604 AC_FUNC_MEMCMP
606 ###############################################
607 # Readline included by default unless explicitly asked not to
608 test "${with_readline+set}" != "set" && with_readline=yes
610 # test for where we get readline() from
611 AC_MSG_CHECKING(whether to use readline)
612 AC_ARG_WITH(readline,
613 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto)],
614 [  case "$with_readline" in
615   yes)
616     AC_MSG_RESULT(yes)
618     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
619     AC_CHECK_HEADERS(readline/history.h)
621     AC_CHECK_HEADERS(readline.h readline/readline.h,[
622       for termlib in ncurses curses termcap terminfo termlib; do
623        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
624       done
625       AC_CHECK_LIB(readline, rl_callback_handler_install,
626        [TERMLIBS="-lreadline $TERMLIBS"
627        AC_DEFINE(HAVE_LIBREADLINE)
628        break], [TERMLIBS=], $TERMLIBS)])
629     ;;
630   no)
631     AC_MSG_RESULT(no)
632     ;;
633   *)
634     AC_MSG_RESULT(yes)
636     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
637     # alternate readline path
638     _ldflags=${LDFLAGS}
639     _cppflags=${CPPFLAGS}
641     # Add additional search path
642     LDFLAGS="-L$with_readline/lib $LDFLAGS"
643     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
645     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
646     AC_CHECK_HEADERS(readline/history.h)
648     AC_CHECK_HEADERS(readline.h readline/readline.h,[
649       for termlib in ncurses curses termcap terminfo termlib; do
650        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
651       done
652       AC_CHECK_LIB(readline, rl_callback_handler_install,
653        [TERMLDFLAGS="-L$with_readline/lib"
654        TERMCPPFLAGS="-I$with_readline/include"
655        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
656        TERMLIBS="-lreadline $TERMLIBS"
657        AC_DEFINE(HAVE_LIBREADLINE)
658        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
660     LDFLAGS=$_ldflags
661     ;;
662   esac],
663   AC_MSG_RESULT(no)
665 AC_SUBST(TERMLIBS)
666 AC_SUBST(TERMLDFLAGS)
668 # The following test taken from the cvs sources
669 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
670 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
671 # libsocket.so which has a bad implementation of gethostbyname (it
672 # only looks in /etc/hosts), so we only look for -lsocket if we need
673 # it.
674 AC_CHECK_FUNCS(connect)
675 if test x"$ac_cv_func_connect" = x"no"; then
676     case "$LIBS" in
677     *-lnsl*) ;;
678     *) AC_CHECK_LIB(nsl_s, printf) ;;
679     esac
680     case "$LIBS" in
681     *-lnsl*) ;;
682     *) AC_CHECK_LIB(nsl, printf) ;;
683     esac
684     case "$LIBS" in
685     *-lsocket*) ;;
686     *) AC_CHECK_LIB(socket, connect) ;;
687     esac
688     case "$LIBS" in
689     *-linet*) ;;
690     *) AC_CHECK_LIB(inet, connect) ;;
691     esac
692     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
693     dnl has been cached.
694     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
695        test x"$ac_cv_lib_inet_connect" = x"yes"; then
696         # ac_cv_func_connect=yes
697         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
698         AC_DEFINE(HAVE_CONNECT)
699     fi
702 ###############################################
703 # test for where we get get_yp_default_domain() from
704 AC_CHECK_FUNCS(yp_get_default_domain)
705 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
706         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
707         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
710 # Check if we have execl, if not we need to compile smbrun.
711 AC_CHECK_FUNCS(execl)
712 if test x"$ac_cv_func_execl" = x"no"; then
713     RUNPROG="bin/smbrun"
714 else
715     RUNPROG=""
718 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link)
719 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64)
720 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
721 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
722 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
723 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
724 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
725 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
726 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
727 AC_CHECK_FUNCS(syslog vsyslog)
729 # syscall() is needed for smbwrapper.
730 AC_CHECK_FUNCS(syscall)
732 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
733 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
734 AC_CHECK_FUNCS(__getcwd _getcwd)
735 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
736 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
737 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
738 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
739 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
740 AC_CHECK_FUNCS(_write __write _fork __fork)
741 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
742 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
743 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
744 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
745 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
748 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
751 if test x$ac_cv_func_stat64 = xno ; then
752   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
753   AC_TRY_LINK([
754 #if defined(HAVE_UNISTD_H)
755 #include <unistd.h>
756 #endif
757 #include <sys/stat.h>
758 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
759   AC_MSG_RESULT([$ac_cv_func_stat64])
760   if test x$ac_cv_func_stat64 = xyes ; then
761     AC_DEFINE(HAVE_STAT64)
762   fi
765 if test x$ac_cv_func_lstat64 = xno ; then
766   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
767   AC_TRY_LINK([
768 #if defined(HAVE_UNISTD_H)
769 #include <unistd.h>
770 #endif
771 #include <sys/stat.h>
772 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
773   AC_MSG_RESULT([$ac_cv_func_lstat64])
774   if test x$ac_cv_func_lstat64 = xyes ; then
775     AC_DEFINE(HAVE_LSTAT64)
776   fi
779 if test x$ac_cv_func_fstat64 = xno ; then
780   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
781   AC_TRY_LINK([
782 #if defined(HAVE_UNISTD_H)
783 #include <unistd.h>
784 #endif
785 #include <sys/stat.h>
786 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
787   AC_MSG_RESULT([$ac_cv_func_fstat64])
788   if test x$ac_cv_func_fstat64 = xyes ; then
789     AC_DEFINE(HAVE_FSTAT64)
790   fi
794 # If no strcasecmp, check for it in some known places
795 # It is in -lresolv on ReliantUNIX and UnixWare
796 #   -lresolve *must* follow -lnsl for name resolution to work properly
799 if test x$ac_cv_func_strcasecmp = xno ; then
800         AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
801                 AC_DEFINE(HAVE_STRCASECMP))
805 # Check for the functions putprpwnam, set_auth_parameters,
806 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
807 # Needed for OSF1 and HPUX.
810 AC_LIBTESTFUNC(security, putprpwnam)
811 AC_LIBTESTFUNC(sec, putprpwnam)
813 AC_LIBTESTFUNC(security, set_auth_parameters)
814 AC_LIBTESTFUNC(sec, set_auth_parameters)
816 # UnixWare 7.x has its getspnam in -lgen
817 AC_LIBTESTFUNC(gen, getspnam)
819 AC_LIBTESTFUNC(security, getspnam)
820 AC_LIBTESTFUNC(sec, getspnam)
822 AC_LIBTESTFUNC(security, bigcrypt)
823 AC_LIBTESTFUNC(sec, bigcrypt)
825 AC_LIBTESTFUNC(security, getprpwnam)
826 AC_LIBTESTFUNC(sec, getprpwnam)
828 # this bit needs to be modified for each OS that is suported by
829 # smbwrapper. You need to specify how to created a shared library and
830 # how to compile C code to produce PIC object files
832 # these are the defaults, good for lots of systems
833 HOST_OS="$host_os"
834 LDSHFLAGS="-shared"
835 SONAMEFLAG="#"
836 SHLD="\${CC}" 
837 PICFLAG=""
838 PICSUFFIX="po.o"
839 SHLIBEXT="so"
840 # Assume non-shared by default and override below
841 BLDSHARED="false" 
842 AC_MSG_CHECKING([ability to build shared libraries])
844 # and these are for particular systems
845 case "$host_os" in
846                 *linux*)   AC_DEFINE(LINUX)
847                         BLDSHARED="true"
848                         LDSHFLAGS="-shared"
849                         DYNEXP="-Wl,--export-dynamic"
850                         PICFLAG="-fPIC"
851                         SONAMEFLAG="-Wl,-soname="
852                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
853                         ;;
854                 *solaris*) AC_DEFINE(SUNOS5)
855                         BLDSHARED="true"
856                         LDSHFLAGS="-G"
857                         SONAMEFLAG="-h "
858                         if test "${GCC}" = "yes"; then
859                                 PICFLAG="-fPIC"
860                                 DYNEXP="-Wl,-E"
861                         else
862                                 PICFLAG="-KPIC"
863                                 ## ${CFLAGS} added for building 64-bit shared 
864                                 ## libs using Sun's Compiler
865                                 LDSHFLAGS="-G \${CFLAGS}"
866                                 POBAD_CC=""
867                                 PICSUFFIX="po.o"
868                         fi
869                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
870                 ;;
871                 *sunos*) AC_DEFINE(SUNOS4)
872                         BLDSHARED="true"
873                         LDSHFLAGS="-G"
874                         SONAMEFLAG="-Wl,-h,"
875                         PICFLAG="-KPIC"   # Is this correct for SunOS
876                 ;;
877                 *bsd*)  BLDSHARED="true"
878                         LDSHFLAGS="-shared"
879                         DYNEXP="-Wl,-Bdynamic"
880                         SONAMEFLAG="-Wl,-soname,"
881                         PICFLAG="-fPIC"
882                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
883                 ;;
884                 *irix*) AC_DEFINE(IRIX)
885                         case "$host_os" in
886                         *irix6*) AC_DEFINE(IRIX6)
887                         ;;
888                         esac
889                         ATTEMPT_WRAP32_BUILD=yes
890                         BLDSHARED="true"
891                         LDSHFLAGS="-set_version sgi1.0 -shared"
892                         SONAMEFLAG="-soname "
893                         SHLD="\${LD}" 
894                         if test "${GCC}" = "yes"; then
895                                 PICFLAG="-fPIC"
896                         else 
897                                 PICFLAG="-KPIC"
898                         fi
899                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
900                 ;;
901                 *aix*) AC_DEFINE(AIX)
902                         BLDSHARED="true"
903                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
904                         DYNEXP="-Wl,-brtl,-bexpall"
905                         if test "${GCC}" = "yes"; then
906                                 PICFLAG="-O2"
907                         else
908                                 PICFLAG="-O2 -qmaxmem=6000"
909                         fi
911                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
912                 ;;
913                 *hpux*) AC_DEFINE(HPUX)
914                         SHLIBEXT="sl"
915                         # Use special PIC flags for the native HP-UX compiler.
916                         if test $ac_cv_prog_cc_Ae = yes; then
917                                 BLDSHARED="true"
918                                 SHLD="/usr/bin/ld"
919                                 LDSHFLAGS="-B symbolic -b -z"
920                                 SONAMEFLAG="+h "
921                                 PICFLAG="+z"
922                         fi
923                         DYNEXP="-Wl,-E"
924                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192)
925                         ;;
926                 *qnx*) AC_DEFINE(QNX);;
927                 *osf*) AC_DEFINE(OSF1)
928                         BLDSHARED="true"
929                         LDSHFLAGS="-shared"
930                         SONAMEFLAG="-Wl,-soname,"
931                         PICFLAG="-fPIC"
932                 ;;
933                 *sco*) AC_DEFINE(SCO);;
934                 *unixware*) AC_DEFINE(UNIXWARE)
935                         BLDSHARED="true"
936                         LDSHFLAGS="-shared"
937                         SONAMEFLAG="-Wl,-soname,"
938                         PICFLAG="-KPIC"
939                 ;;
940                 *next2*) AC_DEFINE(NEXT2);;
941                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
942                 *sysv4*)
943                         case "$host" in
944                                 *-univel-*)     if [ test "$GCC" != yes ]; then
945                                                                         AC_DEFINE(HAVE_MEMSET)
946                                                                 fi
947                                                                 LDSHFLAGS="-G"
948                                                                 DYNEXP="-Bexport"
949                                 ;;
950                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
951                         esac
952                         ;;
953                 *sysv5*)
954                         if [ test "$GCC" != yes ]; then
955                                 AC_DEFINE(HAVE_MEMSET)
956                         fi
957                         LDSHFLAGS="-G"
958                         ;;
959 esac
960 AC_SUBST(DYNEXP)
961 AC_MSG_RESULT($BLDSHARED)
962 AC_MSG_CHECKING([linker flags for shared libraries])
963 AC_MSG_RESULT([$LDSHFLAGS])
964 AC_MSG_CHECKING([compiler flags for position-independent code])
965 AC_MSG_RESULT([$PICFLAGS])
967 # try to work out how to produce pic code with this compiler
968 if test x$PICFLAG = x; then
969   AC_PROG_CC_FLAG(fpic)
970   if test $ac_cv_prog_cc_fpic = yes; then
971       PICFLAG="-fpic";
972   fi
974 if test x$PICFLAG = x; then
975   AC_PROG_CC_FLAG(KPIC)
976   if test $ac_cv_prog_cc_KPIC = yes; then
977     PICFLAG="-KPIC";
978   fi
980 if test x$PICFLAG = x; then
981   AC_PROG_CC_FLAG(Kpic)
982   if test $ac_cv_prog_cc_Kpic = yes; then
983     PICFLAG="-Kpic";
984   fi
987 ################
989 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
990 AC_TRY_RUN([#include <stdio.h>
991 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
992 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
993 if test x"$samba_cv_have_longlong" = x"yes"; then
994     AC_DEFINE(HAVE_LONGLONG)
998 # Check if the compiler supports the LL prefix on long long integers.
999 # AIX needs this.
1001 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1002     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1003         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1004 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1005    AC_DEFINE(COMPILER_SUPPORTS_LL)
1008   
1009 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1010 AC_TRY_RUN([#include <stdio.h>
1011 #include <sys/stat.h>
1012 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1013 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1014 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1015     AC_DEFINE(SIZEOF_OFF_T,8)
1018 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1019 AC_TRY_RUN([
1020 #if defined(HAVE_UNISTD_H)
1021 #include <unistd.h>
1022 #endif
1023 #include <stdio.h>
1024 #include <sys/stat.h>
1025 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1026 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1027 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1028     AC_DEFINE(HAVE_OFF64_T)
1031 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1032 AC_TRY_RUN([#include <stdio.h>
1033 #include <sys/stat.h>
1034 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1035 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1036 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1037     AC_DEFINE(SIZEOF_INO_T,8)
1040 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1041 AC_TRY_RUN([
1042 #if defined(HAVE_UNISTD_H)
1043 #include <unistd.h>
1044 #endif
1045 #include <stdio.h>
1046 #include <sys/stat.h>
1047 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1048 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1049 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1050     AC_DEFINE(HAVE_INO64_T)
1053 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1054 AC_TRY_RUN([
1055 #if defined(HAVE_UNISTD_H)
1056 #include <unistd.h>
1057 #endif
1058 #include <stdio.h>
1059 #include <sys/stat.h>
1060 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1061 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1062 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1063     AC_DEFINE(HAVE_DEV64_T)
1066 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1067 AC_TRY_COMPILE([
1068 #if defined(HAVE_UNISTD_H)
1069 #include <unistd.h>
1070 #endif
1071 #include <sys/types.h>
1072 #include <dirent.h>],
1073 [struct dirent64 de;],
1074 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1075 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes"; then
1076     AC_DEFINE(HAVE_STRUCT_DIRENT64)
1079 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1080 AC_TRY_RUN([
1081 #if defined(HAVE_UNISTD_H)
1082 #include <unistd.h>
1083 #endif
1084 #include <sys/types.h>
1085 main() { dev_t dev; int i = major(dev); return 0; }],
1086 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1087 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1088     AC_DEFINE(HAVE_DEVICE_MAJOR_FN)
1091 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1092 AC_TRY_RUN([
1093 #if defined(HAVE_UNISTD_H)
1094 #include <unistd.h>
1095 #endif
1096 #include <sys/types.h>
1097 main() { dev_t dev; int i = minor(dev); return 0; }],
1098 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1099 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1100     AC_DEFINE(HAVE_DEVICE_MINOR_FN)
1103 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV_FN,[
1104 AC_TRY_RUN([
1105 #if defined(HAVE_UNISTD_H)
1106 #include <unistd.h>
1107 #endif
1108 #include <sys/types.h>
1109 main() { dev_t dev = makedev(1,2); return 0; }],
1110 samba_cv_HAVE_MAKEDEV_FN=yes,samba_cv_HAVE_MAKEDEV_FN=no,samba_cv_HAVE_MAKEDEV_FN=cross)])
1111 if test x"$samba_cv_HAVE_MAKEDEV_FN" = x"yes"; then
1112     AC_DEFINE(MAKEDEV_FN)
1115 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1116 AC_TRY_RUN([#include <stdio.h>
1117 main() { char c; c=250; exit((c > 0)?0:1); }],
1118 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1119 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1120     AC_DEFINE(HAVE_UNSIGNED_CHAR)
1123 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1124 AC_TRY_COMPILE([#include <sys/types.h>
1125 #include <sys/socket.h>
1126 #include <netinet/in.h>],
1127 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1128 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1129 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1130     AC_DEFINE(HAVE_SOCK_SIN_LEN)
1133 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1134 AC_TRY_COMPILE([#include <sys/types.h>
1135 #include <dirent.h>
1136 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1137 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1138 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1139     AC_DEFINE(SEEKDIR_RETURNS_VOID)
1142 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
1143 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
1144 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
1145 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
1146     AC_DEFINE(HAVE_FILE_MACRO)
1149 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1150 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1151 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1152 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1153     AC_DEFINE(HAVE_FUNCTION_MACRO)
1156 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1157 AC_TRY_RUN([
1158 #include <sys/time.h>
1159 #include <unistd.h>
1160 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1161            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1162 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1163     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
1166 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1167 AC_TRY_LINK([#include <stdarg.h>
1168 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1169 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1170 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1171     AC_DEFINE(HAVE_VA_COPY)
1174 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1175 AC_TRY_RUN([
1176 #include <sys/types.h>
1177 #include <stdarg.h>
1178 void foo(const char *format, ...) {
1179         va_list ap;
1180         int len;
1181         char buf[5];
1183         va_start(ap, format);
1184         len = vsnprintf(buf, 0, format, ap);
1185         va_end(ap);
1186         if (len != 5) exit(1);
1188         va_start(ap, format);
1189         len = vsnprintf(0, 0, format, ap);
1190         va_end(ap);
1191         if (len != 5) exit(1);
1193         if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1195         exit(0);
1197 main() { foo("hello"); }
1199 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1200 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1201         AC_DEFINE(HAVE_C99_VSNPRINTF)
1204 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1205 AC_TRY_RUN([#include <sys/types.h>
1206 #include <dirent.h>
1207 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1208 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1209 di->d_name[0] == 0) exit(0); exit(1);} ],
1210 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1211 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1212     AC_DEFINE(HAVE_BROKEN_READDIR)
1215 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1216 AC_TRY_COMPILE([#include <sys/types.h>
1217 #include <utime.h>],
1218 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1219 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1220 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1221     AC_DEFINE(HAVE_UTIMBUF)
1224 dnl  utmp and utmpx come in many flavours
1225 dnl  We need to check for many of them
1226 dnl  But we don't need to do each and every one, because our code uses
1227 dnl  mostly just the utmp (not utmpx) fields.
1229 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1231 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1232 AC_TRY_COMPILE([#include <sys/types.h>
1233 #include <utmp.h>],
1234 [struct utmp ut;  ut.ut_name[0] = 'a';],
1235 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1236 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1237     AC_DEFINE(HAVE_UT_UT_NAME)
1238 fi 
1240 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1241 AC_TRY_COMPILE([#include <sys/types.h>
1242 #include <utmp.h>],
1243 [struct utmp ut;  ut.ut_user[0] = 'a';],
1244 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1245 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1246     AC_DEFINE(HAVE_UT_UT_USER)
1247 fi 
1249 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1250 AC_TRY_COMPILE([#include <sys/types.h>
1251 #include <utmp.h>],
1252 [struct utmp ut;  ut.ut_id[0] = 'a';],
1253 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1254 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1255     AC_DEFINE(HAVE_UT_UT_ID)
1256 fi 
1258 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1259 AC_TRY_COMPILE([#include <sys/types.h>
1260 #include <utmp.h>],
1261 [struct utmp ut;  ut.ut_host[0] = 'a';],
1262 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1263 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1264     AC_DEFINE(HAVE_UT_UT_HOST)
1265 fi 
1267 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1268 AC_TRY_COMPILE([#include <sys/types.h>
1269 #include <utmp.h>],
1270 [struct utmp ut;  time_t t; ut.ut_time = t;],
1271 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1272 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1273     AC_DEFINE(HAVE_UT_UT_TIME)
1274 fi 
1276 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1277 AC_TRY_COMPILE([#include <sys/types.h>
1278 #include <utmp.h>],
1279 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1280 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1281 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1282     AC_DEFINE(HAVE_UT_UT_TV)
1283 fi 
1285 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1286 AC_TRY_COMPILE([#include <sys/types.h>
1287 #include <utmp.h>],
1288 [struct utmp ut;  ut.ut_type = 0;],
1289 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1290 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1291     AC_DEFINE(HAVE_UT_UT_TYPE)
1292 fi 
1294 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1295 AC_TRY_COMPILE([#include <sys/types.h>
1296 #include <utmp.h>],
1297 [struct utmp ut;  ut.ut_pid = 0;],
1298 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1299 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1300     AC_DEFINE(HAVE_UT_UT_PID)
1301 fi 
1303 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1304 AC_TRY_COMPILE([#include <sys/types.h>
1305 #include <utmp.h>],
1306 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1307 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1308 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1309     AC_DEFINE(HAVE_UT_UT_EXIT)
1310 fi 
1312 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1313 AC_TRY_COMPILE([#include <sys/types.h>
1314 #include <utmp.h>],
1315 [struct utmp ut;  ut.ut_addr = 0;],
1316 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1317 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1318     AC_DEFINE(HAVE_UT_UT_ADDR)
1319 fi 
1321 if test x$ac_cv_func_pututline = xyes ; then
1322   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1323   AC_TRY_COMPILE([#include <sys/types.h>
1324 #include <utmp.h>],
1325   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1326   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1327   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1328       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
1329   fi
1332 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1333 AC_TRY_COMPILE([#include <sys/types.h>
1334 #include <utmpx.h>],
1335 [struct utmpx ux;  ux.ut_syslen = 0;],
1336 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1337 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1338     AC_DEFINE(HAVE_UX_UT_SYSLEN)
1339 fi 
1341 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1342 AC_TRY_RUN([
1343 #include <sys/types.h>
1344 #include <fcntl.h>
1345 #ifndef F_GETLEASE
1346 #define F_GETLEASE      1025
1347 #endif
1348 main() {
1349        int fd = open("/dev/null", O_RDONLY);
1350        return fcntl(fd, F_GETLEASE, 0) == -1;
1353 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1354 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1355     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1358 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1359 AC_TRY_RUN([
1360 #include <sys/types.h>
1361 #include <fcntl.h>
1362 #include <signal.h>
1363 #ifndef F_NOTIFY
1364 #define F_NOTIFY 1026
1365 #endif
1366 main() {
1367         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1370 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1371 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1372     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1375 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1376 AC_TRY_RUN([
1377 #include <sys/types.h>
1378 #include <fcntl.h>
1379 #include <signal.h>
1380 #include <sys/file.h>
1381 #ifndef LOCK_MAND
1382 #define LOCK_MAND       32
1383 #define LOCK_READ       64
1384 #endif
1385 main() {
1386         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1389 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1390 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1391     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1397 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1398 AC_TRY_COMPILE([#include <sys/types.h>
1399 #include <fcntl.h>],
1400 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1401 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1402 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1403     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1406 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1407 AC_TRY_RUN([#include <sys/types.h>
1408 #include <sys/capability.h>
1409 main() {
1410  cap_t cap;
1411  if ((cap = cap_get_proc()) == NULL)
1412    exit(1);
1413  cap->cap_effective |= CAP_NETWORK_MGT;
1414  cap->cap_inheritable |= CAP_NETWORK_MGT;
1415  cap_set_proc(cap);
1416  exit(0);
1419 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1420 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1421     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1425 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1426 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1429 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1430 AC_TRY_COMPILE([#include <sys/types.h>
1431 #if defined(HAVE_RPC_RPC_H)
1432 #include <rpc/rpc.h>
1433 #endif],
1434 [int16 testvar;],
1435 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1436 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1437     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1440 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1441 AC_TRY_COMPILE([#include <sys/types.h>
1442 #if defined(HAVE_RPC_RPC_H)
1443 #include <rpc/rpc.h>
1444 #endif],
1445 [uint16 testvar;],
1446 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1447 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1448     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1451 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1452 AC_TRY_COMPILE([#include <sys/types.h>
1453 #if defined(HAVE_RPC_RPC_H)
1454 #include <rpc/rpc.h>
1455 #endif],
1456 [int32 testvar;],
1457 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1458 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1459     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1462 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1463 AC_TRY_COMPILE([#include <sys/types.h>
1464 #if defined(HAVE_RPC_RPC_H)
1465 #include <rpc/rpc.h>
1466 #endif],
1467 [uint32 testvar;],
1468 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1469 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1470     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1474 dnl Some systems (SCO) have a problem including
1475 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1476 dnl as a #define in <prot.h> and as part of an enum
1477 dnl in <rpc/rpc.h>.
1480 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1481 AC_TRY_COMPILE([#include <sys/types.h>
1482 #ifdef HAVE_SYS_SECURITY_H
1483 #include <sys/security.h>
1484 #include <prot.h>
1485 #endif  /* HAVE_SYS_SECURITY_H */
1486 #if defined(HAVE_RPC_RPC_H)
1487 #include <rpc/rpc.h>
1488 #endif],
1489 [int testvar;],
1490 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1491 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1492     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1495 AC_MSG_CHECKING([for test routines])
1496 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1497            AC_MSG_RESULT(yes),
1498            AC_MSG_ERROR([cant find test code. Aborting config]),
1499            AC_MSG_WARN([cannot run when cross-compiling]))
1501 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1502 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1503            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1504 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1505     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1508 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1509 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1510            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1511 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1512     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1515 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1516 SAVE_CPPFLAGS="$CPPFLAGS"
1517 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/popt -I${srcdir-.}/ubiqx -I${srcdir-.}/smbwrapper"
1518 AC_TRY_COMPILE([
1519 #define REPLACE_GETPASS 1
1520 #define NO_CONFIG_H 1
1521 #define main dont_declare_main
1522 #include "${srcdir-.}/lib/getsmbpass.c"
1523 #undef main
1524 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1525 CPPFLAGS="$SAVE_CPPFLAGS"
1527 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1528         AC_DEFINE(REPLACE_GETPASS)
1531 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1532 AC_TRY_RUN([
1533 #include <stdio.h>
1534 #include <sys/types.h>
1535 #include <netinet/in.h>
1536 #ifdef HAVE_ARPA_INET_H
1537 #include <arpa/inet.h>
1538 #endif
1539 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1540 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1541     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1542 exit(1);}],
1543            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1544 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1545     AC_DEFINE(REPLACE_INET_NTOA)
1548 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1549 AC_TRY_RUN([#include <stdlib.h>
1550 #include <sys/types.h>
1551 #include <sys/stat.h>
1552 #include <unistd.h>
1553 main() { 
1554   struct stat st;
1555   char tpl[20]="/tmp/test.XXXXXX"; 
1556   int fd = mkstemp(tpl); 
1557   if (fd == -1) exit(1);
1558   unlink(tpl);
1559   if (fstat(fd, &st) != 0) exit(1);
1560   if ((st.st_mode & 0777) != 0600) exit(1);
1561   exit(0);
1563 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1564 samba_cv_HAVE_SECURE_MKSTEMP=no,
1565 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1566 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1567     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1570 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1571 AC_TRY_RUN([#include <unistd.h>
1572 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1573 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1574 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1575     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1578 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1579 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1580            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1581 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1582     AC_DEFINE(HAVE_ROOT)
1583 else
1584     AC_MSG_WARN(running as non-root will disable some tests)
1587 ##################
1588 # look for a method of finding the list of network interfaces
1589 iface=no;
1590 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1591 AC_TRY_RUN([
1592 #define HAVE_IFACE_AIX 1
1593 #define AUTOCONF_TEST 1
1594 #include "confdefs.h"
1595 #include "${srcdir-.}/lib/interfaces.c"],
1596            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1597 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1598     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1601 if test $iface = no; then
1602 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1603 AC_TRY_RUN([
1604 #define HAVE_IFACE_IFCONF 1
1605 #define AUTOCONF_TEST 1
1606 #include "confdefs.h"
1607 #include "${srcdir-.}/lib/interfaces.c"],
1608            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1609 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1610     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1614 if test $iface = no; then
1615 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1616 AC_TRY_RUN([
1617 #define HAVE_IFACE_IFREQ 1
1618 #define AUTOCONF_TEST 1
1619 #include "confdefs.h"
1620 #include "${srcdir-.}/lib/interfaces.c"],
1621            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1622 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1623     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1628 ################################################
1629 # look for a method of setting the effective uid
1630 seteuid=no;
1631 if test $seteuid = no; then
1632 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1633 AC_TRY_RUN([
1634 #define AUTOCONF_TEST 1
1635 #define USE_SETRESUID 1
1636 #include "confdefs.h"
1637 #include "${srcdir-.}/lib/util_sec.c"],
1638            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1639 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1640     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1645 if test $seteuid = no; then
1646 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1647 AC_TRY_RUN([
1648 #define AUTOCONF_TEST 1
1649 #define USE_SETREUID 1
1650 #include "confdefs.h"
1651 #include "${srcdir-.}/lib/util_sec.c"],
1652            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1653 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1654     seteuid=yes;AC_DEFINE(USE_SETREUID)
1658 if test $seteuid = no; then
1659 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1660 AC_TRY_RUN([
1661 #define AUTOCONF_TEST 1
1662 #define USE_SETEUID 1
1663 #include "confdefs.h"
1664 #include "${srcdir-.}/lib/util_sec.c"],
1665            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1666 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1667     seteuid=yes;AC_DEFINE(USE_SETEUID)
1671 if test $seteuid = no; then
1672 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1673 AC_TRY_RUN([
1674 #define AUTOCONF_TEST 1
1675 #define USE_SETUIDX 1
1676 #include "confdefs.h"
1677 #include "${srcdir-.}/lib/util_sec.c"],
1678            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1679 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1680     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1685 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1686 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1687            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1688 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1689     AC_DEFINE(HAVE_MMAP)
1692 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1693 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1694            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1695 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1696     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1699 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1700 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1701            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1702 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1703     AC_DEFINE(HAVE_FCNTL_LOCK)
1706 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1707 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1708            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1709 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1710     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1712 else
1715 dnl Don't check for 64 bit fcntl locking if we know that the
1716 dnl glibc2.1 broken check has succeeded.
1717 dnl 
1719   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1720   AC_TRY_RUN([
1721 #if defined(HAVE_UNISTD_H)
1722 #include <unistd.h>
1723 #endif
1724 #include <stdio.h>
1725 #include <stdlib.h>
1727 #ifdef HAVE_FCNTL_H
1728 #include <fcntl.h>
1729 #endif
1731 #ifdef HAVE_SYS_FCNTL_H
1732 #include <sys/fcntl.h>
1733 #endif
1734 main() { struct flock64 fl64;
1735 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1736 exit(0);
1737 #else
1738 exit(1);
1739 #endif
1741        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1743   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1744       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1745   fi
1748 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1749 AC_TRY_COMPILE([#include <sys/types.h>
1750 #include <sys/stat.h>
1751 #include <unistd.h>],
1752 [struct stat st;  st.st_blocks = 0;],
1753 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1754 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1755     AC_DEFINE(HAVE_STAT_ST_BLOCKS)
1756 fi 
1758 case "$host_os" in
1759 *linux*)
1760 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1761 AC_TRY_COMPILE([
1762 #ifdef HAVE_SYS_VFS_H
1763 #include <sys/vfs.h>
1764 #endif
1765 #ifdef HAVE_SYS_CAPABILITY_H
1766 #include <sys/capability.h>
1767 #endif
1768 ],[int i;],
1769    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1770 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1771    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS)
1774 esac
1776 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1777 AC_TRY_COMPILE([#include <sys/acl.h>
1778 #if defined(HAVE_RPCSVC_NIS_H)
1779 #include <rpcsvc/nis.h>
1780 #endif],
1781 [int i;],
1782 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1783 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1784     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1788 #################################################
1789 # check for smbwrapper support
1790 AC_MSG_CHECKING(whether to use smbwrapper)
1791 AC_ARG_WITH(smbwrapper,
1792 [  --with-smbwrapper       Include SMB wrapper support (default=no)],
1793 [ case "$withval" in
1794   yes)
1795     AC_MSG_RESULT(yes)
1796     AC_DEFINE(WITH_SMBWRAPPER)
1797         WRAPPROG="bin/smbsh"
1798         WRAP="bin/smbwrapper.$SHLIBEXT"
1800         if test x$ATTEMPT_WRAP32_BUILD = x; then
1801                 WRAP32=""
1802         else
1803                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1804         fi
1806 # Conditions under which smbwrapper should not be built.
1808         if test x$PICFLAG = x; then
1809            echo No support for PIC code - disabling smbwrapper and smbsh
1810            WRAPPROG=""
1811            WRAP=""
1812            WRAP32=""
1813         elif test x$ac_cv_func_syscall = xno; then
1814            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1815            WRAPPROG=""
1816            WRAP=""
1817            WRAP32=""
1818         fi
1819     ;;
1820   *)
1821     AC_MSG_RESULT(no)
1822     ;;
1823   esac ],
1824   AC_MSG_RESULT(no)
1827 #################################################
1828 # check for the AFS filesystem
1829 AC_MSG_CHECKING(whether to use AFS)
1830 AC_ARG_WITH(afs,
1831 [  --with-afs              Include AFS support (default=no)],
1832 [ case "$withval" in
1833   yes)
1834     AC_MSG_RESULT(yes)
1835     AC_DEFINE(WITH_AFS)
1836     ;;
1837   *)
1838     AC_MSG_RESULT(no)
1839     ;;
1840   esac ],
1841   AC_MSG_RESULT(no)
1845 #################################################
1846 # check for the DFS auth system
1847 AC_MSG_CHECKING(whether to use DCE/DFS auth)
1848 AC_ARG_WITH(dfs,
1849 [  --with-dce-dfs          Include DCE/DFS support (default=no)],
1850 [ case "$withval" in
1851   yes)
1852     AC_MSG_RESULT(yes)
1853     AC_DEFINE(WITH_DFS)
1854     ;;
1855   *)
1856     AC_MSG_RESULT(no)
1857     ;;
1858   esac ],
1859   AC_MSG_RESULT(no)
1862 #################################################
1863 # check for Kerberos IV auth system
1864 AC_MSG_CHECKING(whether to use Kerberos IV)
1865 AC_ARG_WITH(krb4,
1866 [  --with-krb4=base-dir    Include Kerberos IV support (default=no)],
1867 [ case "$withval" in
1868   yes)
1869     AC_MSG_RESULT(yes)
1870     AC_DEFINE(KRB4_AUTH)
1871     AC_CHECK_LIB(resolv, dn_expand)
1872     LIBS="$LIBS -lkrb -ldes"
1873     CFLAGS="$CFLAGS -I$withval/include"
1874     LDFLAGS="$LDFLAGS -L$withval/lib"
1875     ;;
1876   *)
1877     AC_MSG_RESULT(no)
1878     ;;
1879   esac ],
1880   AC_MSG_RESULT(no)
1883 #################################################
1884 # check for Kerberos 5 auth system
1885 AC_MSG_CHECKING(whether to use Kerberos 5)
1886 AC_ARG_WITH(krb5,
1887 [  --with-krb5=base-dir    Include Kerberos 5 support (default=no)],
1888 [ case "$withval" in
1889   yes)
1890     AC_MSG_RESULT(yes)
1891     AC_DEFINE(KRB5_AUTH)
1892     LIBS="$LIBS -ldes425 -lkrb5 -lcrypto -lcom_err"
1893     CFLAGS="$CFLAGS -I$withval/include"
1894     LDFLAGS="$LDFLAGS -L$withval/lib"
1895     ;;
1896   *)
1897     AC_MSG_RESULT(no)
1898     ;;
1899   esac ],
1900   AC_MSG_RESULT(no)
1903 #################################################
1904 # check for automount support
1905 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1906 AC_ARG_WITH(automount,
1907 [  --with-automount        Include AUTOMOUNT support (default=no)],
1908 [ case "$withval" in
1909   yes)
1910     AC_MSG_RESULT(yes)
1911     AC_DEFINE(WITH_AUTOMOUNT)
1912     ;;
1913   *)
1914     AC_MSG_RESULT(no)
1915     ;;
1916   esac ],
1917   AC_MSG_RESULT(no)
1920 #################################################
1921 # check for smbmount support
1922 AC_MSG_CHECKING(whether to use SMBMOUNT)
1923 AC_ARG_WITH(smbmount,
1924 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
1925 [ case "$withval" in
1926   yes)
1927         case "$host_os" in
1928         *linux*)
1929                 AC_MSG_RESULT(yes)
1930                 AC_DEFINE(WITH_SMBMOUNT)
1931                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
1932                 ;;
1933         *)
1934                 AC_MSG_ERROR(not on a linux system!)
1935                 ;;
1936         esac
1937     ;;
1938   *)
1939     AC_MSG_RESULT(no)
1940     MPROGS=
1941     ;;
1942   esac ],
1943   AC_MSG_RESULT(no)
1944   MPROGS=
1948 #################################################
1949 # check for a PAM password database
1950 with_pam_for_crypt=no
1951 AC_MSG_CHECKING(whether to use PAM password database)
1952 AC_ARG_WITH(pam,
1953 [  --with-pam              Include PAM password database support (default=no)],
1954 [ case "$withval" in
1955   yes)
1956     AC_MSG_RESULT(yes)
1957     AC_DEFINE(WITH_PAM)
1958     LIBS="$LIBS -lpam"
1959     with_pam_for_crypt=yes
1960     ;;
1961   *)
1962     AC_MSG_RESULT(no)
1963     ;;
1964   esac ],
1965   AC_MSG_RESULT(no)
1968 # we can't build a pam module if we don't have pam.
1969 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
1971 #################################################
1972 # check for pam_smbpass support
1973 AC_MSG_CHECKING(whether to use pam_smbpass)
1974 AC_ARG_WITH(pam_smbpass,
1975 [  --with-pam_smbpass      Include the smbpass PAM module (default=no)],
1976 [ case "$withval" in
1977   yes)
1978     AC_MSG_RESULT(yes)
1980 # Conditions under which pam_smbpass should not be built.
1982        if test x$PICFLAG = x; then
1983           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
1984           PAM_MOD=""
1985        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
1986           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
1987           PAM_MOD=""
1988        else
1989           AC_DEFINE(WITH_PAM_SMBPASS)
1990           PAM_MOD="bin/pam_smbpass.so"
1991        fi
1992     ;;
1993   *)
1994     AC_MSG_RESULT(no)
1995     ;;
1996   esac ],
1997   AC_MSG_RESULT(no)
2001 ###############################################
2002 # test for where we get crypt() from, but only
2003 # if not using PAM
2004 if test $with_pam_for_crypt = no; then
2005 AC_CHECK_FUNCS(crypt)
2006 if test x"$ac_cv_func_crypt" = x"no"; then
2007     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
2008         AC_DEFINE(HAVE_CRYPT)])
2013 ## moved after the check for -lcrypt in order to
2014 ## ensure that the necessary libraries are included
2015 ## check checking for truncated salt.  Wrapped by the
2016 ## $with_pam_for_crypt variable as above   --jerry
2018 if test $with_pam_for_crypt = no; then
2019 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2020 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2021         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
2022 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2023         AC_DEFINE(HAVE_TRUNCATED_SALT)
2028 ########################################################################################
2030 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2032 ########################################################################################
2034 ## set the with_smbpasswd_sam as the default
2035 with_smbpasswd_sam=yes
2039 #################################################
2040 # check for a TDB password database
2041 AC_MSG_CHECKING(whether to use TDB SAM database)
2042 AC_ARG_WITH(tdbsam,
2043 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2044 [ case "$withval" in
2045   yes)
2046     AC_MSG_RESULT(yes)
2047     AC_DEFINE(WITH_TDB_SAM)
2048     with_smbpasswd_sam=no
2049     ;;
2050   *)
2051     AC_MSG_RESULT(no)
2052     ;;
2053   esac ],
2054   AC_MSG_RESULT(no)
2057 #################################################
2058 # check for a LDAP password database
2059 AC_MSG_CHECKING(whether to use LDAP SAM database)
2060 AC_ARG_WITH(ldapsam,
2061 [  --with-ldapsam          Include experimental LDAP SAM support (default=no)],
2062 [ case "$withval" in
2063   yes)
2064     AC_MSG_RESULT(yes)
2065     AC_DEFINE(WITH_LDAP_SAM)
2066     LIBS="-lldap -llber -lresolv $LIBS"
2067     with_smbpasswd_sam=no
2068     ;;
2069   *)
2070     AC_MSG_RESULT(no)
2071     ;;
2072   esac ],
2073   AC_MSG_RESULT(no)
2076 #################################################
2077 # check for a NISPLUS password database
2078 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2079 AC_ARG_WITH(nisplussam,
2080 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2081 [ case "$withval" in
2082   yes)
2083     AC_MSG_RESULT(yes)
2084     AC_DEFINE(WITH_NISPLUS_SAM)
2085     with_smbpasswd_sam=no
2086     ;;
2087   *)
2088     AC_MSG_RESULT(no)
2089     ;;
2090   esac ],
2091   AC_MSG_RESULT(no)
2094 ################################################
2095 # This test should come last because the
2096 # smbpasswd SAM is only used if another format
2097 # has not been defined
2098 AC_MSG_CHECKING(whether to use traditional smbpasswd file)
2099 if test $with_smbpasswd_sam = yes; then
2100         AC_MSG_RESULT(yes)
2101         AC_DEFINE(WITH_SMBPASSWD_SAM)
2102         PDBEDIT=""
2103 else
2104         AC_MSG_RESULT(no)
2105         PDBEDIT=bin/pdbedit
2108 ########################################################################################
2110 ## END OF TESTS FOR SAM BACKENDS.  
2112 ########################################################################################
2114 #################################################
2115 # check for a NISPLUS_HOME support 
2116 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2117 AC_ARG_WITH(nisplus-home,
2118 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2119 [ case "$withval" in
2120   yes)
2121     AC_MSG_RESULT(yes)
2122     AC_DEFINE(WITH_NISPLUS_HOME)
2123     ;;
2124   *)
2125     AC_MSG_RESULT(no)
2126     ;;
2127   esac ],
2128   AC_MSG_RESULT(no)
2131 #################################################
2132 # check for the secure socket layer
2133 AC_MSG_CHECKING(whether to use SSL)
2134 AC_ARG_WITH(ssl,
2135 [  --with-ssl              Include SSL support (default=no)
2136   --with-sslinc=DIR          Where the SSL includes are (defaults to /usr/local/ssl/include)
2137   --with-ssllib=DIR          Where the SSL libraries are (defaults to /usr/local/ssl/lib)],
2138 [ case "$withval" in
2139   yes)
2140     AC_MSG_RESULT(yes)
2141     AC_DEFINE(WITH_SSL)
2142     withval="/usr/local/ssl"     # default
2144     if test "${with_sslinc+set}" = set; then
2146         withval="$with_sslinc"
2147         case "$withval" in
2148         yes|no)
2149           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
2150           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
2151         ;;
2152         * )
2153           CFLAGS="-I${withval} $CFLAGS"
2154         ;;
2155         esac
2157     else
2159         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
2161     fi
2163     if test "${with_ssllib+set}" = set; then
2165         withval="$with_ssllib"
2166         case "$withval" in
2167         yes|no)
2168           echo "configure: warning: --with-ssllib called without argument - will use default" 1>&w
2169           LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2170         ;;
2171         * )
2172           LDFLAGS="-L${withval}/lib $LDFLAGS"
2173         ;;
2174         esac
2176     else
2178         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
2180     fi
2182     LIBS="-lssl -lcrypto $LIBS"
2184 #    if test ! -d ${withval}; then
2185 #      echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
2186 #      exit 1
2187 #    fi 
2189     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
2191     ;;
2192   *)
2193     AC_MSG_RESULT(no)
2194     ;;
2195   esac ],
2196   AC_MSG_RESULT(no)
2199 #################################################
2200 # check for syslog logging
2201 AC_MSG_CHECKING(whether to use syslog logging)
2202 AC_ARG_WITH(syslog,
2203 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2204 [ case "$withval" in
2205   yes)
2206     AC_MSG_RESULT(yes)
2207     AC_DEFINE(WITH_SYSLOG)
2208     ;;
2209   *)
2210     AC_MSG_RESULT(no)
2211     ;;
2212   esac ],
2213   AC_MSG_RESULT(no)
2216 #################################################
2217 # check for a shared memory profiling support
2218 AC_MSG_CHECKING(whether to use profiling)
2219 AC_ARG_WITH(profiling-data,
2220 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2221 [ case "$withval" in
2222   yes)
2223     AC_MSG_RESULT(yes)
2224     AC_DEFINE(WITH_PROFILE)
2225     ;;
2226   *)
2227     AC_MSG_RESULT(no)
2228     ;;
2229   esac ],
2230   AC_MSG_RESULT(no)
2234 #################################################
2235 # check for experimental disk-quotas support
2236 QUOTAOBJS=smbd/noquotas.o
2238 AC_MSG_CHECKING(whether to support disk-quotas)
2239 AC_ARG_WITH(quotas,
2240 [  --with-quotas           Include experimental disk-quota support (default=no)],
2241 [ case "$withval" in
2242   yes)
2243     AC_MSG_RESULT(yes)
2244     QUOTAOBJS=smbd/quotas.o
2245     case "$host_os" in
2246       *linux*)
2247         # Check for kernel 2.4.x quota braindamage...
2248         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2249         AC_TRY_COMPILE([#include <stdio.h>
2250 #include <sys/types.h>
2251 #include <asm/types.h>
2252 #include <linux/quota.h>
2253 #include <mntent.h>
2254 #include <linux/unistd.h>],[struct mem_dqblk D;],
2255         samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2256 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2257         AC_DEFINE(LINUX_QUOTAS_2)
2258 else
2259         AC_DEFINE(LINUX_QUOTAS_1)
2261         ;;
2262       *)
2263         ;;
2264     esac
2265     ;;
2266   *)
2267     AC_MSG_RESULT(no)
2268     ;;
2269   esac ],
2270   AC_MSG_RESULT(no)
2272 AC_SUBST(QUOTAOBJS)
2274 #################################################
2275 # check for experimental utmp accounting
2277 AC_MSG_CHECKING(whether to support utmp accounting)
2278 AC_ARG_WITH(utmp,
2279 [  --with-utmp             Include experimental utmp accounting (default=no)],
2280 [ case "$withval" in
2281   yes)
2282     AC_MSG_RESULT(yes)
2283     AC_DEFINE(WITH_UTMP)
2284     ;;
2285   *)
2286     AC_MSG_RESULT(no)
2287     ;;
2288   esac ],
2289   AC_MSG_RESULT(no)
2292 #################################################
2293 # check for MS Dfs support
2295 AC_MSG_CHECKING(whether to support Microsoft Dfs)
2296 AC_ARG_WITH(msdfs,
2297 [  --with-msdfs            Include MS Dfs support (default=no)],
2298 [ case "$withval" in
2299   yes)
2300      AC_MSG_RESULT(yes)
2301      AC_DEFINE(WITH_MSDFS)
2302      ;;
2303   *)
2304     AC_MSG_RESULT(no)
2305     ;;
2306   esac ],
2307   AC_MSG_RESULT(no)
2310 #################################################
2311 # should we build libsmbclient?
2313 LIBSMBCLIENT_SHARED=
2314 LIBSMBCLIENT=
2315 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2316 AC_ARG_WITH(libsmbclient,
2317 [  --with-libsmbclient     Build the libsmbclient shared library (default=no)],
2318 [ case "$withval" in
2319   yes)
2320      if test $BLDSHARED = true; then
2321         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2322         LIBSMBCLIENT=libsmbclient
2323         AC_MSG_RESULT(yes)
2324      else
2325         AC_MSG_RESULT(no shared library support)
2326      fi
2327      ;;
2328   *)
2329     AC_MSG_RESULT(no)
2330     ;;
2331   esac ],
2332   AC_MSG_RESULT(no)
2335 #################################################
2336 # these tests are taken from the GNU fileutils package
2337 AC_CHECKING(how to get filesystem space usage)
2338 space=no
2340 # Test for statvfs64.
2341 if test $space = no; then
2342   # SVR4
2343   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2344   [AC_TRY_RUN([
2345 #if defined(HAVE_UNISTD_H)
2346 #include <unistd.h>
2347 #endif
2348 #include <sys/types.h>
2349 #include <sys/statvfs.h>
2350   main ()
2351   {
2352     struct statvfs64 fsd;
2353     exit (statvfs64 (".", &fsd));
2354   }],
2355   fu_cv_sys_stat_statvfs64=yes,
2356   fu_cv_sys_stat_statvfs64=no,
2357   fu_cv_sys_stat_statvfs64=cross)])
2358   if test $fu_cv_sys_stat_statvfs64 = yes; then
2359     space=yes
2360     AC_DEFINE(STAT_STATVFS64)
2361   fi
2364 # Perform only the link test since it seems there are no variants of the
2365 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2366 # because that got a false positive on SCO OSR5.  Adding the declaration
2367 # of a `struct statvfs' causes this test to fail (as it should) on such
2368 # systems.  That system is reported to work fine with STAT_STATFS4 which
2369 # is what it gets when this test fails.
2370 if test $space = no; then
2371   # SVR4
2372   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2373                  [AC_TRY_LINK([#include <sys/types.h>
2374 #include <sys/statvfs.h>],
2375                               [struct statvfs fsd; statvfs (0, &fsd);],
2376                               fu_cv_sys_stat_statvfs=yes,
2377                               fu_cv_sys_stat_statvfs=no)])
2378   if test $fu_cv_sys_stat_statvfs = yes; then
2379     space=yes
2380     AC_DEFINE(STAT_STATVFS)
2381   fi
2384 if test $space = no; then
2385   # DEC Alpha running OSF/1
2386   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2387   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2388   [AC_TRY_RUN([
2389 #include <sys/param.h>
2390 #include <sys/types.h>
2391 #include <sys/mount.h>
2392   main ()
2393   {
2394     struct statfs fsd;
2395     fsd.f_fsize = 0;
2396     exit (statfs (".", &fsd, sizeof (struct statfs)));
2397   }],
2398   fu_cv_sys_stat_statfs3_osf1=yes,
2399   fu_cv_sys_stat_statfs3_osf1=no,
2400   fu_cv_sys_stat_statfs3_osf1=no)])
2401   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2402   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2403     space=yes
2404     AC_DEFINE(STAT_STATFS3_OSF1)
2405   fi
2408 if test $space = no; then
2409 # AIX
2410   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2411 member (AIX, 4.3BSD)])
2412   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2413   [AC_TRY_RUN([
2414 #ifdef HAVE_SYS_PARAM_H
2415 #include <sys/param.h>
2416 #endif
2417 #ifdef HAVE_SYS_MOUNT_H
2418 #include <sys/mount.h>
2419 #endif
2420 #ifdef HAVE_SYS_VFS_H
2421 #include <sys/vfs.h>
2422 #endif
2423   main ()
2424   {
2425   struct statfs fsd;
2426   fsd.f_bsize = 0;
2427   exit (statfs (".", &fsd));
2428   }],
2429   fu_cv_sys_stat_statfs2_bsize=yes,
2430   fu_cv_sys_stat_statfs2_bsize=no,
2431   fu_cv_sys_stat_statfs2_bsize=no)])
2432   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2433   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2434     space=yes
2435     AC_DEFINE(STAT_STATFS2_BSIZE)
2436   fi
2439 if test $space = no; then
2440 # SVR3
2441   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2442   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2443   [AC_TRY_RUN([#include <sys/types.h>
2444 #include <sys/statfs.h>
2445   main ()
2446   {
2447   struct statfs fsd;
2448   exit (statfs (".", &fsd, sizeof fsd, 0));
2449   }],
2450     fu_cv_sys_stat_statfs4=yes,
2451     fu_cv_sys_stat_statfs4=no,
2452     fu_cv_sys_stat_statfs4=no)])
2453   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2454   if test $fu_cv_sys_stat_statfs4 = yes; then
2455     space=yes
2456     AC_DEFINE(STAT_STATFS4)
2457   fi
2460 if test $space = no; then
2461 # 4.4BSD and NetBSD
2462   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2463 member (4.4BSD and NetBSD)])
2464   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2465   [AC_TRY_RUN([#include <sys/types.h>
2466 #ifdef HAVE_SYS_PARAM_H
2467 #include <sys/param.h>
2468 #endif
2469 #ifdef HAVE_SYS_MOUNT_H
2470 #include <sys/mount.h>
2471 #endif
2472   main ()
2473   {
2474   struct statfs fsd;
2475   fsd.f_fsize = 0;
2476   exit (statfs (".", &fsd));
2477   }],
2478   fu_cv_sys_stat_statfs2_fsize=yes,
2479   fu_cv_sys_stat_statfs2_fsize=no,
2480   fu_cv_sys_stat_statfs2_fsize=no)])
2481   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2482   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2483     space=yes
2484     AC_DEFINE(STAT_STATFS2_FSIZE)
2485   fi
2488 if test $space = no; then
2489   # Ultrix
2490   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2491   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2492   [AC_TRY_RUN([#include <sys/types.h>
2493 #ifdef HAVE_SYS_PARAM_H
2494 #include <sys/param.h>
2495 #endif
2496 #ifdef HAVE_SYS_MOUNT_H
2497 #include <sys/mount.h>
2498 #endif
2499 #ifdef HAVE_SYS_FS_TYPES_H
2500 #include <sys/fs_types.h>
2501 #endif
2502   main ()
2503   {
2504   struct fs_data fsd;
2505   /* Ultrix's statfs returns 1 for success,
2506      0 for not mounted, -1 for failure.  */
2507   exit (statfs (".", &fsd) != 1);
2508   }],
2509   fu_cv_sys_stat_fs_data=yes,
2510   fu_cv_sys_stat_fs_data=no,
2511   fu_cv_sys_stat_fs_data=no)])
2512   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2513   if test $fu_cv_sys_stat_fs_data = yes; then
2514     space=yes
2515     AC_DEFINE(STAT_STATFS2_FS_DATA)
2516   fi
2520 # As a gating factor for large file support, in order to
2521 # use <4GB files we must have the following minimal support
2522 # available.
2523 # long long, and a 64 bit off_t or off64_t.
2524 # If we don't have all of these then disable large
2525 # file support.
2527 AC_MSG_CHECKING(if large file support can be enabled)
2528 AC_TRY_COMPILE([
2529 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2530 #include <sys/types.h>
2531 #else
2532 __COMPILE_ERROR_
2533 #endif
2535 [int i],
2536 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2537 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2538     AC_MSG_RESULT(yes)
2539     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2540 else
2541     AC_MSG_RESULT(no)
2544 AC_ARG_WITH(spinlocks, 
2545 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no)])
2546 if test "x$with_spinlocks" = "xyes"; then
2547     AC_DEFINE(USE_SPINLOCKS)
2549     case "$host_cpu" in
2550         sparc)
2551             AC_DEFINE(SPARC_SPINLOCKS)
2552             ;;
2554         i386|i486|i586|i686)
2555             AC_DEFINE(INTEL_SPINLOCKS)
2556             ;;
2558         mips)
2559             AC_DEFINE(MIPS_SPINLOCKS)
2560             ;;
2562         powerpc)
2563             AC_DEFINE(POWERPC_SPINLOCKS)
2564             ;;
2565     esac
2568 #################################################
2569 # check for ACL support
2571 AC_MSG_CHECKING(whether to support ACLs)
2572 AC_ARG_WITH(acl-support,
2573 [  --with-acl-support      Include ACL support (default=no)],
2574 [ case "$withval" in
2575   yes)
2577                 case "$host_os" in
2578                 *sysv5*)
2579                         AC_MSG_RESULT(Using UnixWare ACLs)
2580                         AC_DEFINE(HAVE_UNIXWARE_ACLS)
2581                         ;;
2582                 *solaris*)
2583                         AC_MSG_RESULT(Using solaris ACLs)
2584                         AC_DEFINE(HAVE_SOLARIS_ACLS)
2585                         ;;
2586                 *hpux*)
2587                         AC_MSG_RESULT(Using HPUX ACLs)
2588                         AC_DEFINE(HAVE_HPUX_ACLS)
2589                         ;;
2590                 *irix*)
2591                         AC_MSG_RESULT(Using IRIX ACLs)
2592                         AC_DEFINE(HAVE_IRIX_ACLS)
2593                         ;;
2594                 *aix*)
2595                         AC_MSG_RESULT(Using AIX ACLs)
2596                         AC_DEFINE(HAVE_AIX_ACLS)
2597                         ;;
2598                 *osf*)
2599                         AC_MSG_RESULT(Using Tru64 ACLs)
2600                         AC_DEFINE(HAVE_TRU64_ACLS)
2601                         LIBS="$LIBS -lpacl"
2602                         ;;
2603                 *)
2604                     AC_CHECK_LIB(acl,acl_get_file)
2605                         AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2606                         AC_TRY_LINK([#include <sys/types.h>
2607 #include <sys/acl.h>],
2608 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2609 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2610                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2611                             AC_MSG_RESULT(Using posix ACLs)
2612                             AC_DEFINE(HAVE_POSIX_ACLS)
2613                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2614                                 AC_TRY_LINK([#include <sys/types.h>
2615 #include <sys/acl.h>],
2616 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2617 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2618                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2619                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2620                                 fi
2621                         fi
2622                         ;;
2623                 esac
2624                 ;;
2625   *)
2626     AC_MSG_RESULT(no)
2627         AC_DEFINE(HAVE_NO_ACLS)
2628     ;;
2629   esac ],
2630   AC_DEFINE(HAVE_NO_ACLS)
2631   AC_MSG_RESULT(no)
2634 #################################################
2635 # check for the historical SAMBA installation
2637 if test "x$prefix" = xNONE -a "$sbindir" = "\${exec_prefix}/sbin"; then
2638         # Put all binaries under the /usr/local/samba/bin directory.
2639         sbindir="$bindir"
2642 #################################################
2643 # Check whether winbind is supported on this platform.  If so we need to
2644 # build and install client programs (WINBIND_TARGETS), sbin programs
2645 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2647 AC_MSG_CHECKING(whether to build winbind)
2649 # Initially, the value of $host_os decides whether winbind is supported
2651 case "$host_os" in 
2652         *linux*|*irix*)
2653                 HAVE_WINBIND=yes
2654                 ;;
2655         *solaris*)
2656                 HAVE_WINBIND=yes
2657                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2658                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
2659                 ;;
2660         *hpux11*)
2661                 HAVE_WINBIND=yes
2662                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2663                ;;
2664         *aix4*)
2665                 HAVE_WINBIND=yes
2666                 ;;
2667         *)
2668                 HAVE_WINBIND=no
2669                 winbind_no_reason=", unsupported on $host_os"
2670                 ;;
2671 esac
2673 # Check the setting of --with-winbindd
2675 AC_ARG_WITH(winbind,
2676 [  --with-winbind          Build winbind (default, if supported by OS)],
2678   case "$withval" in
2679         yes)
2680                 HAVE_WINBIND=yes
2681                 ;;
2682         no)
2683                 HAVE_WINBIND=no
2684                 winbind_reason=""
2685                 ;;
2686   esac ],
2689 # We need unix domain sockets for winbind
2691 if test x"$HAVE_WINBIND" = x"yes"; then
2692         if test x"$samba_cv_unixsocket" = x"no"; then
2693                 winbind_no_reason=", no unix domain socket support on $host_os"
2694                 HAVE_WINBIND=no
2695         fi
2698 # Display test results
2700 if test x"$HAVE_WINBIND" = x"yes"; then
2702         AC_MSG_RESULT(yes)
2704         WINBIND_TARGETS="bin/wbinfo"
2705         WINBIND_STARGETS="bin/winbindd"
2706         case "$host_os" in
2707         *irix*)
2708                 WINBIND_LTARGETS="nsswitch/libns_winbind.so"
2709                 ;;
2710         *)
2711                 WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
2712                 ;;
2713         esac
2716         case "$with_pam" in
2717                 yes)
2718                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
2719                 ;;
2720         esac
2721 else
2722         AC_MSG_RESULT(no$winbind_no_reason)
2724         WINBIND_TARGETS=""
2725         WINBIND_STARGETS=""
2726         WINBIND_LTARGETS=""
2727         WINBIND_PAM_TARGETS=""
2730 # Check for FreeBSD problem with getgroups
2731 # It returns EGID too many times in the list of groups
2732 # and causes a security problem
2733 AC_CACHE_CHECK([whether or not getgroups returns EGID too many times],
2734     samba_cv_have_getgroups_too_many_egids,[AC_TRY_RUN([
2735 #include <sys/types.h>
2736 #include <stdio.h>
2738 int main(int argc, char *argv[])
2740   gid_t groups[10];
2741   int n = 10;
2743   n = getgroups(n, &groups);
2744   /* Could actually pass back the number of EGIDs there ... */
2745   exit((n > 1 && groups[0] == getegid() && groups[1] == getegid()) ? 1 : 0);
2747         samba_cv_have_getgroups_too_many_egids=no,samba_cv_have_getgroups_too_many_egids=yes, samba_cv_have_getgroups_too_many_egids=cross)])
2748 if test x"$samba_cv_have_getgroups_too_many_egids" = x"yes"; then
2749     AC_DEFINE(HAVE_GETGROUPS_TOO_MANY_EGIDS)
2752 # Substitution time!
2754 AC_SUBST(WINBIND_TARGETS)
2755 AC_SUBST(WINBIND_STARGETS)
2756 AC_SUBST(WINBIND_LTARGETS)
2757 AC_SUBST(WINBIND_PAM_TARGETS)
2758 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
2759 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
2761 # Solaris has some extra fields in struct passwd that need to be
2762 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
2763 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
2764 # this.
2766 #AC_CHECK_MEMBER(struct passwd.pw_comment,
2767 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
2768 #               [#include <pwd.h>])
2770 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
2771         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
2772         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
2773 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
2774         AC_DEFINE(HAVE_PASSWD_PW_COMMENT)
2777 #AC_CHECK_MEMBER(struct passwd.pw_age,
2778 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
2779 #               [#include <pwd.h>])
2781 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
2782         AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
2783         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
2784 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
2785         AC_DEFINE(HAVE_PASSWD_PW_AGE)
2788 #################################################
2789 # Check to see if we should use the included popt
2791 AC_ARG_WITH(included-popt,
2792 [  --with-included-popt    use bundled popt library, not from system],
2794   case "$withval" in
2795         yes)
2796                 INCLUDED_POPT=yes
2797                 ;;
2798         no)
2799                 INCLUDED_POPT=no
2800                 ;;
2801   esac ],
2803 if test x"$INCLUDED_POPT" != x"yes"; then
2804     AC_CHECK_LIB(popt, poptGetContext,
2805                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
2808 AC_MSG_CHECKING(whether to use included popt)
2809 if test x"$INCLUDED_POPT" = x"yes"; then
2810     AC_MSG_RESULT($srcdir/popt)
2811     BUILD_POPT='$(POPT_OBJS)'
2812     FLAGS1="-I$srcdir/popt"
2813 else
2814     AC_MSG_RESULT(no)
2815     LIBS="$LIBS -lpopt"
2817 AC_SUBST(BUILD_POPT)
2818 AC_SUBST(FLAGS1)
2820 #################################################
2821 # final configure stuff
2822 AC_MSG_CHECKING([configure summary])
2823 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
2824         AC_MSG_RESULT(yes),
2825         AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
2826         AC_MSG_WARN([cannot run when cross-compiling]))
2828 builddir=`pwd`
2829 AC_SUBST(builddir)
2831 AC_OUTPUT(include/stamp-h Makefile script/findsmb)