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