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