r227: Patch from James Peach <jpeach@sgi.com> to search RIX ABI paths for libiconv.
[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 /opt"
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 libext=""
1675 for i in $LOOK_DIRS ; do
1676     save_LIBS=$LIBS
1677     save_LDFLAGS=$LDFLAGS
1678     save_CPPFLAGS=$CPPFLAGS
1679     CPPFLAGS="$CPPFLAGS -I$i/include"
1680 dnl This is here to handle -withval stuff for --with-libiconv
1681 dnl Perhaps we should always add a -L
1682
1683 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
1684 dnl installation paths.
1685     for l in "lib" "lib32" ; do
1686         LDFLAGS="$LDFLAGS -L$i/$l"
1687         LIBS=
1688         export LDFLAGS LIBS CPPFLAGS
1689 dnl Try to find iconv(3)
1690         jm_ICONV($i)
1691         if test "$ICONV_FOUND" = yes; then
1692             libext="$l"
1693             break;
1694         fi
1695     done
1696
1697     if test "$ICONV_FOUND" = yes; then
1698         LDFLAGS=$save_LDFLAGS
1699         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1700         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1701         LIBS="$save_LIBS"
1702         ICONV_LOCATION=$i
1703         export LDFLAGS LIBS CPPFLAGS
1704 dnl Now, check for a working iconv ... we want to do it here because
1705 dnl there might be a working iconv further down the list of LOOK_DIRS
1706
1707         ############
1708         # check for iconv in libc
1709         ic_save_LIBS="$LIBS"
1710         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1711            LIBS="$LIBS -L$ICONV_LOCATION/lib"
1712         fi
1713         if test x"$jm_cv_lib_iconv" != x; then
1714            LIBS="$LIBS -l$jm_cv_lib_iconv"
1715         fi
1716 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1717         default_dos_charset=no
1718         default_display_charset=no
1719         default_unix_charset=no
1720
1721         # check for default dos charset name
1722         for j in CP850 IBM850 ; do
1723             rjs_CHARSET($j)
1724             if test x"$ICONV_CHARSET" = x"$j"; then
1725                 default_dos_charset="\"$j\""
1726                 break
1727             fi
1728         done
1729         # check for default display charset name
1730         for j in ASCII 646 ; do
1731             rjs_CHARSET($j)
1732             if test x"$ICONV_CHARSET" = x"$j"; then
1733                 default_display_charset="\"$j\""
1734                 break
1735             fi
1736         done
1737         # check for default unix charset name
1738         for j in UTF-8 UTF8 ; do
1739             rjs_CHARSET($j)
1740             if test x"$ICONV_CHARSET" = x"$j"; then
1741                 default_unix_charset="\"$j\""
1742                 break
1743             fi
1744         done
1745         
1746         if test "$default_dos_charset" != "no" -a \
1747                 "$default_dos_charset" != "cross" -a \
1748                 "$default_display_charset" != "no" -a \ 
1749                 "$default_display_charset" != "cross" -a \
1750                 "$default_unix_charset" != "no" -a \
1751                 "$default_unix_charset" != "cross"
1752         then
1753                 samba_cv_HAVE_NATIVE_ICONV=yes
1754         else if test "$default_dos_charset" = "cross" -o \
1755                      "$default_display_charset" = "cross" -o \
1756                      "$default_unix_charset" = "cross"
1757         then
1758                 samba_cv_HAVE_NATIVE_ICONV=cross
1759         else
1760                 samba_cv_HAVE_NATIVE_ICONV=no
1761         fi
1762         fi
1763 dnl ])
1764
1765         LIBS="$ic_save_LIBS"
1766         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1767            CPPFLAGS=$save_CPPFLAGS
1768            LDFLAGS=$save_LDFLAGS
1769            LIBS=$save_LIBS
1770            if test x"$jm_cv_lib_iconv" != x; then
1771               LIBS="$LIBS -l$jm_cv_lib_iconv"
1772            fi
1773            dnl Add the flags we need to CPPFLAGS and LDFLAGS
1774            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1775            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1776            export CPPFLAGS
1777            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1778            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1779            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1780            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1781            break
1782         fi
1783 dnl We didn't find a working iconv, so keep going
1784     fi
1785 dnl We only need to clean these up here for the next pass through the loop
1786     CPPFLAGS=$save_CPPFLAGS
1787     LDFLAGS=$save_LDFLAGS
1788     LIBS=$save_LIBS
1789     export LDFLAGS LIBS CPPFLAGS
1790 done
1791 unset libext
1792
1793
1794 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1795     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1796     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1797    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
1798    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1799    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1800 fi
1801
1802
1803 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1804 AC_TRY_RUN([
1805 #include <sys/types.h>
1806 #include <fcntl.h>
1807 #ifndef F_GETLEASE
1808 #define F_GETLEASE      1025
1809 #endif
1810 main() {
1811        int fd = open("/dev/null", O_RDONLY);
1812        return fcntl(fd, F_GETLEASE, 0) == -1;
1813 }
1814 ],
1815 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1816 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1817     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1818 fi
1819
1820 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1821 AC_TRY_RUN([
1822 #include <sys/types.h>
1823 #include <fcntl.h>
1824 #include <signal.h>
1825 #ifndef F_NOTIFY
1826 #define F_NOTIFY 1026
1827 #endif
1828 main() {
1829         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1830 }
1831 ],
1832 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1833 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1834     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1835 fi
1836
1837 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1838 AC_TRY_RUN([
1839 #include <sys/types.h>
1840 #include <fcntl.h>
1841 #include <signal.h>
1842 #include <sys/file.h>
1843 #ifndef LOCK_MAND
1844 #define LOCK_MAND       32
1845 #define LOCK_READ       64
1846 #endif
1847 main() {
1848         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1849 }
1850 ],
1851 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1852 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1853     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1854 fi
1855
1856
1857
1858
1859 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1860 AC_TRY_COMPILE([#include <sys/types.h>
1861 #include <fcntl.h>],
1862 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1863 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1864 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1865     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1866 fi
1867
1868 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1869 AC_TRY_RUN([#include <sys/types.h>
1870 #include <sys/capability.h>
1871 main() {
1872  cap_t cap;
1873  if ((cap = cap_get_proc()) == NULL)
1874    exit(1);
1875  cap->cap_effective |= CAP_NETWORK_MGT;
1876  cap->cap_inheritable |= CAP_NETWORK_MGT;
1877  cap_set_proc(cap);
1878  exit(0);
1879 }
1880 ],
1881 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1882 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1883     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1884 fi
1885
1886 #
1887 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1888 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1889 #
1890
1891 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_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 [int16 testvar;],
1897 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1898 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1899     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1900 fi
1901
1902 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_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 [uint16 testvar;],
1908 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1909 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1910     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1911 fi
1912
1913 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_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 [int32 testvar;],
1919 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1920 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1921     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1922 fi
1923
1924 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1925 AC_TRY_COMPILE([#include <sys/types.h>
1926 #if defined(HAVE_RPC_RPC_H)
1927 #include <rpc/rpc.h>
1928 #endif],
1929 [uint32 testvar;],
1930 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1931 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1932     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1933 fi
1934
1935 dnl
1936 dnl Some systems (SCO) have a problem including
1937 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1938 dnl as a #define in <prot.h> and as part of an enum
1939 dnl in <rpc/rpc.h>.
1940 dnl
1941
1942 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1943 AC_TRY_COMPILE([#include <sys/types.h>
1944 #ifdef HAVE_SYS_SECURITY_H
1945 #include <sys/security.h>
1946 #include <prot.h>
1947 #endif  /* HAVE_SYS_SECURITY_H */
1948 #if defined(HAVE_RPC_RPC_H)
1949 #include <rpc/rpc.h>
1950 #endif],
1951 [int testvar;],
1952 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1953 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1954     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1955 fi
1956
1957 AC_MSG_CHECKING([for test routines])
1958 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1959            AC_MSG_RESULT(yes),
1960            AC_MSG_ERROR([cant find test code. Aborting config]),
1961            AC_MSG_WARN([cannot run when cross-compiling]))
1962
1963 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1964 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1965            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1966 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1967     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1968 fi
1969
1970 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1971 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1972            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1973            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1974            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1975 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1976 then
1977     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1978 fi
1979
1980 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1981 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1982            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1983 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1984     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1985 fi
1986
1987 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1988 SAVE_CPPFLAGS="$CPPFLAGS"
1989 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1990 AC_TRY_COMPILE([
1991 #define REPLACE_GETPASS 1
1992 #define NO_PROTO_H 1
1993 #define NO_CONFIG_H 1
1994 #define main dont_declare_main
1995 #include "${srcdir-.}/lib/getsmbpass.c"
1996 #undef main
1997 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1998 CPPFLAGS="$SAVE_CPPFLAGS"
1999 ])
2000 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2001         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2002 fi
2003
2004 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2005 AC_TRY_RUN([
2006 #include <stdio.h>
2007 #include <sys/types.h>
2008 #include <netinet/in.h>
2009 #ifdef HAVE_ARPA_INET_H
2010 #include <arpa/inet.h>
2011 #endif
2012 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2013 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2014     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2015 exit(1);}],
2016            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2017 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2018     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2019 fi
2020
2021 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2022 AC_TRY_RUN([#include <stdlib.h>
2023 #include <sys/types.h>
2024 #include <sys/stat.h>
2025 #include <unistd.h>
2026 main() { 
2027   struct stat st;
2028   char tpl[20]="/tmp/test.XXXXXX"; 
2029   int fd = mkstemp(tpl); 
2030   if (fd == -1) exit(1);
2031   unlink(tpl);
2032   if (fstat(fd, &st) != 0) exit(1);
2033   if ((st.st_mode & 0777) != 0600) exit(1);
2034   exit(0);
2035 }],
2036 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2037 samba_cv_HAVE_SECURE_MKSTEMP=no,
2038 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2039 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2040     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2041 fi
2042
2043 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2044 AC_TRY_RUN([#include <unistd.h>
2045 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2046 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2047 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2048     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2049 fi
2050
2051 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2052 AC_TRY_RUN([#include <unistd.h>
2053 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2054 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2055 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2056     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2057 fi
2058
2059 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2060 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2061            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2062 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2063     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2064 else
2065     AC_MSG_WARN(running as non-root will disable some tests)
2066 fi
2067
2068 ##################
2069 # look for a method of finding the list of network interfaces
2070 iface=no;
2071 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2072 AC_TRY_RUN([
2073 #define HAVE_IFACE_AIX 1
2074 #define AUTOCONF_TEST 1
2075 #include "confdefs.h"
2076 #include "${srcdir-.}/lib/interfaces.c"],
2077            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2078 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2079     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2080 fi
2081
2082 if test $iface = no; then
2083 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2084 AC_TRY_RUN([
2085 #define HAVE_IFACE_IFCONF 1
2086 #define AUTOCONF_TEST 1
2087 #include "confdefs.h"
2088 #include "${srcdir-.}/lib/interfaces.c"],
2089            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2090 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2091     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2092 fi
2093 fi
2094
2095 if test $iface = no; then
2096 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2097 AC_TRY_RUN([
2098 #define HAVE_IFACE_IFREQ 1
2099 #define AUTOCONF_TEST 1
2100 #include "confdefs.h"
2101 #include "${srcdir-.}/lib/interfaces.c"],
2102            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2103 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2104     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2105 fi
2106 fi
2107
2108
2109 ################################################
2110 # look for a method of setting the effective uid
2111 seteuid=no;
2112 if test $seteuid = no; then
2113 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2114 AC_TRY_RUN([
2115 #define AUTOCONF_TEST 1
2116 #define USE_SETRESUID 1
2117 #include "confdefs.h"
2118 #include "${srcdir-.}/lib/util_sec.c"],
2119            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2120 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2121     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2122 fi
2123 fi
2124
2125
2126 if test $seteuid = no; then
2127 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2128 AC_TRY_RUN([
2129 #define AUTOCONF_TEST 1
2130 #define USE_SETREUID 1
2131 #include "confdefs.h"
2132 #include "${srcdir-.}/lib/util_sec.c"],
2133            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2134 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2135     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2136 fi
2137 fi
2138
2139 if test $seteuid = no; then
2140 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2141 AC_TRY_RUN([
2142 #define AUTOCONF_TEST 1
2143 #define USE_SETEUID 1
2144 #include "confdefs.h"
2145 #include "${srcdir-.}/lib/util_sec.c"],
2146            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2147 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2148     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2149 fi
2150 fi
2151
2152 if test $seteuid = no; then
2153 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2154 AC_TRY_RUN([
2155 #define AUTOCONF_TEST 1
2156 #define USE_SETUIDX 1
2157 #include "confdefs.h"
2158 #include "${srcdir-.}/lib/util_sec.c"],
2159            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2160 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2161     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2162 fi
2163 fi
2164
2165
2166 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2167 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2168            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2169 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2170     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2171 fi
2172
2173 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2174 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2175            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2176 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2177     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2178 fi
2179
2180 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2181 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2182            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2183 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2184     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2185 fi
2186
2187 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2188 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2189            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2190 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2191     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2192
2193 else
2194
2195 dnl
2196 dnl Don't check for 64 bit fcntl locking if we know that the
2197 dnl glibc2.1 broken check has succeeded.
2198 dnl 
2199
2200   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2201   AC_TRY_RUN([
2202 #if defined(HAVE_UNISTD_H)
2203 #include <unistd.h>
2204 #endif
2205 #include <stdio.h>
2206 #include <stdlib.h>
2207
2208 #ifdef HAVE_FCNTL_H
2209 #include <fcntl.h>
2210 #endif
2211
2212 #ifdef HAVE_SYS_FCNTL_H
2213 #include <sys/fcntl.h>
2214 #endif
2215 main() { struct flock64 fl64;
2216 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2217 exit(0);
2218 #else
2219 exit(1);
2220 #endif
2221 }],
2222        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2223
2224   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2225       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2226   fi
2227 fi
2228
2229 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2230 AC_TRY_COMPILE([#include <sys/types.h>
2231 #include <sys/stat.h>
2232 #include <unistd.h>],
2233 [struct stat st;  st.st_blocks = 0;],
2234 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2235 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2236     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2237 fi 
2238
2239 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2240 AC_TRY_COMPILE([#include <sys/types.h>
2241 #include <sys/stat.h>
2242 #include <unistd.h>],
2243 [struct stat st;  st.st_blksize = 0;],
2244 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2245 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2246     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2247 fi
2248
2249 case "$host_os" in
2250 *linux*)
2251 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2252 AC_TRY_COMPILE([
2253 #ifdef HAVE_SYS_VFS_H
2254 #include <sys/vfs.h>
2255 #endif
2256 #ifdef HAVE_SYS_CAPABILITY_H
2257 #include <sys/capability.h>
2258 #endif
2259 ],[int i;],
2260    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2261 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2262    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2263 fi
2264 ;;
2265 esac
2266
2267 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2268 AC_TRY_COMPILE([
2269 #include <sys/types.h>
2270 #include <sys/acl.h>
2271 #if defined(HAVE_RPCSVC_NIS_H)
2272 #include <rpcsvc/nis.h>
2273 #endif],
2274 [int i;],
2275 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2276 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2277         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2278 fi
2279
2280
2281 #################################################
2282 # check for smbwrapper support
2283 AC_MSG_CHECKING(whether to use smbwrapper)
2284 AC_ARG_WITH(smbwrapper,
2285 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2286 [ case "$withval" in
2287   yes)
2288     AC_MSG_RESULT(yes)
2289     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2290         WRAPPROG="bin/smbsh\$(EXEEXT)"
2291         WRAP="bin/smbwrapper.$SHLIBEXT"
2292
2293 # Conditions under which smbwrapper should not be built.
2294
2295         if test x$PICFLAGS = x; then
2296            echo No support for PIC code - disabling smbwrapper and smbsh
2297            WRAPPROG=""
2298            WRAP=""
2299         elif test x$ac_cv_func_syscall = xno; then
2300            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2301            WRAPPROG=""
2302            WRAP=""
2303         fi
2304         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2305         SMBWRAPPER="$WRAPPROG $WRAP"
2306     ;;
2307   *)
2308     AC_MSG_RESULT(no)
2309     ;;
2310   esac ],
2311   AC_MSG_RESULT(no)
2312 )
2313
2314 #################################################
2315 # check for AFS clear-text auth support
2316 samba_cv_WITH_AFS=no
2317 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2318 AC_ARG_WITH(afs,
2319 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2320 [ case "$withval" in
2321   yes|auto)
2322     AC_MSG_RESULT($withval)
2323     samba_cv_WITH_AFS=$withval
2324     ;;
2325   *)
2326     AC_MSG_RESULT(no)
2327     ;;
2328   esac ],
2329   AC_MSG_RESULT(no)
2330 )
2331
2332 ####################################################
2333 # check for Linux-specific AFS fake-kaserver support
2334 samba_cv_WITH_FAKE_KASERVER=no
2335 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2336 AC_ARG_WITH(fake-kaserver,
2337 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2338 [ case "$withval" in
2339   yes|auto)
2340     AC_MSG_RESULT($withval)
2341     samba_cv_WITH_FAKE_KASERVER=$withval
2342     ;;
2343   *)
2344     AC_MSG_RESULT(no)
2345     ;;
2346   esac ],
2347   AC_MSG_RESULT(no)
2348 )
2349
2350 #################################################
2351 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2352 if test x"$samba_cv_WITH_AFS" != x"no" ||
2353    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2354
2355     # see if this box has the afs-headers in /usr/include/afs
2356     AC_MSG_CHECKING(for /usr/include/afs)
2357     if test -d /usr/include/afs; then
2358           CFLAGS="$CFLAGS -I/usr/include/afs"
2359           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2360           AC_MSG_RESULT(yes)
2361     else
2362       AC_MSG_RESULT(no)
2363     fi
2364    
2365     # check for afs.h
2366     have_afs_headers=no
2367     AC_CHECK_HEADERS(afs.h afs/afs.h)
2368     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2369         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2370            test x"$samba_cv_WITH_AFS" = x"auto"; then
2371                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2372         else
2373                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2374         fi
2375     else
2376         have_afs_headers=yes
2377     fi
2378 fi
2379
2380 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2381         AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" )
2382 fi
2383
2384 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" == x"yes"; then
2385     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2386 fi
2387         
2388 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2389     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2390 fi
2391
2392 #################################################
2393 # check for the DFS clear-text auth system
2394 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2395 AC_ARG_WITH(dfs,
2396 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2397 [ case "$withval" in
2398   yes)
2399     AC_MSG_RESULT(yes)
2400     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2401     ;;
2402   *)
2403     AC_MSG_RESULT(no)
2404     ;;
2405   esac ],
2406   AC_MSG_RESULT(no)
2407 )
2408
2409 ########################################################
2410 # Compile with LDAP support?
2411
2412 with_ldap_support=auto
2413 AC_MSG_CHECKING([for LDAP support])
2414
2415 AC_ARG_WITH(ldap,
2416 [  --with-ldap             LDAP support (default yes)],
2417 [ case "$withval" in
2418     yes|no)
2419         with_ldap_support=$withval
2420         ;;
2421   esac ])
2422
2423 AC_MSG_RESULT($with_ldap_support)
2424
2425 SMBLDAP=""
2426 AC_SUBST(SMBLDAP)
2427 if test x"$with_ldap_support" != x"no"; then
2428
2429   ##################################################################
2430   # first test for ldap.h and lber.h
2431   # (ldap.h is required for this test)
2432   AC_CHECK_HEADERS(ldap.h lber.h)
2433   
2434   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2435         if test x"$with_ldap_support" = x"yes"; then
2436          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2437         else
2438          AC_MSG_WARN(ldap.h is needed for LDAP support)
2439         fi
2440         
2441         with_ldap_support=no
2442   fi
2443 fi
2444
2445 if test x"$with_ldap_support" != x"no"; then
2446   ac_save_LIBS=$LIBS
2447
2448   ##################################################################
2449   # we might need the lber lib on some systems. To avoid link errors
2450   # this test must be before the libldap test
2451   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2452
2453   ########################################################
2454   # now see if we can find the ldap libs in standard paths
2455   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2456
2457   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2458   
2459   ########################################################
2460   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2461   # Check found in pam_ldap 145.
2462   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2463
2464   LIBS="$LIBS $LDAP_LIBS"
2465   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2466     AC_TRY_COMPILE([
2467         #include <lber.h>
2468         #include <ldap.h>], 
2469         [ldap_set_rebind_proc(0, 0, 0);], 
2470         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2471         [smb_ldap_cv_ldap_set_rebind_proc=2]
2472     ) 
2473   ])
2474   
2475   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2476
2477   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2478   
2479   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2480     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2481     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2482     SMBLDAP="lib/smbldap.o"
2483     with_ldap_support=yes
2484     AC_MSG_CHECKING(whether LDAP support is used)
2485     AC_MSG_RESULT(yes)
2486   else
2487     if test x"$with_ldap_support" = x"yes"; then
2488         AC_MSG_ERROR(libldap is needed for LDAP support)
2489     else
2490         AC_MSG_WARN(libldap is needed for LDAP support)
2491     fi
2492     
2493     LDAP_LIBS=""
2494     with_ldap_support=no
2495   fi
2496   LIBS=$ac_save_LIBS
2497 fi
2498
2499
2500 #################################################
2501 # active directory support
2502
2503 with_ads_support=auto
2504 AC_MSG_CHECKING([for Active Directory and krb5 support])
2505
2506 AC_ARG_WITH(ads,
2507 [  --with-ads              Active Directory support (default auto)],
2508 [ case "$withval" in
2509     yes|no)
2510         with_ads_support="$withval"
2511         ;;
2512   esac ])
2513
2514 AC_MSG_RESULT($with_ads_support)
2515
2516 FOUND_KRB5=no
2517 KRB5_LIBS=""
2518
2519 if test x"$with_ldap_support" != x"yes"; then
2520     if test x"$with_ads_support" = x"yes"; then
2521         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2522     elif test x"$with_ads_support" != x"no"; then
2523         AC_MSG_WARN(Active Directory Support requires LDAP support)
2524     fi
2525     with_ads_support=no
2526 fi
2527
2528 if test x"$with_ads_support" != x"no"; then
2529
2530   # Do no harm to the values of CFLAGS and LIBS while testing for
2531   # Kerberos support.
2532
2533   #################################################
2534   # check for krb5-config from recent MIT and Heimdal kerberos 5
2535   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2536   AC_MSG_CHECKING(for working krb5-config)
2537   if test -x "$KRB5_CONFIG"; then
2538     ac_save_CFLAGS=$CFLAGS
2539     CFLAGS="";export CFLAGS
2540     ac_save_LDFLAGS=$LDFLAGS
2541     LDFLAGS="";export LDFLAGS
2542     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2543     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2544     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2545     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2546     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2547     FOUND_KRB5=yes
2548     AC_MSG_RESULT(yes)
2549   else
2550     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2551   fi
2552   
2553   if test x$FOUND_KRB5 = x"no"; then
2554     #################################################
2555     # check for location of Kerberos 5 install
2556     AC_MSG_CHECKING(for kerberos 5 install path)
2557     AC_ARG_WITH(krb5,
2558     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2559     [ case "$withval" in
2560       no)
2561         AC_MSG_RESULT(no krb5-path given)
2562         ;;
2563       yes)
2564         AC_MSG_RESULT(/usr)
2565         FOUND_KRB5=yes
2566         ;;
2567       *)
2568         AC_MSG_RESULT($withval)
2569         KRB5_CFLAGS="-I$withval/include"
2570         KRB5_CPPFLAGS="-I$withval/include"
2571         KRB5_LDFLAGS="-L$withval/lib"
2572         FOUND_KRB5=yes
2573         ;;
2574       esac ],
2575       AC_MSG_RESULT(no krb5-path given)
2576     )
2577   fi
2578
2579   if test x$FOUND_KRB5 = x"no"; then
2580     #################################################
2581     # see if this box has the SuSE location for the heimdal krb implementation
2582     AC_MSG_CHECKING(for /usr/include/heimdal)
2583     if test -d /usr/include/heimdal; then
2584       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2585           KRB5_CFLAGS="-I/usr/include/heimdal"
2586           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2587           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2588           AC_MSG_RESULT(yes)
2589       else
2590           KRB5_CFLAGS="-I/usr/include/heimdal"
2591           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2592           AC_MSG_RESULT(yes)
2593       fi
2594     else
2595       AC_MSG_RESULT(no)
2596     fi
2597   fi
2598
2599   if test x$FOUND_KRB5 = x"no"; then
2600     #################################################
2601     # see if this box has the RedHat location for kerberos
2602     AC_MSG_CHECKING(for /usr/kerberos)
2603     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2604       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2605       KRB5_CFLAGS="-I/usr/kerberos/include"
2606       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2607       AC_MSG_RESULT(yes)
2608     else
2609       AC_MSG_RESULT(no)
2610     fi
2611   fi
2612
2613   ac_save_CFLAGS=$CFLAGS
2614   ac_save_CPPFLAGS=$CPPFLAGS
2615   ac_save_LDFLAGS=$LDFLAGS
2616
2617   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2618   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2619   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2620
2621   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2622
2623   # now check for krb5.h. Some systems have the libraries without the headers!
2624   # note that this check is done here to allow for different kerberos
2625   # include paths
2626   AC_CHECK_HEADERS(krb5.h)
2627
2628   if test x"$ac_cv_header_krb5_h" = x"no"; then
2629
2630     # Give a warning if AD support was not explicitly requested,
2631     # i.e with_ads_support = auto, otherwise die with an error.
2632
2633     if test x"$with_ads_support" = x"yes"; then
2634       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2635     else
2636       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2637     fi
2638
2639     # Turn off AD support and restore CFLAGS and LIBS variables
2640
2641     with_ads_support="no"
2642     
2643     CFLAGS=$ac_save_CFLAGS
2644     CPPFLAGS=$ac_save_CPPFLAGS
2645     LDFLAGS=$ac_save_LDFLAGS
2646   fi
2647 fi
2648
2649 # Now we have determined whether we really want ADS support
2650
2651 if test x"$with_ads_support" != x"no"; then
2652   ac_save_LIBS=$LIBS
2653
2654   # now check for gssapi headers.  This is also done here to allow for
2655   # different kerberos include paths
2656   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2657
2658   ##################################################################
2659   # we might need the k5crypto and com_err libraries on some systems
2660   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2661   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2662
2663   # Heimdal checks.
2664   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2665   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2666   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2667
2668   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2669   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2670                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2671
2672   ########################################################
2673   # now see if we can find the krb5 libs in standard paths
2674   # or as specified above
2675   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2676
2677   ########################################################
2678   # now see if we can find the gssapi libs in standard paths
2679   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2680             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2681
2682   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2683   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2684   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2685   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2686   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2687   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2688   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2689   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2690   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2691   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2692   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2693   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2694   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2695   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2696   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
2697   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2698
2699   LIBS="$LIBS $KRB5_LIBS"
2700   
2701   AC_CACHE_CHECK([for addrtype in krb5_address],
2702                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2703     AC_TRY_COMPILE([#include <krb5.h>],
2704       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2705       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2706       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2707
2708   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2709     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2710                [Whether the krb5_address struct has a addrtype property])
2711   fi
2712
2713   AC_CACHE_CHECK([for addr_type in krb5_address],
2714                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2715     AC_TRY_COMPILE([#include <krb5.h>],
2716       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2717       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2718       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2719
2720   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2721     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2722               [Whether the krb5_address struct has a addr_type property])
2723   fi
2724
2725   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2726                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2727                  [AC_TRY_COMPILE([#include <krb5.h>],
2728     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2729     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2730
2731   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2732     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2733               [Whether the krb5_ticket struct has a enc_part2 property])
2734   fi
2735
2736   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2737                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2738     AC_TRY_COMPILE([#include <krb5.h>],
2739       [krb5_keyblock key; key.keyvalue.data = NULL;],
2740       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2741       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2742
2743   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2744     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2745               [Whether the krb5_keyblock struct has a keyvalue property])
2746   fi
2747
2748   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2749                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2750     AC_TRY_COMPILE([#include <krb5.h>],
2751       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2752       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2753       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2754   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2755                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2756     AC_TRY_COMPILE([#include <krb5.h>],
2757       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2758       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2759       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2760 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2761 # w.r.t. arcfour and windows, so we must not enable it here
2762   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2763           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2764     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2765               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2766   fi
2767
2768   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2769                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2770     AC_TRY_COMPILE([#include <krb5.h>],
2771       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2772       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2773       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2774
2775   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2776     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2777               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2778   fi
2779
2780   AC_CACHE_CHECK([for the krb5_princ_component macro],
2781                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2782     AC_TRY_LINK([#include <krb5.h>],
2783       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2784       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2785       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2786
2787   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2788     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2789                [Whether krb5_princ_component is available])
2790   fi
2791
2792   AC_CACHE_CHECK([for key in krb5_keytab_entry],
2793                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
2794     AC_TRY_COMPILE([#include <krb5.h>],
2795       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
2796       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
2797       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
2798
2799   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
2800     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
2801               [Whether krb5_keytab_entry has key member])
2802   fi
2803
2804   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
2805                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
2806     AC_TRY_COMPILE([#include <krb5.h>],
2807       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
2808       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
2809       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
2810
2811   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
2812     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
2813               [Whether krb5_keytab_entry has keyblock member])
2814   fi
2815
2816   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2817     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2818     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2819     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2820     AC_MSG_RESULT(yes)
2821   else
2822     if test x"$with_ads_support" = x"yes"; then
2823         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2824     else
2825         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2826     fi
2827     KRB5_LIBS=""
2828     with_ads_support=no 
2829   fi
2830   LIBS="$ac_save_LIBS"
2831 fi
2832
2833 ########################################################
2834 # Compile experimental passdb backends?
2835 # (pdb_xml, pdb_mysql, pdb_pgsql)
2836 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2837 AC_ARG_WITH(expsam,
2838 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2839 [                          Valid choices include (comma separated list): ]
2840 [                              xml, mysql & pgsql],
2841 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2842   if test "z$expsam_pdb_modules" = "zyes"; then
2843     expsam_pdb_modules="xml mysql pgsql"
2844   fi
2845   AC_MSG_RESULT($expsam_pdb_modules)
2846   for i in $expsam_pdb_modules
2847   do 
2848     case "$i" in
2849     xml|all|yes)
2850       ## pdb_xml
2851           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])])
2852       CFLAGS="$CFLAGS $XML_CFLAGS"
2853       ;;
2854     mysql|all|yes)
2855       ## pdb_mysql
2856           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
2857       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2858       ;;
2859      pgsql|all|yes)
2860       ## pdb_pgsql
2861       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
2862       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
2863       ;;
2864     no)
2865       ;;
2866     *)
2867       echo "Unknown module name \"$i\"!  Exiting..."
2868       exit 1
2869       ;;
2870     esac
2871   done ],
2872   AC_MSG_RESULT(no)
2873 )
2874
2875 #################################################
2876 # check for automount support
2877 AC_MSG_CHECKING(whether to use automount)
2878 AC_ARG_WITH(automount,
2879 [  --with-automount        Include automount support (default=no)],
2880 [ case "$withval" in
2881   yes)
2882     AC_MSG_RESULT(yes)
2883     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2884     ;;
2885   *)
2886     AC_MSG_RESULT(no)
2887     ;;
2888   esac ],
2889   AC_MSG_RESULT(no)
2890 )
2891
2892 #################################################
2893 # check for smbmount support
2894 AC_MSG_CHECKING(whether to use smbmount)
2895 AC_ARG_WITH(smbmount,
2896 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2897 [ case "$withval" in
2898   yes)
2899         case "$host_os" in
2900         *linux*)
2901                 AC_MSG_RESULT(yes)
2902                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2903                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2904                 ;;
2905         *)
2906                 AC_MSG_ERROR(not on a linux system!)
2907                 ;;
2908         esac
2909     ;;
2910   *)
2911     AC_MSG_RESULT(no)
2912     ;;
2913   esac ],
2914   AC_MSG_RESULT(no)
2915 )
2916
2917
2918 #################################################
2919 # check for a PAM clear-text auth, accounts, password and session support
2920 with_pam_for_crypt=no
2921 AC_MSG_CHECKING(whether to use PAM)
2922 AC_ARG_WITH(pam,
2923 [  --with-pam              Include PAM support (default=no)],
2924 [ case "$withval" in
2925   yes)
2926     AC_MSG_RESULT(yes)
2927     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2928        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
2929           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
2930              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
2931           fi
2932        fi
2933     fi
2934     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2935     AUTH_LIBS="$AUTH_LIBS -lpam"
2936     with_pam_for_crypt=yes
2937     ;;
2938   *)
2939     AC_MSG_RESULT(no)
2940     ;;
2941   esac ],
2942   AC_MSG_RESULT(no)
2943 )
2944
2945 # we can't build a pam module if we don't have pam.
2946 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2947
2948 #################################################
2949 # check for pam_smbpass support
2950 AC_MSG_CHECKING(whether to use pam_smbpass)
2951 AC_ARG_WITH(pam_smbpass,
2952 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2953 [ case "$withval" in
2954   yes)
2955     AC_MSG_RESULT(yes)
2956
2957        # Conditions under which pam_smbpass should not be built.
2958
2959        if test x$PICFLAGS = x; then
2960           AC_MSG_ERROR([No support for PIC code])
2961        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2962           AC_MSG_ERROR([No security/pam_appl.h found])
2963        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2964           AC_MSG_ERROR([No libpam found])
2965        else
2966           AUTH_LIBS="$AUTH_LIBS -lpam"
2967           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2968        fi
2969     ;;
2970   *)
2971     AC_MSG_RESULT(no)
2972     ;;
2973   esac ],
2974   AC_MSG_RESULT(no)
2975 )
2976
2977
2978 ###############################################
2979 # test for where we get crypt() from
2980 AC_SEARCH_LIBS(crypt, [crypt],
2981   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
2982   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
2983
2984 ##
2985 ## moved after the check for -lcrypt in order to
2986 ## ensure that the necessary libraries are included
2987 ## check checking for truncated salt.  Wrapped by the
2988 ## $with_pam_for_crypt variable as above   --jerry
2989 ##
2990 if test $with_pam_for_crypt = no; then
2991 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2992 crypt_LIBS="$LIBS"
2993 LIBS="$AUTH_LIBS $LIBS"
2994 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2995         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2996 LIBS="$crypt_LIBS"])
2997 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2998         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2999 fi
3000 fi
3001
3002
3003 dictpath="/usr/lib/cracklib_dict"
3004 with_cracklib=yes
3005 ###############################################
3006 # test for where we get FaciestCheck from
3007 AC_MSG_CHECKING(where to use cracklib from (default=$dictpath))
3008 AC_ARG_WITH(cracklib,
3009 [  --with-cracklib[=DIR]     Look for cracklib dictionary in this location ],
3010 [  case "$withval" in
3011   yes)
3012     AC_MSG_RESULT(${dictpath})
3013     ;;
3014   no)
3015     AC_MSG_RESULT(no)
3016       dictpath=""
3017     ;;
3018   *)
3019       dictpath="$withval"
3020     AC_MSG_RESULT(${dictpath})
3021     ;;
3022   esac ],
3023   dictpath=""
3024   AC_MSG_RESULT(no)
3025 )
3026
3027 if test x$dictpath != x""; then
3028      AC_SEARCH_LIBS(FascistCheck, [crack],
3029                     [test "$ac_cv_search_crack" = "none required" || samba_cv_found_crack="yes"
3030                     AC_DEFINE(HAVE_CRACK,1,[Whether the system has the FaciestCheck function from cracklib])])
3031
3032      crack_saved_libs=$LIBS;
3033
3034      if test x$samba_cv_found_crack=x"yes"; then
3035         AC_SEARCH_LIBS(CRACKLIB_DICTPATH, [crypt],
3036             AC_DEFINE(HAVE_CRACKLIB_DICTPATH, 1, [Whether we have given a CRACKLIB_DICTPATH in our headers])
3037         )
3038
3039         AC_DEFINE_UNQUOTED(SAMBA_CRACKLIB_DICTPATH, "$dictpath", [Where the cracklib dictionay is])
3040         AC_MSG_CHECKING(Whether we have a working cracklib)
3041         AC_TRY_RUN([
3042                 #include "${srcdir-.}/tests/crack.c"],
3043               AC_MSG_RESULT(yes)
3044               AC_DEFINE(HAVE_WORKING_CRACKLIB,1,[Whether we have a working cracklib])
3045               AUTH_LIBS="-lcrack $AUTH_LIBS",
3046
3047               AC_MSG_RESULT(no)
3048               AC_MSG_WARN(cracklib exists - but does not function correctly),
3049
3050               AC_MSG_RESULT(no)
3051               AC_MSG_WARN(cannot test-run when cross-compiling)
3052               )
3053     else
3054         AC_MSG_CHECKING(Whether we have cracklib)
3055         AC_MSG_RESULT(no)
3056     fi
3057     LIBS=$crack_saved_libs
3058 fi
3059
3060 ########################################################################################
3061 ##
3062 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3063 ##
3064 ########################################################################################
3065
3066 #################################################
3067 # check for a LDAP password database configuration backwards compatibility
3068 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3069 AC_ARG_WITH(ldapsam,
3070 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3071 [ case "$withval" in
3072   yes)
3073     AC_MSG_RESULT(yes)
3074     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3075     ;;
3076   *)
3077     AC_MSG_RESULT(no)
3078     ;;
3079   esac ],
3080   AC_MSG_RESULT(no)
3081 )
3082
3083 ########################################################################################
3084 ##
3085 ## END OF TESTS FOR SAM BACKENDS.  
3086 ##
3087 ########################################################################################
3088
3089 #################################################
3090 # check for a NISPLUS_HOME support 
3091 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3092 AC_ARG_WITH(nisplus-home,
3093 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3094 [ case "$withval" in
3095   yes)
3096     AC_MSG_RESULT(yes)
3097     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3098     ;;
3099   *)
3100     AC_MSG_RESULT(no)
3101     ;;
3102   esac ],
3103   AC_MSG_RESULT(no)
3104 )
3105
3106 #################################################
3107 # check for syslog logging
3108 AC_MSG_CHECKING(whether to use syslog logging)
3109 AC_ARG_WITH(syslog,
3110 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3111 [ case "$withval" in
3112   yes)
3113     AC_MSG_RESULT(yes)
3114     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3115     ;;
3116   *)
3117     AC_MSG_RESULT(no)
3118     ;;
3119   esac ],
3120   AC_MSG_RESULT(no)
3121 )
3122
3123 #################################################
3124 # check for a shared memory profiling support
3125 AC_MSG_CHECKING(whether to use profiling)
3126 AC_ARG_WITH(profiling-data,
3127 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3128 [ case "$withval" in
3129   yes)
3130     AC_MSG_RESULT(yes)
3131     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3132     ;;
3133   *)
3134     AC_MSG_RESULT(no)
3135     ;;
3136   esac ],
3137   AC_MSG_RESULT(no)
3138 )
3139
3140
3141 #################################################
3142 # check for experimental disk-quotas support
3143
3144 samba_cv_WITH_QUOTAS=auto
3145 samba_cv_TRY_QUOTAS=no
3146 samba_cv_RUN_QUOTA_TESTS=auto
3147 samba_cv_WITH_SYS_QUOTAS=auto
3148 samba_cv_TRY_SYS_QUOTAS=no
3149 samba_cv_SYSQUOTA_FOUND=no;
3150
3151 AC_MSG_CHECKING(whether to try disk-quotas support)
3152 AC_ARG_WITH(quotas,
3153 [  --with-quotas           Include disk-quota support (default=no)],
3154 [ case "$withval" in
3155   yes)
3156     AC_MSG_RESULT(yes)
3157     samba_cv_WITH_QUOTAS=yes
3158     samba_cv_TRY_QUOTAS=yes
3159     samba_cv_RUN_QUOTA_TESTS=yes
3160     #set sys quotas to auto in this case
3161     samba_cv_TRY_SYS_QUOTAS=auto
3162     ;;
3163   auto)
3164     AC_MSG_RESULT(auto)
3165     samba_cv_WITH_QUOTAS=auto
3166     samba_cv_TRY_QUOTAS=auto
3167     samba_cv_RUN_QUOTA_TESTS=auto
3168     #set sys quotas to auto in this case
3169     samba_cv_TRY_SYS_QUOTAS=auto
3170     ;;
3171   no)
3172     AC_MSG_RESULT(no)
3173     samba_cv_WITH_QUOTAS=no
3174     samba_cv_TRY_QUOTAS=no
3175     samba_cv_RUN_QUOTA_TESTS=no
3176     ;;
3177   *)
3178     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3179     ;;
3180   esac ],
3181   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3182 )
3183
3184 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3185 AC_ARG_WITH(sys-quotas,
3186 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3187 [ case "$withval" in
3188   yes)
3189     AC_MSG_RESULT(yes)
3190     samba_cv_WITH_SYS_QUOTAS=yes
3191     samba_cv_TRY_SYS_QUOTAS=yes
3192     samba_cv_RUN_QUOTA_TESTS=yes
3193     ;;
3194   auto)
3195     AC_MSG_RESULT(auto)
3196     samba_cv_WITH_SYS_QUOTAS=auto
3197     samba_cv_TRY_SYS_QUOTAS=auto
3198     samba_cv_RUN_QUOTA_TESTS=auto
3199     ;;
3200   no)
3201     AC_MSG_RESULT(no)
3202     samba_cv_WITH_SYS_QUOTAS=no
3203     samba_cv_TRY_SYS_QUOTAS=no
3204     ;;
3205   *)
3206     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3207     ;;
3208   esac ],
3209   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3210 )
3211
3212 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3213 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3214   case "$host_os" in
3215         *linux*)
3216             AC_MSG_RESULT(yes)
3217             samba_cv_TRY_SYS_QUOTAS=yes
3218             samba_cv_RUN_QUOTA_TESTS=yes
3219             samba_cv_SYSQUOTA_FOUND=yes
3220             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3221             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3222             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3223             samba_cv_found_xfs_header=yes
3224             ;;
3225         *)
3226             AC_MSG_RESULT(no)
3227             samba_cv_TRY_SYS_QUOTAS=no
3228             ;;
3229   esac
3230 fi
3231
3232 #############################################
3233 # only check for quota stuff if --with-quotas
3234 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3235
3236 # some broken header files need this
3237 AC_CHECK_HEADER(asm/types.h,[
3238             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3239             AC_ADD_INCLUDE(<asm/types.h>)
3240             ])
3241
3242 # For quotas on Veritas VxFS filesystems
3243 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3244
3245 # For sys/quota.h and linux/quota.h
3246 AC_CHECK_HEADERS(sys/quota.h)
3247
3248 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3249 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3250 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3251 AC_TRY_COMPILE([
3252 #include "confdefs.h"
3253 #ifdef HAVE_SYS_TYPES_H
3254 #include <sys/types.h>
3255 #endif
3256 #ifdef HAVE_ASM_TYPES_H
3257 #include <asm/types.h>
3258 #endif
3259 #include <sys/quota.h>
3260 ],[int i = Q_XGETQUOTA;],
3261 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3262 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3263         samba_cv_found_xfs_header=yes
3264 fi
3265 fi
3266
3267 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3268 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3269 AC_TRY_COMPILE([
3270 #include "confdefs.h"
3271 #ifdef HAVE_SYS_QUOTA_H
3272 #include <sys/quota.h>
3273 #endif
3274 ],[
3275 struct dqblk D;
3276 D.dqb_fsoftlimit = 0;],
3277 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3278 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3279         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3280 fi
3281
3282 ##################
3283 # look for a working quota system
3284
3285 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3286 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3287 AC_TRY_RUN_STRICT([
3288 #define HAVE_QUOTACTL_4A 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_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3293 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3294     samba_cv_SYSQUOTA_FOUND=yes;
3295     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3296     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3297 fi
3298 fi
3299
3300 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3301 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3302 AC_TRY_RUN_STRICT([
3303 #define HAVE_QUOTACTL_4B 1
3304 #define AUTOCONF_TEST 1
3305 #include "confdefs.h"
3306 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3307            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3308 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3309     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3310     samba_cv_SYSQUOTA_FOUND=yes;
3311     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3312     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3313 fi
3314 fi
3315
3316 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3317 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3318 AC_TRY_RUN_STRICT([
3319 #define HAVE_QUOTACTL_3 1
3320 #define AUTOCONF_TEST 1
3321 #include "confdefs.h"
3322 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3323            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3324 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3325     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3326     samba_cv_SYSQUOTA_FOUND=yes;
3327     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3328     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3329 fi
3330 fi
3331
3332 #################################################
3333 # check for mntent.h and struct mntent
3334 AC_CHECK_HEADERS(mntent.h)
3335 #################################################
3336 # check for setmntent,getmntent,endmntent
3337 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3338
3339 #################################################
3340 # check for devnm.h and struct mntent
3341 AC_CHECK_HEADERS(devnm.h)
3342 #################################################
3343 # check for devnm
3344 AC_CHECK_FUNCS(devnm)
3345
3346 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3347     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3348         # if --with-sys-quotas=yes then build it 
3349         # you have can use the get/set quota command smb.conf
3350         # options then
3351         samba_cv_SYSQUOTA_FOUND=auto
3352     fi
3353     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3354         # if --with-sys-quotas=yes then build it 
3355         # you have can use the get/set quota command smb.conf
3356         # options then
3357         samba_cv_TRY_SYS_QUOTAS=auto
3358     fi
3359 fi
3360
3361 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3362 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3363 SAVE_CPPFLAGS="$CPPFLAGS"
3364 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3365 AC_TRY_COMPILE([
3366 #include "confdefs.h"
3367 #define NO_PROTO_H 1
3368 #define NO_CONFIG_H 1
3369 #define HAVE_SYS_QUOTAS 1
3370 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3371 #include "${srcdir-.}/lib/sysquotas.c"
3372 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3373 CPPFLAGS="$SAVE_CPPFLAGS"
3374 ])
3375 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3376 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3377     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3378         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3379         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3380         samba_cv_WE_USE_SYS_QUOTAS=yes
3381         AC_MSG_RESULT(yes)
3382     else
3383         AC_MSG_RESULT(no)
3384     fi
3385 fi
3386 fi
3387
3388 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3389 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3390 SAVE_CPPFLAGS="$CPPFLAGS"
3391 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3392 AC_TRY_COMPILE([
3393 #include "confdefs.h"
3394 #define NO_PROTO_H 1
3395 #define NO_CONFIG_H 1
3396 #define HAVE_SYS_QUOTAS 1
3397 #define HAVE_XFS_QUOTAS 1
3398 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3399 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3400 CPPFLAGS="$SAVE_CPPFLAGS"
3401 ])
3402 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3403     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3404         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3405     fi
3406 fi
3407 fi
3408
3409 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3410 SAVE_CPPFLAGS="$CPPFLAGS"
3411 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3412 AC_TRY_COMPILE([
3413 #include "confdefs.h"
3414 #define NO_PROTO_H 1
3415 #define NO_CONFIG_H 1
3416 #include "${srcdir-.}/smbd/quotas.c"
3417 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3418 CPPFLAGS="$SAVE_CPPFLAGS"
3419 ])
3420 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3421 AC_MSG_CHECKING(whether to use the old quota support)
3422     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3423       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3424         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3425         AC_MSG_RESULT(yes)
3426       else
3427         AC_MSG_RESULT(no)
3428       fi
3429     else
3430       AC_MSG_RESULT(no)
3431     fi
3432 fi
3433
3434 ####################
3435 # End of quota check samba_cv_RUN_QUOTA_TESTS
3436 fi
3437
3438 #################################################
3439 # check for experimental utmp accounting
3440
3441 AC_MSG_CHECKING(whether to support utmp accounting)
3442 WITH_UTMP=yes
3443 AC_ARG_WITH(utmp,
3444 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3445 [ case "$withval" in
3446   no)
3447                 WITH_UTMP=no
3448                 ;;
3449   *)
3450                 WITH_UTMP=yes
3451                 ;;
3452   esac ],
3453 )
3454
3455 # utmp requires utmp.h
3456 # Note similar check earlier, when checking utmp details.
3457
3458 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3459         utmp_no_reason=", no utmp.h on $host_os"
3460         WITH_UTMP=no
3461 fi
3462
3463 # Display test results
3464
3465 if test x"$WITH_UTMP" = x"yes"; then
3466         AC_MSG_RESULT(yes)
3467         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3468 else
3469         AC_MSG_RESULT(no$utmp_no_reason)
3470 fi
3471
3472 #################################################
3473 # choose native language(s) of man pages
3474 AC_MSG_CHECKING(chosen man pages' language(s))
3475 AC_ARG_WITH(manpages-langs,
3476 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3477 [ case "$withval" in
3478   yes|no)
3479     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3480     manlangs="en"
3481   ;;
3482   *)
3483     manlangs="$withval"
3484   ;;
3485   esac
3486
3487   AC_MSG_RESULT($manlangs)
3488   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3489   AC_SUBST(manlangs)],
3490
3491   [manlangs="en"
3492   AC_MSG_RESULT($manlangs)
3493   AC_SUBST(manlangs)]
3494 )
3495
3496 #################################################
3497 # should we build libsmbclient?
3498
3499 INSTALLCLIENTCMD_SH=:
3500 INSTALLCLIENTCMD_A=:
3501 INSTALLCLIENT=
3502 LIBSMBCLIENT_SHARED=
3503 LIBSMBCLIENT=
3504 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3505 AC_ARG_WITH(libsmbclient,
3506 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3507 [ case "$withval" in
3508   no) 
3509      AC_MSG_RESULT(no)
3510      ;;
3511   *)
3512      if test $BLDSHARED = true; then
3513         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3514         ## build the static version of libsmbclient as well
3515         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3516         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3517         LIBSMBCLIENT=libsmbclient
3518         AC_MSG_RESULT(yes)
3519      else
3520         enable_static=yes
3521         AC_MSG_RESULT(no shared library support -- will supply static library)
3522      fi
3523      if test $enable_static = yes; then
3524         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3525         LIBSMBCLIENT=libsmbclient
3526      fi
3527      INSTALLCLIENT=installclientlib
3528      ;;
3529   esac ],
3530 [
3531 # if unspecified, default is to built it iff possible.
3532   if test $BLDSHARED = true; then
3533      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3534      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3535      LIBSMBCLIENT=libsmbclient
3536      AC_MSG_RESULT(yes)
3537    else
3538      enable_static=yes
3539      AC_MSG_RESULT(no shared library support -- will supply static library)
3540    fi
3541    if test $enable_static = yes; then
3542      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3543      LIBSMBCLIENT=libsmbclient
3544   fi]
3545   INSTALLCLIENT=installclientlib
3546 )
3547
3548
3549 #################################################
3550 # these tests are taken from the GNU fileutils package
3551 AC_CHECKING(how to get filesystem space usage)
3552 space=no
3553
3554 # Test for statvfs64.
3555 if test $space = no; then
3556   # SVR4
3557   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3558   [AC_TRY_RUN([
3559 #if defined(HAVE_UNISTD_H)
3560 #include <unistd.h>
3561 #endif
3562 #include <sys/types.h>
3563 #include <sys/statvfs.h>
3564   main ()
3565   {
3566     struct statvfs64 fsd;
3567     exit (statvfs64 (".", &fsd));
3568   }],
3569   fu_cv_sys_stat_statvfs64=yes,
3570   fu_cv_sys_stat_statvfs64=no,
3571   fu_cv_sys_stat_statvfs64=cross)])
3572   if test $fu_cv_sys_stat_statvfs64 = yes; then
3573     space=yes
3574     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3575   fi
3576 fi
3577
3578 # Perform only the link test since it seems there are no variants of the
3579 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3580 # because that got a false positive on SCO OSR5.  Adding the declaration
3581 # of a `struct statvfs' causes this test to fail (as it should) on such
3582 # systems.  That system is reported to work fine with STAT_STATFS4 which
3583 # is what it gets when this test fails.
3584 if test $space = no; then
3585   # SVR4
3586   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3587                  [AC_TRY_LINK([#include <sys/types.h>
3588 #include <sys/statvfs.h>],
3589                               [struct statvfs fsd; statvfs (0, &fsd);],
3590                               fu_cv_sys_stat_statvfs=yes,
3591                               fu_cv_sys_stat_statvfs=no)])
3592   if test $fu_cv_sys_stat_statvfs = yes; then
3593     space=yes
3594     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3595   fi
3596 fi
3597
3598 if test $space = no; then
3599   # DEC Alpha running OSF/1
3600   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3601   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3602   [AC_TRY_RUN([
3603 #include <sys/param.h>
3604 #include <sys/types.h>
3605 #include <sys/mount.h>
3606   main ()
3607   {
3608     struct statfs fsd;
3609     fsd.f_fsize = 0;
3610     exit (statfs (".", &fsd, sizeof (struct statfs)));
3611   }],
3612   fu_cv_sys_stat_statfs3_osf1=yes,
3613   fu_cv_sys_stat_statfs3_osf1=no,
3614   fu_cv_sys_stat_statfs3_osf1=no)])
3615   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3616   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3617     space=yes
3618     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3619   fi
3620 fi
3621
3622 if test $space = no; then
3623 # AIX
3624   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3625 member (AIX, 4.3BSD)])
3626   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3627   [AC_TRY_RUN([
3628 #ifdef HAVE_SYS_PARAM_H
3629 #include <sys/param.h>
3630 #endif
3631 #ifdef HAVE_SYS_MOUNT_H
3632 #include <sys/mount.h>
3633 #endif
3634 #ifdef HAVE_SYS_VFS_H
3635 #include <sys/vfs.h>
3636 #endif
3637   main ()
3638   {
3639   struct statfs fsd;
3640   fsd.f_bsize = 0;
3641   exit (statfs (".", &fsd));
3642   }],
3643   fu_cv_sys_stat_statfs2_bsize=yes,
3644   fu_cv_sys_stat_statfs2_bsize=no,
3645   fu_cv_sys_stat_statfs2_bsize=no)])
3646   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3647   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3648     space=yes
3649     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3650   fi
3651 fi
3652
3653 if test $space = no; then
3654 # SVR3
3655   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3656   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3657   [AC_TRY_RUN([#include <sys/types.h>
3658 #include <sys/statfs.h>
3659   main ()
3660   {
3661   struct statfs fsd;
3662   exit (statfs (".", &fsd, sizeof fsd, 0));
3663   }],
3664     fu_cv_sys_stat_statfs4=yes,
3665     fu_cv_sys_stat_statfs4=no,
3666     fu_cv_sys_stat_statfs4=no)])
3667   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3668   if test $fu_cv_sys_stat_statfs4 = yes; then
3669     space=yes
3670     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3671   fi
3672 fi
3673
3674 if test $space = no; then
3675 # 4.4BSD and NetBSD
3676   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3677 member (4.4BSD and NetBSD)])
3678   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3679   [AC_TRY_RUN([#include <sys/types.h>
3680 #ifdef HAVE_SYS_PARAM_H
3681 #include <sys/param.h>
3682 #endif
3683 #ifdef HAVE_SYS_MOUNT_H
3684 #include <sys/mount.h>
3685 #endif
3686   main ()
3687   {
3688   struct statfs fsd;
3689   fsd.f_fsize = 0;
3690   exit (statfs (".", &fsd));
3691   }],
3692   fu_cv_sys_stat_statfs2_fsize=yes,
3693   fu_cv_sys_stat_statfs2_fsize=no,
3694   fu_cv_sys_stat_statfs2_fsize=no)])
3695   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3696   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3697     space=yes
3698         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3699   fi
3700 fi
3701
3702 if test $space = no; then
3703   # Ultrix
3704   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3705   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3706   [AC_TRY_RUN([#include <sys/types.h>
3707 #ifdef HAVE_SYS_PARAM_H
3708 #include <sys/param.h>
3709 #endif
3710 #ifdef HAVE_SYS_MOUNT_H
3711 #include <sys/mount.h>
3712 #endif
3713 #ifdef HAVE_SYS_FS_TYPES_H
3714 #include <sys/fs_types.h>
3715 #endif
3716   main ()
3717   {
3718   struct fs_data fsd;
3719   /* Ultrix's statfs returns 1 for success,
3720      0 for not mounted, -1 for failure.  */
3721   exit (statfs (".", &fsd) != 1);
3722   }],
3723   fu_cv_sys_stat_fs_data=yes,
3724   fu_cv_sys_stat_fs_data=no,
3725   fu_cv_sys_stat_fs_data=no)])
3726   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3727   if test $fu_cv_sys_stat_fs_data = yes; then
3728     space=yes
3729     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3730   fi
3731 fi
3732
3733 #
3734 # As a gating factor for large file support, in order to
3735 # use <4GB files we must have the following minimal support
3736 # available.
3737 # long long, and a 64 bit off_t or off64_t.
3738 # If we don't have all of these then disable large
3739 # file support.
3740 #
3741 AC_MSG_CHECKING([if large file support can be enabled])
3742 AC_TRY_COMPILE([
3743 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3744 #include <sys/types.h>
3745 #else
3746 __COMPILE_ERROR_
3747 #endif
3748 ],
3749 [int i],
3750 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3751 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3752         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3753 fi
3754 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3755
3756 AC_ARG_WITH(spinlocks, 
3757 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3758 if test "x$with_spinlocks" = "xyes"; then
3759     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3760
3761     case "$host_cpu" in
3762         sparc)
3763             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3764             ;;
3765
3766         i386|i486|i586|i686)
3767             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3768             ;;
3769
3770         mips)
3771             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3772             ;;
3773
3774         powerpc)
3775             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3776             ;;
3777     esac
3778 fi
3779
3780 #################################################
3781 # check for ACL support
3782
3783 AC_MSG_CHECKING(whether to support ACLs)
3784 AC_ARG_WITH(acl-support,
3785 [  --with-acl-support      Include ACL support (default=no)],
3786 [ case "$withval" in
3787   yes)
3788
3789         case "$host_os" in
3790         *sysv5*)
3791                 AC_MSG_RESULT(Using UnixWare ACLs)
3792                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3793                 ;;
3794         *solaris*)
3795                 AC_MSG_RESULT(Using solaris ACLs)
3796                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3797                 ;;
3798         *hpux*)
3799                 AC_MSG_RESULT(Using HPUX ACLs)
3800                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3801                 ;;
3802         *irix*)
3803                 AC_MSG_RESULT(Using IRIX ACLs)
3804                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3805                 ;;
3806         *aix*)
3807                 AC_MSG_RESULT(Using AIX ACLs)
3808                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3809                 ;;
3810         *osf*)
3811                 AC_MSG_RESULT(Using Tru64 ACLs)
3812                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3813                 ACL_LIBS="$ACL_LIBS -lpacl"
3814                 ;;
3815         *freebsd5*)
3816                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3817                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3818                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3819                 ;;
3820         *linux*)
3821                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3822                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3823                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3824                 acl_LIBS=$LIBS
3825                 LIBS="$LIBS -lacl"
3826                 AC_TRY_LINK([#include <sys/types.h>
3827 #include <sys/acl.h>],
3828 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3829 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3830                 LIBS=$acl_LIBS])
3831                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3832                                 AC_MSG_RESULT(Using posix ACLs)
3833                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3834                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3835                                 acl_LIBS=$LIBS
3836                                 LIBS="$LIBS -lacl"
3837                                 AC_TRY_LINK([#include <sys/types.h>
3838 #include <sys/acl.h>],
3839 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3840 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3841                                 LIBS=$acl_LIBS])
3842                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3843                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3844                                 fi
3845                         fi
3846             ;;
3847          *)
3848                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3849                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3850                 acl_LIBS=$LIBS
3851                 LIBS="$LIBS -lacl"
3852                 AC_TRY_LINK([#include <sys/types.h>
3853 #include <sys/acl.h>],
3854 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3855 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3856                 LIBS=$acl_LIBS])
3857                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3858                                 AC_MSG_RESULT(Using posix ACLs)
3859                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3860                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3861                                 acl_LIBS=$LIBS
3862                                 LIBS="$LIBS -lacl"
3863                                 AC_TRY_LINK([#include <sys/types.h>
3864 #include <sys/acl.h>],
3865 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3866 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3867                                 LIBS=$acl_LIBS])
3868                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3869                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3870                                 fi
3871                         fi
3872             ;;
3873         esac
3874         ;;
3875   *)
3876     AC_MSG_RESULT(no)
3877     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3878     ;;
3879   esac ],
3880   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3881   AC_MSG_RESULT(no)
3882 )
3883
3884 #################################################
3885 # check for sendfile support
3886
3887 with_sendfile_support=yes
3888 AC_MSG_CHECKING(whether to check to support sendfile)
3889 AC_ARG_WITH(sendfile-support,
3890 [  --with-sendfile-support Check for sendfile support (default=yes)],
3891 [ case "$withval" in
3892   yes)
3893
3894         AC_MSG_RESULT(yes);
3895
3896         case "$host_os" in
3897         *linux*)
3898                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3899                 AC_TRY_LINK([#include <sys/sendfile.h>],
3900 [\
3901 int tofd, fromfd;
3902 off64_t offset;
3903 size_t total;
3904 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3905 ],
3906 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3907
3908                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3909                 AC_TRY_LINK([#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_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3917
3918 # Try and cope with broken Linux sendfile....
3919                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3920                 AC_TRY_LINK([\
3921 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3922 #undef _FILE_OFFSET_BITS
3923 #endif
3924 #include <sys/sendfile.h>],
3925 [\
3926 int tofd, fromfd;
3927 off_t offset;
3928 size_t total;
3929 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3930 ],
3931 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3932
3933         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3934                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3935                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3936                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3937         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3938                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3939                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3940                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3941         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3942                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3943                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3944         else
3945                 AC_MSG_RESULT(no);
3946         fi
3947
3948         ;;
3949         *freebsd*)
3950                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3951                 AC_TRY_LINK([\
3952 #include <sys/types.h>
3953 #include <unistd.h>
3954 #include <sys/socket.h>
3955 #include <sys/uio.h>],
3956 [\
3957         int fromfd, tofd, ret, total=0;
3958         off_t offset, nwritten;
3959         struct sf_hdtr hdr;
3960         struct iovec hdtrl;
3961         hdr.headers = &hdtrl;
3962         hdr.hdr_cnt = 1;
3963         hdr.trailers = NULL;
3964         hdr.trl_cnt = 0;
3965         hdtrl.iov_base = NULL;
3966         hdtrl.iov_len = 0;
3967         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3968 ],
3969 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3970
3971         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3972                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3973                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3974                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3975         else
3976                 AC_MSG_RESULT(no);
3977         fi
3978         ;;
3979
3980         *hpux*)
3981                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3982                 AC_TRY_LINK([\
3983 #include <sys/socket.h>
3984 #include <sys/uio.h>],
3985 [\
3986         int fromfd, tofd;
3987         size_t total=0;
3988         struct iovec hdtrl[2];
3989         ssize_t nwritten;
3990         off64_t offset;
3991
3992         hdtrl[0].iov_base = 0;
3993         hdtrl[0].iov_len = 0;
3994
3995         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3996 ],
3997 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3998         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3999                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4000                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4001                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4002         else
4003                 AC_MSG_RESULT(no);
4004         fi
4005
4006                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4007                 AC_TRY_LINK([\
4008 #include <sys/socket.h>
4009 #include <sys/uio.h>],
4010 [\
4011         int fromfd, tofd;
4012         size_t total=0;
4013         struct iovec hdtrl[2];
4014         ssize_t nwritten;
4015         off_t offset;
4016
4017         hdtrl[0].iov_base = 0;
4018         hdtrl[0].iov_len = 0;
4019
4020         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4021 ],
4022 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4023         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4024                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4025                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4026                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4027         else
4028                 AC_MSG_RESULT(no);
4029         fi
4030         ;;
4031
4032         *solaris*)
4033                 AC_CHECK_LIB(sendfile,sendfilev)
4034                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4035                 AC_TRY_LINK([\
4036 #include <sys/sendfile.h>],
4037 [\
4038         int sfvcnt;
4039         size_t xferred;
4040         struct sendfilevec vec[2];
4041         ssize_t nwritten;
4042         int tofd;
4043
4044         sfvcnt = 2;
4045
4046         vec[0].sfv_fd = SFV_FD_SELF;
4047         vec[0].sfv_flag = 0;
4048         vec[0].sfv_off = 0;
4049         vec[0].sfv_len = 0;
4050
4051         vec[1].sfv_fd = 0;
4052         vec[1].sfv_flag = 0;
4053         vec[1].sfv_off = 0;
4054         vec[1].sfv_len = 0;
4055         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4056 ],
4057 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4058
4059         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4060                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4061                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4062                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4063         else
4064                 AC_MSG_RESULT(no);
4065         fi
4066
4067                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4068                 AC_TRY_LINK([\
4069 #include <sys/sendfile.h>],
4070 [\
4071         int sfvcnt;
4072         size_t xferred;
4073         struct sendfilevec vec[2];
4074         ssize_t nwritten;
4075         int tofd;
4076
4077         sfvcnt = 2;
4078
4079         vec[0].sfv_fd = SFV_FD_SELF;
4080         vec[0].sfv_flag = 0;
4081         vec[0].sfv_off = 0;
4082         vec[0].sfv_len = 0;
4083
4084         vec[1].sfv_fd = 0;
4085         vec[1].sfv_flag = 0;
4086         vec[1].sfv_off = 0;
4087         vec[1].sfv_len = 0;
4088         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4089 ],
4090 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4091
4092         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4093                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4094                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4095                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4096         else
4097                 AC_MSG_RESULT(no);
4098         fi
4099         ;;
4100
4101         *)
4102         ;;
4103         esac
4104         ;;
4105   *)
4106     AC_MSG_RESULT(no)
4107     ;;
4108   esac ],
4109   AC_MSG_RESULT(yes)
4110 )
4111
4112
4113 #################################################
4114 # Check whether winbind is supported on this platform.  If so we need to
4115 # build and install client programs, sbin programs and shared libraries
4116
4117 AC_MSG_CHECKING(whether to build winbind)
4118
4119 # Initially, the value of $host_os decides whether winbind is supported
4120
4121 HAVE_WINBIND=yes
4122
4123 # Define the winbind shared library name and any specific linker flags
4124 # it needs to be built with.
4125
4126 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4127 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4128 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4129
4130 case "$host_os" in
4131         *linux*)
4132                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4133                 ;;
4134         *freebsd5*)
4135                 # FreeBSD winbind client is implemented as a wrapper around
4136                 # the Linux version.
4137                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4138                     nsswitch/winbind_nss_linux.o"
4139                 ;;
4140         *irix*)
4141                 # IRIX has differently named shared libraries
4142                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4143                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4144                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4145                 ;;
4146         *solaris*)
4147                 # Solaris winbind client is implemented as a wrapper around
4148                 # the Linux version.
4149                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4150                     nsswitch/winbind_nss_linux.o"
4151                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4152                 ;;
4153         *hpux11*)
4154                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4155                 ;;
4156         *aix*)
4157                 # AIX has even differently named shared libraries.  No
4158                 # WINS support has been implemented yet.
4159                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4160                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4161                 WINBIND_NSS="nsswitch/WINBIND"
4162                 WINBIND_WINS_NSS=""
4163                 ;;
4164         *)
4165                 HAVE_WINBIND=no
4166                 winbind_no_reason=", unsupported on $host_os"
4167                 ;;
4168 esac
4169
4170 AC_SUBST(WINBIND_NSS)
4171 AC_SUBST(WINBIND_WINS_NSS)
4172 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4173 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4174 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4175
4176 # Check the setting of --with-winbindd
4177
4178 AC_ARG_WITH(winbind,
4179 [  --with-winbind          Build winbind (default, if supported by OS)],
4180
4181   case "$withval" in
4182         yes)
4183                 HAVE_WINBIND=yes
4184                 ;;
4185         no)
4186                 HAVE_WINBIND=no
4187                 winbind_reason=""
4188                 ;;
4189   esac ],
4190 )
4191
4192 # We need unix domain sockets for winbind
4193
4194 if test x"$HAVE_WINBIND" = x"yes"; then
4195         if test x"$samba_cv_unixsocket" = x"no"; then
4196                 winbind_no_reason=", no unix domain socket support on $host_os"
4197                 HAVE_WINBIND=no
4198         fi
4199 fi
4200
4201 # Display test results
4202
4203 if test x"$HAVE_WINBIND" = x"yes"; then
4204         AC_MSG_RESULT(yes)
4205         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4206
4207         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4208         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4209         if test $BLDSHARED = true; then
4210                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4211
4212                 if test x"$with_pam" = x"yes"; then
4213                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4214                 fi
4215         fi
4216 else
4217         AC_MSG_RESULT(no$winbind_no_reason)
4218 fi
4219
4220 # Solaris has some extra fields in struct passwd that need to be
4221 # initialised otherwise nscd crashes.  
4222  
4223 AC_CHECK_MEMBER(struct passwd.pw_comment,
4224                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4225                 [#include <pwd.h>])
4226
4227 AC_CHECK_MEMBER(struct passwd.pw_age,
4228                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4229                 [#include <pwd.h>])
4230
4231 #################################################
4232 # Check to see if we should use the included popt 
4233
4234 AC_ARG_WITH(included-popt,
4235 [  --with-included-popt    use bundled popt library, not from system],
4236
4237   case "$withval" in
4238         yes)
4239                 INCLUDED_POPT=yes
4240                 ;;
4241         no)
4242                 INCLUDED_POPT=no
4243                 ;;
4244   esac ],
4245 )
4246 if test x"$INCLUDED_POPT" != x"yes"; then
4247     AC_CHECK_LIB(popt, poptGetContext,
4248                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4249 fi
4250
4251 AC_MSG_CHECKING(whether to use included popt)
4252 if test x"$INCLUDED_POPT" = x"yes"; then
4253     AC_MSG_RESULT(yes)
4254     BUILD_POPT='$(POPT_OBJS)'
4255         POPTLIBS='$(POPT_OBJS)'
4256     FLAGS1="-I$srcdir/popt"
4257 else
4258     AC_MSG_RESULT(no)
4259         BUILD_POPT=""
4260     POPTLIBS="-lpopt"
4261 fi
4262 AC_SUBST(BUILD_POPT)
4263 AC_SUBST(POPTLIBS)
4264 AC_SUBST(FLAGS1)
4265
4266 #################################################
4267 # Check if the user wants Python
4268
4269 # At the moment, you can use this to set which Python binary to link
4270 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4271 # though they can coexist in different directories.)  In the future
4272 # this might make the Python stuff be built by default.
4273
4274 # Defaulting python breaks the clean target if python isn't installed
4275
4276 PYTHON=
4277
4278 AC_ARG_WITH(python,
4279 [  --with-python=PYTHONNAME  build Python libraries],
4280 [ case "${withval-python}" in
4281   yes)
4282         PYTHON=python
4283         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4284         ;;
4285   no)
4286         PYTHON=
4287         ;;
4288   *)
4289         PYTHON=${withval-python}
4290         ;;
4291   esac ])
4292 AC_SUBST(PYTHON)
4293
4294 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4295 do
4296         eval MODULE_DEFAULT_$i=STATIC
4297 done
4298
4299 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4300 do
4301         dnl Fall back to static if we cannot build shared libraries
4302         eval MODULE_DEFAULT_$i=STATIC
4303
4304         if test $BLDSHARED = true; then
4305                 eval MODULE_DEFAULT_$i=SHARED
4306         fi
4307 done
4308
4309 dnl Always built these modules static
4310 MODULE_pdb_guest=STATIC
4311 MODULE_rpc_spoolss=STATIC
4312 MODULE_rpc_srv=STATIC
4313 MODULE_idmap_tdb=STATIC
4314
4315 AC_ARG_WITH(static-modules,
4316 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4317 [ if test $withval; then
4318         for i in `echo $withval | sed -e's/,/ /g'`
4319         do
4320                 eval MODULE_$i=STATIC
4321         done
4322 fi ])
4323
4324 AC_ARG_WITH(shared-modules,
4325 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4326 [ if test $withval; then
4327         for i in `echo $withval | sed -e's/,/ /g'`
4328         do
4329                         eval MODULE_$i=SHARED
4330         done
4331 fi ])
4332
4333 ###########################################################################
4334 ## contributed pdb_modules
4335
4336 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4337                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4338 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4339                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4340 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4341                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4342
4343 ## end of contributed pdb_modules
4344 ###########################################################################
4345
4346 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4347                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4348 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4349 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4350 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4351 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4352
4353 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4354 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4355 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4356 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4357 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4358 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4359 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4360 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4361 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4362 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4363 SMB_SUBSYSTEM(RPC,smbd/server.o)
4364
4365 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4366 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4367 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4368
4369 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4370 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4371 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4372 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4373 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4374
4375 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4376 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4377 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4378 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4379 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4380 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4381 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4382 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4383
4384 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4385 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4386 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4387 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4388 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4389 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4390 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4391 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4392 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4393 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4394
4395 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4396
4397 #################################################
4398 # do extra things if we are running insure
4399
4400 if test "${ac_cv_prog_CC}" = "insure"; then
4401         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4402 fi
4403
4404 #################################################
4405 # Display summary of libraries detected
4406
4407 AC_MSG_RESULT([Using libraries:])
4408 AC_MSG_RESULT([    LIBS = $LIBS])
4409 if test x"$with_ads_support" != x"no"; then
4410    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4411 fi
4412 if test x"$with_ldap_support" != x"no"; then
4413    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4414 fi
4415 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4416
4417 #################################################
4418 # final configure stuff
4419
4420 AC_MSG_CHECKING([configure summary])
4421 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4422            AC_MSG_RESULT(yes),
4423            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4424            AC_MSG_WARN([cannot run when cross-compiling]))
4425
4426 builddir=`pwd`
4427 AC_SUBST(builddir)
4428
4429 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4430 LIB_REMOVE_USR_LIB(LDFLAGS)
4431 LIB_REMOVE_USR_LIB(LIBS)
4432
4433 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4434 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4435 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4436
4437 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4438
4439 #################################################
4440 # Print very concise instructions on building/use
4441 if test "x$enable_dmalloc" = xyes
4442 then
4443         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4444         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
4445 fi