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