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