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