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