Merge back Richard's FreeBSD sendfile fixes.
[Samba/gebeck_regimport.git] / source3 / configure.in
blob6b4f138747cdfb4cae70e2af00d37482d7191e4d
1 dnl -*- mode: m4-mode -*-
2 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT(include/includes.h)
4 AC_CONFIG_HEADER(include/config.h)
6 #################################################
7 # Directory handling stuff to support both the
8 # legacy SAMBA directories and FHS compliant
9 # ones...
10 AC_PREFIX_DEFAULT(/usr/local/samba)
12 AC_ARG_WITH(fhs, 
13 [  --with-fhs              Use FHS-compliant paths (default=no)],
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     configdir="\$(LIBDIR)"
21     logfilebase="\$(VARDIR)"
22     lockdir="\${VARDIR}/locks"
23     piddir="\$(VARDIR)/locks"
24     privatedir="\${prefix}/private"
25     swatdir="\${prefix}/swat")
27 #################################################
28 # set private directory location
29 AC_ARG_WITH(privatedir,
30 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
31 [ case "$withval" in
32   yes|no)
33   #
34   # Just in case anybody calls it without argument
35   #
36     AC_MSG_WARN([--with-privatedir called without argument - will use default])
37   ;;
38   * )
39     privatedir="$withval"
40     ;;
41   esac])
43 #################################################
44 # set lock directory location
45 AC_ARG_WITH(lockdir,
46 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
47 [ case "$withval" in
48   yes|no)
49   #
50   # Just in case anybody calls it without argument
51   #
52     AC_MSG_WARN([--with-lockdir called without argument - will use default])
53   ;;
54   * )
55     lockdir="$withval"
56     ;;
57   esac])
59 #################################################
60 # set pid directory location
61 AC_ARG_WITH(piddir,
62 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
63 [ case "$withval" in
64   yes|no)
65   #
66   # Just in case anybody calls it without argument
67   #
68     AC_MSG_WARN([--with-piddir called without argument - will use default])
69   ;;
70   * )
71     piddir="$withval"
72     ;;
73   esac])
75 #################################################
76 # set SWAT directory location
77 AC_ARG_WITH(swatdir,
78 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
79 [ case "$withval" in
80   yes|no)
81   #
82   # Just in case anybody does it
83   #
84     AC_MSG_WARN([--with-swatdir called without argument - will use default])
85   ;;
86   * )
87     swatdir="$withval"
88     ;;
89   esac])
91 #################################################
92 # set configuration directory location
93 AC_ARG_WITH(configdir,
94 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
95 [ case "$withval" in
96   yes|no)
97   #
98   # Just in case anybody does it
99   #
100     AC_MSG_WARN([--with-configdir called without argument - will use default])
101   ;;
102   * )
103     configdir="$withval"
104     ;;
105   esac])
107 #################################################
108 # set log directory location
109 AC_ARG_WITH(logfilebase,
110 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
111 [ case "$withval" in
112   yes|no)
113   #
114   # Just in case anybody does it
115   #
116     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
117   ;;
118   * )
119     logfilebase="$withval"
120     ;;
121   esac])
123 AC_SUBST(configdir)
124 AC_SUBST(lockdir)
125 AC_SUBST(piddir)
126 AC_SUBST(logfilebase)
127 AC_SUBST(privatedir)
128 AC_SUBST(swatdir)
129 AC_SUBST(bindir)
130 AC_SUBST(sbindir)
132 dnl Unique-to-Samba variables we'll be playing with.
133 AC_SUBST(SHELL)
134 AC_SUBST(RUNPROG)
135 AC_SUBST(MPROGS)
136 AC_SUBST(LDSHFLAGS)
137 AC_SUBST(SONAMEFLAG)
138 AC_SUBST(SHLD)
139 AC_SUBST(HOST_OS)
140 AC_SUBST(PAM_MOD)
141 AC_SUBST(WRAP)
142 AC_SUBST(WRAP32)
143 AC_SUBST(WRAPPROG)
144 AC_SUBST(PICFLAG)
145 AC_SUBST(PICSUFFIX)
146 AC_SUBST(POBAD_CC)
147 AC_SUBST(SHLIBEXT)
148 AC_SUBST(LIBSMBCLIENT_SHARED)
149 AC_SUBST(LIBSMBCLIENT)
150 AC_SUBST(PRINTLIBS)
152 # compile with optimization and without debugging by default
153 CFLAGS="-O ${CFLAGS}"
155 AC_ARG_ENABLE(debug, 
156 [  --enable-debug          Turn on compiler debugging information (default=no)],
157     [if eval "test x$enable_debug = xyes"; then
158         CFLAGS="${CFLAGS} -g"
159     fi])
161 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
162     [if eval "test x$enable_developer = xyes"; then
163         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
164     fi])
166 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
167     [if eval "test x$enable_krb5developer = xyes"; then
168         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
169     fi])
171 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
173 if test "x$enable_dmalloc" = xyes
174 then
175         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
176         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
177                   [Define to check invariants around some common functions])
178         LIBS="$LIBS -ldmalloc"  
181 dnl Checks for programs.
182 AC_PROG_CC
183 AC_PROG_INSTALL
184 AC_PROG_AWK
186 dnl Check if we use GNU ld
187 LD=ld
188 AC_PROG_LD_GNU
190 dnl needed before AC_TRY_COMPILE
191 AC_ISC_POSIX
193 dnl Check if C compiler understands -c and -o at the same time
194 AC_PROG_CC_C_O
195 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
196       BROKEN_CC=
197 else
198       BROKEN_CC=#
200 AC_SUBST(BROKEN_CC)
202 dnl Check if the C compiler understands volatile (it should, being ANSI).
203 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
204     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
205         samba_cv_volatile=yes,samba_cv_volatile=no)])
206 if test x"$samba_cv_volatile" = x"yes"; then
207    AC_DEFINE(HAVE_VOLATILE)
211 AC_CANONICAL_SYSTEM
213 dnl Add #include for broken IRIX header files
214   case "$host_os" in
215         *irix6*) AC_ADD_INCLUDE(<standards.h>)
216         ;;
217 esac
219 AC_VALIDATE_CACHE_SYSTEM_TYPE
221 DYNEXP=
224 # Config CPPFLAG settings for strange OS's that must be set
225 # before other tests.
227 case "$host_os" in
228 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
229     *hpux*)
230     
231       AC_PROG_CC_FLAG(Ae)
232       # mmap on HPUX is completely broken...
233       AC_DEFINE(MMAP_BLACKLIST)
234       if test $ac_cv_prog_cc_Ae = yes; then
235         CPPFLAGS="$CPPFLAGS -Ae"
236       fi
238 # Defines needed for HPUX support.
239 # HPUX has bigcrypt but (sometimes?) doesn't use it for
240 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
242       case `uname -r` in
243                         *9*|*10*)
244                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
245                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
246                                 AC_DEFINE(_HPUX_SOURCE)
247                                 AC_DEFINE(_POSIX_SOURCE)
248                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
249                                 AC_DEFINE(_MAX_ALIGNMENT,4)
250                                 ;;
251                         *11*)
252                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
253                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
254                                 AC_DEFINE(_HPUX_SOURCE)
255                                 AC_DEFINE(_POSIX_SOURCE)
256                                 AC_DEFINE(_LARGEFILE64_SOURCE)
257                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1)
258                                 AC_DEFINE(_MAX_ALIGNMENT,4)
259                                 ;;
260       esac
261       DYNEXP="-Wl,-E"
262       ;;
265 # CRAY Unicos has broken const handling
266        *unicos*)
267           AC_MSG_RESULT([disabling const])
268           CPPFLAGS="$CPPFLAGS -Dconst="
269           ;;
270         
272 # AIX4.x doesn't even admit to having large
273 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
275     *aix4*)
276           AC_MSG_RESULT([enabling large file support])
277       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
278       AC_DEFINE(_LARGE_FILES)
279       ;;    
281 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
282 # to the existance of large files..
283 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
284 # recommendations on large file support, however it makes the
285 # compile work using gcc 2.7 and 2.8, whereas using the Sun
286 # recommendation makes the compile fail on gcc2.7. JRA.
288         *solaris*)
289                 case `uname -r` in
290                         5.0*|5.1*|5.2*|5.3*|5.5*)
291                                 AC_MSG_RESULT([no large file support])
292                                 ;;
293                         5.*)
294                         AC_MSG_RESULT([enabling large file support])
295                         if test "$ac_cv_prog_gcc" = yes; then
296                                 ${CC-cc} -v >conftest.c 2>&1
297                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
298                                 rm -fr conftest.c
299                                 case "$ac_cv_gcc_compiler_version_number" in
300                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
301                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
302                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
303                                                 ;;
304                                         *)
305                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
306                                                 AC_DEFINE(_LARGEFILE64_SOURCE)
307                                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
308                                                 ;;
309                                 esac
310                         else
311                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
312                                 AC_DEFINE(_LARGEFILE64_SOURCE)
313                                 AC_DEFINE(_FILE_OFFSET_BITS,64)
314                         fi
315                         ;;
316                 esac
317                 ;;
319 # Tests needed for SINIX large file support.
321     *sysv4*)
322       if test $host = mips-sni-sysv4 ; then
323         AC_MSG_CHECKING([for LFS support])
324         old_CPPFLAGS="$CPPFLAGS"
325         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
326         AC_TRY_RUN([
327 #include <unistd.h>
328 main () {
329 #if _LFS64_LARGEFILE == 1
330 exit(0);
331 #else
332 exit(1);
333 #endif
334 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
335         CPPFLAGS="$old_CPPFLAGS"
336         if test x$SINIX_LFS_SUPPORT = xyes ; then
337           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
338           AC_DEFINE(_LARGEFILE64_SOURCE)
339           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
340           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
341           LIBS="`getconf LFS64_LIBS` $LIBS"
342         fi
343       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
344       fi
345     ;;
347 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
349     *linux*)
350         AC_MSG_CHECKING([for LFS support])
351         old_CPPFLAGS="$CPPFLAGS"
352         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
353        AC_TRY_RUN([
354 #include <unistd.h>
355 #include <sys/utsname.h>
356 main() {
357 #if _LFS64_LARGEFILE == 1
358        struct utsname uts;
359        char *release;
360        int major, minor;
362        /* Ensure this is glibc 2.2 or higher */
363 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
364        int libc_major = __GLIBC__;
365        int libc_minor = __GLIBC_MINOR__;
367        if (libc_major < 2)
368               exit(1);
369        if (libc_minor < 2)
370               exit(1);
371 #endif
373        /* Ensure this is kernel 2.4 or higher */
375        uname(&uts);
376        release = uts.release;
377        major = atoi(strsep(&release, "."));
378        minor = atoi(strsep(&release, "."));
380        if (major > 2 || (major == 2 && minor > 3))
381                exit(0);
382        exit(1);
383 #else
384        exit(1);
385 #endif
387 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
388         CPPFLAGS="$old_CPPFLAGS"
389         if test x$LINUX_LFS_SUPPORT = xyes ; then
390           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
391           AC_DEFINE(_LARGEFILE64_SOURCE)
392           AC_DEFINE(_FILE_OFFSET_BITS,64)
393           AC_DEFINE(_GNU_SOURCE)
394         fi
395        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
396                 ;;
398     *hurd*)
399         AC_MSG_CHECKING([for LFS support])
400         old_CPPFLAGS="$CPPFLAGS"
401         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
402         AC_TRY_RUN([
403 #include <unistd.h>
404 main () {
405 #if _LFS64_LARGEFILE == 1
406 exit(0);
407 #else
408 exit(1);
409 #endif
410 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
411         CPPFLAGS="$old_CPPFLAGS"
412         if test x$GLIBC_LFS_SUPPORT = xyes ; then
413           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
414           AC_DEFINE(_LARGEFILE64_SOURCE)
415           AC_DEFINE(_GNU_SOURCE)
416         fi
417       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
418     ;;
420 esac
422 AC_INLINE
423 AC_HEADER_STDC
424 AC_HEADER_DIRENT
425 AC_HEADER_TIME
426 AC_HEADER_SYS_WAIT
427 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
428 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
429 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
430 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
431 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
432 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
433 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
434 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.h)
435 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
438 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
439 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
441 case "$host_os" in
442     *hpux*)
443                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
444                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
445                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
446                    AC_DEFINE(HAVE_SHADOW_H)
447                 fi
448         ;;
449 esac
450 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
451 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
452 AC_CHECK_HEADERS(stropts.h poll.h)
453 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
454 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
456 # For experimental utmp support (lastlog on some BSD-like systems)
457 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
459 # For quotas on Veritas VxFS filesystems
460 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
462 # For quotas on Linux XFS filesystems
463 AC_CHECK_HEADERS(linux/xqm.h)
465 AC_CHECK_SIZEOF(int,cross)
466 AC_CHECK_SIZEOF(long,cross)
467 AC_CHECK_SIZEOF(short,cross)
469 AC_C_CONST
470 AC_C_INLINE
471 AC_C_BIGENDIAN
472 AC_C_CHAR_UNSIGNED
474 AC_TYPE_SIGNAL
475 AC_TYPE_UID_T
476 AC_TYPE_MODE_T
477 AC_TYPE_OFF_T
478 AC_TYPE_SIZE_T
479 AC_TYPE_PID_T
480 AC_STRUCT_ST_RDEV
481 AC_DIRENT_D_OFF
482 AC_CHECK_TYPE(ino_t,unsigned)
483 AC_CHECK_TYPE(loff_t,off_t)
484 AC_CHECK_TYPE(offset_t,loff_t)
485 AC_CHECK_TYPE(ssize_t, int)
486 AC_CHECK_TYPE(wchar_t, unsigned short)
488 ############################################
489 # for cups support we need libcups, and a handful of header files
491 AC_ARG_ENABLE(cups,
492 [  --enable-cups           Turn on CUPS support (default=auto)])
494 if test x$enable_cups != xno; then
495         AC_PATH_PROG(CUPS_CONFIG, cups-config)
497         if test "x$CUPS_CONFIG" != x; then
498                         AC_DEFINE(HAVE_CUPS)
499                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
500                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
501                 PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
502         fi
505 ############################################
506 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code
507 AC_CHECK_FUNCS(dlopen)
508 if test x"$ac_cv_func_dlopen" = x"no"; then
509     AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
510         AC_DEFINE(HAVE_DLOPEN)])
512 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
514 ############################################
515 # check if the compiler can do immediate structures
516 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
517     AC_TRY_COMPILE([
518 #include <stdio.h>],
520    typedef struct {unsigned x;} FOOBAR;
521    #define X_FOOBAR(x) ((FOOBAR) { x })
522    #define FOO_ONE X_FOOBAR(1)
523    FOOBAR f = FOO_ONE;   
524    static struct {
525         FOOBAR y; 
526         } f2[] = {
527                 {FOO_ONE}
528         };   
530         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
531 if test x"$samba_cv_immediate_structures" = x"yes"; then
532    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES)
535 ############################################
536 # check for unix domain sockets
537 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
538     AC_TRY_COMPILE([
539 #include <sys/types.h>
540 #include <stdlib.h>
541 #include <stddef.h>
542 #include <sys/socket.h>
543 #include <sys/un.h>],
545   struct sockaddr_un sunaddr; 
546   sunaddr.sun_family = AF_UNIX;
548         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
549 if test x"$samba_cv_unixsocket" = x"yes"; then
550    AC_DEFINE(HAVE_UNIXSOCKET)
554 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
555     AC_TRY_COMPILE([
556 #include <sys/types.h>
557 #if STDC_HEADERS
558 #include <stdlib.h>
559 #include <stddef.h>
560 #endif
561 #include <sys/socket.h>],[socklen_t i = 0],
562         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
563 if test x"$samba_cv_socklen_t" = x"yes"; then
564    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
567 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
568     AC_TRY_COMPILE([
569 #include <sys/types.h>
570 #if STDC_HEADERS
571 #include <stdlib.h>
572 #include <stddef.h>
573 #endif
574 #include <signal.h>],[sig_atomic_t i = 0],
575         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
576 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
577    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
580 # stupid headers have the functions but no declaration. grrrr.
581 AC_HAVE_DECL(errno, [#include <errno.h>])
582 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
583 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
584 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
585 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
586 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
587 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
589 # and glibc has setresuid under linux but the function does
590 # nothing until kernel 2.1.44! very dumb.
591 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
592     AC_TRY_RUN([#include <errno.h>
593 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
594         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
595 if test x"$samba_cv_have_setresuid" = x"yes"; then
596     AC_DEFINE(HAVE_SETRESUID)
599 # Do the same check for setresguid...
601 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
602     AC_TRY_RUN([#include <unistd.h>
603 #include <errno.h>
604 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
605         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
606 if test x"$samba_cv_have_setresgid" = x"yes"; then
607     AC_DEFINE(HAVE_SETRESGID)
610 AC_FUNC_MEMCMP
612 ###############################################
613 # test for where we get crypt() from
614 AC_CHECK_FUNCS(crypt)
615 if test x"$ac_cv_func_crypt" = x"no"; then
616     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
617         AC_DEFINE(HAVE_CRYPT)])
621 ###############################################
622 # Readline included by default unless explicitly asked not to
623 test "${with_readline+set}" != "set" && with_readline=yes
625 # test for where we get readline() from
626 AC_MSG_CHECKING(whether to use readline)
627 AC_ARG_WITH(readline,
628 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
629 [  case "$with_readline" in
630   yes)
631     AC_MSG_RESULT(yes)
633     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
634     AC_CHECK_HEADERS(readline/history.h)
636     AC_CHECK_HEADERS(readline.h readline/readline.h,[
637       for termlib in ncurses curses termcap terminfo termlib; do
638        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
639       done
640       AC_CHECK_LIB(readline, rl_callback_handler_install,
641        [TERMLIBS="-lreadline $TERMLIBS"
642        AC_DEFINE(HAVE_LIBREADLINE)
643        break], [TERMLIBS=], $TERMLIBS)])
644     ;;
645   no)
646     AC_MSG_RESULT(no)
647     ;;
648   *)
649     AC_MSG_RESULT(yes)
651     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
652     # alternate readline path
653     _ldflags=${LDFLAGS}
654     _cppflags=${CPPFLAGS}
656     # Add additional search path
657     LDFLAGS="-L$with_readline/lib $LDFLAGS"
658     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
660     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
661     AC_CHECK_HEADERS(readline/history.h)
663     AC_CHECK_HEADERS(readline.h readline/readline.h,[
664       for termlib in ncurses curses termcap terminfo termlib; do
665        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
666       done
667       AC_CHECK_LIB(readline, rl_callback_handler_install,
668        [TERMLDFLAGS="-L$with_readline/lib"
669        TERMCPPFLAGS="-I$with_readline/include"
670        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
671        TERMLIBS="-lreadline $TERMLIBS"
672        AC_DEFINE(HAVE_LIBREADLINE)
673        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
675     LDFLAGS=$_ldflags
676     ;;
677   esac],
678   AC_MSG_RESULT(no)
680 AC_SUBST(TERMLIBS)
681 AC_SUBST(TERMLDFLAGS)
683 # The readline API changed slightly from readline3 to readline4, so
684 # code will generate warnings on one of them unless we have a few
685 # special cases.
686 AC_CHECK_LIB(readline, rl_completion_matches,
687              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
688                         [Do we have rl_completion_matches?])],
689              [],
690              [$TERMLIBS])
692 # The following test taken from the cvs sources
693 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
694 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
695 # libsocket.so which has a bad implementation of gethostbyname (it
696 # only looks in /etc/hosts), so we only look for -lsocket if we need
697 # it.
698 AC_CHECK_FUNCS(connect)
699 if test x"$ac_cv_func_connect" = x"no"; then
700     case "$LIBS" in
701     *-lnsl*) ;;
702     *) AC_CHECK_LIB(nsl_s, printf) ;;
703     esac
704     case "$LIBS" in
705     *-lnsl*) ;;
706     *) AC_CHECK_LIB(nsl, printf) ;;
707     esac
708     case "$LIBS" in
709     *-lsocket*) ;;
710     *) AC_CHECK_LIB(socket, connect) ;;
711     esac
712     case "$LIBS" in
713     *-linet*) ;;
714     *) AC_CHECK_LIB(inet, connect) ;;
715     esac
716     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
717     dnl has been cached.
718     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
719        test x"$ac_cv_lib_inet_connect" = x"yes"; then
720         # ac_cv_func_connect=yes
721         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
722         AC_DEFINE(HAVE_CONNECT)
723     fi
726 ###############################################
727 # test for where we get get_yp_default_domain() from
728 AC_CHECK_FUNCS(yp_get_default_domain)
729 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
730         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
731         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
734 # Check if we have execl, if not we need to compile smbrun.
735 AC_CHECK_FUNCS(execl)
736 if test x"$ac_cv_func_execl" = x"no"; then
737     RUNPROG="bin/smbrun"
738 else
739     RUNPROG=""
742 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
743 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
744 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
745 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
746 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
747 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
748 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
749 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
750 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
751 AC_CHECK_FUNCS(syslog vsyslog getgrouplist)
752 # setbuffer is needed for smbtorture
753 AC_CHECK_FUNCS(setbuffer)
755 # syscall() is needed for smbwrapper.
756 AC_CHECK_FUNCS(syscall)
758 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
759 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
760 AC_CHECK_FUNCS(__getcwd _getcwd)
761 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
762 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
763 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
764 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
765 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
766 AC_CHECK_FUNCS(_write __write _fork __fork)
767 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
768 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
769 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
770 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
771 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
774 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
777 if test x$ac_cv_func_stat64 = xno ; then
778   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
779   AC_TRY_LINK([
780 #if defined(HAVE_UNISTD_H)
781 #include <unistd.h>
782 #endif
783 #include <sys/stat.h>
784 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
785   AC_MSG_RESULT([$ac_cv_func_stat64])
786   if test x$ac_cv_func_stat64 = xyes ; then
787     AC_DEFINE(HAVE_STAT64)
788   fi
791 if test x$ac_cv_func_lstat64 = xno ; then
792   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
793   AC_TRY_LINK([
794 #if defined(HAVE_UNISTD_H)
795 #include <unistd.h>
796 #endif
797 #include <sys/stat.h>
798 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
799   AC_MSG_RESULT([$ac_cv_func_lstat64])
800   if test x$ac_cv_func_lstat64 = xyes ; then
801     AC_DEFINE(HAVE_LSTAT64)
802   fi
805 if test x$ac_cv_func_fstat64 = xno ; then
806   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
807   AC_TRY_LINK([
808 #if defined(HAVE_UNISTD_H)
809 #include <unistd.h>
810 #endif
811 #include <sys/stat.h>
812 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
813   AC_MSG_RESULT([$ac_cv_func_fstat64])
814   if test x$ac_cv_func_fstat64 = xyes ; then
815     AC_DEFINE(HAVE_FSTAT64)
816   fi
819 #####################################
820 # we might need the resolv library on some systems
821 AC_CHECK_LIB(resolv, dn_expand)
824 # Check for the functions putprpwnam, set_auth_parameters,
825 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
826 # Needed for OSF1 and HPUX.
829 AC_LIBTESTFUNC(security, putprpwnam)
830 AC_LIBTESTFUNC(sec, putprpwnam)
832 AC_LIBTESTFUNC(security, set_auth_parameters)
833 AC_LIBTESTFUNC(sec, set_auth_parameters)
835 # UnixWare 7.x has its getspnam in -lgen
836 AC_LIBTESTFUNC(gen, getspnam)
838 AC_LIBTESTFUNC(security, getspnam)
839 AC_LIBTESTFUNC(sec, getspnam)
841 AC_LIBTESTFUNC(security, bigcrypt)
842 AC_LIBTESTFUNC(sec, bigcrypt)
844 AC_LIBTESTFUNC(security, getprpwnam)
845 AC_LIBTESTFUNC(sec, getprpwnam)
847 # this bit needs to be modified for each OS that is suported by
848 # smbwrapper. You need to specify how to created a shared library and
849 # how to compile C code to produce PIC object files
851 # these are the defaults, good for lots of systems
852 HOST_OS="$host_os"
853 LDSHFLAGS="-shared"
854 SONAMEFLAG="#"
855 SHLD="\${CC}"
856 PICFLAG=""
857 PICSUFFIX="po"
858 POBAD_CC="#"
859 SHLIBEXT="so"
860 # Assume non-shared by default and override below
861 BLDSHARED="false"
862 AC_MSG_CHECKING([ability to build shared libraries])
864 # and these are for particular systems
865 case "$host_os" in
866                 *linux*)   AC_DEFINE(LINUX)
867                         BLDSHARED="true"
868                         LDSHFLAGS="-shared" 
869                         DYNEXP="-Wl,--export-dynamic"
870                         PICFLAG="-fPIC"
871                         SONAMEFLAG="-Wl,-soname="
872                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
873                 ;;
874                 *solaris*) AC_DEFINE(SUNOS5)
875                         BLDSHARED="true"
876                         LDSHFLAGS="-G"
877                         SONAMEFLAG="-h "
878                         if test "${GCC}" = "yes"; then
879                                 PICFLAG="-fPIC"
880                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
881                                         DYNEXP="-Wl,-E"
882                                 fi
883                         else
884                                 PICFLAG="-KPIC"
885                                 ## ${CFLAGS} added for building 64-bit shared 
886                                 ## libs using Sun's Compiler
887                                 LDSHFLAGS="-G \${CFLAGS}"
888                                 POBAD_CC=""
889                                 PICSUFFIX="po.o"
890                         fi
891                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
892                 ;;
893                 *sunos*) AC_DEFINE(SUNOS4)
894                         BLDSHARED="true"
895                         LDSHFLAGS="-G"
896                         SONAMEFLAG="-Wl,-h,"
897                         PICFLAG="-KPIC"   # Is this correct for SunOS
898                 ;;
899                 *bsd*)  BLDSHARED="true"
900                         LDSHFLAGS="-shared"
901                         DYNEXP="-Wl,-Bdynamic"
902                         SONAMEFLAG="-Wl,-soname,"
903                         PICFLAG="-fPIC"
904                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
905                 ;;
906                 *irix*) AC_DEFINE(IRIX)
907                         case "$host_os" in
908                         *irix6*) AC_DEFINE(IRIX6)
909                         ;;
910                         esac
911                         ATTEMPT_WRAP32_BUILD=yes
912                         BLDSHARED="true"
913                         LDSHFLAGS="-set_version sgi1.0 -shared"
914                         SONAMEFLAG="-soname "
915                         SHLD="\${LD}"
916                         if test "${GCC}" = "yes"; then
917                                 PICFLAG="-fPIC"
918                         else 
919                                 PICFLAG="-KPIC"
920                         fi
921                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
922                 ;;
923                 *aix*) AC_DEFINE(AIX)
924                         BLDSHARED="true"
925                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
926                         DYNEXP="-Wl,-brtl,-bexpall"
927                         if test "${GCC}" = "yes"; then
928                                 PICFLAG="-O2"
929                         else
930                         PICFLAG="-O2 -qmaxmem=6000"
931                                 ## for funky AIX compiler using strncpy()
932                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT"
933                         fi
935                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE)
936                 ;;
937                 *hpux*) AC_DEFINE(HPUX)
938                         SHLIBEXT="sl"
939                         # Use special PIC flags for the native HP-UX compiler.
940                         if test $ac_cv_prog_cc_Ae = yes; then
941                                 BLDSHARED="true"
942                                 SHLD="/usr/bin/ld"
943                                 LDSHFLAGS="-B symbolic -b -z"
944                                 SONAMEFLAG="+h "
945                                 PICFLAG="+z"
946                         fi
947                         DYNEXP="-Wl,-E"
948                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192)
949                 ;;
950                 *qnx*) AC_DEFINE(QNX);;
951                 *osf*) AC_DEFINE(OSF1)
952                         BLDSHARED="true"
953                         LDSHFLAGS="-shared"
954                         SONAMEFLAG="-Wl,-soname,"
955                         PICFLAG="-fPIC"
956                 ;;
957                 *sco*) AC_DEFINE(SCO);;
958                 *unixware*) AC_DEFINE(UNIXWARE)
959                         BLDSHARED="true"
960                         LDSHFLAGS="-shared"
961                         SONAMEFLAG="-Wl,-soname,"
962                         PICFLAG="-KPIC"
963                 ;;
964                 *next2*) AC_DEFINE(NEXT2);;
965                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
966                 *sysv4*)
967                         case "$host" in
968                                 *-univel-*)     if [ test "$GCC" != yes ]; then
969                                                 AC_DEFINE(HAVE_MEMSET)
970                                         fi
971                                         LDSHFLAGS="-G"
972                                         DYNEXP="-Bexport"
973                                 ;;
974                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
975                         esac
976                 ;;
978                 *sysv5*)
979                         if [ test "$GCC" != yes ]; then
980                                 AC_DEFINE(HAVE_MEMSET)
981                         fi
982                         LDSHFLAGS="-G"
983                 ;;
984 esac
985 AC_SUBST(DYNEXP)
986 AC_MSG_RESULT($BLDSHARED)
987 AC_MSG_CHECKING([linker flags for shared libraries])
988 AC_MSG_RESULT([$LDSHFLAGS])
989 AC_MSG_CHECKING([compiler flags for position-independent code])
990 AC_MSG_RESULT([$PICFLAGS])
992 #######################################################
993 # test whether building a shared library actually works
994 if test $BLDSHARED = true; then
995 AC_CACHE_CHECK([whether building shared libraries actually works], 
996                [ac_cv_shlib_works],[
997    ac_cv_shlib_works=no
998    # try building a trivial shared library
999    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1000      $CC $CPPFLAGS $CFLAGS $LDSHFLAGS -o shlib.so shlib.po &&
1001      ac_cv_shlib_works=yes
1002    rm -f shlib.so shlib.po
1004 if test $ac_cv_shlib_works = no; then
1005    BLDSHARED=false
1010 # this updates our target list if we can build shared libs
1011 if test $BLDSHARED = true; then
1012    LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
1013 else
1014    LIBSMBCLIENT_SHARED=
1017 ################
1019 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1020 AC_TRY_RUN([#include <stdio.h>
1021 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1022 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1023 if test x"$samba_cv_have_longlong" = x"yes"; then
1024     AC_DEFINE(HAVE_LONGLONG)
1028 # Check if the compiler supports the LL prefix on long long integers.
1029 # AIX needs this.
1031 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1032     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1033         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1034 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1035    AC_DEFINE(COMPILER_SUPPORTS_LL)
1038   
1039 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1040 AC_TRY_RUN([#include <stdio.h>
1041 #include <sys/stat.h>
1042 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1043 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1044 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1045     AC_DEFINE(SIZEOF_OFF_T,8)
1048 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1049 AC_TRY_RUN([
1050 #if defined(HAVE_UNISTD_H)
1051 #include <unistd.h>
1052 #endif
1053 #include <stdio.h>
1054 #include <sys/stat.h>
1055 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1056 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1057 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1058     AC_DEFINE(HAVE_OFF64_T)
1061 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1062 AC_TRY_RUN([#include <stdio.h>
1063 #include <sys/stat.h>
1064 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1065 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1066 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1067     AC_DEFINE(SIZEOF_INO_T,8)
1070 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1071 AC_TRY_RUN([
1072 #if defined(HAVE_UNISTD_H)
1073 #include <unistd.h>
1074 #endif
1075 #include <stdio.h>
1076 #include <sys/stat.h>
1077 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1078 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1079 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1080     AC_DEFINE(HAVE_INO64_T)
1083 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1084 AC_TRY_RUN([
1085 #if defined(HAVE_UNISTD_H)
1086 #include <unistd.h>
1087 #endif
1088 #include <stdio.h>
1089 #include <sys/stat.h>
1090 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1091 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1092 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1093     AC_DEFINE(HAVE_DEV64_T)
1096 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1097 AC_TRY_COMPILE([
1098 #if defined(HAVE_UNISTD_H)
1099 #include <unistd.h>
1100 #endif
1101 #include <sys/types.h>
1102 #include <dirent.h>],
1103 [struct dirent64 de;],
1104 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1105 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1106     AC_DEFINE(HAVE_STRUCT_DIRENT64)
1109 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1110 AC_TRY_RUN([
1111 #if defined(HAVE_UNISTD_H)
1112 #include <unistd.h>
1113 #endif
1114 #include <sys/types.h>
1115 main() { dev_t dev; int i = major(dev); return 0; }],
1116 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1117 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1118     AC_DEFINE(HAVE_DEVICE_MAJOR_FN)
1121 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1122 AC_TRY_RUN([
1123 #if defined(HAVE_UNISTD_H)
1124 #include <unistd.h>
1125 #endif
1126 #include <sys/types.h>
1127 main() { dev_t dev; int i = minor(dev); return 0; }],
1128 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1129 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1130     AC_DEFINE(HAVE_DEVICE_MINOR_FN)
1133 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1134 AC_TRY_RUN([#include <stdio.h>
1135 main() { char c; c=250; exit((c > 0)?0:1); }],
1136 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1137 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1138     AC_DEFINE(HAVE_UNSIGNED_CHAR)
1141 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1142 AC_TRY_COMPILE([#include <sys/types.h>
1143 #include <sys/socket.h>
1144 #include <netinet/in.h>],
1145 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1146 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1147 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1148     AC_DEFINE(HAVE_SOCK_SIN_LEN)
1151 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1152 AC_TRY_COMPILE([#include <sys/types.h>
1153 #include <dirent.h>
1154 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1155 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1156 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1157     AC_DEFINE(SEEKDIR_RETURNS_VOID)
1160 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
1161 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
1162 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
1163 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
1164     AC_DEFINE(HAVE_FILE_MACRO)
1167 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1168 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1169 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1170 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1171     AC_DEFINE(HAVE_FUNCTION_MACRO)
1174 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1175 AC_TRY_RUN([
1176 #include <sys/time.h>
1177 #include <unistd.h>
1178 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1179            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1180 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1181     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
1184 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1185 AC_TRY_LINK([#include <stdarg.h>
1186 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1187 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1188 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1189     AC_DEFINE(HAVE_VA_COPY)
1192 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1193 AC_TRY_RUN([
1194 #include <sys/types.h>
1195 #include <stdarg.h>
1196 void foo(const char *format, ...) { 
1197        va_list ap;
1198        int len;
1199        char buf[5];
1201        va_start(ap, format);
1202        len = vsnprintf(buf, 0, format, ap);
1203        va_end(ap);
1204        if (len != 5) exit(1);
1206        va_start(ap, format);
1207        len = vsnprintf(0, 0, format, ap);
1208        va_end(ap);
1209        if (len != 5) exit(1);
1211        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1213        exit(0);
1215 main() { foo("hello"); }
1217 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1218 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1219     AC_DEFINE(HAVE_C99_VSNPRINTF)
1222 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1223 AC_TRY_RUN([#include <sys/types.h>
1224 #include <dirent.h>
1225 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1226 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1227 di->d_name[0] == 0) exit(0); exit(1);} ],
1228 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1229 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1230     AC_DEFINE(HAVE_BROKEN_READDIR)
1233 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1234 AC_TRY_COMPILE([#include <sys/types.h>
1235 #include <utime.h>],
1236 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1237 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1238 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1239     AC_DEFINE(HAVE_UTIMBUF)
1242 dnl  utmp and utmpx come in many flavours
1243 dnl  We need to check for many of them
1244 dnl  But we don't need to do each and every one, because our code uses
1245 dnl  mostly just the utmp (not utmpx) fields.
1247 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1249 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1250 AC_TRY_COMPILE([#include <sys/types.h>
1251 #include <utmp.h>],
1252 [struct utmp ut;  ut.ut_name[0] = 'a';],
1253 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1254 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1255     AC_DEFINE(HAVE_UT_UT_NAME)
1256 fi 
1258 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1259 AC_TRY_COMPILE([#include <sys/types.h>
1260 #include <utmp.h>],
1261 [struct utmp ut;  ut.ut_user[0] = 'a';],
1262 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1263 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1264     AC_DEFINE(HAVE_UT_UT_USER)
1265 fi 
1267 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1268 AC_TRY_COMPILE([#include <sys/types.h>
1269 #include <utmp.h>],
1270 [struct utmp ut;  ut.ut_id[0] = 'a';],
1271 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1272 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1273     AC_DEFINE(HAVE_UT_UT_ID)
1274 fi 
1276 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1277 AC_TRY_COMPILE([#include <sys/types.h>
1278 #include <utmp.h>],
1279 [struct utmp ut;  ut.ut_host[0] = 'a';],
1280 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1281 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1282     AC_DEFINE(HAVE_UT_UT_HOST)
1283 fi 
1285 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1286 AC_TRY_COMPILE([#include <sys/types.h>
1287 #include <utmp.h>],
1288 [struct utmp ut;  time_t t; ut.ut_time = t;],
1289 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1290 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1291     AC_DEFINE(HAVE_UT_UT_TIME)
1292 fi 
1294 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1295 AC_TRY_COMPILE([#include <sys/types.h>
1296 #include <utmp.h>],
1297 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1298 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1299 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1300     AC_DEFINE(HAVE_UT_UT_TV)
1301 fi 
1303 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1304 AC_TRY_COMPILE([#include <sys/types.h>
1305 #include <utmp.h>],
1306 [struct utmp ut;  ut.ut_type = 0;],
1307 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1308 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1309     AC_DEFINE(HAVE_UT_UT_TYPE)
1310 fi 
1312 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1313 AC_TRY_COMPILE([#include <sys/types.h>
1314 #include <utmp.h>],
1315 [struct utmp ut;  ut.ut_pid = 0;],
1316 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1317 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1318     AC_DEFINE(HAVE_UT_UT_PID)
1319 fi 
1321 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1322 AC_TRY_COMPILE([#include <sys/types.h>
1323 #include <utmp.h>],
1324 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1325 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1326 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1327     AC_DEFINE(HAVE_UT_UT_EXIT)
1328 fi 
1330 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1331 AC_TRY_COMPILE([#include <sys/types.h>
1332 #include <utmp.h>],
1333 [struct utmp ut;  ut.ut_addr = 0;],
1334 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1335 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1336     AC_DEFINE(HAVE_UT_UT_ADDR)
1337 fi 
1339 if test x$ac_cv_func_pututline = xyes ; then
1340   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1341   AC_TRY_COMPILE([#include <sys/types.h>
1342 #include <utmp.h>],
1343   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1344   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1345   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1346       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
1347   fi
1350 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1351 AC_TRY_COMPILE([#include <sys/types.h>
1352 #include <utmpx.h>],
1353 [struct utmpx ux;  ux.ut_syslen = 0;],
1354 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1355 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1356     AC_DEFINE(HAVE_UX_UT_SYSLEN)
1357 fi 
1360 #################################################
1361 # check for libiconv support
1362 AC_MSG_CHECKING(whether to use libiconv)
1363 AC_ARG_WITH(libiconv,
1364 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1365 [ case "$withval" in
1366   no)
1367     AC_MSG_RESULT(no)
1368     ;;
1369   *)
1370     AC_MSG_RESULT(yes)
1371     CFLAGS="$CFLAGS -I$withval/include"
1372     LDFLAGS="$LDFLAGS -L$withval/lib"
1373     AC_CHECK_LIB(iconv, iconv_open)
1374     AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}")
1375     ;;
1376   esac ],
1377   AC_MSG_RESULT(no)
1381 ############
1382 # check for iconv in libc
1383 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1384 AC_TRY_RUN([
1385 #include <iconv.h>
1386 main() {
1387        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1388        if (cd == 0 || cd == (iconv_t)-1) return -1;
1389        return 0;
1392 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1393 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1394     AC_DEFINE(HAVE_NATIVE_ICONV)
1398 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1399 AC_TRY_RUN([
1400 #include <sys/types.h>
1401 #include <fcntl.h>
1402 #ifndef F_GETLEASE
1403 #define F_GETLEASE      1025
1404 #endif
1405 main() {
1406        int fd = open("/dev/null", O_RDONLY);
1407        return fcntl(fd, F_GETLEASE, 0) == -1;
1410 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1411 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1412     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1415 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1416 AC_TRY_RUN([
1417 #include <sys/types.h>
1418 #include <fcntl.h>
1419 #include <signal.h>
1420 #ifndef F_NOTIFY
1421 #define F_NOTIFY 1026
1422 #endif
1423 main() {
1424         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1427 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1428 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1429     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1432 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1433 AC_TRY_RUN([
1434 #include <sys/types.h>
1435 #include <fcntl.h>
1436 #include <signal.h>
1437 #include <sys/file.h>
1438 #ifndef LOCK_MAND
1439 #define LOCK_MAND       32
1440 #define LOCK_READ       64
1441 #endif
1442 main() {
1443         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1446 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1447 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1448     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1454 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1455 AC_TRY_COMPILE([#include <sys/types.h>
1456 #include <fcntl.h>],
1457 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1458 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1459 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1460     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1463 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1464 AC_TRY_RUN([#include <sys/types.h>
1465 #include <sys/capability.h>
1466 main() {
1467  cap_t cap;
1468  if ((cap = cap_get_proc()) == NULL)
1469    exit(1);
1470  cap->cap_effective |= CAP_NETWORK_MGT;
1471  cap->cap_inheritable |= CAP_NETWORK_MGT;
1472  cap_set_proc(cap);
1473  exit(0);
1476 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1477 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1478     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1482 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1483 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1486 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1487 AC_TRY_COMPILE([#include <sys/types.h>
1488 #if defined(HAVE_RPC_RPC_H)
1489 #include <rpc/rpc.h>
1490 #endif],
1491 [int16 testvar;],
1492 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1493 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1494     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1497 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1498 AC_TRY_COMPILE([#include <sys/types.h>
1499 #if defined(HAVE_RPC_RPC_H)
1500 #include <rpc/rpc.h>
1501 #endif],
1502 [uint16 testvar;],
1503 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1504 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1505     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1508 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1509 AC_TRY_COMPILE([#include <sys/types.h>
1510 #if defined(HAVE_RPC_RPC_H)
1511 #include <rpc/rpc.h>
1512 #endif],
1513 [int32 testvar;],
1514 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1515 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1516     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1519 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1520 AC_TRY_COMPILE([#include <sys/types.h>
1521 #if defined(HAVE_RPC_RPC_H)
1522 #include <rpc/rpc.h>
1523 #endif],
1524 [uint32 testvar;],
1525 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1526 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1527     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1531 dnl Some systems (SCO) have a problem including
1532 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1533 dnl as a #define in <prot.h> and as part of an enum
1534 dnl in <rpc/rpc.h>.
1537 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1538 AC_TRY_COMPILE([#include <sys/types.h>
1539 #ifdef HAVE_SYS_SECURITY_H
1540 #include <sys/security.h>
1541 #include <prot.h>
1542 #endif  /* HAVE_SYS_SECURITY_H */
1543 #if defined(HAVE_RPC_RPC_H)
1544 #include <rpc/rpc.h>
1545 #endif],
1546 [int testvar;],
1547 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1548 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1549     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1552 AC_MSG_CHECKING([for test routines])
1553 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1554            AC_MSG_RESULT(yes),
1555            AC_MSG_ERROR([cant find test code. Aborting config]),
1556            AC_MSG_WARN([cannot run when cross-compiling]))
1558 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1559 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1560            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1561 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1562     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1565 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1566 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1567            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1568            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1569            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1570 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1571 then
1572     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1575 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1576 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1577            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1578 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1579     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1582 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1583 SAVE_CPPFLAGS="$CPPFLAGS"
1584 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1585 AC_TRY_COMPILE([
1586 #define REPLACE_GETPASS 1
1587 #define NO_CONFIG_H 1
1588 #define main dont_declare_main
1589 #include "${srcdir-.}/lib/getsmbpass.c"
1590 #undef main
1591 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1592 CPPFLAGS="$SAVE_CPPFLAGS"
1594 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1595         AC_DEFINE(REPLACE_GETPASS)
1598 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1599 AC_TRY_RUN([
1600 #include <stdio.h>
1601 #include <sys/types.h>
1602 #include <netinet/in.h>
1603 #ifdef HAVE_ARPA_INET_H
1604 #include <arpa/inet.h>
1605 #endif
1606 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1607 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1608     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1609 exit(1);}],
1610            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1611 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1612     AC_DEFINE(REPLACE_INET_NTOA)
1615 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1616 AC_TRY_RUN([#include <stdlib.h>
1617 #include <sys/types.h>
1618 #include <sys/stat.h>
1619 #include <unistd.h>
1620 main() { 
1621   struct stat st;
1622   char tpl[20]="/tmp/test.XXXXXX"; 
1623   int fd = mkstemp(tpl); 
1624   if (fd == -1) exit(1);
1625   unlink(tpl);
1626   if (fstat(fd, &st) != 0) exit(1);
1627   if ((st.st_mode & 0777) != 0600) exit(1);
1628   exit(0);
1630 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1631 samba_cv_HAVE_SECURE_MKSTEMP=no,
1632 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1633 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1634     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1637 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1638 AC_TRY_RUN([#include <unistd.h>
1639 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1640 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1641 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1642     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1645 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1646 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1647            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1648 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1649     AC_DEFINE(HAVE_ROOT)
1650 else
1651     AC_MSG_WARN(running as non-root will disable some tests)
1654 ##################
1655 # look for a method of finding the list of network interfaces
1656 iface=no;
1657 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1658 AC_TRY_RUN([
1659 #define HAVE_IFACE_AIX 1
1660 #define AUTOCONF_TEST 1
1661 #include "confdefs.h"
1662 #include "${srcdir-.}/lib/interfaces.c"],
1663            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1664 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1665     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1668 if test $iface = no; then
1669 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1670 AC_TRY_RUN([
1671 #define HAVE_IFACE_IFCONF 1
1672 #define AUTOCONF_TEST 1
1673 #include "confdefs.h"
1674 #include "${srcdir-.}/lib/interfaces.c"],
1675            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1676 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1677     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1681 if test $iface = no; then
1682 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1683 AC_TRY_RUN([
1684 #define HAVE_IFACE_IFREQ 1
1685 #define AUTOCONF_TEST 1
1686 #include "confdefs.h"
1687 #include "${srcdir-.}/lib/interfaces.c"],
1688            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1689 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1690     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1695 ################################################
1696 # look for a method of setting the effective uid
1697 seteuid=no;
1698 if test $seteuid = no; then
1699 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1700 AC_TRY_RUN([
1701 #define AUTOCONF_TEST 1
1702 #define USE_SETRESUID 1
1703 #include "confdefs.h"
1704 #include "${srcdir-.}/lib/util_sec.c"],
1705            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1706 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1707     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1712 if test $seteuid = no; then
1713 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1714 AC_TRY_RUN([
1715 #define AUTOCONF_TEST 1
1716 #define USE_SETREUID 1
1717 #include "confdefs.h"
1718 #include "${srcdir-.}/lib/util_sec.c"],
1719            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1720 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1721     seteuid=yes;AC_DEFINE(USE_SETREUID)
1725 if test $seteuid = no; then
1726 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1727 AC_TRY_RUN([
1728 #define AUTOCONF_TEST 1
1729 #define USE_SETEUID 1
1730 #include "confdefs.h"
1731 #include "${srcdir-.}/lib/util_sec.c"],
1732            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1733 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1734     seteuid=yes;AC_DEFINE(USE_SETEUID)
1738 if test $seteuid = no; then
1739 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1740 AC_TRY_RUN([
1741 #define AUTOCONF_TEST 1
1742 #define USE_SETUIDX 1
1743 #include "confdefs.h"
1744 #include "${srcdir-.}/lib/util_sec.c"],
1745            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1746 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1747     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1752 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1753 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1754            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1755 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1756     AC_DEFINE(HAVE_MMAP)
1759 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1760 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1761            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1762 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1763     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1766 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1767 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1768            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1769 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1770     AC_DEFINE(HAVE_FCNTL_LOCK)
1773 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1774 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1775            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1776 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1777     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1779 else
1782 dnl Don't check for 64 bit fcntl locking if we know that the
1783 dnl glibc2.1 broken check has succeeded.
1784 dnl 
1786   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1787   AC_TRY_RUN([
1788 #if defined(HAVE_UNISTD_H)
1789 #include <unistd.h>
1790 #endif
1791 #include <stdio.h>
1792 #include <stdlib.h>
1794 #ifdef HAVE_FCNTL_H
1795 #include <fcntl.h>
1796 #endif
1798 #ifdef HAVE_SYS_FCNTL_H
1799 #include <sys/fcntl.h>
1800 #endif
1801 main() { struct flock64 fl64;
1802 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1803 exit(0);
1804 #else
1805 exit(1);
1806 #endif
1808        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1810   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1811       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1812   fi
1815 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1816 AC_TRY_COMPILE([#include <sys/types.h>
1817 #include <sys/stat.h>
1818 #include <unistd.h>],
1819 [struct stat st;  st.st_blocks = 0;],
1820 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1821 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1822     AC_DEFINE(HAVE_STAT_ST_BLOCKS)
1823 fi 
1825 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1826 AC_TRY_COMPILE([#include <sys/types.h>
1827 #include <sys/stat.h>
1828 #include <unistd.h>],
1829 [struct stat st;  st.st_blksize = 0;],
1830 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1831 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1832     AC_DEFINE(HAVE_STAT_ST_BLKSIZE)
1835 case "$host_os" in
1836 *linux*)
1837 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1838 AC_TRY_COMPILE([
1839 #ifdef HAVE_SYS_VFS_H
1840 #include <sys/vfs.h>
1841 #endif
1842 #ifdef HAVE_SYS_CAPABILITY_H
1843 #include <sys/capability.h>
1844 #endif
1845 ],[int i;],
1846    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1847 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1848    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS)
1851 esac
1853 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1854 AC_TRY_COMPILE([#include <sys/acl.h>
1855 #if defined(HAVE_RPCSVC_NIS_H)
1856 #include <rpcsvc/nis.h>
1857 #endif],
1858 [int i;],
1859 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1860 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1861     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1865 #################################################
1866 # check for smbwrapper support
1867 AC_MSG_CHECKING(whether to use smbwrapper)
1868 AC_ARG_WITH(smbwrapper,
1869 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
1870 [ case "$withval" in
1871   yes)
1872     AC_MSG_RESULT(yes)
1873     AC_DEFINE(WITH_SMBWRAPPER)
1874         WRAPPROG="bin/smbsh"
1875         WRAP="bin/smbwrapper.$SHLIBEXT"
1877         if test x$ATTEMPT_WRAP32_BUILD = x; then
1878                 WRAP32=""
1879         else
1880                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1881         fi
1883 # Conditions under which smbwrapper should not be built.
1885         if test x$PICFLAG = x; then
1886            echo No support for PIC code - disabling smbwrapper and smbsh
1887            WRAPPROG=""
1888            WRAP=""
1889            WRAP32=""
1890         elif test x$ac_cv_func_syscall = xno; then
1891            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1892            WRAPPROG=""
1893            WRAP=""
1894            WRAP32=""
1895         fi
1896     ;;
1897   *)
1898     AC_MSG_RESULT(no)
1899     ;;
1900   esac ],
1901   AC_MSG_RESULT(no)
1904 #################################################
1905 # check for AFS clear-text auth support
1906 AC_MSG_CHECKING(whether to use AFS clear-text auth)
1907 AC_ARG_WITH(afs,
1908 [  --with-afs              Include AFS clear-text auth support (default=no) ],
1909 [ case "$withval" in
1910   yes)
1911     AC_MSG_RESULT(yes)
1912     AC_DEFINE(WITH_AFS)
1913     ;;
1914   *)
1915     AC_MSG_RESULT(no)
1916     ;;
1917   esac ],
1918   AC_MSG_RESULT(no)
1922 #################################################
1923 # check for the DFS clear-text auth system
1924 AC_MSG_CHECKING(whether to use DFS clear-text auth)
1925 AC_ARG_WITH(dfs,
1926 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
1927 [ case "$withval" in
1928   yes)
1929     AC_MSG_RESULT(yes)
1930     AC_DEFINE(WITH_DFS)
1931     ;;
1932   *)
1933     AC_MSG_RESULT(no)
1934     ;;
1935   esac ],
1936   AC_MSG_RESULT(no)
1939 #################################################
1940 # active directory support
1942 with_ads_support=yes
1943 AC_MSG_CHECKING([whether to use Active Directory])
1945 AC_ARG_WITH(ads,
1946 [   --with-ads  Active Directory support (default yes)],
1947 [ case "$withval" in
1948     no)
1949         with_ads_support=no
1950         ;;
1951   esac ])
1953 if test x"$with_ads_support" = x"yes"; then
1954    AC_DEFINE(WITH_ADS)
1957 AC_MSG_RESULT($with_ads_support)
1959 if test x"$with_ads_support" = x"yes"; then
1961   #################################################
1962   # check for location of Kerberos 5 install
1963 FOUND_KRB5=0
1964   AC_MSG_CHECKING(for kerberos 5 install path)
1965   AC_ARG_WITH(krb5,
1966   [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
1967   [ case "$withval" in
1968     no)
1969       AC_MSG_RESULT(no)
1970       ;;
1971     *)
1972       AC_MSG_RESULT(yes)
1973       LIBS="$LIBS -lkrb5"
1974       CFLAGS="$CFLAGS -I$withval/include"
1975       CPPFLAGS="$CPPFLAGS -I$withval/include"
1976       LDFLAGS="$LDFLAGS -L$withval/lib"
1977     FOUND_KRB5=1
1978       ;;
1979     esac ],
1980     AC_MSG_RESULT(no)
1981   )
1984 if [ $FOUND_KRB5 = 0 ]; then
1985 #################################################
1986 # see if this box has the RedHat location for kerberos
1987 AC_MSG_CHECKING(for /usr/kerberos)
1988 if test -d /usr/kerberos; then
1989     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
1990     CFLAGS="$CFLAGS -I/usr/kerberos/include"
1991     CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1992     AC_MSG_RESULT(yes)
1993 else
1994     AC_MSG_RESULT(no)
1999   # now check for krb5.h. Some systems have the libraries without the headers!
2000   # note that this check is done here to allow for different kerberos
2001   # include paths
2002   AC_CHECK_HEADERS(krb5.h)
2004   # now check for gssapi headers.  This is also done here to allow for
2005   # different kerberos include paths
2006   AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h)
2008   ##################################################################
2009   # we might need the k5crypto and com_err libraries on some systems
2010   AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
2011   AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
2013   ########################################################
2014   # now see if we can find the krb5 libs in standard paths
2015   # or as specified above
2016   AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
2017         AC_DEFINE(HAVE_KRB5)])
2019   ########################################################
2020   # now see if we can find the gssapi libs in standard paths
2021   AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
2022         AC_DEFINE(HAVE_GSSAPI)])
2025 ########################################################
2026 # Compile with LDAP support?
2028 with_ldap_support=yes
2029 AC_MSG_CHECKING([whether to use LDAP])
2031 AC_ARG_WITH(ldap,
2032 [   --with-ldap  LDAP support (default yes)],
2033 [ case "$withval" in
2034     no)
2035         with_ldap_support=no
2036         ;;
2037   esac ])
2039 AC_MSG_RESULT($with_ldap_support)
2041 if test x"$with_ldap_support" = x"yes"; then
2043   ##################################################################
2044   # we might need the lber lib on some systems. To avoid link errors
2045   # this test must be before the libldap test
2046   AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
2048   ########################################################
2049   # now see if we can find the ldap libs in standard paths
2050   if test x$have_ldap != xyes; then
2051   AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
2052         AC_DEFINE(HAVE_LDAP)])
2054         ########################################################
2055         # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2056         # Check found in pam_ldap 145.
2057         AC_CHECK_FUNCS(ldap_set_rebind_proc)
2058         AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [
2059         AC_TRY_COMPILE([
2060         #include <lber.h>
2061         #include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [pam_ldap_cv_ldap_set_rebind_proc=3], [pam_ldap_cv_ldap_set_rebind_proc=2]) ])
2062         AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc)
2063   fi
2066 #################################################
2067 # check for automount support
2068 AC_MSG_CHECKING(whether to use AUTOMOUNT)
2069 AC_ARG_WITH(automount,
2070 [  --with-automount        Include AUTOMOUNT support (default=no)],
2071 [ case "$withval" in
2072   yes)
2073     AC_MSG_RESULT(yes)
2074     AC_DEFINE(WITH_AUTOMOUNT)
2075     ;;
2076   *)
2077     AC_MSG_RESULT(no)
2078     ;;
2079   esac ],
2080   AC_MSG_RESULT(no)
2083 #################################################
2084 # check for smbmount support
2085 AC_MSG_CHECKING(whether to use SMBMOUNT)
2086 AC_ARG_WITH(smbmount,
2087 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
2088 [ case "$withval" in
2089   yes)
2090         case "$host_os" in
2091         *linux*)
2092                 AC_MSG_RESULT(yes)
2093                 AC_DEFINE(WITH_SMBMOUNT)
2094                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
2095                 ;;
2096         *)
2097                 AC_MSG_ERROR(not on a linux system!)
2098                 ;;
2099         esac
2100     ;;
2101   *)
2102     AC_MSG_RESULT(no)
2103     MPROGS=
2104     ;;
2105   esac ],
2106   AC_MSG_RESULT(no)
2107   MPROGS=
2111 #################################################
2112 # check for a PAM clear-text auth, accounts, password and session support
2113 with_pam_for_crypt=no
2114 AC_MSG_CHECKING(whether to use PAM)
2115 AC_ARG_WITH(pam,
2116 [  --with-pam              Include PAM support (default=no)],
2117 [ case "$withval" in
2118   yes)
2119     AC_MSG_RESULT(yes)
2120     AC_DEFINE(WITH_PAM)
2121     LIBS="$LIBS -lpam"
2122     with_pam_for_crypt=yes
2123     ;;
2124   *)
2125     AC_MSG_RESULT(no)
2126     ;;
2127   esac ],
2128   AC_MSG_RESULT(no)
2131 # we can't build a pam module if we don't have pam.
2132 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
2134 #################################################
2135 # check for pam_smbpass support
2136 AC_MSG_CHECKING(whether to use pam_smbpass)
2137 AC_ARG_WITH(pam_smbpass,
2138 [  --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)],
2139 [ case "$withval" in
2140   yes)
2141     AC_MSG_RESULT(yes)
2143 # Conditions under which pam_smbpass should not be built.
2145        if test x$PICFLAG = x; then
2146           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2147           PAM_MOD=""
2148        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2149           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2150           PAM_MOD=""
2151        else
2152           PAM_MOD="bin/pam_smbpass.so"
2153        fi
2154     ;;
2155   *)
2156     AC_MSG_RESULT(no)
2157     ;;
2158   esac ],
2159   AC_MSG_RESULT(no)
2163 ###############################################
2164 # test for where we get crypt() from, but only
2165 # if not using PAM
2166 if test $with_pam_for_crypt = no; then
2167 AC_CHECK_FUNCS(crypt)
2168 if test x"$ac_cv_func_crypt" = x"no"; then
2169     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
2170         AC_DEFINE(HAVE_CRYPT)])
2175 ## moved after the check for -lcrypt in order to
2176 ## ensure that the necessary libraries are included
2177 ## check checking for truncated salt.  Wrapped by the
2178 ## $with_pam_for_crypt variable as above   --jerry
2180 if test $with_pam_for_crypt = no; then
2181 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2182 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2183         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
2184 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2185         AC_DEFINE(HAVE_TRUNCATED_SALT)
2189 # New experimental SAM system
2191 AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
2192 AC_ARG_WITH(sam,
2193 [  --with-sam              Build new (experimental) SAM database (default=no)],
2194 [ case "$withval" in
2195   yes)
2196     AC_MSG_RESULT(yes)
2197     AC_DEFINE(WITH_SAM)
2198     ;;
2199   *)
2200     AC_MSG_RESULT(no)
2201     ;;
2202   esac ],
2203   AC_MSG_RESULT(no)
2207 ########################################################################################
2209 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2211 ########################################################################################
2213 #################################################
2214 # check for a TDB password database
2215 AC_MSG_CHECKING(whether to use TDB SAM database)
2216 AC_ARG_WITH(tdbsam,
2217 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2218 [ case "$withval" in
2219   yes)
2220     AC_MSG_RESULT(yes)
2221     AC_DEFINE(WITH_TDB_SAM)
2222     ;;
2223   *)
2224     AC_MSG_RESULT(no)
2225     ;;
2226   esac ],
2227   AC_MSG_RESULT(no)
2230 #################################################
2231 # check for a NISPLUS password database
2232 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2233 AC_ARG_WITH(nisplussam,
2234 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2235 [ case "$withval" in
2236   yes)
2237     AC_MSG_RESULT(yes)
2238     AC_DEFINE(WITH_NISPLUS_SAM)
2239     ;;
2240   *)
2241     AC_MSG_RESULT(no)
2242     ;;
2243   esac ],
2244   AC_MSG_RESULT(no)
2247 ########################################################################################
2249 ## END OF TESTS FOR SAM BACKENDS.  
2251 ########################################################################################
2253 #################################################
2254 # check for a NISPLUS_HOME support 
2255 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2256 AC_ARG_WITH(nisplus-home,
2257 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2258 [ case "$withval" in
2259   yes)
2260     AC_MSG_RESULT(yes)
2261     AC_DEFINE(WITH_NISPLUS_HOME)
2262     ;;
2263   *)
2264     AC_MSG_RESULT(no)
2265     ;;
2266   esac ],
2267   AC_MSG_RESULT(no)
2270 #################################################
2271 # check for syslog logging
2272 AC_MSG_CHECKING(whether to use syslog logging)
2273 AC_ARG_WITH(syslog,
2274 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2275 [ case "$withval" in
2276   yes)
2277     AC_MSG_RESULT(yes)
2278     AC_DEFINE(WITH_SYSLOG)
2279     ;;
2280   *)
2281     AC_MSG_RESULT(no)
2282     ;;
2283   esac ],
2284   AC_MSG_RESULT(no)
2287 #################################################
2288 # check for a shared memory profiling support
2289 AC_MSG_CHECKING(whether to use profiling)
2290 AC_ARG_WITH(profiling-data,
2291 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2292 [ case "$withval" in
2293   yes)
2294     AC_MSG_RESULT(yes)
2295     AC_DEFINE(WITH_PROFILE)
2296     ;;
2297   *)
2298     AC_MSG_RESULT(no)
2299     ;;
2300   esac ],
2301   AC_MSG_RESULT(no)
2305 #################################################
2306 # check for experimental disk-quotas support
2307 QUOTAOBJS=smbd/noquotas.o
2309 AC_MSG_CHECKING(whether to support disk-quotas)
2310 AC_ARG_WITH(quotas,
2311 [  --with-quotas           Include experimental disk-quota support (default=no)],
2312 [ case "$withval" in
2313   yes)
2314     AC_MSG_RESULT(yes)
2315     case "$host_os" in
2316       *linux*)
2317         # Check for kernel 2.4.x quota braindamage...
2318         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2319         AC_TRY_COMPILE([#include <stdio.h>
2320 #include <sys/types.h>
2321 #include <asm/types.h>
2322 #include <linux/quota.h>
2323 #include <mntent.h>
2324 #include <linux/unistd.h>],[struct mem_dqblk D;],
2325       samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2326 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2327         AC_DEFINE(LINUX_QUOTAS_2)
2328 else
2329         AC_DEFINE(LINUX_QUOTAS_1)
2331         ;;
2332       *)
2333         ;;
2334     esac
2335     QUOTAOBJS=smbd/quotas.o
2336     AC_DEFINE(WITH_QUOTAS)
2337     ;;
2338   *)
2339     AC_MSG_RESULT(no)
2340     ;;
2341   esac ],
2342   AC_MSG_RESULT(no)
2344 AC_SUBST(QUOTAOBJS)
2346 #################################################
2347 # check for experimental utmp accounting
2349 AC_MSG_CHECKING(whether to support utmp accounting)
2350 AC_ARG_WITH(utmp,
2351 [  --with-utmp             Include experimental utmp accounting (default=no)],
2352 [ case "$withval" in
2353   yes)
2354     AC_MSG_RESULT(yes)
2355     AC_DEFINE(WITH_UTMP)
2356     ;;
2357   *)
2358     AC_MSG_RESULT(no)
2359     ;;
2360   esac ],
2361   AC_MSG_RESULT(no)
2364 #################################################
2365 # choose native language(s) of man pages
2366 AC_MSG_CHECKING(chosen man pages' language(s))
2367 AC_ARG_WITH(manpages-langs,
2368 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
2369 [ case "$withval" in
2370   yes|no)
2371     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
2372     manlangs="en"
2373   ;;
2374   *)
2375     manlangs="$withval"
2376   ;;
2377   esac
2379   AC_MSG_RESULT($manlangs)
2380   manlangs=`echo $manlangs | sed "s/,/ /"`   # replacing commas with spaces to produce a list
2381   AC_SUBST(manlangs)],
2383   [manlangs="en"
2384   AC_MSG_RESULT($manlangs)
2385   AC_SUBST(manlangs)]
2388 #################################################
2389 # should we build libsmbclient?
2391 LIBSMBCLIENT_SHARED=
2392 LIBSMBCLIENT=
2393 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2394 AC_ARG_WITH(libsmbclient,
2395 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes)],
2396 [ case "$withval" in
2397   no) 
2398      AC_MSG_RESULT(no)
2399      ;;
2400   *)
2401      if test $BLDSHARED = true; then
2402         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2403         LIBSMBCLIENT=libsmbclient
2404         AC_MSG_RESULT(yes)
2405      else
2406         AC_MSG_RESULT(no shared library support)
2407      fi
2408      ;;
2409   esac ],
2410   AC_MSG_RESULT(yes)
2414 #################################################
2415 # these tests are taken from the GNU fileutils package
2416 AC_CHECKING(how to get filesystem space usage)
2417 space=no
2419 # Test for statvfs64.
2420 if test $space = no; then
2421   # SVR4
2422   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2423   [AC_TRY_RUN([
2424 #if defined(HAVE_UNISTD_H)
2425 #include <unistd.h>
2426 #endif
2427 #include <sys/types.h>
2428 #include <sys/statvfs.h>
2429   main ()
2430   {
2431     struct statvfs64 fsd;
2432     exit (statvfs64 (".", &fsd));
2433   }],
2434   fu_cv_sys_stat_statvfs64=yes,
2435   fu_cv_sys_stat_statvfs64=no,
2436   fu_cv_sys_stat_statvfs64=cross)])
2437   if test $fu_cv_sys_stat_statvfs64 = yes; then
2438     space=yes
2439     AC_DEFINE(STAT_STATVFS64)
2440   fi
2443 # Perform only the link test since it seems there are no variants of the
2444 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2445 # because that got a false positive on SCO OSR5.  Adding the declaration
2446 # of a `struct statvfs' causes this test to fail (as it should) on such
2447 # systems.  That system is reported to work fine with STAT_STATFS4 which
2448 # is what it gets when this test fails.
2449 if test $space = no; then
2450   # SVR4
2451   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2452                  [AC_TRY_LINK([#include <sys/types.h>
2453 #include <sys/statvfs.h>],
2454                               [struct statvfs fsd; statvfs (0, &fsd);],
2455                               fu_cv_sys_stat_statvfs=yes,
2456                               fu_cv_sys_stat_statvfs=no)])
2457   if test $fu_cv_sys_stat_statvfs = yes; then
2458     space=yes
2459     AC_DEFINE(STAT_STATVFS)
2460   fi
2463 if test $space = no; then
2464   # DEC Alpha running OSF/1
2465   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2466   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2467   [AC_TRY_RUN([
2468 #include <sys/param.h>
2469 #include <sys/types.h>
2470 #include <sys/mount.h>
2471   main ()
2472   {
2473     struct statfs fsd;
2474     fsd.f_fsize = 0;
2475     exit (statfs (".", &fsd, sizeof (struct statfs)));
2476   }],
2477   fu_cv_sys_stat_statfs3_osf1=yes,
2478   fu_cv_sys_stat_statfs3_osf1=no,
2479   fu_cv_sys_stat_statfs3_osf1=no)])
2480   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2481   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2482     space=yes
2483     AC_DEFINE(STAT_STATFS3_OSF1)
2484   fi
2487 if test $space = no; then
2488 # AIX
2489   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2490 member (AIX, 4.3BSD)])
2491   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2492   [AC_TRY_RUN([
2493 #ifdef HAVE_SYS_PARAM_H
2494 #include <sys/param.h>
2495 #endif
2496 #ifdef HAVE_SYS_MOUNT_H
2497 #include <sys/mount.h>
2498 #endif
2499 #ifdef HAVE_SYS_VFS_H
2500 #include <sys/vfs.h>
2501 #endif
2502   main ()
2503   {
2504   struct statfs fsd;
2505   fsd.f_bsize = 0;
2506   exit (statfs (".", &fsd));
2507   }],
2508   fu_cv_sys_stat_statfs2_bsize=yes,
2509   fu_cv_sys_stat_statfs2_bsize=no,
2510   fu_cv_sys_stat_statfs2_bsize=no)])
2511   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2512   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2513     space=yes
2514     AC_DEFINE(STAT_STATFS2_BSIZE)
2515   fi
2518 if test $space = no; then
2519 # SVR3
2520   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2521   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2522   [AC_TRY_RUN([#include <sys/types.h>
2523 #include <sys/statfs.h>
2524   main ()
2525   {
2526   struct statfs fsd;
2527   exit (statfs (".", &fsd, sizeof fsd, 0));
2528   }],
2529     fu_cv_sys_stat_statfs4=yes,
2530     fu_cv_sys_stat_statfs4=no,
2531     fu_cv_sys_stat_statfs4=no)])
2532   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2533   if test $fu_cv_sys_stat_statfs4 = yes; then
2534     space=yes
2535     AC_DEFINE(STAT_STATFS4)
2536   fi
2539 if test $space = no; then
2540 # 4.4BSD and NetBSD
2541   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2542 member (4.4BSD and NetBSD)])
2543   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2544   [AC_TRY_RUN([#include <sys/types.h>
2545 #ifdef HAVE_SYS_PARAM_H
2546 #include <sys/param.h>
2547 #endif
2548 #ifdef HAVE_SYS_MOUNT_H
2549 #include <sys/mount.h>
2550 #endif
2551   main ()
2552   {
2553   struct statfs fsd;
2554   fsd.f_fsize = 0;
2555   exit (statfs (".", &fsd));
2556   }],
2557   fu_cv_sys_stat_statfs2_fsize=yes,
2558   fu_cv_sys_stat_statfs2_fsize=no,
2559   fu_cv_sys_stat_statfs2_fsize=no)])
2560   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2561   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2562     space=yes
2563     AC_DEFINE(STAT_STATFS2_FSIZE)
2564   fi
2567 if test $space = no; then
2568   # Ultrix
2569   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2570   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2571   [AC_TRY_RUN([#include <sys/types.h>
2572 #ifdef HAVE_SYS_PARAM_H
2573 #include <sys/param.h>
2574 #endif
2575 #ifdef HAVE_SYS_MOUNT_H
2576 #include <sys/mount.h>
2577 #endif
2578 #ifdef HAVE_SYS_FS_TYPES_H
2579 #include <sys/fs_types.h>
2580 #endif
2581   main ()
2582   {
2583   struct fs_data fsd;
2584   /* Ultrix's statfs returns 1 for success,
2585      0 for not mounted, -1 for failure.  */
2586   exit (statfs (".", &fsd) != 1);
2587   }],
2588   fu_cv_sys_stat_fs_data=yes,
2589   fu_cv_sys_stat_fs_data=no,
2590   fu_cv_sys_stat_fs_data=no)])
2591   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2592   if test $fu_cv_sys_stat_fs_data = yes; then
2593     space=yes
2594     AC_DEFINE(STAT_STATFS2_FS_DATA)
2595   fi
2599 # As a gating factor for large file support, in order to
2600 # use <4GB files we must have the following minimal support
2601 # available.
2602 # long long, and a 64 bit off_t or off64_t.
2603 # If we don't have all of these then disable large
2604 # file support.
2606 AC_MSG_CHECKING([if large file support can be enabled])
2607 AC_TRY_COMPILE([
2608 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2609 #include <sys/types.h>
2610 #else
2611 __COMPILE_ERROR_
2612 #endif
2614 [int i],
2615 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2616 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2617     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2619 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2621 AC_ARG_WITH(spinlocks, 
2622 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
2623 if test "x$with_spinlocks" = "xyes"; then
2624     AC_DEFINE(USE_SPINLOCKS)
2626     case "$host_cpu" in
2627         sparc)
2628             AC_DEFINE(SPARC_SPINLOCKS)
2629             ;;
2631         i386|i486|i586|i686)
2632             AC_DEFINE(INTEL_SPINLOCKS)
2633             ;;
2635         mips)
2636             AC_DEFINE(MIPS_SPINLOCKS)
2637             ;;
2639         powerpc)
2640             AC_DEFINE(POWERPC_SPINLOCKS)
2641             ;;
2642     esac
2645 #################################################
2646 # check for ACL support
2648 AC_MSG_CHECKING(whether to support ACLs)
2649 AC_ARG_WITH(acl-support,
2650 [  --with-acl-support      Include ACL support (default=no)],
2651 [ case "$withval" in
2652   yes)
2654         case "$host_os" in
2655         *sysv5*)
2656                 AC_MSG_RESULT(Using UnixWare ACLs)
2657                 AC_DEFINE(HAVE_UNIXWARE_ACLS)
2658                 ;;
2659         *solaris*)
2660                 AC_MSG_RESULT(Using solaris ACLs)
2661                 AC_DEFINE(HAVE_SOLARIS_ACLS)
2662                 ;;
2663         *hpux*)
2664                 AC_MSG_RESULT(Using HPUX ACLs)
2665                 AC_DEFINE(HAVE_HPUX_ACLS)
2666                 ;;
2667         *irix*)
2668                 AC_MSG_RESULT(Using IRIX ACLs)
2669                 AC_DEFINE(HAVE_IRIX_ACLS)
2670                 ;;
2671         *aix*)
2672                 AC_MSG_RESULT(Using AIX ACLs)
2673                 AC_DEFINE(HAVE_AIX_ACLS)
2674                 ;;
2675         *osf*)
2676                 AC_MSG_RESULT(Using Tru64 ACLs)
2677                 AC_DEFINE(HAVE_TRU64_ACLS)
2678                 LIBS="$LIBS -lpacl"
2679                 ;;
2680         *)
2681                 AC_CHECK_LIB(acl,acl_get_file)
2682                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2683                 AC_TRY_LINK([#include <sys/types.h>
2684 #include <sys/acl.h>],
2685 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2686 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2687                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2688                                 AC_MSG_RESULT(Using posix ACLs)
2689                                 AC_DEFINE(HAVE_POSIX_ACLS)
2690                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2691                                 AC_TRY_LINK([#include <sys/types.h>
2692 #include <sys/acl.h>],
2693 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2694 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2695                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2696                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2697                                 fi
2698                         fi
2699             ;;
2700         esac
2701         ;;
2702   *)
2703     AC_MSG_RESULT(no)
2704     AC_DEFINE(HAVE_NO_ACLS)
2705     ;;
2706   esac ],
2707   AC_DEFINE(HAVE_NO_ACLS)
2708   AC_MSG_RESULT(no)
2711 #################################################
2712 # check for sendfile support
2714 AC_MSG_CHECKING(whether to support sendfile)
2715 AC_ARG_WITH(sendfile-support,
2716 [  --with-sendfile-support      Include sendfile support (default=no)],
2717 [ case "$withval" in
2718   yes)
2720         case "$host_os" in
2721         *linux*)
2722                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2723                 AC_TRY_LINK([#include <sys/sendfile.h>],
2725 int tofd, fromfd;
2726 off64_t offset;
2727 size_t total;
2728 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2730 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2732                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2733                 AC_TRY_LINK([#include <sys/sendfile.h>],
2735 int tofd, fromfd;
2736 off_t offset;
2737 size_t total;
2738 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2740 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2742 # Try and cope with broken Linux sendfile....
2743                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2744                 AC_TRY_LINK([\
2745 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2746 #undef _FILE_OFFSET_BITS
2747 #endif
2748 #include <sys/sendfile.h>],
2750 int tofd, fromfd;
2751 off_t offset;
2752 size_t total;
2753 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2755 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2757         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2758                 AC_DEFINE(HAVE_SENDFILE64)
2759                 AC_DEFINE(LINUX_SENDFILE_API)
2760                 AC_DEFINE(WITH_SENDFILE)
2761         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2762                 AC_DEFINE(HAVE_SENDFILE)
2763                 AC_DEFINE(LINUX_SENDFILE_API)
2764                 AC_DEFINE(WITH_SENDFILE)
2765         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2766                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API)
2767                 AC_DEFINE(WITH_SENDFILE)
2768         else
2769                 AC_MSG_RESULT(no);
2770         fi
2772         ;;
2773         *freebsd*)
2774                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2775                 AC_TRY_LINK([\
2776 #include <sys/types.h>
2777 #include <sys/socket.h>
2778 #include <sys/uio.h>],
2780 #define NULL (void *)0
2781         int fromfd, tofd, ret, total;
2782         off_t offset, nwritten;
2783         struct sf_hdtr {
2784                 struct iovec *headers;
2785                 int hdr_cnt;
2786                 struct iovec *trailers;
2787                 int trl_cnt;
2788         } hdr;
2789         struct iovec hdtrl;
2790         hdr.headers = &hdtrl;
2791         hdr.hdr_cnt = 1;
2792         hdr.trailers = NULL;
2793         hdr.trl_cnt = 0;
2794         hdtrl.iov_base = NULL;
2795         hdtrl.iov_len = 0;
2796         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2798 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2800         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2801                 AC_DEFINE(HAVE_SENDFILE)
2802                 AC_DEFINE(FREEBSD_SENDFILE_API)
2803                 AC_DEFINE(WITH_SENDFILE)
2804         else
2805                 AC_MSG_RESULT(no);
2806         fi
2807         ;;
2809         *hpux*)
2810                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2811                 AC_TRY_LINK([\
2812 #include <sys/socket.h>
2813 #include <sys/uio.h>],
2815         int fromfd, tofd;
2816         size_t total=0;
2817         struct iovec hdtrl[2];
2818         ssize_t nwritten;
2819         off64_t offset;
2821         hdtrl[0].iov_base = 0;
2822         hdtrl[0].iov_len = 0;
2824         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2826 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2827         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2828                 AC_DEFINE(HAVE_SENDFILE64)
2829                 AC_DEFINE(HPUX_SENDFILE_API)
2830                 AC_DEFINE(WITH_SENDFILE)
2831         else
2832                 AC_MSG_RESULT(no);
2833         fi
2835                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2836                 AC_TRY_LINK([\
2837 #include <sys/socket.h>
2838 #include <sys/uio.h>],
2840         int fromfd, tofd;
2841         size_t total=0;
2842         struct iovec hdtrl[2];
2843         ssize_t nwritten;
2844         off_t offset;
2846         hdtrl[0].iov_base = 0;
2847         hdtrl[0].iov_len = 0;
2849         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2851 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2852         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2853                 AC_DEFINE(HAVE_SENDFILE)
2854                 AC_DEFINE(HPUX_SENDFILE_API)
2855                 AC_DEFINE(WITH_SENDFILE)
2856         else
2857                 AC_MSG_RESULT(no);
2858         fi
2860         ;;
2862         *)
2863         ;;
2864         esac
2865         ;;
2866   *)
2867     AC_MSG_RESULT(no)
2868     ;;
2869   esac ],
2870   AC_MSG_RESULT(no)
2874 #################################################
2875 # Check whether winbind is supported on this platform.  If so we need to
2876 # build and install client programs (WINBIND_TARGETS), sbin programs
2877 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2879 AC_MSG_CHECKING(whether to build winbind)
2881 # Initially, the value of $host_os decides whether winbind is supported
2883 case "$host_os" in
2884         *linux*|*irix*)
2885                 HAVE_WINBIND=yes
2886                 ;;
2887         *solaris*)
2888                 HAVE_WINBIND=yes
2889                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2890                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
2891                 ;;
2892         *hpux11*)
2893                 HAVE_WINBIND=yes
2894                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
2895                 ;;
2896         *)
2897                 HAVE_WINBIND=no
2898                 winbind_no_reason=", unsupported on $host_os"
2899                 ;;
2900 esac
2902 # Check the setting of --with-winbindd
2904 AC_ARG_WITH(winbind,
2905 [  --with-winbind          Build winbind (default, if supported by OS)],
2907   case "$withval" in
2908         yes)
2909                 HAVE_WINBIND=yes
2910                 ;;
2911         no)
2912                 HAVE_WINBIND=no
2913                 winbind_reason=""
2914                 ;;
2915   esac ],
2918 # We need unix domain sockets for winbind
2920 if test x"$HAVE_WINBIND" = x"yes"; then
2921         if test x"$samba_cv_unixsocket" = x"no"; then
2922                 winbind_no_reason=", no unix domain socket support on $host_os"
2923                 HAVE_WINBIND=no
2924         fi
2927 # Display test results
2929 WINBIND_TARGETS=""
2930 WINBIND_STARGETS=""
2931 WINBIND_LTARGETS=""
2932 WINBIND_PAM_PROGS=""
2934 if test x"$HAVE_WINBIND" = x"yes"; then
2935         AC_MSG_RESULT(yes)
2936         AC_DEFINE(WITH_WINBIND)
2938         WINBIND_TARGETS="bin/wbinfo"
2939         WINBIND_STARGETS="bin/winbindd"
2940         if test x"$BLDSHARED" = x"true"; then
2941                 WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
2942                 if test x"$with_pam" = x"yes"; then
2943                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
2944                 fi
2945         fi
2946 else
2947         AC_MSG_RESULT(no$winbind_no_reason)
2951 # Substitution time!
2953 AC_SUBST(WINBIND_TARGETS)
2954 AC_SUBST(WINBIND_STARGETS)
2955 AC_SUBST(WINBIND_LTARGETS)
2956 AC_SUBST(WINBIND_PAM_TARGETS)
2957 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
2958 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
2960 # Solaris has some extra fields in struct passwd that need to be
2961 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
2962 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
2963 # this. 
2965 #AC_CHECK_MEMBER(struct passwd.pw_comment,
2966 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
2967 #               [#include <pwd.h>])
2969 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
2970     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
2971         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
2972 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
2973    AC_DEFINE(HAVE_PASSWD_PW_COMMENT)
2976 #AC_CHECK_MEMBER(struct passwd.pw_age,
2977 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
2978 #               [#include <pwd.h>])
2980 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
2981     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
2982         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
2983 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
2984    AC_DEFINE(HAVE_PASSWD_PW_AGE)
2987 #################################################
2988 # Check to see if we should use the included popt 
2990 AC_ARG_WITH(included-popt,
2991 [  --with-included-popt    use bundled popt library, not from system],
2993   case "$withval" in
2994         yes)
2995                 INCLUDED_POPT=yes
2996                 ;;
2997         no)
2998                 INCLUDED_POPT=no
2999                 ;;
3000   esac ],
3002 if test x"$INCLUDED_POPT" != x"yes"; then
3003     AC_CHECK_LIB(popt, poptGetContext,
3004                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3007 AC_MSG_CHECKING(whether to use included popt)
3008 if test x"$INCLUDED_POPT" = x"yes"; then
3009     AC_MSG_RESULT(yes)
3010     BUILD_POPT='$(POPT_OBJS)'
3011     FLAGS1="-I$srcdir/popt"
3012 else
3013     AC_MSG_RESULT(no)
3014     LIBS="$LIBS -lpopt"
3016 AC_SUBST(BUILD_POPT)
3017 AC_SUBST(FLAGS1)
3019 #################################################
3020 # Check if the user wants Python
3022 # At the moment, you can use this to set which Python binary to link
3023 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3024 # though they can coexist in different directories.)  In the future
3025 # this might make the Python stuff be built by default.
3027 AC_ARG_WITH(python,
3028 [  --with-python=PYTHONNAME  build Python libraries],
3029 [ case "${withval-python}" in
3030   yes)
3031         PYTHON=python
3032         ;;
3033   *)
3034         PYTHON=${withval-python}
3035         ;;
3036   esac ])
3037 AC_SUBST(PYTHON)
3039 #################################################
3040 # do extra things if we are running insure
3042 if test "${ac_cv_prog_CC}" = "insure"; then
3043         CPPFLAGS="$CPPFLAGS -D__INSURE__"
3046 #################################################
3047 # final configure stuff
3049 AC_MSG_CHECKING([configure summary])
3050 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3051            AC_MSG_RESULT(yes),
3052            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3053            AC_MSG_WARN([cannot run when cross-compiling]))
3055 builddir=`pwd`
3056 AC_SUBST(builddir)
3058 # I added make files that are outside /source directory.
3059 # I know this is not a good solution, will work out a better
3060 # solution soon.                        --simo
3061 AC_OUTPUT(include/stamp-h Makefile script/findsmb ../examples/VFS/Makefile ../examples/pdb/mysql/Makefile ../examples/pdb/xml/Makefile ../examples/sam/Makefile)
3063 #################################################
3064 # Print very concise instructions on building/use
3065 if test "x$enable_dmalloc" = xyes
3066 then
3067         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
3068         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])