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