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