r329: add the shadow_copy vfs module
[ira/wip.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7
8 AC_DISABLE_STATIC
9 AC_ENABLE_SHARED
10
11 #################################################
12 # Directory handling stuff to support both the
13 # legacy SAMBA directories and FHS compliant
14 # ones...
15 AC_PREFIX_DEFAULT(/usr/local/samba)
16
17 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 vfs_shadow_copy 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 ########################################################################################
3004 ##
3005 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3006 ##
3007 ########################################################################################
3008
3009 #################################################
3010 # check for a LDAP password database configuration backwards compatibility
3011 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3012 AC_ARG_WITH(ldapsam,
3013 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3014 [ case "$withval" in
3015   yes)
3016     AC_MSG_RESULT(yes)
3017     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3018     ;;
3019   *)
3020     AC_MSG_RESULT(no)
3021     ;;
3022   esac ],
3023   AC_MSG_RESULT(no)
3024 )
3025
3026 ########################################################################################
3027 ##
3028 ## END OF TESTS FOR SAM BACKENDS.  
3029 ##
3030 ########################################################################################
3031
3032 #################################################
3033 # check for a NISPLUS_HOME support 
3034 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3035 AC_ARG_WITH(nisplus-home,
3036 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3037 [ case "$withval" in
3038   yes)
3039     AC_MSG_RESULT(yes)
3040     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3041     ;;
3042   *)
3043     AC_MSG_RESULT(no)
3044     ;;
3045   esac ],
3046   AC_MSG_RESULT(no)
3047 )
3048
3049 #################################################
3050 # check for syslog logging
3051 AC_MSG_CHECKING(whether to use syslog logging)
3052 AC_ARG_WITH(syslog,
3053 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3054 [ case "$withval" in
3055   yes)
3056     AC_MSG_RESULT(yes)
3057     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3058     ;;
3059   *)
3060     AC_MSG_RESULT(no)
3061     ;;
3062   esac ],
3063   AC_MSG_RESULT(no)
3064 )
3065
3066 #################################################
3067 # check for a shared memory profiling support
3068 AC_MSG_CHECKING(whether to use profiling)
3069 AC_ARG_WITH(profiling-data,
3070 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3071 [ case "$withval" in
3072   yes)
3073     AC_MSG_RESULT(yes)
3074     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3075     ;;
3076   *)
3077     AC_MSG_RESULT(no)
3078     ;;
3079   esac ],
3080   AC_MSG_RESULT(no)
3081 )
3082
3083
3084 #################################################
3085 # check for experimental disk-quotas support
3086
3087 samba_cv_WITH_QUOTAS=auto
3088 samba_cv_TRY_QUOTAS=no
3089 samba_cv_RUN_QUOTA_TESTS=auto
3090 samba_cv_WITH_SYS_QUOTAS=auto
3091 samba_cv_TRY_SYS_QUOTAS=no
3092 samba_cv_SYSQUOTA_FOUND=no;
3093
3094 AC_MSG_CHECKING(whether to try disk-quotas support)
3095 AC_ARG_WITH(quotas,
3096 [  --with-quotas           Include disk-quota support (default=no)],
3097 [ case "$withval" in
3098   yes)
3099     AC_MSG_RESULT(yes)
3100     samba_cv_WITH_QUOTAS=yes
3101     samba_cv_TRY_QUOTAS=yes
3102     samba_cv_RUN_QUOTA_TESTS=yes
3103     #set sys quotas to auto in this case
3104     samba_cv_TRY_SYS_QUOTAS=auto
3105     ;;
3106   auto)
3107     AC_MSG_RESULT(auto)
3108     samba_cv_WITH_QUOTAS=auto
3109     samba_cv_TRY_QUOTAS=auto
3110     samba_cv_RUN_QUOTA_TESTS=auto
3111     #set sys quotas to auto in this case
3112     samba_cv_TRY_SYS_QUOTAS=auto
3113     ;;
3114   no)
3115     AC_MSG_RESULT(no)
3116     samba_cv_WITH_QUOTAS=no
3117     samba_cv_TRY_QUOTAS=no
3118     samba_cv_RUN_QUOTA_TESTS=no
3119     ;;
3120   *)
3121     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3122     ;;
3123   esac ],
3124   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3125 )
3126
3127 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3128 AC_ARG_WITH(sys-quotas,
3129 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3130 [ case "$withval" in
3131   yes)
3132     AC_MSG_RESULT(yes)
3133     samba_cv_WITH_SYS_QUOTAS=yes
3134     samba_cv_TRY_SYS_QUOTAS=yes
3135     samba_cv_RUN_QUOTA_TESTS=yes
3136     ;;
3137   auto)
3138     AC_MSG_RESULT(auto)
3139     samba_cv_WITH_SYS_QUOTAS=auto
3140     samba_cv_TRY_SYS_QUOTAS=auto
3141     samba_cv_RUN_QUOTA_TESTS=auto
3142     ;;
3143   no)
3144     AC_MSG_RESULT(no)
3145     samba_cv_WITH_SYS_QUOTAS=no
3146     samba_cv_TRY_SYS_QUOTAS=no
3147     ;;
3148   *)
3149     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3150     ;;
3151   esac ],
3152   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3153 )
3154
3155 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3156 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3157   case "$host_os" in
3158         *linux*)
3159             AC_MSG_RESULT(yes)
3160             samba_cv_TRY_SYS_QUOTAS=yes
3161             samba_cv_RUN_QUOTA_TESTS=yes
3162             samba_cv_SYSQUOTA_FOUND=yes
3163             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3164             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3165             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3166             samba_cv_found_xfs_header=yes
3167             ;;
3168         *)
3169             AC_MSG_RESULT(no)
3170             samba_cv_TRY_SYS_QUOTAS=no
3171             ;;
3172   esac
3173 fi
3174
3175 #############################################
3176 # only check for quota stuff if --with-quotas
3177 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3178
3179 # some broken header files need this
3180 AC_CHECK_HEADER(asm/types.h,[
3181             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3182             AC_ADD_INCLUDE(<asm/types.h>)
3183             ])
3184
3185 # For quotas on Veritas VxFS filesystems
3186 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3187
3188 # For sys/quota.h and linux/quota.h
3189 AC_CHECK_HEADERS(sys/quota.h)
3190
3191 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3192 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3193 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3194 AC_TRY_COMPILE([
3195 #include "confdefs.h"
3196 #ifdef HAVE_SYS_TYPES_H
3197 #include <sys/types.h>
3198 #endif
3199 #ifdef HAVE_ASM_TYPES_H
3200 #include <asm/types.h>
3201 #endif
3202 #include <sys/quota.h>
3203 ],[int i = Q_XGETQUOTA;],
3204 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3205 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3206         samba_cv_found_xfs_header=yes
3207 fi
3208 fi
3209
3210 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3211 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3212 AC_TRY_COMPILE([
3213 #include "confdefs.h"
3214 #ifdef HAVE_SYS_QUOTA_H
3215 #include <sys/quota.h>
3216 #endif
3217 ],[
3218 struct dqblk D;
3219 D.dqb_fsoftlimit = 0;],
3220 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3221 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3222         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3223 fi
3224
3225 ##################
3226 # look for a working quota system
3227
3228 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3229 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3230 AC_TRY_RUN_STRICT([
3231 #define HAVE_QUOTACTL_4A 1
3232 #define AUTOCONF_TEST 1
3233 #include "confdefs.h"
3234 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3235            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3236 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3237     samba_cv_SYSQUOTA_FOUND=yes;
3238     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3239     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3240 fi
3241 fi
3242
3243 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3244 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3245 AC_TRY_RUN_STRICT([
3246 #define HAVE_QUOTACTL_4B 1
3247 #define AUTOCONF_TEST 1
3248 #include "confdefs.h"
3249 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3250            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3251 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3252     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3253     samba_cv_SYSQUOTA_FOUND=yes;
3254     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3255     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3256 fi
3257 fi
3258
3259 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3260 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3261 AC_TRY_RUN_STRICT([
3262 #define HAVE_QUOTACTL_3 1
3263 #define AUTOCONF_TEST 1
3264 #include "confdefs.h"
3265 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3266            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3267 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3268     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3269     samba_cv_SYSQUOTA_FOUND=yes;
3270     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3271     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3272 fi
3273 fi
3274
3275 #################################################
3276 # check for mntent.h and struct mntent
3277 AC_CHECK_HEADERS(mntent.h)
3278 #################################################
3279 # check for setmntent,getmntent,endmntent
3280 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3281
3282 #################################################
3283 # check for devnm.h and struct mntent
3284 AC_CHECK_HEADERS(devnm.h)
3285 #################################################
3286 # check for devnm
3287 AC_CHECK_FUNCS(devnm)
3288
3289 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3290     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3291         # if --with-sys-quotas=yes then build it 
3292         # you have can use the get/set quota command smb.conf
3293         # options then
3294         samba_cv_SYSQUOTA_FOUND=auto
3295     fi
3296     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3297         # if --with-sys-quotas=yes then build it 
3298         # you have can use the get/set quota command smb.conf
3299         # options then
3300         samba_cv_TRY_SYS_QUOTAS=auto
3301     fi
3302 fi
3303
3304 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3305 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3306 SAVE_CPPFLAGS="$CPPFLAGS"
3307 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3308 AC_TRY_COMPILE([
3309 #include "confdefs.h"
3310 #define NO_PROTO_H 1
3311 #define NO_CONFIG_H 1
3312 #define HAVE_SYS_QUOTAS 1
3313 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3314 #include "${srcdir-.}/lib/sysquotas.c"
3315 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3316 CPPFLAGS="$SAVE_CPPFLAGS"
3317 ])
3318 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3319 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3320     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3321         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3322         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3323         samba_cv_WE_USE_SYS_QUOTAS=yes
3324         AC_MSG_RESULT(yes)
3325     else
3326         AC_MSG_RESULT(no)
3327     fi
3328 fi
3329 fi
3330
3331 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3332 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3333 SAVE_CPPFLAGS="$CPPFLAGS"
3334 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3335 AC_TRY_COMPILE([
3336 #include "confdefs.h"
3337 #define NO_PROTO_H 1
3338 #define NO_CONFIG_H 1
3339 #define HAVE_SYS_QUOTAS 1
3340 #define HAVE_XFS_QUOTAS 1
3341 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3342 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3343 CPPFLAGS="$SAVE_CPPFLAGS"
3344 ])
3345 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3346     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3347         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3348     fi
3349 fi
3350 fi
3351
3352 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3353 SAVE_CPPFLAGS="$CPPFLAGS"
3354 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3355 AC_TRY_COMPILE([
3356 #include "confdefs.h"
3357 #define NO_PROTO_H 1
3358 #define NO_CONFIG_H 1
3359 #include "${srcdir-.}/smbd/quotas.c"
3360 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3361 CPPFLAGS="$SAVE_CPPFLAGS"
3362 ])
3363 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3364 AC_MSG_CHECKING(whether to use the old quota support)
3365     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3366       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3367         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3368         AC_MSG_RESULT(yes)
3369       else
3370         AC_MSG_RESULT(no)
3371       fi
3372     else
3373       AC_MSG_RESULT(no)
3374     fi
3375 fi
3376
3377 ####################
3378 # End of quota check samba_cv_RUN_QUOTA_TESTS
3379 fi
3380
3381 #################################################
3382 # check for experimental utmp accounting
3383
3384 AC_MSG_CHECKING(whether to support utmp accounting)
3385 WITH_UTMP=yes
3386 AC_ARG_WITH(utmp,
3387 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3388 [ case "$withval" in
3389   no)
3390                 WITH_UTMP=no
3391                 ;;
3392   *)
3393                 WITH_UTMP=yes
3394                 ;;
3395   esac ],
3396 )
3397
3398 # utmp requires utmp.h
3399 # Note similar check earlier, when checking utmp details.
3400
3401 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3402         utmp_no_reason=", no utmp.h on $host_os"
3403         WITH_UTMP=no
3404 fi
3405
3406 # Display test results
3407
3408 if test x"$WITH_UTMP" = x"yes"; then
3409         AC_MSG_RESULT(yes)
3410         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3411 else
3412         AC_MSG_RESULT(no$utmp_no_reason)
3413 fi
3414
3415 #################################################
3416 # choose native language(s) of man pages
3417 AC_MSG_CHECKING(chosen man pages' language(s))
3418 AC_ARG_WITH(manpages-langs,
3419 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3420 [ case "$withval" in
3421   yes|no)
3422     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3423     manlangs="en"
3424   ;;
3425   *)
3426     manlangs="$withval"
3427   ;;
3428   esac
3429
3430   AC_MSG_RESULT($manlangs)
3431   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3432   AC_SUBST(manlangs)],
3433
3434   [manlangs="en"
3435   AC_MSG_RESULT($manlangs)
3436   AC_SUBST(manlangs)]
3437 )
3438
3439 #################################################
3440 # should we build libsmbclient?
3441
3442 INSTALLCLIENTCMD_SH=:
3443 INSTALLCLIENTCMD_A=:
3444 INSTALLCLIENT=
3445 LIBSMBCLIENT_SHARED=
3446 LIBSMBCLIENT=
3447 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3448 AC_ARG_WITH(libsmbclient,
3449 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3450 [ case "$withval" in
3451   no) 
3452      AC_MSG_RESULT(no)
3453      ;;
3454   *)
3455      if test $BLDSHARED = true; then
3456         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3457         ## build the static version of libsmbclient as well
3458         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3459         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3460         LIBSMBCLIENT=libsmbclient
3461         AC_MSG_RESULT(yes)
3462      else
3463         enable_static=yes
3464         AC_MSG_RESULT(no shared library support -- will supply static library)
3465      fi
3466      if test $enable_static = yes; then
3467         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3468         LIBSMBCLIENT=libsmbclient
3469      fi
3470      INSTALLCLIENT=installclientlib
3471      ;;
3472   esac ],
3473 [
3474 # if unspecified, default is to built it iff possible.
3475   if test $BLDSHARED = true; then
3476      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3477      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3478      LIBSMBCLIENT=libsmbclient
3479      AC_MSG_RESULT(yes)
3480    else
3481      enable_static=yes
3482      AC_MSG_RESULT(no shared library support -- will supply static library)
3483    fi
3484    if test $enable_static = yes; then
3485      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3486      LIBSMBCLIENT=libsmbclient
3487   fi]
3488   INSTALLCLIENT=installclientlib
3489 )
3490
3491
3492 #################################################
3493 # these tests are taken from the GNU fileutils package
3494 AC_CHECKING(how to get filesystem space usage)
3495 space=no
3496
3497 # Test for statvfs64.
3498 if test $space = no; then
3499   # SVR4
3500   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3501   [AC_TRY_RUN([
3502 #if defined(HAVE_UNISTD_H)
3503 #include <unistd.h>
3504 #endif
3505 #include <sys/types.h>
3506 #include <sys/statvfs.h>
3507   main ()
3508   {
3509     struct statvfs64 fsd;
3510     exit (statvfs64 (".", &fsd));
3511   }],
3512   fu_cv_sys_stat_statvfs64=yes,
3513   fu_cv_sys_stat_statvfs64=no,
3514   fu_cv_sys_stat_statvfs64=cross)])
3515   if test $fu_cv_sys_stat_statvfs64 = yes; then
3516     space=yes
3517     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3518   fi
3519 fi
3520
3521 # Perform only the link test since it seems there are no variants of the
3522 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3523 # because that got a false positive on SCO OSR5.  Adding the declaration
3524 # of a `struct statvfs' causes this test to fail (as it should) on such
3525 # systems.  That system is reported to work fine with STAT_STATFS4 which
3526 # is what it gets when this test fails.
3527 if test $space = no; then
3528   # SVR4
3529   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3530                  [AC_TRY_LINK([#include <sys/types.h>
3531 #include <sys/statvfs.h>],
3532                               [struct statvfs fsd; statvfs (0, &fsd);],
3533                               fu_cv_sys_stat_statvfs=yes,
3534                               fu_cv_sys_stat_statvfs=no)])
3535   if test $fu_cv_sys_stat_statvfs = yes; then
3536     space=yes
3537     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3538   fi
3539 fi
3540
3541 if test $space = no; then
3542   # DEC Alpha running OSF/1
3543   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3544   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3545   [AC_TRY_RUN([
3546 #include <sys/param.h>
3547 #include <sys/types.h>
3548 #include <sys/mount.h>
3549   main ()
3550   {
3551     struct statfs fsd;
3552     fsd.f_fsize = 0;
3553     exit (statfs (".", &fsd, sizeof (struct statfs)));
3554   }],
3555   fu_cv_sys_stat_statfs3_osf1=yes,
3556   fu_cv_sys_stat_statfs3_osf1=no,
3557   fu_cv_sys_stat_statfs3_osf1=no)])
3558   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3559   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3560     space=yes
3561     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3562   fi
3563 fi
3564
3565 if test $space = no; then
3566 # AIX
3567   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3568 member (AIX, 4.3BSD)])
3569   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3570   [AC_TRY_RUN([
3571 #ifdef HAVE_SYS_PARAM_H
3572 #include <sys/param.h>
3573 #endif
3574 #ifdef HAVE_SYS_MOUNT_H
3575 #include <sys/mount.h>
3576 #endif
3577 #ifdef HAVE_SYS_VFS_H
3578 #include <sys/vfs.h>
3579 #endif
3580   main ()
3581   {
3582   struct statfs fsd;
3583   fsd.f_bsize = 0;
3584   exit (statfs (".", &fsd));
3585   }],
3586   fu_cv_sys_stat_statfs2_bsize=yes,
3587   fu_cv_sys_stat_statfs2_bsize=no,
3588   fu_cv_sys_stat_statfs2_bsize=no)])
3589   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3590   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3591     space=yes
3592     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3593   fi
3594 fi
3595
3596 if test $space = no; then
3597 # SVR3
3598   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3599   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3600   [AC_TRY_RUN([#include <sys/types.h>
3601 #include <sys/statfs.h>
3602   main ()
3603   {
3604   struct statfs fsd;
3605   exit (statfs (".", &fsd, sizeof fsd, 0));
3606   }],
3607     fu_cv_sys_stat_statfs4=yes,
3608     fu_cv_sys_stat_statfs4=no,
3609     fu_cv_sys_stat_statfs4=no)])
3610   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3611   if test $fu_cv_sys_stat_statfs4 = yes; then
3612     space=yes
3613     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3614   fi
3615 fi
3616
3617 if test $space = no; then
3618 # 4.4BSD and NetBSD
3619   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3620 member (4.4BSD and NetBSD)])
3621   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3622   [AC_TRY_RUN([#include <sys/types.h>
3623 #ifdef HAVE_SYS_PARAM_H
3624 #include <sys/param.h>
3625 #endif
3626 #ifdef HAVE_SYS_MOUNT_H
3627 #include <sys/mount.h>
3628 #endif
3629   main ()
3630   {
3631   struct statfs fsd;
3632   fsd.f_fsize = 0;
3633   exit (statfs (".", &fsd));
3634   }],
3635   fu_cv_sys_stat_statfs2_fsize=yes,
3636   fu_cv_sys_stat_statfs2_fsize=no,
3637   fu_cv_sys_stat_statfs2_fsize=no)])
3638   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3639   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3640     space=yes
3641         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3642   fi
3643 fi
3644
3645 if test $space = no; then
3646   # Ultrix
3647   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3648   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3649   [AC_TRY_RUN([#include <sys/types.h>
3650 #ifdef HAVE_SYS_PARAM_H
3651 #include <sys/param.h>
3652 #endif
3653 #ifdef HAVE_SYS_MOUNT_H
3654 #include <sys/mount.h>
3655 #endif
3656 #ifdef HAVE_SYS_FS_TYPES_H
3657 #include <sys/fs_types.h>
3658 #endif
3659   main ()
3660   {
3661   struct fs_data fsd;
3662   /* Ultrix's statfs returns 1 for success,
3663      0 for not mounted, -1 for failure.  */
3664   exit (statfs (".", &fsd) != 1);
3665   }],
3666   fu_cv_sys_stat_fs_data=yes,
3667   fu_cv_sys_stat_fs_data=no,
3668   fu_cv_sys_stat_fs_data=no)])
3669   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3670   if test $fu_cv_sys_stat_fs_data = yes; then
3671     space=yes
3672     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3673   fi
3674 fi
3675
3676 #
3677 # As a gating factor for large file support, in order to
3678 # use <4GB files we must have the following minimal support
3679 # available.
3680 # long long, and a 64 bit off_t or off64_t.
3681 # If we don't have all of these then disable large
3682 # file support.
3683 #
3684 AC_MSG_CHECKING([if large file support can be enabled])
3685 AC_TRY_COMPILE([
3686 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3687 #include <sys/types.h>
3688 #else
3689 __COMPILE_ERROR_
3690 #endif
3691 ],
3692 [int i],
3693 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3694 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3695         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3696 fi
3697 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3698
3699 AC_ARG_WITH(spinlocks, 
3700 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3701 if test "x$with_spinlocks" = "xyes"; then
3702     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3703
3704     case "$host_cpu" in
3705         sparc)
3706             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3707             ;;
3708
3709         i386|i486|i586|i686)
3710             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3711             ;;
3712
3713         mips)
3714             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3715             ;;
3716
3717         powerpc)
3718             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3719             ;;
3720     esac
3721 fi
3722
3723 #################################################
3724 # check for ACL support
3725
3726 AC_MSG_CHECKING(whether to support ACLs)
3727 AC_ARG_WITH(acl-support,
3728 [  --with-acl-support      Include ACL support (default=no)],
3729 [ case "$withval" in
3730   yes)
3731
3732         case "$host_os" in
3733         *sysv5*)
3734                 AC_MSG_RESULT(Using UnixWare ACLs)
3735                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3736                 ;;
3737         *solaris*)
3738                 AC_MSG_RESULT(Using solaris ACLs)
3739                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3740                 ;;
3741         *hpux*)
3742                 AC_MSG_RESULT(Using HPUX ACLs)
3743                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3744                 ;;
3745         *irix*)
3746                 AC_MSG_RESULT(Using IRIX ACLs)
3747                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3748                 ;;
3749         *aix*)
3750                 AC_MSG_RESULT(Using AIX ACLs)
3751                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3752                 ;;
3753         *osf*)
3754                 AC_MSG_RESULT(Using Tru64 ACLs)
3755                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3756                 ACL_LIBS="$ACL_LIBS -lpacl"
3757                 ;;
3758         *freebsd5*)
3759                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3760                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3761                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3762                 ;;
3763         *linux*)
3764                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3765                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3766                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3767                 acl_LIBS=$LIBS
3768                 LIBS="$LIBS -lacl"
3769                 AC_TRY_LINK([#include <sys/types.h>
3770 #include <sys/acl.h>],
3771 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3772 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3773                 LIBS=$acl_LIBS])
3774                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3775                                 AC_MSG_RESULT(Using posix ACLs)
3776                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3777                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3778                                 acl_LIBS=$LIBS
3779                                 LIBS="$LIBS -lacl"
3780                                 AC_TRY_LINK([#include <sys/types.h>
3781 #include <sys/acl.h>],
3782 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3783 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3784                                 LIBS=$acl_LIBS])
3785                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3786                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3787                                 fi
3788                         fi
3789             ;;
3790          *)
3791                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3792                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3793                 acl_LIBS=$LIBS
3794                 LIBS="$LIBS -lacl"
3795                 AC_TRY_LINK([#include <sys/types.h>
3796 #include <sys/acl.h>],
3797 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3798 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3799                 LIBS=$acl_LIBS])
3800                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3801                                 AC_MSG_RESULT(Using posix ACLs)
3802                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3803                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3804                                 acl_LIBS=$LIBS
3805                                 LIBS="$LIBS -lacl"
3806                                 AC_TRY_LINK([#include <sys/types.h>
3807 #include <sys/acl.h>],
3808 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3809 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3810                                 LIBS=$acl_LIBS])
3811                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3812                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3813                                 fi
3814                         fi
3815             ;;
3816         esac
3817         ;;
3818   *)
3819     AC_MSG_RESULT(no)
3820     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3821     ;;
3822   esac ],
3823   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3824   AC_MSG_RESULT(no)
3825 )
3826
3827 #################################################
3828 # check for sendfile support
3829
3830 with_sendfile_support=yes
3831 AC_MSG_CHECKING(whether to check to support sendfile)
3832 AC_ARG_WITH(sendfile-support,
3833 [  --with-sendfile-support Check for sendfile support (default=yes)],
3834 [ case "$withval" in
3835   yes)
3836
3837         AC_MSG_RESULT(yes);
3838
3839         case "$host_os" in
3840         *linux*)
3841                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3842                 AC_TRY_LINK([#include <sys/sendfile.h>],
3843 [\
3844 int tofd, fromfd;
3845 off64_t offset;
3846 size_t total;
3847 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3848 ],
3849 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3850
3851                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3852                 AC_TRY_LINK([#include <sys/sendfile.h>],
3853 [\
3854 int tofd, fromfd;
3855 off_t offset;
3856 size_t total;
3857 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3858 ],
3859 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3860
3861 # Try and cope with broken Linux sendfile....
3862                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3863                 AC_TRY_LINK([\
3864 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3865 #undef _FILE_OFFSET_BITS
3866 #endif
3867 #include <sys/sendfile.h>],
3868 [\
3869 int tofd, fromfd;
3870 off_t offset;
3871 size_t total;
3872 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3873 ],
3874 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3875
3876         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3877                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3878                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3879                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3880         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3881                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3882                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3883                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3884         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3885                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3886                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3887         else
3888                 AC_MSG_RESULT(no);
3889         fi
3890
3891         ;;
3892         *freebsd*)
3893                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3894                 AC_TRY_LINK([\
3895 #include <sys/types.h>
3896 #include <unistd.h>
3897 #include <sys/socket.h>
3898 #include <sys/uio.h>],
3899 [\
3900         int fromfd, tofd, ret, total=0;
3901         off_t offset, nwritten;
3902         struct sf_hdtr hdr;
3903         struct iovec hdtrl;
3904         hdr.headers = &hdtrl;
3905         hdr.hdr_cnt = 1;
3906         hdr.trailers = NULL;
3907         hdr.trl_cnt = 0;
3908         hdtrl.iov_base = NULL;
3909         hdtrl.iov_len = 0;
3910         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3911 ],
3912 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3913
3914         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3915                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3916                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3917                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3918         else
3919                 AC_MSG_RESULT(no);
3920         fi
3921         ;;
3922
3923         *hpux*)
3924                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3925                 AC_TRY_LINK([\
3926 #include <sys/socket.h>
3927 #include <sys/uio.h>],
3928 [\
3929         int fromfd, tofd;
3930         size_t total=0;
3931         struct iovec hdtrl[2];
3932         ssize_t nwritten;
3933         off64_t offset;
3934
3935         hdtrl[0].iov_base = 0;
3936         hdtrl[0].iov_len = 0;
3937
3938         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3939 ],
3940 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3941         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3942                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3943                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3944                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3945         else
3946                 AC_MSG_RESULT(no);
3947         fi
3948
3949                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3950                 AC_TRY_LINK([\
3951 #include <sys/socket.h>
3952 #include <sys/uio.h>],
3953 [\
3954         int fromfd, tofd;
3955         size_t total=0;
3956         struct iovec hdtrl[2];
3957         ssize_t nwritten;
3958         off_t offset;
3959
3960         hdtrl[0].iov_base = 0;
3961         hdtrl[0].iov_len = 0;
3962
3963         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3964 ],
3965 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3966         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3967                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3968                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3969                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3970         else
3971                 AC_MSG_RESULT(no);
3972         fi
3973         ;;
3974
3975         *solaris*)
3976                 AC_CHECK_LIB(sendfile,sendfilev)
3977                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3978                 AC_TRY_LINK([\
3979 #include <sys/sendfile.h>],
3980 [\
3981         int sfvcnt;
3982         size_t xferred;
3983         struct sendfilevec vec[2];
3984         ssize_t nwritten;
3985         int tofd;
3986
3987         sfvcnt = 2;
3988
3989         vec[0].sfv_fd = SFV_FD_SELF;
3990         vec[0].sfv_flag = 0;
3991         vec[0].sfv_off = 0;
3992         vec[0].sfv_len = 0;
3993
3994         vec[1].sfv_fd = 0;
3995         vec[1].sfv_flag = 0;
3996         vec[1].sfv_off = 0;
3997         vec[1].sfv_len = 0;
3998         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3999 ],
4000 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4001
4002         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4003                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4004                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4005                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4006         else
4007                 AC_MSG_RESULT(no);
4008         fi
4009
4010                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4011                 AC_TRY_LINK([\
4012 #include <sys/sendfile.h>],
4013 [\
4014         int sfvcnt;
4015         size_t xferred;
4016         struct sendfilevec vec[2];
4017         ssize_t nwritten;
4018         int tofd;
4019
4020         sfvcnt = 2;
4021
4022         vec[0].sfv_fd = SFV_FD_SELF;
4023         vec[0].sfv_flag = 0;
4024         vec[0].sfv_off = 0;
4025         vec[0].sfv_len = 0;
4026
4027         vec[1].sfv_fd = 0;
4028         vec[1].sfv_flag = 0;
4029         vec[1].sfv_off = 0;
4030         vec[1].sfv_len = 0;
4031         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4032 ],
4033 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4034
4035         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4036                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4037                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4038                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4039         else
4040                 AC_MSG_RESULT(no);
4041         fi
4042         ;;
4043
4044         *)
4045         ;;
4046         esac
4047         ;;
4048   *)
4049     AC_MSG_RESULT(no)
4050     ;;
4051   esac ],
4052   AC_MSG_RESULT(yes)
4053 )
4054
4055
4056 #################################################
4057 # Check whether winbind is supported on this platform.  If so we need to
4058 # build and install client programs, sbin programs and shared libraries
4059
4060 AC_MSG_CHECKING(whether to build winbind)
4061
4062 # Initially, the value of $host_os decides whether winbind is supported
4063
4064 HAVE_WINBIND=yes
4065
4066 # Define the winbind shared library name and any specific linker flags
4067 # it needs to be built with.
4068
4069 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4070 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4071 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4072
4073 case "$host_os" in
4074         *linux*)
4075                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4076                 ;;
4077         *freebsd5*)
4078                 # FreeBSD winbind client is implemented as a wrapper around
4079                 # the Linux version.
4080                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4081                     nsswitch/winbind_nss_linux.o"
4082                 ;;
4083         *irix*)
4084                 # IRIX has differently named shared libraries
4085                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4086                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4087                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4088                 ;;
4089         *solaris*)
4090                 # Solaris winbind client is implemented as a wrapper around
4091                 # the Linux version.
4092                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4093                     nsswitch/winbind_nss_linux.o"
4094                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4095                 ;;
4096         *hpux11*)
4097                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4098                 ;;
4099         *aix*)
4100                 # AIX has even differently named shared libraries.  No
4101                 # WINS support has been implemented yet.
4102                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4103                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4104                 WINBIND_NSS="nsswitch/WINBIND"
4105                 WINBIND_WINS_NSS=""
4106                 ;;
4107         *)
4108                 HAVE_WINBIND=no
4109                 winbind_no_reason=", unsupported on $host_os"
4110                 ;;
4111 esac
4112
4113 AC_SUBST(WINBIND_NSS)
4114 AC_SUBST(WINBIND_WINS_NSS)
4115 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4116 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4117 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4118
4119 # Check the setting of --with-winbindd
4120
4121 AC_ARG_WITH(winbind,
4122 [  --with-winbind          Build winbind (default, if supported by OS)],
4123
4124   case "$withval" in
4125         yes)
4126                 HAVE_WINBIND=yes
4127                 ;;
4128         no)
4129                 HAVE_WINBIND=no
4130                 winbind_reason=""
4131                 ;;
4132   esac ],
4133 )
4134
4135 # We need unix domain sockets for winbind
4136
4137 if test x"$HAVE_WINBIND" = x"yes"; then
4138         if test x"$samba_cv_unixsocket" = x"no"; then
4139                 winbind_no_reason=", no unix domain socket support on $host_os"
4140                 HAVE_WINBIND=no
4141         fi
4142 fi
4143
4144 # Display test results
4145
4146 if test x"$HAVE_WINBIND" = x"yes"; then
4147         AC_MSG_RESULT(yes)
4148         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4149
4150         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4151         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4152         if test $BLDSHARED = true; then
4153                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4154
4155                 if test x"$with_pam" = x"yes"; then
4156                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4157                 fi
4158         fi
4159 else
4160         AC_MSG_RESULT(no$winbind_no_reason)
4161 fi
4162
4163 # Solaris has some extra fields in struct passwd that need to be
4164 # initialised otherwise nscd crashes.  
4165  
4166 AC_CHECK_MEMBER(struct passwd.pw_comment,
4167                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4168                 [#include <pwd.h>])
4169
4170 AC_CHECK_MEMBER(struct passwd.pw_age,
4171                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4172                 [#include <pwd.h>])
4173
4174 #################################################
4175 # Check to see if we should use the included popt 
4176
4177 AC_ARG_WITH(included-popt,
4178 [  --with-included-popt    use bundled popt library, not from system],
4179
4180   case "$withval" in
4181         yes)
4182                 INCLUDED_POPT=yes
4183                 ;;
4184         no)
4185                 INCLUDED_POPT=no
4186                 ;;
4187   esac ],
4188 )
4189 if test x"$INCLUDED_POPT" != x"yes"; then
4190     AC_CHECK_LIB(popt, poptGetContext,
4191                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4192 fi
4193
4194 AC_MSG_CHECKING(whether to use included popt)
4195 if test x"$INCLUDED_POPT" = x"yes"; then
4196     AC_MSG_RESULT(yes)
4197     BUILD_POPT='$(POPT_OBJS)'
4198         POPTLIBS='$(POPT_OBJS)'
4199     FLAGS1="-I$srcdir/popt"
4200 else
4201     AC_MSG_RESULT(no)
4202         BUILD_POPT=""
4203     POPTLIBS="-lpopt"
4204 fi
4205 AC_SUBST(BUILD_POPT)
4206 AC_SUBST(POPTLIBS)
4207 AC_SUBST(FLAGS1)
4208
4209 #################################################
4210 # Check if the user wants Python
4211
4212 # At the moment, you can use this to set which Python binary to link
4213 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4214 # though they can coexist in different directories.)  In the future
4215 # this might make the Python stuff be built by default.
4216
4217 # Defaulting python breaks the clean target if python isn't installed
4218
4219 PYTHON=
4220
4221 AC_ARG_WITH(python,
4222 [  --with-python=PYTHONNAME  build Python libraries],
4223 [ case "${withval-python}" in
4224   yes)
4225         PYTHON=python
4226         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4227         ;;
4228   no)
4229         PYTHON=
4230         ;;
4231   *)
4232         PYTHON=${withval-python}
4233         ;;
4234   esac ])
4235 AC_SUBST(PYTHON)
4236
4237 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4238 do
4239         eval MODULE_DEFAULT_$i=STATIC
4240 done
4241
4242 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4243 do
4244         dnl Fall back to static if we cannot build shared libraries
4245         eval MODULE_DEFAULT_$i=STATIC
4246
4247         if test $BLDSHARED = true; then
4248                 eval MODULE_DEFAULT_$i=SHARED
4249         fi
4250 done
4251
4252 dnl Always built these modules static
4253 MODULE_pdb_guest=STATIC
4254 MODULE_rpc_spoolss=STATIC
4255 MODULE_rpc_srv=STATIC
4256 MODULE_idmap_tdb=STATIC
4257
4258 AC_ARG_WITH(static-modules,
4259 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4260 [ if test $withval; then
4261         for i in `echo $withval | sed -e's/,/ /g'`
4262         do
4263                 eval MODULE_$i=STATIC
4264         done
4265 fi ])
4266
4267 AC_ARG_WITH(shared-modules,
4268 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4269 [ if test $withval; then
4270         for i in `echo $withval | sed -e's/,/ /g'`
4271         do
4272                         eval MODULE_$i=SHARED
4273         done
4274 fi ])
4275
4276 ###########################################################################
4277 ## contributed pdb_modules
4278
4279 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4280                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4281 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4282                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4283 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4284                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4285
4286 ## end of contributed pdb_modules
4287 ###########################################################################
4288
4289 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4290                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4291 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4292 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4293 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4294 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4295
4296 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4297 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4298 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4299 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4300 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4301 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4302 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4303 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4304 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4305 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4306 SMB_SUBSYSTEM(RPC,smbd/server.o)
4307
4308 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4309 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4310 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4311
4312 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4313 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4314 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4315 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4316 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4317
4318 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4319 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4320 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4321 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4322 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4323 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4324 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4325 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4326
4327 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4328 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4329 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4330 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4331 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4332 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4333 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4334 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4335 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4336 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4337 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4338
4339 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4340
4341 #################################################
4342 # do extra things if we are running insure
4343
4344 if test "${ac_cv_prog_CC}" = "insure"; then
4345         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4346 fi
4347
4348 #################################################
4349 # Display summary of libraries detected
4350
4351 AC_MSG_RESULT([Using libraries:])
4352 AC_MSG_RESULT([    LIBS = $LIBS])
4353 if test x"$with_ads_support" != x"no"; then
4354    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4355 fi
4356 if test x"$with_ldap_support" != x"no"; then
4357    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4358 fi
4359 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4360
4361 #################################################
4362 # final configure stuff
4363
4364 AC_MSG_CHECKING([configure summary])
4365 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4366            AC_MSG_RESULT(yes),
4367            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4368            AC_MSG_WARN([cannot run when cross-compiling]))
4369
4370 builddir=`pwd`
4371 AC_SUBST(builddir)
4372
4373 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4374 LIB_REMOVE_USR_LIB(LDFLAGS)
4375 LIB_REMOVE_USR_LIB(LIBS)
4376
4377 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4378 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4379 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4380
4381 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4382
4383 #################################################
4384 # Print very concise instructions on building/use
4385 if test "x$enable_dmalloc" = xyes
4386 then
4387         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4388         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
4389 fi