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