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