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