When testing for /usr/include/heimdal, don't include /usr/heimdal/include
[tprouty/samba.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    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1007      $CC $CPPFLAGS $CFLAGS $LDSHFLAGS -o shlib.so shlib.po &&
1008      ac_cv_shlib_works=yes
1009    rm -f shlib.so shlib.po
1010 ])
1011 if test $ac_cv_shlib_works = no; then
1012    BLDSHARED=false
1013 fi
1014 fi
1015
1016
1017 # this updates our target list if we can build shared libs
1018 if test $BLDSHARED = true; then
1019    LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
1020 else
1021    LIBSMBCLIENT_SHARED=
1022 fi
1023
1024 ################
1025
1026 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1027 AC_TRY_RUN([#include <stdio.h>
1028 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1029 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1030 if test x"$samba_cv_have_longlong" = x"yes"; then
1031     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1032 fi
1033
1034 #
1035 # Check if the compiler supports the LL prefix on long long integers.
1036 # AIX needs this.
1037
1038 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1039     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1040         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1041 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1042    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1043 fi
1044
1045   
1046 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1047 AC_TRY_RUN([#include <stdio.h>
1048 #include <sys/stat.h>
1049 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1050 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1051 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1052     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1053 fi
1054
1055 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1056 AC_TRY_RUN([
1057 #if defined(HAVE_UNISTD_H)
1058 #include <unistd.h>
1059 #endif
1060 #include <stdio.h>
1061 #include <sys/stat.h>
1062 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1063 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1064 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1065     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1066 fi
1067
1068 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1069 AC_TRY_RUN([#include <stdio.h>
1070 #include <sys/stat.h>
1071 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1072 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1073 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1074     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1075 fi
1076
1077 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1078 AC_TRY_RUN([
1079 #if defined(HAVE_UNISTD_H)
1080 #include <unistd.h>
1081 #endif
1082 #include <stdio.h>
1083 #include <sys/stat.h>
1084 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1085 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1086 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1087     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1088 fi
1089
1090 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1091 AC_TRY_RUN([
1092 #if defined(HAVE_UNISTD_H)
1093 #include <unistd.h>
1094 #endif
1095 #include <stdio.h>
1096 #include <sys/stat.h>
1097 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1098 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1099 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1100     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1101 fi
1102
1103 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1104 AC_TRY_COMPILE([
1105 #if defined(HAVE_UNISTD_H)
1106 #include <unistd.h>
1107 #endif
1108 #include <sys/types.h>
1109 #include <dirent.h>],
1110 [struct dirent64 de;],
1111 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1112 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1113     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1114 fi
1115
1116 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1117 AC_TRY_RUN([
1118 #if defined(HAVE_UNISTD_H)
1119 #include <unistd.h>
1120 #endif
1121 #include <sys/types.h>
1122 main() { dev_t dev; int i = major(dev); return 0; }],
1123 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1124 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1125     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1126 fi
1127
1128 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1129 AC_TRY_RUN([
1130 #if defined(HAVE_UNISTD_H)
1131 #include <unistd.h>
1132 #endif
1133 #include <sys/types.h>
1134 main() { dev_t dev; int i = minor(dev); return 0; }],
1135 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1136 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1137     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1138 fi
1139
1140 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1141 AC_TRY_RUN([#include <stdio.h>
1142 main() { char c; c=250; exit((c > 0)?0:1); }],
1143 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1144 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1145     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1146 fi
1147
1148 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1149 AC_TRY_COMPILE([#include <sys/types.h>
1150 #include <sys/socket.h>
1151 #include <netinet/in.h>],
1152 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1153 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1154 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1155     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1156 fi
1157
1158 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1159 AC_TRY_COMPILE([#include <sys/types.h>
1160 #include <dirent.h>
1161 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1162 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1163 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1164     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1165 fi
1166
1167 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
1168 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
1169 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
1170 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
1171     AC_DEFINE(HAVE_FILE_MACRO,1,[Whether there is a __FILE__ macro])
1172 fi
1173
1174 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1175 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1176 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1177 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1178     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1179 fi
1180
1181 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1182 AC_TRY_RUN([
1183 #include <sys/time.h>
1184 #include <unistd.h>
1185 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1186            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1187 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1188     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1189 fi
1190
1191 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1192 AC_TRY_LINK([#include <stdarg.h>
1193 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1194 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1195 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1196     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1197 fi
1198
1199 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1200 AC_TRY_RUN([
1201 #include <sys/types.h>
1202 #include <stdarg.h>
1203 void foo(const char *format, ...) { 
1204        va_list ap;
1205        int len;
1206        char buf[5];
1207
1208        va_start(ap, format);
1209        len = vsnprintf(buf, 0, format, ap);
1210        va_end(ap);
1211        if (len != 5) exit(1);
1212
1213        va_start(ap, format);
1214        len = vsnprintf(0, 0, format, ap);
1215        va_end(ap);
1216        if (len != 5) exit(1);
1217
1218        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1219
1220        exit(0);
1221 }
1222 main() { foo("hello"); }
1223 ],
1224 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1225 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1226     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1227 fi
1228
1229 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1230 AC_TRY_RUN([#include <sys/types.h>
1231 #include <dirent.h>
1232 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1233 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1234 di->d_name[0] == 0) exit(0); exit(1);} ],
1235 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1236 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1237     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1238 fi
1239
1240 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1241 AC_TRY_COMPILE([#include <sys/types.h>
1242 #include <utime.h>],
1243 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1244 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1245 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1246     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1247 fi
1248
1249 dnl  utmp and utmpx come in many flavours
1250 dnl  We need to check for many of them
1251 dnl  But we don't need to do each and every one, because our code uses
1252 dnl  mostly just the utmp (not utmpx) fields.
1253
1254 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1255
1256 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1257 AC_TRY_COMPILE([#include <sys/types.h>
1258 #include <utmp.h>],
1259 [struct utmp ut;  ut.ut_name[0] = 'a';],
1260 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1261 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1262     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1263 fi 
1264
1265 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1266 AC_TRY_COMPILE([#include <sys/types.h>
1267 #include <utmp.h>],
1268 [struct utmp ut;  ut.ut_user[0] = 'a';],
1269 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1270 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1271     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1272 fi 
1273
1274 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1275 AC_TRY_COMPILE([#include <sys/types.h>
1276 #include <utmp.h>],
1277 [struct utmp ut;  ut.ut_id[0] = 'a';],
1278 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1279 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1280     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1281 fi 
1282
1283 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1284 AC_TRY_COMPILE([#include <sys/types.h>
1285 #include <utmp.h>],
1286 [struct utmp ut;  ut.ut_host[0] = 'a';],
1287 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1288 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1289     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1290 fi 
1291
1292 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1293 AC_TRY_COMPILE([#include <sys/types.h>
1294 #include <utmp.h>],
1295 [struct utmp ut;  time_t t; ut.ut_time = t;],
1296 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1297 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1298     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1299 fi 
1300
1301 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1302 AC_TRY_COMPILE([#include <sys/types.h>
1303 #include <utmp.h>],
1304 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1305 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1306 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1307     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1308 fi 
1309
1310 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1311 AC_TRY_COMPILE([#include <sys/types.h>
1312 #include <utmp.h>],
1313 [struct utmp ut;  ut.ut_type = 0;],
1314 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1315 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1316     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1317 fi 
1318
1319 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1320 AC_TRY_COMPILE([#include <sys/types.h>
1321 #include <utmp.h>],
1322 [struct utmp ut;  ut.ut_pid = 0;],
1323 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1324 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1325     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1326 fi 
1327
1328 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1329 AC_TRY_COMPILE([#include <sys/types.h>
1330 #include <utmp.h>],
1331 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1332 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1333 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1334     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1335 fi 
1336
1337 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1338 AC_TRY_COMPILE([#include <sys/types.h>
1339 #include <utmp.h>],
1340 [struct utmp ut;  ut.ut_addr = 0;],
1341 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1342 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1343     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1344 fi 
1345
1346 if test x$ac_cv_func_pututline = xyes ; then
1347   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1348   AC_TRY_COMPILE([#include <sys/types.h>
1349 #include <utmp.h>],
1350   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1351   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1352   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1353       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1354   fi
1355 fi
1356
1357 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1358 AC_TRY_COMPILE([#include <sys/types.h>
1359 #include <utmpx.h>],
1360 [struct utmpx ux;  ux.ut_syslen = 0;],
1361 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1362 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1363     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1364 fi 
1365
1366
1367 #################################################
1368 # check for libiconv support
1369 AC_MSG_CHECKING(whether to use libiconv)
1370 AC_ARG_WITH(libiconv,
1371 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1372 [ case "$withval" in
1373   no)
1374     AC_MSG_RESULT(no)
1375     ;;
1376   *)
1377     AC_MSG_RESULT(yes)
1378     CFLAGS="$CFLAGS -I$withval/include"
1379     LDFLAGS="$LDFLAGS -L$withval/lib"
1380     AC_CHECK_LIB(iconv, iconv_open)
1381     AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
1382     ;;
1383   esac ],
1384   AC_MSG_RESULT(no)
1385 )
1386
1387
1388 ############
1389 # check for iconv in libc
1390 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1391 AC_TRY_RUN([
1392 #include <iconv.h>
1393 main() {
1394        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1395        if (cd == 0 || cd == (iconv_t)-1) return -1;
1396        return 0;
1397 }
1398 ],
1399 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1400 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1401     AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1402 fi
1403
1404
1405 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1406 AC_TRY_RUN([
1407 #include <sys/types.h>
1408 #include <fcntl.h>
1409 #ifndef F_GETLEASE
1410 #define F_GETLEASE      1025
1411 #endif
1412 main() {
1413        int fd = open("/dev/null", O_RDONLY);
1414        return fcntl(fd, F_GETLEASE, 0) == -1;
1415 }
1416 ],
1417 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1418 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1419     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1420 fi
1421
1422 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1423 AC_TRY_RUN([
1424 #include <sys/types.h>
1425 #include <fcntl.h>
1426 #include <signal.h>
1427 #ifndef F_NOTIFY
1428 #define F_NOTIFY 1026
1429 #endif
1430 main() {
1431         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1432 }
1433 ],
1434 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1435 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1436     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1437 fi
1438
1439 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1440 AC_TRY_RUN([
1441 #include <sys/types.h>
1442 #include <fcntl.h>
1443 #include <signal.h>
1444 #include <sys/file.h>
1445 #ifndef LOCK_MAND
1446 #define LOCK_MAND       32
1447 #define LOCK_READ       64
1448 #endif
1449 main() {
1450         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1451 }
1452 ],
1453 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1454 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1455     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1456 fi
1457
1458
1459
1460
1461 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1462 AC_TRY_COMPILE([#include <sys/types.h>
1463 #include <fcntl.h>],
1464 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1465 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1466 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1467     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1468 fi
1469
1470 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1471 AC_TRY_RUN([#include <sys/types.h>
1472 #include <sys/capability.h>
1473 main() {
1474  cap_t cap;
1475  if ((cap = cap_get_proc()) == NULL)
1476    exit(1);
1477  cap->cap_effective |= CAP_NETWORK_MGT;
1478  cap->cap_inheritable |= CAP_NETWORK_MGT;
1479  cap_set_proc(cap);
1480  exit(0);
1481 }
1482 ],
1483 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1484 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1485     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1486 fi
1487
1488 #
1489 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1490 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1491 #
1492
1493 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1494 AC_TRY_COMPILE([#include <sys/types.h>
1495 #if defined(HAVE_RPC_RPC_H)
1496 #include <rpc/rpc.h>
1497 #endif],
1498 [int16 testvar;],
1499 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1500 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1501     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1502 fi
1503
1504 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1505 AC_TRY_COMPILE([#include <sys/types.h>
1506 #if defined(HAVE_RPC_RPC_H)
1507 #include <rpc/rpc.h>
1508 #endif],
1509 [uint16 testvar;],
1510 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1511 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1512     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1513 fi
1514
1515 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1516 AC_TRY_COMPILE([#include <sys/types.h>
1517 #if defined(HAVE_RPC_RPC_H)
1518 #include <rpc/rpc.h>
1519 #endif],
1520 [int32 testvar;],
1521 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1522 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1523     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1524 fi
1525
1526 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1527 AC_TRY_COMPILE([#include <sys/types.h>
1528 #if defined(HAVE_RPC_RPC_H)
1529 #include <rpc/rpc.h>
1530 #endif],
1531 [uint32 testvar;],
1532 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1533 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1534     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1535 fi
1536
1537 dnl
1538 dnl Some systems (SCO) have a problem including
1539 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1540 dnl as a #define in <prot.h> and as part of an enum
1541 dnl in <rpc/rpc.h>.
1542 dnl
1543
1544 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1545 AC_TRY_COMPILE([#include <sys/types.h>
1546 #ifdef HAVE_SYS_SECURITY_H
1547 #include <sys/security.h>
1548 #include <prot.h>
1549 #endif  /* HAVE_SYS_SECURITY_H */
1550 #if defined(HAVE_RPC_RPC_H)
1551 #include <rpc/rpc.h>
1552 #endif],
1553 [int testvar;],
1554 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1555 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1556     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1557 fi
1558
1559 AC_MSG_CHECKING([for test routines])
1560 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1561            AC_MSG_RESULT(yes),
1562            AC_MSG_ERROR([cant find test code. Aborting config]),
1563            AC_MSG_WARN([cannot run when cross-compiling]))
1564
1565 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1566 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1567            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1568 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1569     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1570 fi
1571
1572 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1573 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1574            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1575            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1576            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1577 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1578 then
1579     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1580 fi
1581
1582 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1583 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1584            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1585 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1586     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1587 fi
1588
1589 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1590 SAVE_CPPFLAGS="$CPPFLAGS"
1591 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1592 AC_TRY_COMPILE([
1593 #define REPLACE_GETPASS 1
1594 #define NO_CONFIG_H 1
1595 #define main dont_declare_main
1596 #include "${srcdir-.}/lib/getsmbpass.c"
1597 #undef main
1598 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1599 CPPFLAGS="$SAVE_CPPFLAGS"
1600 ])
1601 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1602         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1603 fi
1604
1605 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1606 AC_TRY_RUN([
1607 #include <stdio.h>
1608 #include <sys/types.h>
1609 #include <netinet/in.h>
1610 #ifdef HAVE_ARPA_INET_H
1611 #include <arpa/inet.h>
1612 #endif
1613 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1614 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1615     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1616 exit(1);}],
1617            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1618 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1619     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1620 fi
1621
1622 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1623 AC_TRY_RUN([#include <stdlib.h>
1624 #include <sys/types.h>
1625 #include <sys/stat.h>
1626 #include <unistd.h>
1627 main() { 
1628   struct stat st;
1629   char tpl[20]="/tmp/test.XXXXXX"; 
1630   int fd = mkstemp(tpl); 
1631   if (fd == -1) exit(1);
1632   unlink(tpl);
1633   if (fstat(fd, &st) != 0) exit(1);
1634   if ((st.st_mode & 0777) != 0600) exit(1);
1635   exit(0);
1636 }],
1637 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1638 samba_cv_HAVE_SECURE_MKSTEMP=no,
1639 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1640 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1641     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1642 fi
1643
1644 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1645 AC_TRY_RUN([#include <unistd.h>
1646 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1647 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1648 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1649     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1650 fi
1651
1652 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1653 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1654            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1655 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1656     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1657 else
1658     AC_MSG_WARN(running as non-root will disable some tests)
1659 fi
1660
1661 ##################
1662 # look for a method of finding the list of network interfaces
1663 iface=no;
1664 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1665 AC_TRY_RUN([
1666 #define HAVE_IFACE_AIX 1
1667 #define AUTOCONF_TEST 1
1668 #include "confdefs.h"
1669 #include "${srcdir-.}/lib/interfaces.c"],
1670            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1671 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1672     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1673 fi
1674
1675 if test $iface = no; then
1676 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1677 AC_TRY_RUN([
1678 #define HAVE_IFACE_IFCONF 1
1679 #define AUTOCONF_TEST 1
1680 #include "confdefs.h"
1681 #include "${srcdir-.}/lib/interfaces.c"],
1682            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1683 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1684     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1685 fi
1686 fi
1687
1688 if test $iface = no; then
1689 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1690 AC_TRY_RUN([
1691 #define HAVE_IFACE_IFREQ 1
1692 #define AUTOCONF_TEST 1
1693 #include "confdefs.h"
1694 #include "${srcdir-.}/lib/interfaces.c"],
1695            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1696 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1697     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1698 fi
1699 fi
1700
1701
1702 ################################################
1703 # look for a method of setting the effective uid
1704 seteuid=no;
1705 if test $seteuid = no; then
1706 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1707 AC_TRY_RUN([
1708 #define AUTOCONF_TEST 1
1709 #define USE_SETRESUID 1
1710 #include "confdefs.h"
1711 #include "${srcdir-.}/lib/util_sec.c"],
1712            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1713 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1714     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1715 fi
1716 fi
1717
1718
1719 if test $seteuid = no; then
1720 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1721 AC_TRY_RUN([
1722 #define AUTOCONF_TEST 1
1723 #define USE_SETREUID 1
1724 #include "confdefs.h"
1725 #include "${srcdir-.}/lib/util_sec.c"],
1726            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1727 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1728     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1729 fi
1730 fi
1731
1732 if test $seteuid = no; then
1733 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1734 AC_TRY_RUN([
1735 #define AUTOCONF_TEST 1
1736 #define USE_SETEUID 1
1737 #include "confdefs.h"
1738 #include "${srcdir-.}/lib/util_sec.c"],
1739            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1740 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1741     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
1742 fi
1743 fi
1744
1745 if test $seteuid = no; then
1746 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1747 AC_TRY_RUN([
1748 #define AUTOCONF_TEST 1
1749 #define USE_SETUIDX 1
1750 #include "confdefs.h"
1751 #include "${srcdir-.}/lib/util_sec.c"],
1752            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1753 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1754     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
1755 fi
1756 fi
1757
1758
1759 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1760 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1761            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1762 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1763     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
1764 fi
1765
1766 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1767 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1768            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1769 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1770     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
1771 fi
1772
1773 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1774 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1775            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1776 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1777     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
1778 fi
1779
1780 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1781 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1782            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1783 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1784     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
1785
1786 else
1787
1788 dnl
1789 dnl Don't check for 64 bit fcntl locking if we know that the
1790 dnl glibc2.1 broken check has succeeded.
1791 dnl 
1792
1793   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1794   AC_TRY_RUN([
1795 #if defined(HAVE_UNISTD_H)
1796 #include <unistd.h>
1797 #endif
1798 #include <stdio.h>
1799 #include <stdlib.h>
1800
1801 #ifdef HAVE_FCNTL_H
1802 #include <fcntl.h>
1803 #endif
1804
1805 #ifdef HAVE_SYS_FCNTL_H
1806 #include <sys/fcntl.h>
1807 #endif
1808 main() { struct flock64 fl64;
1809 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1810 exit(0);
1811 #else
1812 exit(1);
1813 #endif
1814 }],
1815        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1816
1817   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1818       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
1819   fi
1820 fi
1821
1822 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1823 AC_TRY_COMPILE([#include <sys/types.h>
1824 #include <sys/stat.h>
1825 #include <unistd.h>],
1826 [struct stat st;  st.st_blocks = 0;],
1827 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1828 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1829     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
1830 fi 
1831
1832 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1833 AC_TRY_COMPILE([#include <sys/types.h>
1834 #include <sys/stat.h>
1835 #include <unistd.h>],
1836 [struct stat st;  st.st_blksize = 0;],
1837 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1838 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1839     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
1840 fi
1841
1842 case "$host_os" in
1843 *linux*)
1844 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1845 AC_TRY_COMPILE([
1846 #ifdef HAVE_SYS_VFS_H
1847 #include <sys/vfs.h>
1848 #endif
1849 #ifdef HAVE_SYS_CAPABILITY_H
1850 #include <sys/capability.h>
1851 #endif
1852 ],[int i;],
1853    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1854 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1855    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
1856 fi
1857 ;;
1858 esac
1859
1860 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1861 AC_TRY_COMPILE([#include <sys/acl.h>
1862 #if defined(HAVE_RPCSVC_NIS_H)
1863 #include <rpcsvc/nis.h>
1864 #endif],
1865 [int i;],
1866 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1867 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1868         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
1869 fi
1870
1871
1872 #################################################
1873 # check for smbwrapper support
1874 AC_MSG_CHECKING(whether to use smbwrapper)
1875 AC_ARG_WITH(smbwrapper,
1876 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
1877 [ case "$withval" in
1878   yes)
1879     AC_MSG_RESULT(yes)
1880     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
1881         WRAPPROG="bin/smbsh"
1882         WRAP="bin/smbwrapper.$SHLIBEXT"
1883
1884         if test x$ATTEMPT_WRAP32_BUILD = x; then
1885                 WRAP32=""
1886         else
1887                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1888         fi
1889
1890 # Conditions under which smbwrapper should not be built.
1891
1892         if test x$PICFLAG = x; then
1893            echo No support for PIC code - disabling smbwrapper and smbsh
1894            WRAPPROG=""
1895            WRAP=""
1896            WRAP32=""
1897         elif test x$ac_cv_func_syscall = xno; then
1898            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1899            WRAPPROG=""
1900            WRAP=""
1901            WRAP32=""
1902         fi
1903     ;;
1904   *)
1905     AC_MSG_RESULT(no)
1906     ;;
1907   esac ],
1908   AC_MSG_RESULT(no)
1909 )
1910
1911 #################################################
1912 # check for AFS clear-text auth support
1913 AC_MSG_CHECKING(whether to use AFS clear-text auth)
1914 AC_ARG_WITH(afs,
1915 [  --with-afs              Include AFS clear-text auth support (default=no) ],
1916 [ case "$withval" in
1917   yes)
1918     AC_MSG_RESULT(yes)
1919     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
1920     ;;
1921   *)
1922     AC_MSG_RESULT(no)
1923     ;;
1924   esac ],
1925   AC_MSG_RESULT(no)
1926 )
1927
1928
1929 #################################################
1930 # check for the DFS clear-text auth system
1931 AC_MSG_CHECKING(whether to use DFS clear-text auth)
1932 AC_ARG_WITH(dfs,
1933 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
1934 [ case "$withval" in
1935   yes)
1936     AC_MSG_RESULT(yes)
1937     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
1938     ;;
1939   *)
1940     AC_MSG_RESULT(no)
1941     ;;
1942   esac ],
1943   AC_MSG_RESULT(no)
1944 )
1945
1946 #################################################
1947 # active directory support
1948
1949 with_ads_support=yes
1950 AC_MSG_CHECKING([whether to use Active Directory])
1951
1952 AC_ARG_WITH(ads,
1953 [   --with-ads  Active Directory support (default yes)],
1954 [ case "$withval" in
1955     no)
1956         with_ads_support=no
1957         ;;
1958   esac ])
1959
1960 if test x"$with_ads_support" = x"yes"; then
1961    AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
1962 fi
1963
1964 AC_MSG_RESULT($with_ads_support)
1965
1966 FOUND_KRB5=no
1967 if test x"$with_ads_support" = x"yes"; then
1968
1969   #################################################
1970   # check for location of Kerberos 5 install
1971   AC_MSG_CHECKING(for kerberos 5 install path)
1972   AC_ARG_WITH(krb5,
1973   [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
1974   [ case "$withval" in
1975     no)
1976       AC_MSG_RESULT(no)
1977       ;;
1978     *)
1979       AC_MSG_RESULT(yes)
1980       LIBS="$LIBS -lkrb5"
1981       CFLAGS="$CFLAGS -I$withval/include"
1982       CPPFLAGS="$CPPFLAGS -I$withval/include"
1983       LDFLAGS="$LDFLAGS -L$withval/lib"
1984       FOUND_KRB5=yes
1985       ;;
1986     esac ],
1987     AC_MSG_RESULT(no)
1988   )
1989
1990
1991 if test x$FOUND_KRB5 = x"no"; then
1992 #################################################
1993 # see if this box has the SuSE location for the heimdal kerberos implementation
1994 AC_MSG_CHECKING(for /usr/include/heimdal)
1995 if test -d /usr/include/heimdal; then
1996     CFLAGS="$CFLAGS -I/usr/include/heimdal"
1997     CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
1998     AC_MSG_RESULT(yes)
1999 else
2000     AC_MSG_RESULT(no)
2001 fi
2002 fi
2003
2004
2005 if test x$FOUND_KRB5 = x"no"; then
2006 #################################################
2007 # see if this box has the RedHat location for kerberos
2008 AC_MSG_CHECKING(for /usr/kerberos)
2009 if test -d /usr/kerberos; then
2010     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
2011     CFLAGS="$CFLAGS -I/usr/kerberos/include"
2012     CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
2013     AC_MSG_RESULT(yes)
2014 else
2015     AC_MSG_RESULT(no)
2016 fi
2017 fi
2018
2019
2020   # now check for krb5.h. Some systems have the libraries without the headers!
2021   # note that this check is done here to allow for different kerberos
2022   # include paths
2023   AC_CHECK_HEADERS(krb5.h)
2024
2025   # now check for gssapi headers.  This is also done here to allow for
2026   # different kerberos include paths
2027   AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h)
2028
2029   ##################################################################
2030   # we might need the k5crypto and com_err libraries on some systems
2031   AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
2032   AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
2033
2034   ########################################################
2035   # now see if we can find the krb5 libs in standard paths
2036   # or as specified above
2037   AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
2038         AC_DEFINE(HAVE_KRB5,1,[Whether KRB5 is available])])
2039
2040   ########################################################
2041   # now see if we can find the gssapi libs in standard paths
2042   AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
2043         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2044 fi
2045
2046 ########################################################
2047 # Compile with LDAP support?
2048
2049 with_ldap_support=yes
2050 AC_MSG_CHECKING([whether to use LDAP])
2051
2052 AC_ARG_WITH(ldap,
2053 [   --with-ldap  LDAP support (default yes)],
2054 [ case "$withval" in
2055     no)
2056         with_ldap_support=no
2057         ;;
2058   esac ])
2059
2060 AC_MSG_RESULT($with_ldap_support)
2061
2062 if test x"$with_ldap_support" = x"yes"; then
2063
2064   ##################################################################
2065   # we might need the lber lib on some systems. To avoid link errors
2066   # this test must be before the libldap test
2067   AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
2068
2069   ########################################################
2070   # now see if we can find the ldap libs in standard paths
2071   if test x$have_ldap != xyes; then
2072   AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
2073         AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])])
2074
2075         ########################################################
2076         # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2077         # Check found in pam_ldap 145.
2078         AC_CHECK_FUNCS(ldap_set_rebind_proc)
2079         AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [
2080         AC_TRY_COMPILE([
2081         #include <lber.h>
2082         #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]) ])
2083         AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2084   fi
2085 fi
2086
2087 ########################################################
2088 # Compile with MySQL support?
2089 AM_PATH_MYSQL([0.11.0],[MODULE_PDB_MYSQL=bin/pdb_mysql.so],[MODULE_PDB_MYSQL=])
2090 CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2091 AC_SUBST(MODULE_PDB_MYSQL)
2092
2093 ########################################################
2094 # Compile with XML support?
2095 AM_PATH_XML2([2.0.0],[MODULE_PDB_XML=bin/pdb_xml.so],[MODULE_PDB_XML=])
2096 CFLAGS="$CFLAGS $XML_CFLAGS"
2097 AC_SUBST(MODULE_PDB_XML)
2098
2099 #################################################
2100 # check for automount support
2101 AC_MSG_CHECKING(whether to use AUTOMOUNT)
2102 AC_ARG_WITH(automount,
2103 [  --with-automount        Include AUTOMOUNT support (default=no)],
2104 [ case "$withval" in
2105   yes)
2106     AC_MSG_RESULT(yes)
2107     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2108     ;;
2109   *)
2110     AC_MSG_RESULT(no)
2111     ;;
2112   esac ],
2113   AC_MSG_RESULT(no)
2114 )
2115
2116 #################################################
2117 # check for smbmount support
2118 AC_MSG_CHECKING(whether to use SMBMOUNT)
2119 AC_ARG_WITH(smbmount,
2120 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
2121 [ case "$withval" in
2122   yes)
2123         case "$host_os" in
2124         *linux*)
2125                 AC_MSG_RESULT(yes)
2126                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2127                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
2128                 ;;
2129         *)
2130                 AC_MSG_ERROR(not on a linux system!)
2131                 ;;
2132         esac
2133     ;;
2134   *)
2135     AC_MSG_RESULT(no)
2136     MPROGS=
2137     ;;
2138   esac ],
2139   AC_MSG_RESULT(no)
2140   MPROGS=
2141 )
2142
2143
2144 #################################################
2145 # check for a PAM clear-text auth, accounts, password and session support
2146 with_pam_for_crypt=no
2147 AC_MSG_CHECKING(whether to use PAM)
2148 AC_ARG_WITH(pam,
2149 [  --with-pam              Include PAM support (default=no)],
2150 [ case "$withval" in
2151   yes)
2152     AC_MSG_RESULT(yes)
2153     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2154     AUTHLIBS="$AUTHLIBS -lpam"
2155     with_pam_for_crypt=yes
2156     ;;
2157   *)
2158     AC_MSG_RESULT(no)
2159     ;;
2160   esac ],
2161   AC_MSG_RESULT(no)
2162 )
2163
2164 # we can't build a pam module if we don't have pam.
2165 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2166
2167 #################################################
2168 # check for pam_smbpass support
2169 AC_MSG_CHECKING(whether to use pam_smbpass)
2170 AC_ARG_WITH(pam_smbpass,
2171 [  --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)],
2172 [ case "$withval" in
2173   yes)
2174     AC_MSG_RESULT(yes)
2175
2176 # Conditions under which pam_smbpass should not be built.
2177
2178        if test x$PICFLAG = x; then
2179           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2180           PAM_MOD=""
2181        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2182           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2183           PAM_MOD=""
2184        else
2185           PAM_MOD="bin/pam_smbpass.so"
2186        fi
2187     ;;
2188   *)
2189     AC_MSG_RESULT(no)
2190     ;;
2191   esac ],
2192   AC_MSG_RESULT(no)
2193 )
2194
2195
2196 ###############################################
2197 # test for where we get crypt() from, but only
2198 # if not using PAM
2199 if test x"$with_pam_for_crypt" = x"no"; then
2200 AC_CHECK_FUNCS(crypt)
2201 if test x"$ac_cv_func_crypt" = x"no"; then
2202     AC_CHECK_LIB(crypt, crypt, [AUTHLIBS="$AUTHLIBS -lcrypt";
2203         AC_DEFINE(HAVE_CRYPT,1,[Whether crypt() is available])])
2204 fi
2205 fi
2206
2207 ##
2208 ## moved after the check for -lcrypt in order to
2209 ## ensure that the necessary libraries are included
2210 ## check checking for truncated salt.  Wrapped by the
2211 ## $with_pam_for_crypt variable as above   --jerry
2212 ##
2213 if test $with_pam_for_crypt = no; then
2214 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2215 crypt_LIBS="$LIBS"
2216 LIBS="$AUTHLIBS $LIBS"
2217 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2218         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2219 LIBS="$crypt_LIBS"])
2220 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2221         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2222 fi
2223 fi
2224
2225 # New experimental SAM system
2226
2227 AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
2228 AC_ARG_WITH(sam,
2229 [  --with-sam              Build new (experimental) SAM database (default=no)],
2230 [ case "$withval" in
2231   yes)
2232     AC_MSG_RESULT(yes)
2233     AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
2234     ;;
2235   *)
2236     AC_MSG_RESULT(no)
2237     ;;
2238   esac ],
2239   AC_MSG_RESULT(no)
2240 )
2241
2242
2243 ########################################################################################
2244 ##
2245 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2246 ##
2247 ########################################################################################
2248
2249 #################################################
2250 # check for a LDAP password database configuration backwards compatibility
2251 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2252 AC_ARG_WITH(ldapsam,
2253 [  --with-ldapsam           Include LDAP SAM 2.2 compatible configuration (default=no)],
2254 [ case "$withval" in
2255   yes)
2256     AC_MSG_RESULT(yes)
2257     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatibel LDAP SAM configuration])
2258     ;;
2259   *)
2260     AC_MSG_RESULT(no)
2261     ;;
2262   esac ],
2263   AC_MSG_RESULT(no)
2264 )
2265
2266 #################################################
2267 # check for a TDB password database
2268 AC_MSG_CHECKING(whether to use TDB SAM database)
2269 AC_ARG_WITH(tdbsam,
2270 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2271 [ case "$withval" in
2272   yes)
2273     AC_MSG_RESULT(yes)
2274     AC_DEFINE(WITH_TDB_SAM,1,[Whether to include experimental TDB SAM support])
2275     ;;
2276   *)
2277     AC_MSG_RESULT(no)
2278     ;;
2279   esac ],
2280   AC_MSG_RESULT(no)
2281 )
2282
2283 #################################################
2284 # check for a NISPLUS password database
2285 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2286 AC_ARG_WITH(nisplussam,
2287 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2288 [ case "$withval" in
2289   yes)
2290     AC_MSG_RESULT(yes)
2291     AC_DEFINE(WITH_NISPLUS_SAM,1,[Whether to include nisplus SAM support])
2292     ;;
2293   *)
2294     AC_MSG_RESULT(no)
2295     ;;
2296   esac ],
2297   AC_MSG_RESULT(no)
2298 )
2299
2300 ########################################################################################
2301 ##
2302 ## END OF TESTS FOR SAM BACKENDS.  
2303 ##
2304 ########################################################################################
2305
2306 #################################################
2307 # check for a NISPLUS_HOME support 
2308 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2309 AC_ARG_WITH(nisplus-home,
2310 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2311 [ case "$withval" in
2312   yes)
2313     AC_MSG_RESULT(yes)
2314     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2315     ;;
2316   *)
2317     AC_MSG_RESULT(no)
2318     ;;
2319   esac ],
2320   AC_MSG_RESULT(no)
2321 )
2322
2323 #################################################
2324 # check for syslog logging
2325 AC_MSG_CHECKING(whether to use syslog logging)
2326 AC_ARG_WITH(syslog,
2327 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2328 [ case "$withval" in
2329   yes)
2330     AC_MSG_RESULT(yes)
2331     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2332     ;;
2333   *)
2334     AC_MSG_RESULT(no)
2335     ;;
2336   esac ],
2337   AC_MSG_RESULT(no)
2338 )
2339
2340 #################################################
2341 # check for a shared memory profiling support
2342 AC_MSG_CHECKING(whether to use profiling)
2343 AC_ARG_WITH(profiling-data,
2344 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2345 [ case "$withval" in
2346   yes)
2347     AC_MSG_RESULT(yes)
2348     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2349     ;;
2350   *)
2351     AC_MSG_RESULT(no)
2352     ;;
2353   esac ],
2354   AC_MSG_RESULT(no)
2355 )
2356
2357
2358 #################################################
2359 # check for experimental disk-quotas support
2360 QUOTAOBJS=smbd/noquotas.o
2361
2362 AC_MSG_CHECKING(whether to support disk-quotas)
2363 AC_ARG_WITH(quotas,
2364 [  --with-quotas           Include experimental disk-quota support (default=no)],
2365 [ case "$withval" in
2366   yes)
2367     AC_MSG_RESULT(yes)
2368     case "$host_os" in
2369       *linux*)
2370         # Check for kernel 2.4.x quota braindamage...
2371         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2372         AC_TRY_COMPILE([#include <stdio.h>
2373 #include <sys/types.h>
2374 #include <asm/types.h>
2375 #include <linux/quota.h>
2376 #include <mntent.h>
2377 #include <linux/unistd.h>],[struct mem_dqblk D;],
2378       samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2379 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2380         AC_DEFINE(LINUX_QUOTAS_2,1,[linux 2.4.x quota braindamage])
2381 else
2382         AC_DEFINE(LINUX_QUOTAS_1,1,[linux quotas])
2383 fi
2384         ;;
2385       *)
2386         ;;
2387     esac
2388     QUOTAOBJS=smbd/quotas.o
2389     AC_DEFINE(WITH_QUOTAS,1,[Whether to include experimental quota support])
2390     ;;
2391   *)
2392     AC_MSG_RESULT(no)
2393     ;;
2394   esac ],
2395   AC_MSG_RESULT(no)
2396 )
2397 AC_SUBST(QUOTAOBJS)
2398
2399 #################################################
2400 # check for experimental utmp accounting
2401
2402 AC_MSG_CHECKING(whether to support utmp accounting)
2403 AC_ARG_WITH(utmp,
2404 [  --with-utmp             Include experimental utmp accounting (default=no)],
2405 [ case "$withval" in
2406   yes)
2407     AC_MSG_RESULT(yes)
2408     AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
2409     ;;
2410   *)
2411     AC_MSG_RESULT(no)
2412     ;;
2413   esac ],
2414   AC_MSG_RESULT(no)
2415 )
2416
2417 #################################################
2418 # choose native language(s) of man pages
2419 AC_MSG_CHECKING(chosen man pages' language(s))
2420 AC_ARG_WITH(manpages-langs,
2421 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
2422 [ case "$withval" in
2423   yes|no)
2424     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
2425     manlangs="en"
2426   ;;
2427   *)
2428     manlangs="$withval"
2429   ;;
2430   esac
2431
2432   AC_MSG_RESULT($manlangs)
2433   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
2434   AC_SUBST(manlangs)],
2435
2436   [manlangs="en"
2437   AC_MSG_RESULT($manlangs)
2438   AC_SUBST(manlangs)]
2439 )
2440
2441 #################################################
2442 # should we build libsmbclient?
2443
2444 LIBSMBCLIENT_SHARED=
2445 LIBSMBCLIENT=
2446 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2447 AC_ARG_WITH(libsmbclient,
2448 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes)],
2449 [ case "$withval" in
2450   no) 
2451      AC_MSG_RESULT(no)
2452      ;;
2453   *)
2454      if test $BLDSHARED = true; then
2455         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2456         LIBSMBCLIENT=libsmbclient
2457         AC_MSG_RESULT(yes)
2458      else
2459         AC_MSG_RESULT(no shared library support)
2460      fi
2461      ;;
2462   esac ],
2463   AC_MSG_RESULT(yes)
2464 )
2465
2466
2467 #################################################
2468 # these tests are taken from the GNU fileutils package
2469 AC_CHECKING(how to get filesystem space usage)
2470 space=no
2471
2472 # Test for statvfs64.
2473 if test $space = no; then
2474   # SVR4
2475   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2476   [AC_TRY_RUN([
2477 #if defined(HAVE_UNISTD_H)
2478 #include <unistd.h>
2479 #endif
2480 #include <sys/types.h>
2481 #include <sys/statvfs.h>
2482   main ()
2483   {
2484     struct statvfs64 fsd;
2485     exit (statvfs64 (".", &fsd));
2486   }],
2487   fu_cv_sys_stat_statvfs64=yes,
2488   fu_cv_sys_stat_statvfs64=no,
2489   fu_cv_sys_stat_statvfs64=cross)])
2490   if test $fu_cv_sys_stat_statvfs64 = yes; then
2491     space=yes
2492     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
2493   fi
2494 fi
2495
2496 # Perform only the link test since it seems there are no variants of the
2497 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2498 # because that got a false positive on SCO OSR5.  Adding the declaration
2499 # of a `struct statvfs' causes this test to fail (as it should) on such
2500 # systems.  That system is reported to work fine with STAT_STATFS4 which
2501 # is what it gets when this test fails.
2502 if test $space = no; then
2503   # SVR4
2504   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2505                  [AC_TRY_LINK([#include <sys/types.h>
2506 #include <sys/statvfs.h>],
2507                               [struct statvfs fsd; statvfs (0, &fsd);],
2508                               fu_cv_sys_stat_statvfs=yes,
2509                               fu_cv_sys_stat_statvfs=no)])
2510   if test $fu_cv_sys_stat_statvfs = yes; then
2511     space=yes
2512     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
2513   fi
2514 fi
2515
2516 if test $space = no; then
2517   # DEC Alpha running OSF/1
2518   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2519   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2520   [AC_TRY_RUN([
2521 #include <sys/param.h>
2522 #include <sys/types.h>
2523 #include <sys/mount.h>
2524   main ()
2525   {
2526     struct statfs fsd;
2527     fsd.f_fsize = 0;
2528     exit (statfs (".", &fsd, sizeof (struct statfs)));
2529   }],
2530   fu_cv_sys_stat_statfs3_osf1=yes,
2531   fu_cv_sys_stat_statfs3_osf1=no,
2532   fu_cv_sys_stat_statfs3_osf1=no)])
2533   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2534   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2535     space=yes
2536     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
2537   fi
2538 fi
2539
2540 if test $space = no; then
2541 # AIX
2542   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2543 member (AIX, 4.3BSD)])
2544   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2545   [AC_TRY_RUN([
2546 #ifdef HAVE_SYS_PARAM_H
2547 #include <sys/param.h>
2548 #endif
2549 #ifdef HAVE_SYS_MOUNT_H
2550 #include <sys/mount.h>
2551 #endif
2552 #ifdef HAVE_SYS_VFS_H
2553 #include <sys/vfs.h>
2554 #endif
2555   main ()
2556   {
2557   struct statfs fsd;
2558   fsd.f_bsize = 0;
2559   exit (statfs (".", &fsd));
2560   }],
2561   fu_cv_sys_stat_statfs2_bsize=yes,
2562   fu_cv_sys_stat_statfs2_bsize=no,
2563   fu_cv_sys_stat_statfs2_bsize=no)])
2564   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2565   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2566     space=yes
2567     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
2568   fi
2569 fi
2570
2571 if test $space = no; then
2572 # SVR3
2573   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2574   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2575   [AC_TRY_RUN([#include <sys/types.h>
2576 #include <sys/statfs.h>
2577   main ()
2578   {
2579   struct statfs fsd;
2580   exit (statfs (".", &fsd, sizeof fsd, 0));
2581   }],
2582     fu_cv_sys_stat_statfs4=yes,
2583     fu_cv_sys_stat_statfs4=no,
2584     fu_cv_sys_stat_statfs4=no)])
2585   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2586   if test $fu_cv_sys_stat_statfs4 = yes; then
2587     space=yes
2588     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
2589   fi
2590 fi
2591
2592 if test $space = no; then
2593 # 4.4BSD and NetBSD
2594   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2595 member (4.4BSD and NetBSD)])
2596   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2597   [AC_TRY_RUN([#include <sys/types.h>
2598 #ifdef HAVE_SYS_PARAM_H
2599 #include <sys/param.h>
2600 #endif
2601 #ifdef HAVE_SYS_MOUNT_H
2602 #include <sys/mount.h>
2603 #endif
2604   main ()
2605   {
2606   struct statfs fsd;
2607   fsd.f_fsize = 0;
2608   exit (statfs (".", &fsd));
2609   }],
2610   fu_cv_sys_stat_statfs2_fsize=yes,
2611   fu_cv_sys_stat_statfs2_fsize=no,
2612   fu_cv_sys_stat_statfs2_fsize=no)])
2613   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2614   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2615     space=yes
2616         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
2617   fi
2618 fi
2619
2620 if test $space = no; then
2621   # Ultrix
2622   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2623   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2624   [AC_TRY_RUN([#include <sys/types.h>
2625 #ifdef HAVE_SYS_PARAM_H
2626 #include <sys/param.h>
2627 #endif
2628 #ifdef HAVE_SYS_MOUNT_H
2629 #include <sys/mount.h>
2630 #endif
2631 #ifdef HAVE_SYS_FS_TYPES_H
2632 #include <sys/fs_types.h>
2633 #endif
2634   main ()
2635   {
2636   struct fs_data fsd;
2637   /* Ultrix's statfs returns 1 for success,
2638      0 for not mounted, -1 for failure.  */
2639   exit (statfs (".", &fsd) != 1);
2640   }],
2641   fu_cv_sys_stat_fs_data=yes,
2642   fu_cv_sys_stat_fs_data=no,
2643   fu_cv_sys_stat_fs_data=no)])
2644   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2645   if test $fu_cv_sys_stat_fs_data = yes; then
2646     space=yes
2647     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
2648   fi
2649 fi
2650
2651 #
2652 # As a gating factor for large file support, in order to
2653 # use <4GB files we must have the following minimal support
2654 # available.
2655 # long long, and a 64 bit off_t or off64_t.
2656 # If we don't have all of these then disable large
2657 # file support.
2658 #
2659 AC_MSG_CHECKING([if large file support can be enabled])
2660 AC_TRY_COMPILE([
2661 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2662 #include <sys/types.h>
2663 #else
2664 __COMPILE_ERROR_
2665 #endif
2666 ],
2667 [int i],
2668 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2669 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2670         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
2671 fi
2672 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2673
2674 AC_ARG_WITH(spinlocks, 
2675 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
2676 if test "x$with_spinlocks" = "xyes"; then
2677     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
2678
2679     case "$host_cpu" in
2680         sparc)
2681             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
2682             ;;
2683
2684         i386|i486|i586|i686)
2685             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
2686             ;;
2687
2688         mips)
2689             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
2690             ;;
2691
2692         powerpc)
2693             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
2694             ;;
2695     esac
2696 fi
2697
2698 #################################################
2699 # check for ACL support
2700
2701 AC_MSG_CHECKING(whether to support ACLs)
2702 AC_ARG_WITH(acl-support,
2703 [  --with-acl-support      Include ACL support (default=no)],
2704 [ case "$withval" in
2705   yes)
2706
2707         case "$host_os" in
2708         *sysv5*)
2709                 AC_MSG_RESULT(Using UnixWare ACLs)
2710                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
2711                 ;;
2712         *solaris*)
2713                 AC_MSG_RESULT(Using solaris ACLs)
2714                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
2715                 ;;
2716         *hpux*)
2717                 AC_MSG_RESULT(Using HPUX ACLs)
2718                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
2719                 ;;
2720         *irix*)
2721                 AC_MSG_RESULT(Using IRIX ACLs)
2722                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
2723                 ;;
2724         *aix*)
2725                 AC_MSG_RESULT(Using AIX ACLs)
2726                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
2727                 ;;
2728         *osf*)
2729                 AC_MSG_RESULT(Using Tru64 ACLs)
2730                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
2731                 LIBS="$LIBS -lpacl"
2732                 ;;
2733         *)
2734                 AC_CHECK_LIB(acl,acl_get_file)
2735                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2736                 AC_TRY_LINK([#include <sys/types.h>
2737 #include <sys/acl.h>],
2738 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2739 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2740                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2741                                 AC_MSG_RESULT(Using posix ACLs)
2742                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
2743                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2744                                 AC_TRY_LINK([#include <sys/types.h>
2745 #include <sys/acl.h>],
2746 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2747 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2748                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2749                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
2750                                 fi
2751                         fi
2752             ;;
2753         esac
2754         ;;
2755   *)
2756     AC_MSG_RESULT(no)
2757     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
2758     ;;
2759   esac ],
2760   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
2761   AC_MSG_RESULT(no)
2762 )
2763
2764 #################################################
2765 # check for sendfile support
2766
2767 with_sendfile_support=yes
2768 AC_MSG_CHECKING(whether to check to support sendfile)
2769 AC_ARG_WITH(sendfile-support,
2770 [  --with-sendfile-support      Check for sendfile support (default=yes)],
2771 [ case "$withval" in
2772   yes)
2773
2774         AC_MSG_RESULT(yes);
2775
2776         case "$host_os" in
2777         *linux*)
2778                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2779                 AC_TRY_LINK([#include <sys/sendfile.h>],
2780 [\
2781 int tofd, fromfd;
2782 off64_t offset;
2783 size_t total;
2784 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2785 ],
2786 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2787
2788                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2789                 AC_TRY_LINK([#include <sys/sendfile.h>],
2790 [\
2791 int tofd, fromfd;
2792 off_t offset;
2793 size_t total;
2794 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2795 ],
2796 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2797
2798 # Try and cope with broken Linux sendfile....
2799                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2800                 AC_TRY_LINK([\
2801 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2802 #undef _FILE_OFFSET_BITS
2803 #endif
2804 #include <sys/sendfile.h>],
2805 [\
2806 int tofd, fromfd;
2807 off_t offset;
2808 size_t total;
2809 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2810 ],
2811 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2812
2813         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2814                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
2815                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
2816                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
2817         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2818                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
2819                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
2820                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
2821         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2822                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
2823                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
2824         else
2825                 AC_MSG_RESULT(no);
2826         fi
2827
2828         ;;
2829         *freebsd*)
2830                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2831                 AC_TRY_LINK([\
2832 #include <sys/types.h>
2833 #include <sys/socket.h>
2834 #include <sys/uio.h>],
2835 [\
2836         int fromfd, tofd;
2837         off_t offset, nwritten;
2838         struct sf_hdtr hdr;
2839         struct iovec hdtrl;
2840         hdr->headers = &hdtrl;
2841         hdr->hdr_cnt = 1;
2842         hdr->trailers = NULL;
2843         hdr->trl_cnt = 0;
2844         hdtrl.iov_base = NULL;
2845         hdtrl.iov_len = 0;
2846         int ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2847 ],
2848 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2849
2850         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2851                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
2852                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
2853                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2854         else
2855                 AC_MSG_RESULT(no);
2856         fi
2857         ;;
2858
2859         *hpux*)
2860                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2861                 AC_TRY_LINK([\
2862 #include <sys/socket.h>
2863 #include <sys/uio.h>],
2864 [\
2865         int fromfd, tofd;
2866         size_t total=0;
2867         struct iovec hdtrl[2];
2868         ssize_t nwritten;
2869         off64_t offset;
2870
2871         hdtrl[0].iov_base = 0;
2872         hdtrl[0].iov_len = 0;
2873
2874         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2875 ],
2876 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2877         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2878                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
2879                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
2880                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2881         else
2882                 AC_MSG_RESULT(no);
2883         fi
2884
2885                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2886                 AC_TRY_LINK([\
2887 #include <sys/socket.h>
2888 #include <sys/uio.h>],
2889 [\
2890         int fromfd, tofd;
2891         size_t total=0;
2892         struct iovec hdtrl[2];
2893         ssize_t nwritten;
2894         off_t offset;
2895
2896         hdtrl[0].iov_base = 0;
2897         hdtrl[0].iov_len = 0;
2898
2899         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2900 ],
2901 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2902         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2903                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
2904                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
2905                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2906         else
2907                 AC_MSG_RESULT(no);
2908         fi
2909         ;;
2910
2911         *solaris*)
2912                 LIBS="$LIBS -lsendfile"
2913                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
2914                 AC_TRY_LINK([\
2915 #include <sys/sendfile.h>],
2916 [\
2917         int sfvcnt;
2918         size_t xferred;
2919         struct sendfilevec vec[2];
2920         ssize_t nwritten;
2921         int tofd;
2922
2923         sfvcnt = 2;
2924
2925         vec[0].sfv_fd = SFV_FD_SELF;
2926         vec[0].sfv_flag = 0;
2927         vec[0].sfv_off = 0;
2928         vec[0].sfv_len = 0;
2929
2930         vec[1].sfv_fd = 0;
2931         vec[1].sfv_flag = 0;
2932         vec[1].sfv_off = 0;
2933         vec[1].sfv_len = 0;
2934         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
2935 ],
2936 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
2937
2938         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
2939                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
2940                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
2941                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2942         else
2943                 AC_MSG_RESULT(no);
2944         fi
2945
2946                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
2947                 AC_TRY_LINK([\
2948 #include <sys/sendfile.h>],
2949 [\
2950         int sfvcnt;
2951         size_t xferred;
2952         struct sendfilevec vec[2];
2953         ssize_t nwritten;
2954         int tofd;
2955
2956         sfvcnt = 2;
2957
2958         vec[0].sfv_fd = SFV_FD_SELF;
2959         vec[0].sfv_flag = 0;
2960         vec[0].sfv_off = 0;
2961         vec[0].sfv_len = 0;
2962
2963         vec[1].sfv_fd = 0;
2964         vec[1].sfv_flag = 0;
2965         vec[1].sfv_off = 0;
2966         vec[1].sfv_len = 0;
2967         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
2968 ],
2969 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
2970
2971         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
2972                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
2973                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
2974                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
2975         else
2976                 AC_MSG_RESULT(no);
2977         fi
2978         ;;
2979
2980         *)
2981         ;;
2982         esac
2983         ;;
2984   *)
2985     AC_MSG_RESULT(no)
2986     ;;
2987   esac ],
2988   AC_MSG_RESULT(yes)
2989 )
2990
2991
2992 #################################################
2993 # Check whether winbind is supported on this platform.  If so we need to
2994 # build and install client programs (WINBIND_TARGETS), sbin programs
2995 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2996
2997 AC_MSG_CHECKING(whether to build winbind)
2998
2999 # Initially, the value of $host_os decides whether winbind is supported
3000
3001 case "$host_os" in
3002         *linux*|*irix*)
3003                 HAVE_WINBIND=yes
3004                 ;;
3005         *solaris*)
3006                 HAVE_WINBIND=yes
3007                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3008                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3009                 ;;
3010         *hpux11*)
3011                 HAVE_WINBIND=yes
3012                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3013                 ;;
3014         *)
3015                 HAVE_WINBIND=no
3016                 winbind_no_reason=", unsupported on $host_os"
3017                 ;;
3018 esac
3019
3020 # Check the setting of --with-winbindd
3021
3022 AC_ARG_WITH(winbind,
3023 [  --with-winbind          Build winbind (default, if supported by OS)],
3024
3025   case "$withval" in
3026         yes)
3027                 HAVE_WINBIND=yes
3028                 ;;
3029         no)
3030                 HAVE_WINBIND=no
3031                 winbind_reason=""
3032                 ;;
3033   esac ],
3034 )
3035
3036 # We need unix domain sockets for winbind
3037
3038 if test x"$HAVE_WINBIND" = x"yes"; then
3039         if test x"$samba_cv_unixsocket" = x"no"; then
3040                 winbind_no_reason=", no unix domain socket support on $host_os"
3041                 HAVE_WINBIND=no
3042         fi
3043 fi
3044
3045 # Display test results
3046
3047 WINBIND_TARGETS=""
3048 WINBIND_STARGETS=""
3049 WINBIND_LTARGETS=""
3050 WINBIND_PAM_PROGS=""
3051
3052 if test x"$HAVE_WINBIND" = x"yes"; then
3053         AC_MSG_RESULT(yes)
3054         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3055
3056         WINBIND_TARGETS="bin/wbinfo"
3057         WINBIND_STARGETS="bin/winbindd"
3058         if test x"$BLDSHARED" = x"true"; then
3059                 WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
3060                 if test x"$with_pam" = x"yes"; then
3061                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
3062                 fi
3063         fi
3064 else
3065         AC_MSG_RESULT(no$winbind_no_reason)
3066 fi
3067
3068
3069 # Substitution time!
3070
3071 AC_SUBST(WINBIND_TARGETS)
3072 AC_SUBST(WINBIND_STARGETS)
3073 AC_SUBST(WINBIND_LTARGETS)
3074 AC_SUBST(WINBIND_PAM_TARGETS)
3075 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3076 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3077
3078 # Solaris has some extra fields in struct passwd that need to be
3079 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3080 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3081 # this. 
3082
3083 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3084 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3085 #               [#include <pwd.h>])
3086
3087 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3088     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3089         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3090 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3091    AC_DEFINE(HAVE_PASSWD_PW_COMMENT,1,[Whether struct passwd has pw_comment])
3092 fi
3093
3094 #AC_CHECK_MEMBER(struct passwd.pw_age,
3095 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3096 #               [#include <pwd.h>])
3097
3098 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3099     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3100         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3101 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3102    AC_DEFINE(HAVE_PASSWD_PW_AGE,1,[Whether struct passwd has pw_age])
3103 fi
3104
3105 #################################################
3106 # Check to see if we should use the included popt 
3107
3108 AC_ARG_WITH(included-popt,
3109 [  --with-included-popt    use bundled popt library, not from system],
3110
3111   case "$withval" in
3112         yes)
3113                 INCLUDED_POPT=yes
3114                 ;;
3115         no)
3116                 INCLUDED_POPT=no
3117                 ;;
3118   esac ],
3119 )
3120 if test x"$INCLUDED_POPT" != x"yes"; then
3121     AC_CHECK_LIB(popt, poptGetContext,
3122                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3123 fi
3124
3125 AC_MSG_CHECKING(whether to use included popt)
3126 if test x"$INCLUDED_POPT" = x"yes"; then
3127     AC_MSG_RESULT(yes)
3128     BUILD_POPT='$(POPT_OBJS)'
3129     FLAGS1="-I$srcdir/popt"
3130 else
3131     AC_MSG_RESULT(no)
3132     LIBS="$LIBS -lpopt"
3133 fi
3134 AC_SUBST(BUILD_POPT)
3135 AC_SUBST(FLAGS1)
3136
3137 #################################################
3138 # Check if the user wants Python
3139
3140 # At the moment, you can use this to set which Python binary to link
3141 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3142 # though they can coexist in different directories.)  In the future
3143 # this might make the Python stuff be built by default.
3144
3145 AC_ARG_WITH(python,
3146 [  --with-python=PYTHONNAME  build Python libraries],
3147 [ case "${withval-python}" in
3148   yes)
3149         PYTHON=python
3150         ;;
3151   *)
3152         PYTHON=${withval-python}
3153         ;;
3154   esac ])
3155 AC_SUBST(PYTHON)
3156
3157 #################################################
3158 # do extra things if we are running insure
3159
3160 if test "${ac_cv_prog_CC}" = "insure"; then
3161         CPPFLAGS="$CPPFLAGS -D__INSURE__"
3162 fi
3163
3164 #################################################
3165 # final configure stuff
3166
3167 AC_MSG_CHECKING([configure summary])
3168 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3169            AC_MSG_RESULT(yes),
3170            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3171            AC_MSG_WARN([cannot run when cross-compiling]))
3172
3173 builddir=`pwd`
3174 AC_SUBST(builddir)
3175
3176 # I added make files that are outside /source directory.
3177 # I know this is not a good solution, will work out a better
3178 # solution soon.                        --simo
3179 AC_OUTPUT(include/stamp-h Makefile script/findsmb ../examples/sam/Makefile)
3180
3181 #################################################
3182 # Print very concise instructions on building/use
3183 if test "x$enable_dmalloc" = xyes
3184 then
3185         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
3186         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
3187 fi