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