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