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