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