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