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