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