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