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