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