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