r19758: remove the LDAP_SCOPE_ONELEVEL define (not needed after svnup)
[Samba.git] / source / configure.in
blobbf71aae73ea3c92acce6cdbf1d842d87a5d898a9
1 dnl Process this file with autoconf to produce a configure script.
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)
8 AC_DISABLE_STATIC
9 AC_ENABLE_SHARED
11 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
12 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
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}"
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)
25 rootsbindir="\${SBINDIR}"
26 lockdir="\${VARDIR}/locks"
27 piddir="\${VARDIR}/locks"
28 test "${mandir}" || mandir="\${prefix}/man"
29 logfilebase="\${VARDIR}"
30 privatedir="\${prefix}/private"
31 test "${libdir}" || libdir="\${prefix}/lib"
32 pammodulesdir="\${LIBDIR}/security"
33 configdir="\${LIBDIR}"
34 swatdir="\${prefix}/swat"
36 AC_ARG_WITH(fhs, 
37 [  --with-fhs              Use FHS-compliant paths (default=no)],
38 [ case "$withval" in
39   yes)
40     lockdir="\${VARDIR}/lib/samba"
41     piddir="\${VARDIR}/run"
42     mandir="\${prefix}/share/man"
43     logfilebase="\${VARDIR}/log/samba"
44     privatedir="\${CONFIGDIR}/private"
45     libdir="\${prefix}/lib/samba"
46     configdir="${sysconfdir}/samba"
47     swatdir="\${DATADIR}/samba/swat"
48     ;;
49   esac])
51 #################################################
52 # set private directory location
53 AC_ARG_WITH(privatedir,
54 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
55 [ case "$withval" in
56   yes|no)
57   #
58   # Just in case anybody calls it without argument
59   #
60     AC_MSG_WARN([--with-privatedir called without argument - will use default])
61   ;;
62   * )
63     privatedir="$withval"
64     ;;
65   esac])
67 #################################################
68 # set root sbin directory location
69 AC_ARG_WITH(rootsbindir,
70 [  --with-rootsbindir=DIR  Which directory to use for root sbin ($ac_default_prefix/sbin)],
71 [ case "$withval" in
72   yes|no)
73   #
74   # Just in case anybody calls it without argument
75   #
76     AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
77   ;;
78   * )
79     rootsbindir="$withval"
80     ;;
81   esac])
83 #################################################
84 # set lock directory location
85 AC_ARG_WITH(lockdir,
86 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
87 [ case "$withval" in
88   yes|no)
89   #
90   # Just in case anybody calls it without argument
91   #
92     AC_MSG_WARN([--with-lockdir called without argument - will use default])
93   ;;
94   * )
95     lockdir="$withval"
96     ;;
97   esac])
99 #################################################
100 # set pid directory location
101 AC_ARG_WITH(piddir,
102 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
103 [ case "$withval" in
104   yes|no)
105   #
106   # Just in case anybody calls it without argument
107   #
108     AC_MSG_WARN([--with-piddir called without argument - will use default])
109   ;;
110   * )
111     piddir="$withval"
112     ;;
113   esac])
115 #################################################
116 # set SWAT directory location
117 AC_ARG_WITH(swatdir,
118 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
119 [ case "$withval" in
120   yes|no)
121   #
122   # Just in case anybody does it
123   #
124     AC_MSG_WARN([--with-swatdir called without argument - will use default])
125   ;;
126   * )
127     swatdir="$withval"
128     ;;
129   esac])
131 #################################################
132 # set configuration directory location
133 AC_ARG_WITH(configdir,
134 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
135 [ case "$withval" in
136   yes|no)
137   #
138   # Just in case anybody does it
139   #
140     AC_MSG_WARN([--with-configdir called without argument - will use default])
141   ;;
142   * )
143     configdir="$withval"
144     ;;
145   esac])
147 #################################################
148 # set log directory location
149 AC_ARG_WITH(logfilebase,
150 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
151 [ case "$withval" in
152   yes|no)
153   #
154   # Just in case anybody does it
155   #
156     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
157   ;;
158   * )
159     logfilebase="$withval"
160     ;;
161   esac])
163 #################################################
164 # set lib directory location
165 AC_ARG_WITH(libdir,
166 [  --with-libdir=DIR       Where to put libdir ($libdir)],
167 [ case "$withval" in
168   yes|no)
169   #
170   # Just in case anybody does it
171   #
172     AC_MSG_WARN([--with-libdir without argument - will use default])
173   ;;
174   * )
175     libdir="$withval"
176     ;;
177   esac])
179 #################################################
180 # set PAM modules directory location
181 AC_ARG_WITH(pammodulesdir,
182 [  --with-pammodulesdir=DIR  Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
183 [ case "$withval" in
184   yes|no)
185   #
186   # Just in case anybody calls it without argument
187   #
188     AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
189   ;;
190   * )
191     pammodulesdir="$withval"
192     ;;
193   esac])
195 #################################################
196 # set man directory location
197 AC_ARG_WITH(mandir,
198 [  --with-mandir=DIR       Where to put man pages ($mandir)],
199 [ case "$withval" in
200   yes|no)
201   #
202   # Just in case anybody does it
203   #
204     AC_MSG_WARN([--with-mandir without argument - will use default])
205   ;;
206   * )
207     mandir="$withval"
208     ;;
209   esac])
211 AC_ARG_WITH(cfenc,
212 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
213                           for optimization (Mac OS X/Darwin only)],
215 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
216 # Should have been in framework $withval/CoreFoundation.framework/Headers.
217 for d in \
218     $withval/CoreFoundation/StringEncodings.subproj \
219     $withval/StringEncodings.subproj \
220     $withval/CoreFoundation.framework/Headers \
221     $withval/Headers \
222     $withval
224     if test -r $d/CFStringEncodingConverter.h; then
225         ln -sfh $d include/CoreFoundation
226     fi
227 done
230 AC_SUBST(configdir)
231 AC_SUBST(lockdir)
232 AC_SUBST(piddir)
233 AC_SUBST(logfilebase)
234 AC_SUBST(privatedir)
235 AC_SUBST(swatdir)
236 AC_SUBST(bindir)
237 AC_SUBST(sbindir)
238 AC_SUBST(rootsbindir)
239 AC_SUBST(pammodulesdir)
241 dnl Unique-to-Samba variables we'll be playing with.
242 AC_SUBST(SHELL)
243 AC_SUBST(LDSHFLAGS)
244 AC_SUBST(SONAMEFLAG)
245 AC_SUBST(SHLD)
246 AC_SUBST(HOST_OS)
247 AC_SUBST(PICFLAGS)
248 AC_SUBST(PICSUFFIX)
249 AC_SUBST(libc_cv_fpie)
250 AC_SUBST(PIE_CFLAGS)
251 AC_SUBST(PIE_LDFLAGS)
252 AC_SUBST(SHLIBEXT)
253 AC_SUBST(INSTALLLIBCMD_SH)
254 AC_SUBST(INSTALLLIBCMD_A)
255 AC_SUBST(UNINSTALLLIBCMD_SH)
256 AC_SUBST(UNINSTALLLIBCMD_A)
257 AC_SUBST(INSTALL_LIBMSRPC)
258 AC_SUBST(UNINSTALL_LIBMSRPC)
259 AC_SUBST(LIBMSRPC_SHARED)
260 AC_SUBST(LIBMSRPC)
261 AC_SUBST(INSTALL_LIBSMBCLIENT)
262 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
263 AC_SUBST(LIBSMBCLIENT_SHARED)
264 AC_SUBST(LIBSMBCLIENT)
265 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
266 AC_SUBST(LIBSMBSHAREMODES_SHARED)
267 AC_SUBST(LIBSMBSHAREMODES)
268 AC_SUBST(PRINT_LIBS)
269 AC_SUBST(AUTH_LIBS)
270 AC_SUBST(ACL_LIBS)
271 AC_SUBST(PASSDB_LIBS)
272 AC_SUBST(IDMAP_LIBS)
273 AC_SUBST(KRB5_LIBS)
274 AC_SUBST(LDAP_LIBS)
275 AC_SUBST(SHLIB_PROGS)
276 AC_SUBST(PAM_MODULES)
277 AC_SUBST(INSTALL_PAM_MODULES)
278 AC_SUBST(UNINSTALL_PAM_MODULES)
279 AC_SUBST(SMBWRAPPER)
280 AC_SUBST(SMBWRAP_OBJS)
281 AC_SUBST(SMBWRAP_INC)
282 AC_SUBST(EXTRA_BIN_PROGS)
283 AC_SUBST(CIFSMOUNT_PROGS)
284 AC_SUBST(INSTALL_CIFSMOUNT)
285 AC_SUBST(UNINSTALL_CIFSMOUNT)
286 AC_SUBST(EXTRA_SBIN_PROGS)
287 AC_SUBST(EXTRA_ALL_TARGETS)
288 AC_SUBST(CONFIG_LIBS)
289 AC_SUBST(NSCD_LIBS)
291 # Set defaults
292 PIE_CFLAGS=""
293 PIE_LDFLAGS=""
294 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
296 if test "x$enable_pie" != xno
297 then
298         AC_CACHE_CHECK(for -fPIE, libc_cv_fpie, [dnl
299                 cat > conftest.c <<EOF
300 int foo;
301 main () { return 0;}
303                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
304                 then
305                         libc_cv_fpie=yes
306                         PIE_CFLAGS="-fPIE"
307                         PIE_LDFLAGS="-pie"
308                 fi
309                 rm -f conftest*])
311 if test "x$PIE_CFLAGS" = x
312 then
313         libc_cv_fpie=no
316 AC_ARG_ENABLE(debug, 
317 [  --enable-debug          Turn on compiler debugging information (default=no)],
318     [if eval "test x$enable_debug = xyes"; then
319         CFLAGS="${CFLAGS} -g"
320     fi])
322 AC_SUBST(SOCKWRAP)
323 AC_ARG_ENABLE(socket-wrapper, 
324 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)],
325     [if eval "test x$enable_socket_wrapper = xyes"; then
326         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
327         SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
328     fi])
330 #################################################
331 # set prefix for 'make test'
332 selftest_prefix="./"
333 AC_SUBST(selftest_prefix)
334 AC_ARG_WITH(selftest-prefix,
335 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
336 [ case "$withval" in
337   yes|no)
338     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
339   ;;
340   * )
341     selftest_prefix="$withval"
342     ;;
343   esac
346 #################################################
347 # set path of samba4's smbtorture
348 smbtorture4_path=""
349 AC_SUBST(smbtorture4_path)
350 AC_ARG_WITH(smbtorture4_path,
351 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
352 [ case "$withval" in
353   yes|no)
354     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
355   ;;
356   * )
357     smbtorture4_path="$withval"
358     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
359         AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
360     fi
361   ;;
362  esac
365 # compile with optimization and without debugging by default, but
366 # allow people to set their own preference.
367 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
368 # if it has no value.  This prevent *very* large debug binaries from occurring
369 # by default.
370 if test "x$CFLAGS" = x; then
371   CFLAGS="-O"
374 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_"
376 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
377     [if eval "test x$enable_developer = xyes"; then
378         developer=yes
379         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
380         # Add -Wdeclaration-after-statement if compiler supports it
381         AC_CACHE_CHECK(
382           [that the C compiler understands -Wdeclaration-after-statement],
383           samba_cv_HAVE_Wdeclaration_after_statement, [
384           AC_TRY_RUN_STRICT([
385             int main(void)
386             {
387                 return 0;
388             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
389             samba_cv_HAVE_Wdeclaration_after_statement=yes,
390             samba_cv_HAVE_Wdeclaration_after_statement=no,
391             samba_cv_HAVE_Wdeclaration_after_statement=cross)
392        ])
393        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
394             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
395        fi
396     fi])
398 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
399     [if eval "test x$enable_krb5developer = xyes"; then
400         developer=yes
401         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
402     fi])
404 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
406 if test "x$enable_dmalloc" = xyes
407 then
408         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
409         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
410                   [Define to check invariants around some common functions])
411         LIBS="$LIBS -ldmalloc"  
414 #################################################
415 # check for a shared memory profiling support
416 AC_MSG_CHECKING(whether to use profiling)
417 AC_ARG_WITH(profiling-data,
418 [  --with-profiling-data   Include gathering source code profile information (default=no)],
419 [ case "$withval" in
420   yes)
421     AC_MSG_RESULT(yes)
422     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
423     samba_cv_WITH_PROFILE=yes
424     ;;
425   *)
426     AC_MSG_RESULT(no)
427     samba_cv_WITH_PROFILE=no
428     ;;
429   esac ],
430   AC_MSG_RESULT(no)
433 dnl Checks for programs.
436 ## for some reason this macro resets the CFLAGS
437 ## so save and restore
439 OLD_CFLAGS=${CFLAGS}
440 AC_PROG_CC
441 CFLAGS=${OLD_CFLAGS}
443 OLD_CFLAGS=${CFLAGS}
444 AC_PROG_CPP
445 CFLAGS=${OLD_CFLAGS}
447 AC_PROG_INSTALL
448 AC_PROG_AWK
449 AC_PATH_PROG(PERL, perl)
451 AC_CHECK_TOOL(AR, ar)
453 dnl Check if we use GNU ld
454 LD=ld
455 AC_PROG_LD_GNU
457 dnl Certain versions of GNU ld the default is not to have the 
458 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
459 dnl warnings when building modules.
460 if test "$ac_cv_prog_gnu_ld" = "yes"; then
461         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
462         AC_MSG_CHECKING(GNU ld release date)
463         changequote(,)dnl
464         ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
465         changequote([,])dnl
466         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
467         if test -n "$ac_cv_gnu_ld_date"; then
468         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
469                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
470         fi
471         else
472            AC_MSG_CHECKING(GNU ld release version)
473            changequote(,)dnl
474            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
475            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
476            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
477            changequote([,])dnl
478            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
479            AC_MSG_CHECKING(GNU ld release version major)
480            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
481            AC_MSG_CHECKING(GNU ld release version minor)
482            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
483            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
484              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
485            fi
486         fi
489 dnl needed before AC_TRY_COMPILE
490 AC_ISC_POSIX
492 dnl look for executable suffix
493 AC_EXEEXT
495 dnl Check if C compiler understands -c and -o at the same time
496 AC_PROG_CC_C_O
497 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
498       BROKEN_CC=
499 else
500       BROKEN_CC=#
502 AC_SUBST(BROKEN_CC)
504 dnl Check if the C compiler understands -Werror
505 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
506  AC_TRY_RUN_STRICT([
507   int main(void)
508   {
509         return 0;
510   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
511   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
512 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
513    Werror_FLAGS="-Werror"
514 else 
515 dnl Check if the C compiler understands -w2
516 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
517  AC_TRY_RUN_STRICT([
518   int main(void)
519   {
520         return 0;
521   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
522   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
523 if test x"$samba_cv_HAVE_w2" = x"yes"; then
524    Werror_FLAGS="-w2"
528 dnl Check if the C compiler understands volatile (it should, being ANSI).
529 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
530     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
531         samba_cv_volatile=yes,samba_cv_volatile=no)])
532 if test x"$samba_cv_volatile" = x"yes"; then
533    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
536 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
537 AC_MSG_CHECKING(uname -s)
538 AC_MSG_RESULT(${UNAME_S})
540 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
541 AC_MSG_CHECKING(uname -r)
542 AC_MSG_RESULT(${UNAME_R})
544 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
545 AC_MSG_CHECKING(uname -m)
546 AC_MSG_RESULT(${UNAME_M})
548 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
549 AC_MSG_CHECKING(uname -p)
550 AC_MSG_RESULT(${UNAME_P})
552 AC_CANONICAL_SYSTEM
554 dnl Add #include for broken IRIX header files
555   case "$host_os" in
556         *irix6*)
557                 AC_ADD_INCLUDE(<standards.h>)
558                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
559                         dnl Fix sensible defaults for MIPSPro compilers. The
560                         dnl error numbers are valid for the 7.3 compilers,
561                         dnl hopefully also valid for the 7.4 series.
562                         dnl
563                         dnl Bugzilla 3801. Force an error on warning 1035
564                         dnl so we don't incorrectly detect stdint.h. This
565                         dnl warning is emitted for #error directives.
566                         CFLAGS="$CFLAGS -diag_error 1035"
567                         dnl 1209: Controlling expression is constant
568                         dnl 1174: Function foo declared but never referenced
569                         dnl 3201: Parameter foo was never referenced
570                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
571                 fi
572         ;;
573 esac
575 AC_VALIDATE_CACHE_SYSTEM_TYPE
577 DYNEXP=
579 dnl Add modules that have to be built by default here
580 dnl These have to be built static:
581 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srv rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
583 dnl These are preferably build shared, and static if dlopen() is not available
584 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 auth_script"
586 if test "x$developer" = xyes; then
587    default_static_modules="$default_static_modules rpc_echo"
588    default_shared_modules="$default_shared_modules charset_weird"
592 # Config CPPFLAG settings for strange OS's that must be set
593 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
594 # case statement; its first reference must be unconditional.
596 case "$host_os" in
597 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
598     *hpux*)
599     
600       AC_PROG_CC_FLAG(Ae)
601       # mmap on HPUX is completely broken...
602       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
603       if test $ac_cv_prog_cc_Ae = yes; then
604         CPPFLAGS="$CPPFLAGS -Ae"
605       fi
607 # Defines needed for HPUX support.
608 # HPUX has bigcrypt but (sometimes?) doesn't use it for
609 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
611       case `uname -r` in
612                         *9*|*10*)
613                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
614                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
615                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
616                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
617                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
618                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
619                                 ;;
620                         *11*)
621                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
622                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
623                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
624                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
625                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
626                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
627                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
628                                 ;;
629       esac
630       ;;
633 # CRAY Unicos has broken const handling
634        *unicos*)
635           AC_MSG_RESULT([disabling const])
636           CPPFLAGS="$CPPFLAGS -Dconst="
637           ;;
638         
640 # AIX4.x doesn't even admit to having large
641 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
643     *aix4*)
644           AC_MSG_RESULT([enabling large file support])
645       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
646           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
647       ;;    
649 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
650 # to the existance of large files..
651 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
652 # recommendations on large file support, however it makes the
653 # compile work using gcc 2.7 and 2.8, whereas using the Sun
654 # recommendation makes the compile fail on gcc2.7. JRA.
656 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
658         *solaris*)
659                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
660                 case `uname -r` in
661                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
662                                 AC_MSG_RESULT([no large file support])
663                                 ;;
664                         5.*)
665                         AC_MSG_RESULT([enabling large file support])
666                         if test "$ac_cv_prog_gcc" = yes; then
667                                 ${CC-cc} -v >conftest.c 2>&1
668                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
669                                 rm -fr conftest.c
670                                 case "$ac_cv_gcc_compiler_version_number" in
671                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
672                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
673                                                 LDFLAGS="$LDFLAGS -lthread"
674                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
675                                                 ;;
676                                         *)
677                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
678                                                 LDFLAGS="$LDFLAGS -lthread"
679                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
680                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
681                                                 ;;
682                                 esac
683                         else
684                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
685                                 LDFLAGS="$LDFLAGS -lthread"
686                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
687                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
688                         fi
689                         ;;
690                 esac
691                 ;;
693 # IRIX uses SYSV printing.  Make sure to set that here
695         *irix*)
696                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
697                 ;;
698         *freebsd*|*dragonfly*)
699                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
700                 ;;
702 # VOS may need to have POSIX support and System V compatibility enabled.
704     *vos*)
705     case "$CPPFLAGS" in
706           *-D_POSIX_C_SOURCE*)
707                 ;;
708           *)
709                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
710                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
711                 ;;
712     esac
713     case "$CPPFLAGS" in
714           *-D_SYSV*|*-D_SVID_SOURCE*)
715                 ;;
716           *)
717                 CPPFLAGS="$CPPFLAGS -D_SYSV"
718                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
719     esac
720     ;;
722 # Tests needed for SINIX large file support.
724     *sysv4*)
725       if test $host = mips-sni-sysv4 ; then
726         AC_MSG_CHECKING([for LFS support])
727         old_CPPFLAGS="$CPPFLAGS"
728         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
729         AC_TRY_RUN([
730 #include <unistd.h>
731 main () {
732 #if _LFS64_LARGEFILE == 1
733 exit(0);
734 #else
735 exit(1);
736 #endif
737 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
738         CPPFLAGS="$old_CPPFLAGS"
739         if test x$SINIX_LFS_SUPPORT = xyes ; then
740           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
741                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
742           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
743           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
744           LIBS="`getconf LFS64_LIBS` $LIBS"
745         fi
746       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
747       fi
748     ;;
750 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
752     *linux*)
753         AC_MSG_CHECKING([for LFS support])
754         old_CPPFLAGS="$CPPFLAGS"
755         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
756        AC_TRY_RUN([
757 #include <unistd.h>
758 #include <sys/utsname.h>
759 #include <string.h>
760 #include <stdlib.h>
761 main() {
762 #if _LFS64_LARGEFILE == 1
763        struct utsname uts;
764        char *release;
765        int major, minor;
767        /* Ensure this is glibc 2.2 or higher */
768 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
769        int libc_major = __GLIBC__;
770        int libc_minor = __GLIBC_MINOR__;
772        if (libc_major < 2)
773               exit(1);
774        if (libc_minor < 2)
775               exit(1);
776 #endif
778        /* Ensure this is kernel 2.4 or higher */
780        uname(&uts);
781        release = strdup(uts.release);
782        major = atoi(strsep(&release, "."));
783        minor = atoi(strsep(&release, "."));
785        if (major > 2 || (major == 2 && minor > 3))
786                exit(0);
787        exit(1);
788 #else
789        exit(1);
790 #endif
792 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
793         CPPFLAGS="$old_CPPFLAGS"
794         if test x$LINUX_LFS_SUPPORT = xyes ; then
795                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
796                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
797                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
798                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
799         fi
800         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
801         ;;
804 # MacOS X is the *only* system that uses compose character in utf8. This
805 # is so horribly broken....
807     *darwin*)
808         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
809 # Add Fink directories for various packages, like dlcompat.
810 # Note: iconv does that explicitly below, but other packages
811 # don't.
812         CPPFLAGS="$CPPFLAGS -I/sw/include"
813         LDFLAGS="$LDFLAGS -L/sw/lib"
815 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
816 # use that instead of plain dlsym.
818         AC_CHECK_LIB(dl,dlopen)
819         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
821 # Add a system specific charset module.
823         default_shared_modules="$default_shared_modules charset_macosxfs"
824         ;;
825     *hurd*)
826         AC_MSG_CHECKING([for LFS support])
827         old_CPPFLAGS="$CPPFLAGS"
828         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
829         AC_TRY_RUN([
830 #include <unistd.h>
831 main () {
832 #if _LFS64_LARGEFILE == 1
833 exit(0);
834 #else
835 exit(1);
836 #endif
837 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
838         CPPFLAGS="$old_CPPFLAGS"
839         if test x$GLIBC_LFS_SUPPORT = xyes ; then
840           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
841                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
842           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
843         fi
844       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
845     ;;
847 esac
849 AC_INLINE
850 AC_HEADER_STDC
851 AC_HEADER_DIRENT
852 AC_HEADER_TIME
853 AC_HEADER_SYS_WAIT
854 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
855 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
856 AC_CHECK_HEADERS(limits.h float.h)
857 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
858 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
859 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
860 AC_CHECK_HEADERS(sys/un.h)
861 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
862 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
863 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
864 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
865 AC_CHECK_HEADERS(langinfo.h locale.h)
867 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
868 #if HAVE_RPC_RPC_H
869 #include <rpc/rpc.h>
870 #endif
873 ## These fail to compile on IRIX so just check for their presence
874 AC_CHECK_HEADERS(sys/mode.h,,,)
876 # Look for Darwin headers
877 old_CPPFLAGS="$CPPFLAGS"
878 CPPFLAGS="-Iinclude $CPPFLAGS"
879 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
880 CPPFLAGS="$old_CPPFLAGS"
882 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
883 # subdirectory of headers.
884 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
886 # check for linux on amd64 since valgrind is not quite there yet
887 case "$host_os" in
888         *linux*)
889                 case "$UNAME_P" in
890                         *x86_64*)
891                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
892                                 ;;
893                 esac
894                 ;;
895 esac
899 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
900 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
902 case "$host_os" in
903     *hpux*)
904                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
905                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
906                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
907                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
908                 fi
909         ;;
910 esac
911 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
912 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
913 AC_CHECK_HEADERS(stropts.h poll.h)
914 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
916 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
917 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
919 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
921 AC_CHECK_HEADERS(netinet/ip.h,,,[[
922 #include <sys/types.h>
923 #if HAVE_SYS_SOCKET_H
924 #include <sys/socket.h>
925 #endif
926 #include <netinet/in.h>
927 #if HAVE_NETINET_IN_SYSTM_H
928 #include <netinet/in_systm.h>
929 #endif
932 AC_CHECK_HEADERS(net/if.h,,,[[
933 #include <sys/types.h>
934 #if HAVE_SYS_SOCKET_H
935 #include <sys/socket.h>
936 #endif
939 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
940 #if HAVE_SECURITY_PAM_APPL_H
941 #include <security/pam_appl.h>
942 #endif
945 # For experimental utmp support (lastlog on some BSD-like systems)
946 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
948 AC_CHECK_SIZEOF(int,cross)
949 AC_CHECK_SIZEOF(long,cross)
950 AC_CHECK_SIZEOF(long long,cross)
951 AC_CHECK_SIZEOF(short,cross)
953 AC_C_CONST
954 AC_C_INLINE
955 AC_C_BIGENDIAN
956 AC_C_CHAR_UNSIGNED
958 AC_TYPE_SIGNAL
959 AC_TYPE_UID_T
960 AC_TYPE_MODE_T
961 AC_TYPE_OFF_T
962 AC_TYPE_SIZE_T
963 AC_TYPE_PID_T
964 AC_STRUCT_ST_RDEV
965 AC_DIRENT_D_OFF
966 AC_CHECK_TYPE(ino_t,unsigned)
967 AC_CHECK_TYPE(loff_t,off_t)
968 AC_CHECK_TYPE(offset_t,loff_t)
969 AC_CHECK_TYPE(ssize_t, int)
970 AC_CHECK_TYPE(wchar_t, unsigned short)
972 ############################################
973 # for cups support we need libcups, and a handful of header files
975 AC_ARG_ENABLE(cups,
976 [  --enable-cups           Turn on CUPS support (default=auto)])
978 if test x$enable_cups != xno; then
979         AC_PATH_PROG(CUPS_CONFIG, cups-config)
981         if test "x$CUPS_CONFIG" != x; then
982                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
983                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
984                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
985                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
986         elif test x"$enable_cups" = x"yes"; then
987                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
988         fi
991 AC_ARG_ENABLE(iprint,
992 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
994 if test x$enable_iprint != xno; then
995         if test "x$CUPS_CONFIG" != x; then
996                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
997         elif test x"$enable_iprint" = x"yes"; then
998                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
999         fi
1002 ############################################
1003 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
1004 AC_SEARCH_LIBS(dlopen, [dl])
1005 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
1007 ############################################
1008 # check if the compiler can do immediate structures
1009 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
1010     AC_TRY_COMPILE([
1011 #include <stdio.h>],
1013    typedef struct {unsigned x;} FOOBAR;
1014    #define X_FOOBAR(x) ((FOOBAR) { x })
1015    #define FOO_ONE X_FOOBAR(1)
1016    FOOBAR f = FOO_ONE;   
1017    static struct {
1018         FOOBAR y; 
1019         } f2[] = {
1020                 {FOO_ONE}
1021         };   
1023         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
1024 if test x"$samba_cv_immediate_structures" = x"yes"; then
1025    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
1028 ############################################
1029 # check if the compiler can do immediate structures
1030 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1031     AC_TRY_LINK([
1032 #include <stdio.h>],
1034                 if (0) {
1035                    this_function_does_not_exist();
1036                 } else {
1037                   return 1;
1038                 }
1041         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1042 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1043    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1046 ############################################
1047 # check for unix domain sockets
1048 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1049     AC_TRY_COMPILE([
1050 #include <sys/types.h>
1051 #include <stdlib.h>
1052 #include <stddef.h>
1053 #include <sys/socket.h>
1054 #include <sys/un.h>],
1056   struct sockaddr_un sunaddr; 
1057   sunaddr.sun_family = AF_UNIX;
1059         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1060 if test x"$samba_cv_unixsocket" = x"yes"; then
1061    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1065 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1066     AC_TRY_COMPILE([
1067 #include <sys/types.h>
1068 #if STDC_HEADERS
1069 #include <stdlib.h>
1070 #include <stddef.h>
1071 #endif
1072 #include <sys/socket.h>],[socklen_t i = 0],
1073         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1074 if test x"$samba_cv_socklen_t" = x"yes"; then
1075    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1078 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1079     AC_TRY_COMPILE([
1080 #include <sys/types.h>
1081 #if STDC_HEADERS
1082 #include <stdlib.h>
1083 #include <stddef.h>
1084 #endif
1085 #include <signal.h>],[sig_atomic_t i = 0],
1086         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1087 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1088    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1091 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1092     AC_TRY_COMPILE([
1093 #include <sys/types.h>
1094 #if STDC_HEADERS
1095 #include <stdlib.h>
1096 #include <stddef.h>
1097 #endif
1098 #if TIME_WITH_SYS_TIME
1099 # include <sys/time.h>
1100 # include <time.h>
1101 #else
1102 # if HAVE_SYS_TIME_H
1103 #  include <sys/time.h>
1104 # else
1105 #  include <time.h>
1106 # endif
1107 #endif
1108 #if HAVE_AIO_H
1109 #include <aio.h>
1110 #endif
1111 ],[struct timespec ts;],
1112         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1113 if test x"$samba_cv_struct_timespec" = x"yes"; then
1114    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1117 # stupid headers have the functions but no declaration. grrrr.
1118 AC_HAVE_DECL(errno, [#include <errno.h>])
1119 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1120 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1121 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1122 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1123 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1124 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1126 # and glibc has setresuid under linux but the function does
1127 # nothing until kernel 2.1.44! very dumb.
1128 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1129     AC_TRY_RUN([#include <errno.h>
1130 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1131         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1132 if test x"$samba_cv_have_setresuid" = x"yes"; then
1133     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1136 # Do the same check for setresguid...
1138 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1139     AC_TRY_RUN([#include <unistd.h>
1140 #include <errno.h>
1141 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1142         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1143 if test x"$samba_cv_have_setresgid" = x"yes"; then
1144     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1147 AC_FUNC_MEMCMP
1149 ###############################################
1150 # Readline included by default unless explicitly asked not to
1151 test "${with_readline+set}" != "set" && with_readline=yes
1153 # test for where we get readline() from
1154 AC_MSG_CHECKING(whether to use readline)
1155 AC_ARG_WITH(readline,
1156 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1157 [  case "$with_readline" in
1158   yes)
1159     AC_MSG_RESULT(yes)
1161     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1162     AC_CHECK_HEADERS(readline/history.h)
1164     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1165       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1166        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1167       done
1168       AC_CHECK_LIB(readline, rl_callback_handler_install,
1169        [TERMLIBS="-lreadline $TERMLIBS"
1170        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1171        break], [TERMLIBS=], $TERMLIBS)])
1172     ;;
1173   no)
1174     AC_MSG_RESULT(no)
1175     ;;
1176   *)
1177     AC_MSG_RESULT(yes)
1179     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1180     # alternate readline path
1181     _ldflags=${LDFLAGS}
1182     _cppflags=${CPPFLAGS}
1184     # Add additional search path
1185     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1186     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1188     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1189     AC_CHECK_HEADERS(readline/history.h)
1191     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1192       for termlib in ncurses curses termcap terminfo termlib; do
1193        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1194       done
1195       AC_CHECK_LIB(readline, rl_callback_handler_install,
1196        [TERMLDFLAGS="-L$with_readline/lib"
1197        TERMCPPFLAGS="-I$with_readline/include"
1198        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1199        TERMLIBS="-lreadline $TERMLIBS"
1200        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1201        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1203     LDFLAGS=$_ldflags
1204     ;;
1205   esac],
1206   AC_MSG_RESULT(no)
1208 AC_SUBST(TERMLIBS)
1209 AC_SUBST(TERMLDFLAGS)
1211 # The readline API changed slightly from readline3 to readline4, so
1212 # code will generate warnings on one of them unless we have a few
1213 # special cases.
1214 AC_CHECK_LIB(readline, rl_completion_matches,
1215              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1216                         [Do we have rl_completion_matches?])],
1217              [],
1218              [$TERMLIBS])
1220 # The following test taken from the cvs sources
1221 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1222 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1223 # libsocket.so which has a bad implementation of gethostbyname (it
1224 # only looks in /etc/hosts), so we only look for -lsocket if we need
1225 # it.
1226 AC_CHECK_FUNCS(connect)
1227 if test x"$ac_cv_func_connect" = x"no"; then
1228     case "$LIBS" in
1229     *-lnsl*) ;;
1230     *) AC_CHECK_LIB(nsl_s, connect) ;;
1231     esac
1232     case "$LIBS" in
1233     *-lnsl*) ;;
1234     *) AC_CHECK_LIB(nsl, connect) ;;
1235     esac
1236     case "$LIBS" in
1237     *-lsocket*) ;;
1238     *) AC_CHECK_LIB(socket, connect) ;;
1239     esac
1240     case "$LIBS" in
1241     *-linet*) ;;
1242     *) AC_CHECK_LIB(inet, connect) ;;
1243     esac
1244     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1245     dnl has been cached.
1246     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1247        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1248         # ac_cv_func_connect=yes
1249         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1250         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1251     fi
1254 ###############################################
1255 # test for where we get yp_get_default_domain() from
1256 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1257 AC_CHECK_FUNCS(yp_get_default_domain)
1259 # Check if we have execl, if not we need to compile smbrun.
1260 AC_CHECK_FUNCS(execl)
1261 if test x"$ac_cv_func_execl" = x"no"; then
1262     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1265 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1266 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1267 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1268 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1269 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1270 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1271 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1272 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1273 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1274 AC_CHECK_FUNCS(getdents getdents64)
1275 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1276 AC_CHECK_FUNCS(syslog vsyslog timegm)
1277 AC_CHECK_FUNCS(setlocale nl_langinfo)
1278 AC_CHECK_FUNCS(nanosleep)
1279 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1280 AC_CHECK_HEADERS(sys/mman.h)
1281 # setbuffer, shmget, shm_open are needed for smbtorture
1282 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1284 # Find a method of generating a stack trace
1285 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1286 AC_CHECK_FUNCS(backtrace_symbols)
1287 AC_CHECK_LIB(exc, trace_back_stack)
1289 echo -n "checking for GPFS GPL libs... "
1290 save_LIBS="$LIBS"
1291 LIBS="$LIBS -lgpfs_gpl"
1292 AC_TRY_LINK([#include <gpfs_gpl.h>],
1293           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1294           samba_cv_HAVE_GPFS=yes,
1295           samba_cv_HAVE_GPFS=no)
1296 echo $samba_cv_HAVE_GPFS
1297 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1298     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1299     default_shared_modules="$default_shared_modules vfs_gpfs"
1301 LIBS="$save_LIBS"
1303 # Note that all the libunwind symbols in the API are defined to internal
1304 # platform-specific version, so we must include libunwind.h before checking
1305 # any of them.
1306 AC_MSG_CHECKING([for libunwind])
1307 save_LIBS=$LIBS
1308 if test x"$UNAME_P" = xunknown ; then
1309     # This probably won't link without the platform-specific libunwind.
1310     LIBS="$LIBS -lunwind"
1311 else
1312     # Add the platform-specific libunwind module. uname -p seems the most
1313     # plausible option and works for ia64, where libunwind is most useful.
1314     LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1317 AC_TRY_LINK(
1318     [
1319 #ifdef HAVE_LIBUNWIND_H
1320 #include <libunwind.h>
1321 #endif
1322     ],
1323     [
1324         unw_context_t ctx; unw_cursor_t cur;
1325         char buf[256]; unw_word_t off; 
1326         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1327         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1328     ],
1329     [
1330         AC_MSG_RESULT(yes)
1331         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1333         # If we have libunwind, test whether we also have libunwind-ptrace
1334         # which would let us unwind arbitrary processes.
1335         save_LIBS=$LIBS
1336         AC_CHECK_HEADERS(libunwind-ptrace.h)
1337         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1338             [
1339                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1340                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1341                     [Whether libunwind-ptrace.a is available.])
1342             ],
1343             [ LIBUNWIND_PTRACE="" ])
1345         LIBS=$save_LIBS
1346     ],
1347     [
1348         AC_MSG_RESULT(no)
1349         LIBS=$save_LIBS
1350     ])
1352 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1353 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1354     AC_CHECK_HEADERS(sys/ptrace.h)
1355     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1356     AC_TRY_LINK(
1357             [
1358 #if HAVE_SYS_TYPES_H
1359 #include <sys/types.h>
1360 #endif
1361 #if HAVE_SYS_PTRACE_H
1362 #include <sys/ptrace.h>
1363 #endif
1364             ],
1365             [
1366                 int main(int argc, const char ** argv)
1367                 {
1368                         pid_t me = (pid_t)-1;
1369                         ptrace(PTRACE_ATTACH, me, 0, 0);
1370                         ptrace(PTRACE_DETACH, me, 0, 0);
1371                         return 0;
1372                 }
1373             ],
1374             [
1375                 AC_MSG_RESULT(yes)
1376                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1377                     [Whether the Linux ptrace(2) interface is available.])
1378             ],
1379             [
1380                 AC_MSG_RESULT(no)
1381                 LIBUNWIND_PTRACE=""
1382             ])
1385 AC_SUBST(LIBUNWIND_PTRACE)
1387 # syscall() is needed for smbwrapper.
1388 AC_CHECK_FUNCS(syscall)
1390 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1391 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1392 AC_CHECK_FUNCS(__getcwd _getcwd)
1393 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1394 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1395 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1396 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1397 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1398 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1399 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1400 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1401 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1402 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1403 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1404 AC_CHECK_FUNCS(prctl)
1406 AC_TRY_COMPILE([
1407 #ifdef HAVE_SYS_PRCTL_H
1408 #include <sys/prctl.h>
1409 #endif
1411 [int i; i = prtcl(0); ],
1412 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1417 case "$host_os" in
1418     *linux*)
1419        # glibc <= 2.3.2 has a broken getgrouplist
1420        AC_TRY_RUN([
1421 #include <unistd.h>
1422 #include <sys/utsname.h>
1423 main() {
1424        /* glibc up to 2.3 has a broken getgrouplist */
1425 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1426        int libc_major = __GLIBC__;
1427        int libc_minor = __GLIBC_MINOR__;
1429        if (libc_major < 2)
1430               exit(1);
1431        if ((libc_major == 2) && (libc_minor <= 3))
1432               exit(1);
1433 #endif
1434        exit(0);
1436 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1437        if test x"$linux_getgrouplist_ok" = x"yes"; then
1438           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1439        fi
1440        ;;
1441     *)
1442        AC_CHECK_FUNCS(getgrouplist)
1443        ;;
1444 esac
1447 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1450 if test x$ac_cv_func_stat64 = xno ; then
1451   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1452   AC_TRY_LINK([
1453 #if defined(HAVE_UNISTD_H)
1454 #include <unistd.h>
1455 #endif
1456 #include <sys/stat.h>
1457 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1458   AC_MSG_RESULT([$ac_cv_func_stat64])
1459   if test x$ac_cv_func_stat64 = xyes ; then
1460     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1461   fi
1464 if test x$ac_cv_func_lstat64 = xno ; then
1465   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1466   AC_TRY_LINK([
1467 #if defined(HAVE_UNISTD_H)
1468 #include <unistd.h>
1469 #endif
1470 #include <sys/stat.h>
1471 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1472   AC_MSG_RESULT([$ac_cv_func_lstat64])
1473   if test x$ac_cv_func_lstat64 = xyes ; then
1474     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1475   fi
1478 if test x$ac_cv_func_fstat64 = xno ; then
1479   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1480   AC_TRY_LINK([
1481 #if defined(HAVE_UNISTD_H)
1482 #include <unistd.h>
1483 #endif
1484 #include <sys/stat.h>
1485 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1486   AC_MSG_RESULT([$ac_cv_func_fstat64])
1487   if test x$ac_cv_func_fstat64 = xyes ; then
1488     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1489   fi
1492 #################################################
1493 # Check whether struct stat has timestamps with sub-second resolution.
1494 # At least IRIX and Solaris have these.
1496 # We check that 
1497 #       all of st_mtim, st_atim and st_ctim exist
1498 #       all of the members are in fact of type struct timespec
1500 # There is some conflicting standards weirdness about whether we should use
1501 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1502 # prefer struct timespec.
1504 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1505     [
1506         AC_TRY_COMPILE(
1507             [
1508 #if TIME_WITH_SYS_TIME
1509 # include <sys/time.h>
1510 # include <time.h>
1511 #else
1512 # if HAVE_SYS_TIME_H
1513 #  include <sys/time.h>
1514 # else
1515 #  include <time.h>
1516 # endif
1517 #endif
1518 #ifdef HAVE_SYS_STAT_H
1519 #include <sys/stat.h>
1520 #endif
1521             ],
1522             [
1523                 struct timespec t;
1524                 struct stat s = {0};
1525                 t.tv_sec = s.st_mtim.tv_sec;
1526                 t.tv_nsec = s.st_mtim.tv_nsec;
1527                 t.tv_sec = s.st_ctim.tv_sec;
1528                 t.tv_nsec = s.st_ctim.tv_nsec;
1529                 t.tv_sec = s.st_atim.tv_sec;
1530                 t.tv_nsec = s.st_atim.tv_nsec;
1531             ],
1532             samba_stat_hires=yes, samba_stat_hires=no)
1533     ])
1535 if test x"$samba_stat_hires" = x"yes" ; then
1536     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1537     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1538     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1539     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1540             [whether struct stat has sub-second timestamps])
1543 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1544     [
1545         AC_TRY_COMPILE(
1546             [
1547 #if TIME_WITH_SYS_TIME
1548 # include <sys/time.h>
1549 # include <time.h>
1550 #else
1551 # if HAVE_SYS_TIME_H
1552 #  include <sys/time.h>
1553 # else
1554 #  include <time.h>
1555 # endif
1556 #endif
1557 #ifdef HAVE_SYS_STAT_H
1558 #include <sys/stat.h>
1559 #endif
1560             ],
1561             [
1562                 struct timespec t;
1563                 struct stat s = {0};
1564                 t.tv_sec = s.st_mtime;
1565                 t.tv_nsec = s.st_mtimensec;
1566                 t.tv_sec = s.st_ctime;
1567                 t.tv_nsec = s.st_ctimensec;
1568                 t.tv_sec = s.st_atime;
1569                 t.tv_nsec = s.st_atimensec;
1570             ],
1571             samba_stat_hires=yes, samba_stat_hires=no)
1572     ])
1574 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1575     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1576     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1577     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1578     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1579             [whether struct stat has sub-second timestamps without struct timespec])
1582 #####################################
1583 # needed for SRV lookups
1584 AC_CHECK_LIB(resolv, dn_expand)
1585 AC_CHECK_LIB(resolv, _dn_expand)
1586 AC_CHECK_LIB(resolv, __dn_expand)
1589 # Check for the functions putprpwnam, set_auth_parameters,
1590 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1591 # Needed for OSF1 and HPUX.
1594 AC_LIBTESTFUNC(security, putprpwnam)
1595 AC_LIBTESTFUNC(sec, putprpwnam)
1597 AC_LIBTESTFUNC(security, set_auth_parameters)
1598 AC_LIBTESTFUNC(sec, set_auth_parameters)
1600 # UnixWare 7.x has its getspnam in -lgen
1601 AC_LIBTESTFUNC(gen, getspnam)
1603 AC_LIBTESTFUNC(security, getspnam)
1604 AC_LIBTESTFUNC(sec, getspnam)
1606 AC_LIBTESTFUNC(security, bigcrypt)
1607 AC_LIBTESTFUNC(sec, bigcrypt)
1609 AC_LIBTESTFUNC(security, getprpwnam)
1610 AC_LIBTESTFUNC(sec, getprpwnam)
1612 AC_CHECK_FUNCS(strsignal)
1614 ############################################
1615 # Check if we have libattr
1616 case "$host_os" in
1617   *osf*)
1618         AC_SEARCH_LIBS(getproplist, [proplist])
1619         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1620         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1621         AC_CHECK_FUNCS(sizeof_proplist_entry)
1622   ;;
1623   *)
1624         AC_SEARCH_LIBS(getxattr, [attr])
1625         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1626         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1627         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1628         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1629         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1630         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1631         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1632   ;;
1633 esac
1635 # Check if we have extattr
1636 case "$host_os" in
1637   *freebsd4* | *dragonfly* )
1638     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1639     ;;
1640   *)
1641     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1642     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1643     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1644     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1645     ;;
1646 esac
1648 # Assume non-shared by default and override below
1649 BLDSHARED="false"
1651 # these are the defaults, good for lots of systems
1652 HOST_OS="$host_os"
1653 LDSHFLAGS="-shared"
1654 SONAMEFLAG="#"
1655 SHLD="\${CC} \${CFLAGS}"
1656 PICFLAGS=""
1657 PICSUFFIX="po"
1658 SHLIBEXT="so"
1660 if test "$enable_shared" = "yes"; then
1661   # this bit needs to be modified for each OS that is suported by
1662   # smbwrapper. You need to specify how to create a shared library and
1663   # how to compile C code to produce PIC object files
1665   AC_MSG_CHECKING([ability to build shared libraries])
1667   # and these are for particular systems
1668   case "$host_os" in
1669                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1670                         BLDSHARED="true"
1671                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1672                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1673                         else
1674                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1675                         fi
1676                         DYNEXP="-Wl,--export-dynamic"
1677                         PICFLAGS="-fPIC"
1678                         SONAMEFLAG="-Wl,-soname="
1679                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1680                         ;;
1681                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1682                         BLDSHARED="true"
1683                         LDSHFLAGS="-G"
1684                         SONAMEFLAG="-h "
1685                         if test "${GCC}" = "yes"; then
1686                                 PICFLAGS="-fPIC"
1687                                 SONAMEFLAG="-Wl,-soname="
1688                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1689                                         DYNEXP="-Wl,-E"
1690                                 fi
1691                         else
1692                                 PICFLAGS="-KPIC"
1693                                 ## ${CFLAGS} added for building 64-bit shared 
1694                                 ## libs using Sun's Compiler
1695                                 LDSHFLAGS="-G \${CFLAGS}"
1696                                 PICSUFFIX="po.o"
1697                         fi
1698                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1699                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1700                         ;;
1701                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1702                         BLDSHARED="true"
1703                         LDSHFLAGS="-G"
1704                         SONAMEFLAG="-Wl,-h,"
1705                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1706                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1707                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1708                         ;;
1709                 *netbsd* | *freebsd* | *dragonfly* )  
1710                         BLDSHARED="true"
1711                         LDSHFLAGS="-shared"
1712                         DYNEXP="-Wl,--export-dynamic"
1713                         SONAMEFLAG="-Wl,-soname,"
1714                         PICFLAGS="-fPIC -DPIC"
1715                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1716                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1717                         ;;
1718                 *openbsd*)  BLDSHARED="true"
1719                         LDSHFLAGS="-shared"
1720                         DYNEXP="-Wl,-Bdynamic"
1721                         SONAMEFLAG="-Wl,-soname,"
1722                         PICFLAGS="-fPIC"
1723                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1724                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1725                         ;;
1726                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1727                         case "$host_os" in
1728                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1729                         ;;
1730                         esac
1731                         BLDSHARED="true"
1732                         LDSHFLAGS="-set_version sgi1.0 -shared"
1733                         SONAMEFLAG="-soname "
1734                         SHLD="\${LD}"
1735                         if test "${GCC}" = "yes"; then
1736                                 PICFLAGS="-fPIC"
1737                         else 
1738                                 PICFLAGS="-KPIC"
1739                         fi
1740                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1741                         ;;
1742                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1743                         BLDSHARED="true"
1744                         LDSHFLAGS="-Wl,-G,-bexpall"
1745                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1746                         PICFLAGS="-O2"
1747                         # as AIX code is always position independent...
1748                         # .po will just create compile warnings, use .o:
1749                         PICSUFFIX="o"
1750                         if test "${GCC}" != "yes"; then
1751                                 ## for funky AIX compiler using strncpy()
1752                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1753                         fi
1755                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1756                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1757                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1758                         ;;
1759                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1760                         # Use special PIC flags for the native HP-UX compiler.
1761                         if test $ac_cv_prog_cc_Ae = yes; then
1762                                 BLDSHARED="true"
1763                                 SHLD="cc"
1764                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1765                                 SONAMEFLAG="-Wl,+h "
1766                                 PICFLAGS="+z"
1767                         elif test "${GCC}" = "yes"; then
1768                                 PICFLAGS="-fPIC"
1769                         fi
1770                         if test "$host_cpu" = "ia64"; then
1771                                 SHLIBEXT="so"
1772                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1773                         else
1774                                 SHLIBEXT="sl"
1775                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1776                         fi
1777                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1778                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1779                         ;;
1780                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1781                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1782                         ;;
1783                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1784                         BLDSHARED="true"
1785                         LDSHFLAGS="-shared"
1786                         SONAMEFLAG="-Wl,-soname,"
1787                         PICFLAGS="-fPIC"
1788                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1790                         ;;
1791                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1792                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1793                         ;;
1794                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1795                         BLDSHARED="true"
1796                         LDSHFLAGS="-shared"
1797                         SONAMEFLAG="-Wl,-soname,"
1798                         PICFLAGS="-KPIC"
1799                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1800                         ;;
1801                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1802                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1803                         ;;
1804                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1805                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1806                         ;;
1807                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1808                         case "$host" in
1809                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1810                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1811                                         fi
1812                                         LDSHFLAGS="-G"
1813                                         DYNEXP="-Bexport"
1814                                 ;;
1815                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1816                         esac
1817                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1818                         ;;
1820                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1821                         if [ test "$GCC" != yes ]; then
1822                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1823                         fi
1824                         LDSHFLAGS="-G"
1825                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1826                         ;;
1827                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1828                         BLDSHARED="false"
1829                         LDSHFLAGS=""
1830                         ;;
1832                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1833                         BLDSHARED="true"
1834                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1835                         SHLIBEXT="dylib"
1836                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1837                         ;;
1839                 *)
1840                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1841                         ;;
1842   esac
1843   AC_SUBST(DYNEXP)
1844   AC_MSG_RESULT($BLDSHARED)
1845   AC_MSG_CHECKING([linker flags for shared libraries])
1846   AC_MSG_RESULT([$LDSHFLAGS])
1847   AC_MSG_CHECKING([compiler flags for position-independent code])
1848   AC_MSG_RESULT([$PICFLAGS])
1851 #######################################################
1852 # test whether building a shared library actually works
1853 if test $BLDSHARED = true; then
1854 AC_CACHE_CHECK([whether building shared libraries actually works], 
1855                [ac_cv_shlib_works],[
1856    # try building a trivial shared library
1857    ac_cv_shlib_works=no
1858    # The $SHLD and $LDSHFLAGS variables may contain references to other
1859    # variables so they need to be eval'ed.
1860    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1861         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1862    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1863         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1864    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1866 if test $ac_cv_shlib_works = no; then
1867    BLDSHARED=false
1871 ################
1873 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1874 AC_TRY_RUN([#include <stdio.h>
1875 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1876 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1877 if test x"$samba_cv_have_longlong" = x"yes"; then
1878     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1879     AC_CHECK_TYPE(intptr_t, unsigned long long)
1880 else
1881     AC_CHECK_TYPE(intptr_t, unsigned long)
1885 # Check if the compiler supports the LL prefix on long long integers.
1886 # AIX needs this.
1888 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1889     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1890         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1891 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1892    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1895   
1896 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1897 AC_TRY_RUN([#include <stdio.h>
1898 #include <sys/stat.h>
1899 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1900 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1901 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1902     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1905 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1906 AC_TRY_RUN([
1907 #if defined(HAVE_UNISTD_H)
1908 #include <unistd.h>
1909 #endif
1910 #include <stdio.h>
1911 #include <sys/stat.h>
1912 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1913 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1914 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1915     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1918 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1919 AC_TRY_RUN([
1920 #if defined(HAVE_UNISTD_H)
1921 #include <unistd.h>
1922 #endif
1923 #include <stdio.h>
1924 #include <sys/stat.h>
1925 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1926 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1927 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1928     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1931 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1932 AC_TRY_RUN([
1933 #if defined(HAVE_UNISTD_H)
1934 #include <unistd.h>
1935 #endif
1936 #include <stdio.h>
1937 #include <sys/stat.h>
1938 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1939 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1940 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1941     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1944 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1945 AC_TRY_RUN([
1946 #if defined(HAVE_UNISTD_H)
1947 #include <unistd.h>
1948 #endif
1949 #include <stdio.h>
1950 #include <sys/stat.h>
1951 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1952 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1953 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1954     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1957 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1958 AC_TRY_RUN([
1959 #if defined(HAVE_UNISTD_H)
1960 #include <unistd.h>
1961 #endif
1962 #include <stdio.h>
1963 #include <sys/stat.h>
1964 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1965 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1966 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1967     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1970 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1971 AC_TRY_COMPILE([
1972 #if defined(HAVE_UNISTD_H)
1973 #include <unistd.h>
1974 #endif
1975 #include <sys/types.h>
1976 #include <dirent.h>],
1977 [DIR64 de;],
1978 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1979 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1980     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1983 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1984 AC_TRY_COMPILE([
1985 #if defined(HAVE_UNISTD_H)
1986 #include <unistd.h>
1987 #endif
1988 #include <sys/types.h>
1989 #include <dirent.h>],
1990 [struct dirent64 de;],
1991 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1992 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1993     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1996 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1997 AC_TRY_RUN([
1998 #if defined(HAVE_UNISTD_H)
1999 #include <unistd.h>
2000 #endif
2001 #include <sys/types.h>
2002 main() { dev_t dev; int i = major(dev); return 0; }],
2003 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2004 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2005     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2008 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2009 AC_TRY_RUN([
2010 #if defined(HAVE_UNISTD_H)
2011 #include <unistd.h>
2012 #endif
2013 #include <sys/types.h>
2014 main() { dev_t dev; int i = minor(dev); return 0; }],
2015 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2016 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2017     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2020 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2021 AC_TRY_RUN([
2022 #if defined(HAVE_UNISTD_H)
2023 #include <unistd.h>
2024 #endif
2025 #include <sys/types.h>
2026 main() { dev_t dev = makedev(1,2); return 0; }],
2027 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2028 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2029     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2032 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2033 AC_TRY_RUN([#include <stdio.h>
2034 main() { char c; c=250; exit((c > 0)?0:1); }],
2035 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2036 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2037     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2040 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2041 AC_TRY_COMPILE([#include <sys/types.h>
2042 #include <sys/socket.h>
2043 #include <netinet/in.h>],
2044 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2045 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2046 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2047     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2050 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2051 AC_TRY_COMPILE([#include <sys/types.h>
2052 #include <dirent.h>
2053 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2054 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2055 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2056     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2059 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2060 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2061 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2062 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2063     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2066 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2067 AC_TRY_RUN([
2068 #include <sys/time.h>
2069 #include <unistd.h>
2070 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
2071            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
2072 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2073     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
2076 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2078     # On some systems (eg. Linux) librt can pull in libpthread. We
2079     # don't want this to happen because libpthreads changes signal delivery
2080     # semantics in ways we are not prepared for. This breaks Linux oplocks
2081     # which rely on signals.
2083     AC_LIBTESTFUNC(rt, clock_gettime,
2084             [
2085                 SMB_IS_LIBPTHREAD_LINKED(
2086                         [ SMB_REMOVELIB(rt) ],
2087                         [
2088                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2089                                 [Whether clock_gettime is available])
2090                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2091                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2092                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2093                         ])
2094             ])
2098 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2099 AC_TRY_LINK([#include <stdarg.h>
2100 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2101 samba_cv_HAVE_VA_COPY=yes,
2102 samba_cv_HAVE_VA_COPY=no)])
2103 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2104     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2105 else
2106     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2107     AC_TRY_LINK([#include <stdarg.h>
2108     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2109     samba_cv_HAVE___VA_COPY=yes,
2110     samba_cv_HAVE___VA_COPY=no)])
2111     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2112         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2113     fi
2116 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2117 AC_TRY_RUN([
2118 #include <sys/types.h>
2119 #include <stdarg.h>
2120 void foo(const char *format, ...) { 
2121        va_list ap;
2122        int len;
2123        char buf[5];
2125        va_start(ap, format);
2126        len = vsnprintf(buf, 0, format, ap);
2127        va_end(ap);
2128        if (len != 5) exit(1);
2130        va_start(ap, format);
2131        len = vsnprintf(0, 0, format, ap);
2132        va_end(ap);
2133        if (len != 5) exit(1);
2135        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2137        exit(0);
2139 main() { foo("hello"); }
2141 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2142 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2143     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2146 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2147 AC_TRY_RUN([#include <sys/types.h>
2148 #include <dirent.h>
2149 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2150 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2151 di->d_name[0] == 0) exit(0); exit(1);} ],
2152 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2153 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2154     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2157 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2158 AC_TRY_COMPILE([#include <sys/types.h>
2159 #include <utime.h>],
2160 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2161 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2162 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2163     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2166 ##############
2167 # Check utmp details, but only if our OS offers utmp.h
2168 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2169 dnl  utmp and utmpx come in many flavours
2170 dnl  We need to check for many of them
2171 dnl  But we don't need to do each and every one, because our code uses
2172 dnl  mostly just the utmp (not utmpx) fields.
2174 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2176 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2177 AC_TRY_COMPILE([#include <sys/types.h>
2178 #include <utmp.h>],
2179 [struct utmp ut;  ut.ut_name[0] = 'a';],
2180 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2181 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2182     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2183 fi 
2185 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2186 AC_TRY_COMPILE([#include <sys/types.h>
2187 #include <utmp.h>],
2188 [struct utmp ut;  ut.ut_user[0] = 'a';],
2189 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2190 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2191     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2192 fi 
2194 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2195 AC_TRY_COMPILE([#include <sys/types.h>
2196 #include <utmp.h>],
2197 [struct utmp ut;  ut.ut_id[0] = 'a';],
2198 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2199 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2200     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2201 fi 
2203 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2204 AC_TRY_COMPILE([#include <sys/types.h>
2205 #include <utmp.h>],
2206 [struct utmp ut;  ut.ut_host[0] = 'a';],
2207 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2208 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2209     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2210 fi 
2212 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2213 AC_TRY_COMPILE([#include <sys/types.h>
2214 #include <utmp.h>],
2215 [struct utmp ut;  time_t t; ut.ut_time = t;],
2216 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2217 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2218     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2219 fi 
2221 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2222 AC_TRY_COMPILE([#include <sys/types.h>
2223 #include <utmp.h>],
2224 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2225 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2226 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2227     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2228 fi 
2230 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2231 AC_TRY_COMPILE([#include <sys/types.h>
2232 #include <utmp.h>],
2233 [struct utmp ut;  ut.ut_type = 0;],
2234 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2235 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2236     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2237 fi 
2239 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2240 AC_TRY_COMPILE([#include <sys/types.h>
2241 #include <utmp.h>],
2242 [struct utmp ut;  ut.ut_pid = 0;],
2243 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2244 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2245     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2246 fi 
2248 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2249 AC_TRY_COMPILE([#include <sys/types.h>
2250 #include <utmp.h>],
2251 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2252 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2253 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2254     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2255 fi 
2257 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2258 AC_TRY_COMPILE([#include <sys/types.h>
2259 #include <utmp.h>],
2260 [struct utmp ut;  ut.ut_addr = 0;],
2261 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2262 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2263     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2264 fi 
2266 if test x$ac_cv_func_pututline = xyes ; then
2267   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2268   AC_TRY_COMPILE([#include <sys/types.h>
2269 #include <utmp.h>],
2270   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2271   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2272   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2273       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2274   fi
2277 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2278 AC_TRY_COMPILE([#include <sys/types.h>
2279 #include <utmpx.h>],
2280 [struct utmpx ux;  ux.ut_syslen = 0;],
2281 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2282 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2283     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2284 fi 
2287 # end utmp details
2290 ICONV_LOCATION=standard
2291 LOOK_DIRS="/usr /usr/local /sw /opt"
2292 AC_ARG_WITH(libiconv,
2293 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2295   if test "$withval" = "no" ; then
2296     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2297   else
2298      if test "$withval" != "yes" ; then
2299         ICONV_PATH_SPEC=yes
2300         LOOK_DIRS="$withval"
2301      fi
2302   fi
2305 for i in $LOOK_DIRS ; do
2306     save_LIBS=$LIBS
2307     save_LDFLAGS=$LDFLAGS
2308     save_CPPFLAGS=$CPPFLAGS
2309     ICONV_FOUND="no"
2310     unset libext
2311     CPPFLAGS="$CPPFLAGS -I$i/include"
2312 dnl This is here to handle -withval stuff for --with-libiconv
2313 dnl Perhaps we should always add a -L
2315 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2316 dnl installation paths. This gets a little tricky since we might have iconv
2317 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2318 dnl succeed when the header is found. To counter this, make sure the 
2319 dnl library directory is there and check the ABI directory first (which
2320 dnl should be harmless on other systems.
2321 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2322     for l in "lib32" "lib" "lib/hpux32"; do
2323         if test -d "$i/$l" ; then
2324                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2325         LIBS=
2326         export LDFLAGS LIBS CPPFLAGS
2327 dnl Try to find iconv(3)
2328                 jm_ICONV($i/$l)
2329                 if test x"$ICONV_FOUND" = "xyes" ; then
2330             libext="$l"
2331             break;
2332         fi
2333         fi
2334     done
2336     if test x"$ICONV_FOUND" = "xyes" ; then
2337         LDFLAGS=$save_LDFLAGS
2338         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2339         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2340         LIBS="$save_LIBS"
2341         ICONV_LOCATION=$i
2342         export LDFLAGS LIBS CPPFLAGS
2343 dnl Now, check for a working iconv ... we want to do it here because
2344 dnl there might be a working iconv further down the list of LOOK_DIRS
2346         ############
2347         # check for iconv in libc
2348         ic_save_LIBS="$LIBS"
2349         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2350            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2351         fi
2352         if test x"$jm_cv_lib_iconv" != x; then
2353            LIBS="$LIBS -l$jm_cv_lib_iconv"
2354         fi
2355 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2356         default_dos_charset=no
2357         default_display_charset=no
2358         default_unix_charset=no
2360         # check for default dos charset name
2361         for j in CP850 IBM850 ; do
2362             rjs_CHARSET($j)
2363             if test x"$ICONV_CHARSET" = x"$j"; then
2364                 default_dos_charset="\"$j\""
2365                 break
2366             fi
2367         done
2368         # check for default display charset name
2369         for j in ASCII 646 ; do
2370             rjs_CHARSET($j)
2371             if test x"$ICONV_CHARSET" = x"$j"; then
2372                 default_display_charset="\"$j\""
2373                 break
2374             fi
2375         done
2376         # check for default unix charset name
2377         for j in UTF-8 UTF8 ; do
2378             rjs_CHARSET($j)
2379             if test x"$ICONV_CHARSET" = x"$j"; then
2380                 default_unix_charset="\"$j\""
2381                 break
2382             fi
2383         done
2384         
2385         if test "$default_dos_charset" != "no" -a \
2386                 "$default_dos_charset" != "cross" -a \
2387                 "$default_display_charset" != "no" -a \ 
2388                 "$default_display_charset" != "cross" -a \
2389                 "$default_unix_charset" != "no" -a \
2390                 "$default_unix_charset" != "cross"
2391         then
2392                 samba_cv_HAVE_NATIVE_ICONV=yes
2393         else if test "$default_dos_charset" = "cross" -o \
2394                      "$default_display_charset" = "cross" -o \
2395                      "$default_unix_charset" = "cross"
2396         then
2397                 samba_cv_HAVE_NATIVE_ICONV=cross
2398         else
2399                 samba_cv_HAVE_NATIVE_ICONV=no
2400         fi
2401         fi
2402 dnl ])
2404         LIBS="$ic_save_LIBS"
2405         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2406            CPPFLAGS=$save_CPPFLAGS
2407            LDFLAGS=$save_LDFLAGS
2408            LIBS=$save_LIBS
2409            if test x"$jm_cv_lib_iconv" != x; then
2410               LIBS="$LIBS -l$jm_cv_lib_iconv"
2411            fi
2412            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2413            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2414            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2415            export CPPFLAGS
2416            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2417            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2418            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2419            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2420            break
2421         fi
2422 dnl We didn't find a working iconv, so keep going
2423     fi
2424 dnl We only need to clean these up here for the next pass through the loop
2425     CPPFLAGS=$save_CPPFLAGS
2426     LDFLAGS=$save_LDFLAGS
2427     LIBS=$save_LIBS
2428     export LDFLAGS LIBS CPPFLAGS
2429 done
2430 unset libext
2433 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2434     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2435     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2436    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2437    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2438    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2442 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2443 AC_TRY_RUN([
2444 #include <sys/types.h>
2445 #include <fcntl.h>
2446 #ifndef F_GETLEASE
2447 #define F_GETLEASE      1025
2448 #endif
2449 main() {
2450        int fd = open("/dev/null", O_RDONLY);
2451        return fcntl(fd, F_GETLEASE, 0) == -1;
2454 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2455 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2456     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2459 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2460 AC_TRY_RUN([
2461 #include <sys/types.h>
2462 #include <fcntl.h>
2463 #include <signal.h>
2464 #ifndef F_NOTIFY
2465 #define F_NOTIFY 1026
2466 #endif
2467 main() {
2468         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2471 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2472 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2473     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2476 #################################################
2477 # Check if FAM notifications are available. For FAM info, see
2478 #       http://oss.sgi.com/projects/fam/
2479 #       http://savannah.nongnu.org/projects/fam/
2481 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2482 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2483     # On IRIX, libfam requires libC, but other FAM implementations might not
2484     # need it.
2485     AC_CHECK_LIB(fam, FAMOpen2,
2486             [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2487             [samba_cv_HAVE_LIBFAM=no])
2489     if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2490         samba_fam_xtra=-lC
2491         AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2492                 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2493                 [samba_cv_HAVE_LIBFAM=no])
2494         unset samba_fam_xtra
2495     fi
2498 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2499     AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1,
2500             [Whether FAM is file notifications are available])
2501     AC_TRY_COMPILE([#include <fam.h>],
2502                 [FAMCodes code = FAMChanged;],
2503                 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2504                     [Whether fam.h contains a typedef for enum FAMCodes]),
2505                 [])
2508 #################################################
2509 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2511 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2513 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2514 AC_TRY_RUN([
2515 #include <sys/types.h>
2516 #include <fcntl.h>
2517 #include <signal.h>
2518 #include <sys/file.h>
2519 #ifndef LOCK_MAND
2520 #define LOCK_MAND       32
2521 #define LOCK_READ       64
2522 #endif
2523 main() {
2524         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2527 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2528 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2529     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2533 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2534 AC_TRY_COMPILE([#include <sys/types.h>
2535 #include <fcntl.h>],
2536 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2537 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2538 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2539     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2542 #################################################
2543 # Check for POSIX capability support
2545 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2546     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2547     [], [])
2549 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2551     ac_save_LIBS=$LIBS
2552     AC_LIBTESTFUNC(cap, cap_get_proc)
2554     AC_CACHE_CHECK([for POSIX capabilities],
2555             samba_cv_HAVE_POSIX_CAPABILITIES,
2556             [
2557                 AC_TRY_RUN([
2558 #include <sys/types.h>
2559 #include <sys/capability.h>
2560 main() {
2561  cap_t cap;
2562  cap_value_t vals[1];
2563  if (!(cap = cap_get_proc()))
2564    exit(1);
2565  vals[0] = CAP_CHOWN;
2566  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2567  cap_set_proc(cap);
2568  exit(0);
2570                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2571                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2572                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2573             ])
2575 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2576     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2577             [Whether POSIX capabilities are available])
2578 else
2579     LIBS=$ac_save_LIBS
2585 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2586 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2589 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2590 AC_TRY_COMPILE([#include <sys/types.h>
2591 #if defined(HAVE_RPC_RPC_H)
2592 #include <rpc/rpc.h>
2593 #endif],
2594 [int16 testvar;],
2595 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2596 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2597     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2600 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2601 AC_TRY_COMPILE([#include <sys/types.h>
2602 #if defined(HAVE_RPC_RPC_H)
2603 #include <rpc/rpc.h>
2604 #endif],
2605 [uint16 testvar;],
2606 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2607 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2608     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2611 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2612 AC_TRY_COMPILE([#include <sys/types.h>
2613 #if defined(HAVE_RPC_RPC_H)
2614 #include <rpc/rpc.h>
2615 #endif],
2616 [int32 testvar;],
2617 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2618 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2619     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2622 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2623 AC_TRY_COMPILE([#include <sys/types.h>
2624 #if defined(HAVE_RPC_RPC_H)
2625 #include <rpc/rpc.h>
2626 #endif],
2627 [uint32 testvar;],
2628 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2629 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2630     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2634 dnl Some systems (SCO) have a problem including
2635 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2636 dnl as a #define in <prot.h> and as part of an enum
2637 dnl in <rpc/rpc.h>.
2640 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2641 AC_TRY_COMPILE([#include <sys/types.h>
2642 #ifdef HAVE_SYS_SECURITY_H
2643 #include <sys/security.h>
2644 #include <prot.h>
2645 #endif  /* HAVE_SYS_SECURITY_H */
2646 #if defined(HAVE_RPC_RPC_H)
2647 #include <rpc/rpc.h>
2648 #endif],
2649 [int testvar;],
2650 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2651 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2652     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2655 AC_MSG_CHECKING([for test routines])
2656 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2657            AC_MSG_RESULT(yes),
2658            AC_MSG_ERROR([cant find test code. Aborting config]),
2659            AC_MSG_WARN([cannot run when cross-compiling]))
2661 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2662 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2663            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2664 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2665     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2668 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2669 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2670            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2671            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2672            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2673 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2674 then
2675     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2678 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2679 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2680            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2681 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2682     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2685 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2686 SAVE_CPPFLAGS="$CPPFLAGS"
2687 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2688 AC_TRY_COMPILE([
2689 #define REPLACE_GETPASS 1
2690 #define NO_PROTO_H 1
2691 #define NO_CONFIG_H 1
2692 #define main dont_declare_main
2693 #include "${srcdir-.}/lib/getsmbpass.c"
2694 #undef main
2695 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2696 CPPFLAGS="$SAVE_CPPFLAGS"
2698 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2699         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2702 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2703 AC_TRY_RUN([
2704 #include <stdio.h>
2705 #include <sys/types.h>
2706 #include <netinet/in.h>
2707 #ifdef HAVE_ARPA_INET_H
2708 #include <arpa/inet.h>
2709 #endif
2710 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2711 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2712     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2713 exit(1);}],
2714            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2715 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2716     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2719 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2720 AC_TRY_RUN([#include <stdlib.h>
2721 #include <sys/types.h>
2722 #include <sys/stat.h>
2723 #include <unistd.h>
2724 main() { 
2725   struct stat st;
2726   char tpl[20]="/tmp/test.XXXXXX"; 
2727   int fd = mkstemp(tpl); 
2728   if (fd == -1) exit(1);
2729   unlink(tpl);
2730   if (fstat(fd, &st) != 0) exit(1);
2731   if ((st.st_mode & 0777) != 0600) exit(1);
2732   exit(0);
2734 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2735 samba_cv_HAVE_SECURE_MKSTEMP=no,
2736 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2737 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2738     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2741 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2742         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2743                 [samba_cv_HAVE_BROKEN_READDIR=no],
2744                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2745                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2747 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2748 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2749         AC_TRY_RUN([
2750 #include "${srcdir-.}/lib/repdir.c"
2751 #include "${srcdir-.}/tests/os2_delete.c"],
2752         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2755 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2756         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2759 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2760 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2761 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2762 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2764 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2765 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2766            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2767 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2768     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2769 else
2770     AC_MSG_WARN(running as non-root will disable some tests)
2773 ##################
2774 # look for a method of finding the list of network interfaces
2775 iface=no;
2776 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2777 AC_TRY_RUN([
2778 #define HAVE_IFACE_AIX 1
2779 #define AUTOCONF_TEST 1
2780 #include "confdefs.h"
2781 #include "${srcdir-.}/lib/interfaces.c"],
2782            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2783 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2784     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2787 if test $iface = no; then
2788 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2789 AC_TRY_RUN([
2790 #define HAVE_IFACE_IFCONF 1
2791 #define AUTOCONF_TEST 1
2792 #include "confdefs.h"
2793 #include "${srcdir-.}/lib/interfaces.c"],
2794            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2795 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2796     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2800 if test $iface = no; then
2801 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2802 AC_TRY_RUN([
2803 #define HAVE_IFACE_IFREQ 1
2804 #define AUTOCONF_TEST 1
2805 #include "confdefs.h"
2806 #include "${srcdir-.}/lib/interfaces.c"],
2807            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2808 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2809     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2814 ################################################
2815 # look for a method of setting the effective uid
2816 seteuid=no;
2817 if test $seteuid = no; then
2818 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2819 AC_TRY_RUN([
2820 #define AUTOCONF_TEST 1
2821 #define USE_SETRESUID 1
2822 #include "confdefs.h"
2823 #include "${srcdir-.}/lib/util_sec.c"],
2824            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2825 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2826     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2831 if test $seteuid = no; then
2832 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2833 AC_TRY_RUN([
2834 #define AUTOCONF_TEST 1
2835 #define USE_SETREUID 1
2836 #include "confdefs.h"
2837 #include "${srcdir-.}/lib/util_sec.c"],
2838            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2839 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2840     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2844 if test $seteuid = no; then
2845 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2846 AC_TRY_RUN([
2847 #define AUTOCONF_TEST 1
2848 #define USE_SETEUID 1
2849 #include "confdefs.h"
2850 #include "${srcdir-.}/lib/util_sec.c"],
2851            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2852 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2853     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2857 if test $seteuid = no; then
2858 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2859 AC_TRY_RUN([
2860 #define AUTOCONF_TEST 1
2861 #define USE_SETUIDX 1
2862 #include "confdefs.h"
2863 #include "${srcdir-.}/lib/util_sec.c"],
2864            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2865 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2866     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2871 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2872 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2873            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2874 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2875     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2878 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2879 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2880            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2881 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2882     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2885 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2886 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2887            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2888 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2889     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2891 else
2894 dnl Don't check for 64 bit fcntl locking if we know that the
2895 dnl glibc2.1 broken check has succeeded.
2896 dnl 
2898   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2899   AC_TRY_RUN([
2900 #if defined(HAVE_UNISTD_H)
2901 #include <unistd.h>
2902 #endif
2903 #include <stdio.h>
2904 #include <stdlib.h>
2906 #ifdef HAVE_FCNTL_H
2907 #include <fcntl.h>
2908 #endif
2910 #ifdef HAVE_SYS_FCNTL_H
2911 #include <sys/fcntl.h>
2912 #endif
2913 main() { struct flock64 fl64;
2914 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2915 exit(0);
2916 #else
2917 exit(1);
2918 #endif
2920        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2922   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2923       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2924   fi
2927 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2928 AC_TRY_COMPILE([#include <sys/types.h>
2929 #include <sys/stat.h>
2930 #include <unistd.h>],
2931 [struct stat st;  st.st_blocks = 0;],
2932 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2933 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2934     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2935 fi 
2937 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2938 AC_TRY_COMPILE([#include <sys/types.h>
2939 #include <sys/stat.h>
2940 #include <unistd.h>],
2941 [struct stat st;  st.st_blksize = 0;],
2942 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2943 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2944     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2947 case "$host_os" in
2948 *linux*)
2949 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2950 AC_TRY_COMPILE([
2951 #ifdef HAVE_SYS_VFS_H
2952 #include <sys/vfs.h>
2953 #endif
2954 #ifdef HAVE_SYS_CAPABILITY_H
2955 #include <sys/capability.h>
2956 #endif
2957 ],[int i;],
2958    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2959 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2960    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2963 esac
2965 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2966 AC_TRY_COMPILE([
2967 #include <sys/types.h>
2968 #include <sys/acl.h>
2969 #if defined(HAVE_RPCSVC_NIS_H)
2970 #include <rpcsvc/nis.h>
2971 #endif],
2972 [int i;],
2973 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2974 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2975         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2978 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2979 AC_TRY_RUN([
2980 #include <stdio.h>
2981 #include <limits.h>
2982 main() {
2983         char *newpath = realpath("/tmp", NULL);
2984         exit ((newpath != NULL) ? 0 : 1);
2987 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2988 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2989     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2992 #################################################
2993 # check for smbwrapper support
2994 AC_MSG_CHECKING(whether to use smbwrapper)
2995 AC_ARG_WITH(smbwrapper,
2996 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2997 [ case "$withval" in
2998   yes)
2999     AC_MSG_RESULT(yes)
3000     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
3001         WRAPPROG="bin/smbsh\$(EXEEXT)"
3002         WRAP="bin/smbwrapper.$SHLIBEXT"
3003         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
3004         WRAP_INC="-I\$(srcdir)/smbwrapper"
3006 # Conditions under which smbwrapper should not be built.
3008         if test x"$PICFLAGS" = x; then
3009            echo No support for PIC code - disabling smbwrapper and smbsh
3010            WRAPPROG=""
3011            WRAP=""
3012            WRAP_OBJS=""
3013            WRAP_INC=""
3014         elif test x$ac_cv_func_syscall = xno; then
3015            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
3016            WRAPPROG=""
3017            WRAP=""
3018            WRAP_OBJS=""
3019            WRAP_INC=""
3020         fi
3021         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
3022         SMBWRAPPER="$WRAPPROG $WRAP"
3023         SMBWRAP_OBJS="$WRAP_OBJS"
3024         SMBWRAP_INC="$WRAP_INC"
3025     ;;
3026   *)
3027     AC_MSG_RESULT(no)
3028     ;;
3029   esac ],
3030   AC_MSG_RESULT(no)
3033 #################################################
3034 # check for AFS clear-text auth support
3035 samba_cv_WITH_AFS=no
3036 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3037 AC_ARG_WITH(afs,
3038 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3039 [ case "$withval" in
3040   yes|auto)
3041     AC_MSG_RESULT($withval)
3042     samba_cv_WITH_AFS=$withval
3043     ;;
3044   *)
3045     AC_MSG_RESULT(no)
3046     ;;
3047   esac ],
3048   AC_MSG_RESULT(no)
3051 ####################################################
3052 # check for Linux-specific AFS fake-kaserver support
3053 samba_cv_WITH_FAKE_KASERVER=no
3054 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3055 AC_ARG_WITH(fake-kaserver,
3056 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3057 [ case "$withval" in
3058   yes|auto)
3059     AC_MSG_RESULT($withval)
3060     samba_cv_WITH_FAKE_KASERVER=$withval
3061     ;;
3062   *)
3063     AC_MSG_RESULT(no)
3064     ;;
3065   esac ],
3066   AC_MSG_RESULT(no)
3069 #################################################
3070 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3071 if test x"$samba_cv_WITH_AFS" != x"no" ||
3072    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3074     # see if this box has the afs-headers in /usr/include/afs
3075     AC_MSG_CHECKING(for /usr/include/afs)
3076     if test -d /usr/include/afs; then
3077           CFLAGS="$CFLAGS -I/usr/include/afs"
3078           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3079           AC_MSG_RESULT(yes)
3080     else
3081       AC_MSG_RESULT(no)
3082     fi
3083    
3084     # check for afs.h
3085     have_afs_headers=no
3086     AC_CHECK_HEADERS(afs.h afs/afs.h)
3087     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3088         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3089            test x"$samba_cv_WITH_AFS" = x"auto"; then
3090                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3091         else
3092                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3093         fi
3094     else
3095         have_afs_headers=yes
3096     fi
3099 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3100     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3103 #################################################
3104 # check whether to compile AFS/NT ACL mapping module
3105 samba_cv_WITH_VFS_AFSACL=no
3106 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3107 AC_ARG_WITH(vfs-afsacl,
3108 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3109 [ case "$withval" in
3110   yes|auto)
3111     AC_MSG_RESULT($withval)
3112     samba_cv_WITH_VFS_AFSACL=yes
3113     ;;
3114   *)
3115     AC_MSG_RESULT(no)
3116     ;;
3117   esac ],
3118   AC_MSG_RESULT(no)
3121 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3122    default_shared_modules="$default_shared_modules vfs_afsacl"
3124         
3125 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3126     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3129 #################################################
3130 # check for the DFS clear-text auth system
3131 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3132 AC_ARG_WITH(dfs,
3133 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3134 [ case "$withval" in
3135   yes)
3136     AC_MSG_RESULT(yes)
3137     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3138     ;;
3139   *)
3140     AC_MSG_RESULT(no)
3141     ;;
3142   esac ],
3143   AC_MSG_RESULT(no)
3146 ########################################################
3147 # Compile with LDAP support?
3149 with_ldap_support=auto
3150 AC_MSG_CHECKING([for LDAP support])
3152 AC_ARG_WITH(ldap,
3153 [  --with-ldap             LDAP support (default yes)],
3154 [ case "$withval" in
3155     yes|no)
3156         with_ldap_support=$withval
3157         ;;
3158   esac ])
3160 AC_MSG_RESULT($with_ldap_support)
3162 SMBLDAP=""
3163 AC_SUBST(SMBLDAP)
3164 SMBLDAPUTIL=""
3165 AC_SUBST(SMBLDAPUTIL)
3166 if test x"$with_ldap_support" != x"no"; then
3168   ##################################################################
3169   # first test for ldap.h and lber.h
3170   # (ldap.h is required for this test)
3171   AC_CHECK_HEADERS(ldap.h lber.h)
3172   
3173   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3174         if test x"$with_ldap_support" = x"yes"; then
3175          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3176         else
3177          AC_MSG_WARN(ldap.h is needed for LDAP support)
3178         fi
3179         
3180         with_ldap_support=no
3181   fi
3184 if test x"$with_ldap_support" != x"no"; then
3185   ac_save_LIBS=$LIBS
3187   ##################################################################
3188   # we might need the lber lib on some systems. To avoid link errors
3189   # this test must be before the libldap test
3190   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3192   ########################################################
3193   # now see if we can find the ldap libs in standard paths
3194   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3196   ########################################################
3197   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3198   # Check found in pam_ldap 145.
3199   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3201   LIBS="$LIBS $LDAP_LIBS"
3202   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3203     AC_TRY_COMPILE([
3204         #include <lber.h>
3205         #include <ldap.h>], 
3206         [ldap_set_rebind_proc(0, 0, 0);], 
3207         [smb_ldap_cv_ldap_set_rebind_proc=3], 
3208         [smb_ldap_cv_ldap_set_rebind_proc=2]
3209     ) 
3210   ])
3211   
3212   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3214   AC_CHECK_FUNC_EXT(ldap_dn2ad_canonical,$LDAP_LIBS)    
3215   
3216   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3217     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3218     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3219     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3220     default_shared_modules="$default_shared_modules";
3221     SMBLDAP="lib/smbldap.o"
3222     SMBLDAPUTIL="lib/smbldap_util.o"
3223     with_ldap_support=yes
3224     AC_MSG_CHECKING(whether LDAP support is used)
3225     AC_MSG_RESULT(yes)
3226   else
3227     if test x"$with_ldap_support" = x"yes"; then
3228         AC_MSG_ERROR(libldap is needed for LDAP support)
3229     else
3230         AC_MSG_WARN(libldap is needed for LDAP support)
3231     fi
3232     
3233     LDAP_LIBS=""
3234     with_ldap_support=no
3235   fi
3236   LIBS=$ac_save_LIBS
3240 #################################################
3241 # active directory support
3243 with_ads_support=auto
3244 AC_MSG_CHECKING([for Active Directory and krb5 support])
3246 AC_ARG_WITH(ads,
3247 [  --with-ads              Active Directory support (default auto)],
3248 [ case "$withval" in
3249     yes|no)
3250         with_ads_support="$withval"
3251         ;;
3252   esac ])
3254 AC_MSG_RESULT($with_ads_support)
3256 FOUND_KRB5=no
3257 KRB5_LIBS=""
3259 if test x"$with_ldap_support" != x"yes"; then
3261     if test x"$with_ads_support" = x"yes"; then
3262         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3263     elif test x"$with_ads_support" = x"auto"; then
3264         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3265         with_ads_support=no
3266     fi
3268 else
3270     # Check to see whether there is enough LDAP functionality to be able
3271     # to build AD support.
3273     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3275     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3276         if test x"$with_ads_support" = x"yes"; then
3277             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3278         elif test x"$with_ads_support" = x"auto"; then
3279             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3280             with_ads_support=no
3281         fi
3282     fi
3284     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3286     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3287         if test x"$with_ads_support" = x"yes"; then
3288             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3289         elif test x"$with_ads_support" = x"auto"; then
3290             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3291             with_ads_support=no
3292         fi
3293     fi
3297 if test x"$with_ads_support" != x"no"; then
3299   # Do no harm to the values of CFLAGS and LIBS while testing for
3300   # Kerberos support.
3302   if test x$FOUND_KRB5 = x"no"; then
3303     #################################################
3304     # check for location of Kerberos 5 install
3305     AC_MSG_CHECKING(for kerberos 5 install path)
3306     AC_ARG_WITH(krb5,
3307     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3308     [ case "$withval" in
3309       no)
3310         AC_MSG_RESULT(no krb5-path given)
3311         ;;
3312       yes)
3313         AC_MSG_RESULT(/usr)
3314         FOUND_KRB5=yes
3315         ;;
3316       *)
3317         AC_MSG_RESULT($withval)
3318         KRB5_CFLAGS="-I$withval/include"
3319         KRB5_CPPFLAGS="-I$withval/include"
3320         KRB5_LDFLAGS="-L$withval/lib"
3321         FOUND_KRB5=yes
3322         if test -x "$withval/bin/krb5-config"; then
3323                 KRB5CONFIG=$withval/bin/krb5-config
3324         fi
3325         ;;
3326       esac ],
3327       AC_MSG_RESULT(no krb5-path given)
3328     )
3329   fi
3331   #################################################
3332   # check for krb5-config from recent MIT and Heimdal kerberos 5
3333   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3334   AC_MSG_CHECKING(for working krb5-config)
3335   if test -x "$KRB5CONFIG"; then
3336     ac_save_CFLAGS=$CFLAGS
3337     CFLAGS="";export CFLAGS
3338     ac_save_LDFLAGS=$LDFLAGS
3339     LDFLAGS="";export LDFLAGS
3340     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3341     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3342     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
3343     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3344     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3345     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3346     FOUND_KRB5=yes
3347     AC_MSG_RESULT(yes)
3348   else
3349     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3350   fi
3352   if test x$FOUND_KRB5 = x"no"; then
3353     #################################################
3354     # see if this box has the SuSE location for the heimdal krb implementation
3355     AC_MSG_CHECKING(for /usr/include/heimdal)
3356     if test -d /usr/include/heimdal; then
3357       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3358           KRB5_CFLAGS="-I/usr/include/heimdal"
3359           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3360           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3361           AC_MSG_RESULT(yes)
3362       else
3363           KRB5_CFLAGS="-I/usr/include/heimdal"
3364           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3365           AC_MSG_RESULT(yes)
3366       fi
3367     else
3368       AC_MSG_RESULT(no)
3369     fi
3370   fi
3372   if test x$FOUND_KRB5 = x"no"; then
3373     #################################################
3374     # see if this box has the RedHat location for kerberos
3375     AC_MSG_CHECKING(for /usr/kerberos)
3376     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3377       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3378       KRB5_CFLAGS="-I/usr/kerberos/include"
3379       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3380       AC_MSG_RESULT(yes)
3381     else
3382       AC_MSG_RESULT(no)
3383     fi
3384   fi
3386   ac_save_CFLAGS=$CFLAGS
3387   ac_save_CPPFLAGS=$CPPFLAGS
3388   ac_save_LDFLAGS=$LDFLAGS
3390   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3391   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3392   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3394   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3396   # now check for krb5.h. Some systems have the libraries without the headers!
3397   # note that this check is done here to allow for different kerberos
3398   # include paths
3399   AC_CHECK_HEADERS(krb5.h)
3401   if test x"$ac_cv_header_krb5_h" = x"no"; then
3403     # Give a warning if AD support was not explicitly requested,
3404     # i.e with_ads_support = auto, otherwise die with an error.
3406     if test x"$with_ads_support" = x"yes"; then
3407       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3408     else
3409       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3410     fi
3412     # Turn off AD support and restore CFLAGS and LIBS variables
3414     with_ads_support="no"
3415     
3416     CFLAGS=$ac_save_CFLAGS
3417     CPPFLAGS=$ac_save_CPPFLAGS
3418     LDFLAGS=$ac_save_LDFLAGS
3419   fi
3422 # Now we have determined whether we really want ADS support
3424 if test x"$with_ads_support" != x"no"; then
3425   ac_save_LIBS=$LIBS
3427   # now check for gssapi headers.  This is also done here to allow for
3428   # different kerberos include paths
3429   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3431   ##################################################################
3432   # we might need the k5crypto and com_err libraries on some systems
3433   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3434   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3436   # Heimdal checks.
3437   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3438   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3439   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3441   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3442   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
3443                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3445   ########################################################
3446   # now see if we can find the krb5 libs in standard paths
3447   # or as specified above
3448   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3449   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3451   ########################################################
3452   # now see if we can find the gssapi libs in standard paths
3453   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3454             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3456   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3457   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3458   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3459   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3460   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3461   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3462   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3463   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3464   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3465   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3466   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3467   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3468   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3469   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3470   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3471   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3472   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3473   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3474   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3475   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3476   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3477   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3478   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3479   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3480   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3481   AC_CHECK_FUNC_EXT(decode_krb5_ap_req, $KRB5_LIBS)
3482   AC_CHECK_FUNC_EXT(krb5_free_ap_req, $KRB5_LIBS)
3483   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3484   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3485   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3486   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3487   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3488   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3489   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3490   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3491   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3493   LIBS="$KRB5_LIBS $LIBS"
3495   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3496     AC_TRY_COMPILE([
3497         #include <krb5.h>], 
3498         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 
3499         [smb_krb5_verify_checksum=7], 
3500         [smb_krb5_verify_checksum=6], 
3501     ) 
3502   ])
3503   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3505   AC_CACHE_CHECK([for checksum in krb5_checksum],
3506                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3507     AC_TRY_COMPILE([#include <krb5.h>],
3508       [krb5_checksum cksum; cksum.checksum.length = 0;],
3509       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3510       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3512   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3513     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3514                [Whether the krb5_checksum struct has a checksum property])
3515   fi
3517   AC_CACHE_CHECK([for etype in EncryptedData],
3518                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3519     AC_TRY_COMPILE([#include <krb5.h>],
3520       [EncryptedData edata; edata.etype = 0;],
3521       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3522       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3524   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3525     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3526                [Whether the EncryptedData struct has a etype property])
3527   fi
3529   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3530                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3531     AC_TRY_COMPILE([#include <krb5.h>],
3532       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3533       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3534       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3536   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3537     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3538                [Whether the krb5_ap_req struct has a ticket pointer])
3539   fi
3541   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3542                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3543     AC_TRY_COMPILE([#include <krb5.h>],
3544       [krb5_error err; err.e_data = NULL;],
3545       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3546       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3548   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3549     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3550                [Whether the krb5_error struct has a e_data pointer])
3551   fi
3553   AC_CACHE_CHECK([for krb5_crypto type],
3554                 samba_cv_HAVE_KRB5_CRYPTO,[
3555     AC_TRY_COMPILE([#include <krb5.h>],
3556       [krb5_crypto crypto;],
3557       samba_cv_HAVE_KRB5_CRYPTO=yes,
3558       samba_cv_HAVE_KRB5_CRYPTO=no)])
3560   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3561     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3562                [Whether the type krb5_crypto exists])
3563   fi
3565   AC_CACHE_CHECK([for krb5_encrypt_block type],
3566                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3567     AC_TRY_COMPILE([#include <krb5.h>],
3568       [krb5_encrypt_block block;],
3569       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3570       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3572   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3573     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3574                [Whether the type krb5_encrypt_block exists])
3575   fi
3577   AC_CACHE_CHECK([for addrtype in krb5_address],
3578                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3579     AC_TRY_COMPILE([#include <krb5.h>],
3580       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3581       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3582       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3584   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3585     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3586                [Whether the krb5_address struct has a addrtype property])
3587   fi
3589   AC_CACHE_CHECK([for addr_type in krb5_address],
3590                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3591     AC_TRY_COMPILE([#include <krb5.h>],
3592       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3593       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3594       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3596   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3597     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3598               [Whether the krb5_address struct has a addr_type property])
3599   fi
3601   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3602                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3603                  [AC_TRY_COMPILE([#include <krb5.h>],
3604     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3605     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3607   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3608     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3609               [Whether the krb5_ticket struct has a enc_part2 property])
3610   fi
3612   AC_CACHE_CHECK([for keyblock in krb5_creds],
3613                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3614     AC_TRY_COMPILE([#include <krb5.h>],
3615       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3616       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3617       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3619   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3620     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3621               [Whether the krb5_creds struct has a keyblock property])
3622   fi
3624   AC_CACHE_CHECK([for session in krb5_creds],
3625                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3626     AC_TRY_COMPILE([#include <krb5.h>],
3627       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3628       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3629       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3631   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3632     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3633               [Whether the krb5_creds struct has a session property])
3634   fi
3636   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3637                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3638     AC_TRY_COMPILE([#include <krb5.h>],
3639       [krb5_keyblock key; key.keyvalue.data = NULL;],
3640       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3641       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3643   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3644     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3645               [Whether the krb5_keyblock struct has a keyvalue property])
3646   fi
3648   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3649                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3650     AC_TRY_COMPILE([#include <krb5.h>],
3651       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3652       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3653       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3654   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3655                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3656     AC_TRY_COMPILE([#include <krb5.h>],
3657       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3658       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3659       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3660 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3661 # w.r.t. arcfour and windows, so we must not enable it here
3662   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3663           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3664     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3665               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3666   fi
3668   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3669                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3670     AC_TRY_COMPILE([#include <krb5.h>],
3671       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3672       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3673       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3675   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3676     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3677               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3678   fi
3680   AC_CACHE_CHECK([for KV5M_KEYTAB],
3681                  samba_cv_HAVE_KV5M_KEYTAB,[
3682     AC_TRY_COMPILE([#include <krb5.h>],
3683       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3684       samba_cv_HAVE_KV5M_KEYTAB=yes,
3685       samba_cv_HAVE_KV5M_KEYTAB=no)])
3687   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3688       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3689              [Whether the KV5M_KEYTAB option is available])
3690   fi
3692   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3693                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3694     AC_TRY_COMPILE([#include <krb5.h>],
3695       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3696       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3697       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3699   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3700     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3701               [Whether KRB5_KU_OTHER_CKSUM is available])
3702   fi
3703   
3704   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3705                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3706     AC_TRY_COMPILE([#include <krb5.h>],
3707       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3708       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3709       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3711   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3712     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3713               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3714   fi
3716   AC_CACHE_CHECK([for the krb5_princ_component macro],
3717                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3718     AC_TRY_LINK([#include <krb5.h>],
3719       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3720       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3721       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3723   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3724     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3725                [Whether krb5_princ_component is available])
3726   fi
3728   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3729                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3730     AC_TRY_COMPILE([#include <krb5.h>],
3731       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3732       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3733       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3735   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3736     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3737               [Whether krb5_keytab_entry has key member])
3738   fi
3740   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3741                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3742     AC_TRY_COMPILE([#include <krb5.h>],
3743       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3744       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3745       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3747   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3748     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3749               [Whether krb5_keytab_entry has keyblock member])
3750   fi
3752   AC_CACHE_CHECK([for magic in krb5_address],
3753                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3754     AC_TRY_COMPILE([#include <krb5.h>],
3755       [krb5_address addr; addr.magic = 0;],
3756       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3757       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3759   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3760     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3761               [Whether the krb5_address struct has a magic property])
3762   fi
3764   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3765     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3766     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3767     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3768     AC_MSG_RESULT(yes)
3769   else
3770     if test x"$with_ads_support" = x"yes"; then
3771         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3772     else
3773         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3774     fi
3775     KRB5_LIBS=""
3776     with_ads_support=no 
3777   fi
3779   AC_CACHE_CHECK([for WRFILE: keytab support],
3780                 samba_cv_HAVE_WRFILE_KEYTAB,[
3781     AC_TRY_RUN([
3782 #include<krb5.h>
3783   main()
3784   {
3785     krb5_context context;
3786     krb5_keytab keytab;
3788     krb5_init_context(&context);
3789     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3790   }],
3791   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3792   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3794   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3795       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3796                [Whether the WRFILE:-keytab is supported])
3797   fi
3799   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3800                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3801     AC_TRY_COMPILE([#include <krb5.h>],
3802     [
3803     krb5_context context;
3804     krb5_principal principal;
3805     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3806     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3807     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3809   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3810     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3811               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3812   fi
3814   AC_CACHE_CHECK([for krb5_addresses type],
3815                 samba_cv_HAVE_KRB5_ADDRESSES,[
3816     AC_TRY_COMPILE([#include <krb5.h>],
3817       [krb5_addresses addr;],
3818       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3819       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3821   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3822     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3823                [Whether the type krb5_addresses type exists])
3824   fi
3826 LIBS="$ac_save_LIBS"
3829 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3830 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3832 #################################################
3833 # check for automount support
3834 AC_MSG_CHECKING(whether to use automount)
3835 AC_ARG_WITH(automount,
3836 [  --with-automount        Include automount support (default=no)],
3837 [ case "$withval" in
3838   yes)
3839     AC_MSG_RESULT(yes)
3840     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3841     ;;
3842   *)
3843     AC_MSG_RESULT(no)
3844     ;;
3845   esac ],
3846   AC_MSG_RESULT(no)
3849 #################################################
3850 # check for smbmount support
3851 AC_MSG_CHECKING(whether to use smbmount)
3852 AC_ARG_WITH(smbmount,
3853 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3854 [ case "$withval" in
3855   yes)
3856         case "$host_os" in
3857         *linux*)
3858                 AC_MSG_RESULT(yes)
3859                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3860                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3861                 ;;
3862         *)
3863                 AC_MSG_ERROR(not on a linux system!)
3864                 ;;
3865         esac
3866     ;;
3867   *)
3868     AC_MSG_RESULT(no)
3869     ;;
3870   esac ],
3871   AC_MSG_RESULT(no)
3874 #################################################
3875 # check for mount- and umount.cifs support
3876 CIFSMOUNT_PROGS=""
3877 INSTALL_CIFSMOUNT=""
3878 UNINSTALL_CIFSMOUNT=""
3879 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
3880 AC_ARG_WITH(cifsmount,
3881 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
3882 [ case "$withval" in
3883   no)
3884         AC_MSG_RESULT(no)
3885         ;;
3886   *)
3887         case "$host_os" in
3888         *linux*)
3889                 AC_MSG_RESULT(yes)
3890                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3891                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3892                 INSTALL_CIFSMOUNT="installcifsmount"
3893                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3894                 ;;
3895         *)
3896                 AC_MSG_ERROR(not on a linux system!)
3897                 ;;
3898         esac
3899     ;;
3900   esac ],
3901 [ case "$host_os" in
3902   *linux*)
3903         AC_MSG_RESULT(yes)
3904         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3905         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3906         INSTALL_CIFSMOUNT="installcifsmount"
3907         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3908         ;;
3909   *)
3910         AC_MSG_RESULT(no)
3911         ;;
3912   esac ]
3916 #################################################
3917 # check for a PAM clear-text auth, accounts, password and session support
3918 with_pam_for_crypt=no
3919 AC_MSG_CHECKING(whether to use PAM)
3920 AC_ARG_WITH(pam,
3921 [  --with-pam              Include PAM support (default=no)],
3922 [ case "$withval" in
3923   yes)
3924     AC_MSG_RESULT(yes)
3925     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3926        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3927           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3928              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3929           fi
3930        fi
3931     fi
3932     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3933     AUTH_LIBS="$AUTH_LIBS -lpam"
3934     with_pam_for_crypt=yes
3935     ;;
3936   *)
3937     AC_MSG_RESULT(no)
3938     ;;
3939   esac ],
3940   AC_MSG_RESULT(no)
3943 # we can't build a pam module if we don't have pam.
3944 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3946 #################################################
3947 # check for pam_smbpass support
3948 PAM_MODULES=""
3949 INSTALL_PAM_MODULES=""
3950 UNINSTALL_PAM_MODULES=""
3951 AC_MSG_CHECKING(whether to use pam_smbpass)
3952 AC_ARG_WITH(pam_smbpass,
3953 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3954 [ case "$withval" in
3955   yes)
3956     AC_MSG_RESULT(yes)
3958        # Conditions under which pam_smbpass should not be built.
3960        if test x"$PICFLAGS" = x; then
3961           AC_MSG_ERROR([No support for PIC code])
3962        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3963           AC_MSG_ERROR([No security/pam_appl.h found])
3964        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3965           AC_MSG_ERROR([No libpam found])
3966        else
3967           AUTH_LIBS="$AUTH_LIBS -lpam"
3968           PAM_MODULES="pam_smbpass"
3969           INSTALL_PAM_MODULES="installpammodules"
3970           UNINSTALL_PAM_MODULES="uninstallpammodules"
3971        fi
3972     ;;
3973   *)
3974     AC_MSG_RESULT(no)
3975     ;;
3976   esac ],
3977   AC_MSG_RESULT(no)
3981 ###############################################
3982 # test for where we get crypt() from
3983 AC_SEARCH_LIBS(crypt, [crypt],
3984   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3985   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3988 ## moved after the check for -lcrypt in order to
3989 ## ensure that the necessary libraries are included
3990 ## check checking for truncated salt.  Wrapped by the
3991 ## $with_pam_for_crypt variable as above   --jerry
3993 if test $with_pam_for_crypt = no; then
3994 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3995 crypt_LIBS="$LIBS"
3996 LIBS="$AUTH_LIBS $LIBS"
3997 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3998         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3999 LIBS="$crypt_LIBS"])
4000 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4001         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4005 #################################################
4006 # check for a NISPLUS_HOME support 
4007 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4008 AC_ARG_WITH(nisplus-home,
4009 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4010 [ case "$withval" in
4011   yes)
4012     AC_MSG_RESULT(yes)
4013     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4014     ;;
4015   *)
4016     AC_MSG_RESULT(no)
4017     ;;
4018   esac ],
4019   AC_MSG_RESULT(no)
4022 #################################################
4023 # check for syslog logging
4024 AC_MSG_CHECKING(whether to use syslog logging)
4025 AC_ARG_WITH(syslog,
4026 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4027 [ case "$withval" in
4028   yes)
4029     AC_MSG_RESULT(yes)
4030     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4031     ;;
4032   *)
4033     AC_MSG_RESULT(no)
4034     ;;
4035   esac ],
4036   AC_MSG_RESULT(no)
4039 #################################################
4040 # check for experimental disk-quotas support
4042 samba_cv_WITH_QUOTAS=auto
4043 samba_cv_TRY_QUOTAS=no
4044 samba_cv_RUN_QUOTA_TESTS=auto
4045 samba_cv_WITH_SYS_QUOTAS=auto
4046 samba_cv_TRY_SYS_QUOTAS=auto
4047 samba_cv_SYSQUOTA_FOUND=no
4049 AC_MSG_CHECKING(whether to try disk-quotas support)
4050 AC_ARG_WITH(quotas,
4051 [  --with-quotas           Include disk-quota support (default=no)],
4052 [ case "$withval" in
4053   yes)
4054     AC_MSG_RESULT(yes)
4055     samba_cv_WITH_QUOTAS=yes
4056     samba_cv_TRY_QUOTAS=yes
4057     samba_cv_RUN_QUOTA_TESTS=yes
4058     #set sys quotas to auto in this case
4059     samba_cv_TRY_SYS_QUOTAS=auto
4060     ;;
4061   auto)
4062     AC_MSG_RESULT(auto)
4063     samba_cv_WITH_QUOTAS=auto
4064     samba_cv_TRY_QUOTAS=auto
4065     samba_cv_RUN_QUOTA_TESTS=auto
4066     #set sys quotas to auto in this case
4067     samba_cv_TRY_SYS_QUOTAS=auto
4068     ;;
4069   no)
4070     AC_MSG_RESULT(no)
4071     samba_cv_WITH_QUOTAS=no
4072     samba_cv_TRY_QUOTAS=no
4073     samba_cv_RUN_QUOTA_TESTS=no
4074     ;;
4075   *)
4076     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4077     ;;
4078   esac ],
4079   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4082 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4083 AC_ARG_WITH(sys-quotas,
4084 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4085 [ case "$withval" in
4086   yes)
4087     AC_MSG_RESULT(yes)
4088     samba_cv_WITH_SYS_QUOTAS=yes
4089     samba_cv_TRY_SYS_QUOTAS=yes
4090     samba_cv_RUN_QUOTA_TESTS=yes
4091     ;;
4092   auto)
4093     AC_MSG_RESULT(auto)
4094     samba_cv_WITH_SYS_QUOTAS=auto
4095     samba_cv_TRY_SYS_QUOTAS=auto
4096     samba_cv_RUN_QUOTA_TESTS=auto
4097     ;;
4098   no)
4099     AC_MSG_RESULT(no)
4100     samba_cv_WITH_SYS_QUOTAS=no
4101     samba_cv_TRY_SYS_QUOTAS=no
4102     ;;
4103   *)
4104     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4105     ;;
4106   esac ],
4107   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4110 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4111 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4112   case "$host_os" in
4113         *linux*)
4114             AC_MSG_RESULT(yes)
4115             samba_cv_TRY_SYS_QUOTAS=yes
4116             samba_cv_RUN_QUOTA_TESTS=yes
4117             ;;
4118         *)
4119             AC_MSG_RESULT(no)
4120             samba_cv_TRY_SYS_QUOTAS=no
4121             ;;
4122   esac
4125 #############################################
4126 # only check for quota stuff if --with-quotas
4127 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4129 case "$host_os" in
4130         # on linux we didn't need to test we have builtin support
4131         *linux*)
4132             samba_cv_SYSQUOTA_FOUND=yes
4133             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4134             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4135             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4136             AC_MSG_RESULT(yes)
4138             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4139             samba_cv_found_xfs_header=yes
4140             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4141             AC_MSG_RESULT(yes)
4142             ;;
4143         *solaris*)
4144             # need to set this define when using static linking (BUG 1473)
4145             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4146             ;;
4147         *)
4148             ;;
4149 esac
4151 # some broken header files need this
4152 AC_CHECK_HEADER(asm/types.h,[
4153             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4154             AC_ADD_INCLUDE(<asm/types.h>)
4155             ])
4157 # For quotas on Veritas VxFS filesystems
4158 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4160 # For sys/quota.h and linux/quota.h
4161 AC_CHECK_HEADERS(sys/quota.h)
4163 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4164 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4165 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4166 AC_TRY_COMPILE([
4167 #include "confdefs.h"
4168 #ifdef HAVE_SYS_TYPES_H
4169 #include <sys/types.h>
4170 #endif
4171 #ifdef HAVE_ASM_TYPES_H
4172 #include <asm/types.h>
4173 #endif
4174 #include <sys/quota.h>
4175 ],[int i = Q_XGETQUOTA;],
4176 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4177 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4178         samba_cv_found_xfs_header=yes
4182 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
4183 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4184 AC_TRY_COMPILE([
4185 #include "confdefs.h"
4186 #ifdef HAVE_SYS_QUOTA_H
4187 #include <sys/quota.h>
4188 #endif
4190 struct dqblk D;
4191 D.dqb_fsoftlimit = 0;],
4192 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4193 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4194         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4197 ##################
4198 # look for a working quota system
4200 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4201 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4202 AC_TRY_RUN_STRICT([
4203 #define HAVE_QUOTACTL_4A 1
4204 #define AUTOCONF_TEST 1
4205 #include "confdefs.h"
4206 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4207            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4208 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4209     samba_cv_SYSQUOTA_FOUND=yes;
4210     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4211     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4215 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4216 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4217 AC_TRY_RUN_STRICT([
4218 #define HAVE_QUOTACTL_4B 1
4219 #define AUTOCONF_TEST 1
4220 #include "confdefs.h"
4221 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4222            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4223 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4224     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4225     samba_cv_SYSQUOTA_FOUND=yes;
4226     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4227     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4231 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4232 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4233 AC_TRY_RUN_STRICT([
4234 #define HAVE_QUOTACTL_3 1
4235 #define AUTOCONF_TEST 1
4236 #include "confdefs.h"
4237 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4238            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4239 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4240     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4241     samba_cv_SYSQUOTA_FOUND=yes;
4242     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4243     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4247 #################################################
4248 # check for mntent.h and struct mntent
4249 AC_CHECK_HEADERS(mntent.h)
4250 #################################################
4251 # check for setmntent,getmntent,endmntent
4252 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4254 #################################################
4255 # check for devnm.h and struct mntent
4256 AC_CHECK_HEADERS(devnm.h)
4257 #################################################
4258 # check for devnm
4259 AC_CHECK_FUNCS(devnm)
4261 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4262     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4263         # if --with-sys-quotas=yes then build it 
4264         # you have can use the get/set quota command smb.conf
4265         # options then
4266         samba_cv_SYSQUOTA_FOUND=auto
4267     fi
4268     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4269         # if --with-sys-quotas=yes then build it 
4270         # you have can use the get/set quota command smb.conf
4271         # options then
4272         samba_cv_TRY_SYS_QUOTAS=auto
4273     fi
4276 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4277 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4278 SAVE_CPPFLAGS="$CPPFLAGS"
4279 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4280 AC_TRY_COMPILE([
4281 #include "confdefs.h"
4282 #define NO_PROTO_H 1
4283 #define NO_CONFIG_H 1
4284 #define HAVE_SYS_QUOTAS 1
4285 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4286 #include "${srcdir-.}/lib/sysquotas.c"
4287 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4288 CPPFLAGS="$SAVE_CPPFLAGS"
4290 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4291 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4292     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
4293         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4294         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4295         samba_cv_WE_USE_SYS_QUOTAS=yes
4296         AC_MSG_RESULT(yes)
4297     else
4298         AC_MSG_RESULT(no)
4299     fi
4303 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4304 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4305 SAVE_CPPFLAGS="$CPPFLAGS"
4306 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4307 AC_TRY_COMPILE([
4308 #include "confdefs.h"
4309 #define NO_PROTO_H 1
4310 #define NO_CONFIG_H 1
4311 #define HAVE_SYS_QUOTAS 1
4312 #define HAVE_XFS_QUOTAS 1
4313 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4314 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4315 CPPFLAGS="$SAVE_CPPFLAGS"
4317 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4318     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4319         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4320     fi
4324 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4325 SAVE_CPPFLAGS="$CPPFLAGS"
4326 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch -I${srcdir-.}/smbwrapper"
4327 AC_TRY_COMPILE([
4328 #include "confdefs.h"
4329 #define NO_PROTO_H 1
4330 #define NO_CONFIG_H 1
4331 #include "${srcdir-.}/smbd/quotas.c"
4332 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4333 CPPFLAGS="$SAVE_CPPFLAGS"
4335 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4336 AC_MSG_CHECKING(whether to use the old quota support)
4337     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4338       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4339         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4340         AC_MSG_RESULT(yes)
4341       else
4342         AC_MSG_RESULT(no)
4343       fi
4344     else
4345       AC_MSG_RESULT(no)
4346     fi
4349 ####################
4350 # End of quota check samba_cv_RUN_QUOTA_TESTS
4353 #################################################
4354 # check for experimental utmp accounting
4356 AC_MSG_CHECKING(whether to support utmp accounting)
4357 WITH_UTMP=yes
4358 AC_ARG_WITH(utmp,
4359 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4360 [ case "$withval" in
4361   no)
4362                 WITH_UTMP=no
4363                 ;;
4364   *)
4365                 WITH_UTMP=yes
4366                 ;;
4367   esac ],
4370 # utmp requires utmp.h
4371 # Note similar check earlier, when checking utmp details.
4373 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4374         utmp_no_reason=", no utmp.h on $host_os"
4375         WITH_UTMP=no
4378 # Display test results
4380 if test x"$WITH_UTMP" = x"yes"; then
4381         AC_MSG_RESULT(yes)
4382         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4383 else
4384         AC_MSG_RESULT(no$utmp_no_reason)
4387 INSTALLLIBCMD_SH=:
4388 INSTALLLIBCMD_A=:
4389 UNINSTALLLIBCMD_SH=:
4390 UNINSTALLLIBCMD_A=:
4392 if test $BLDSHARED = true; then
4393         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4394         UNINSTALLLIBCMD_SH="rm -f"
4396 if test $enable_static = yes; then
4397         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4398         UNINSTALLLIBCMD_A="rm -f"
4401 #################################################
4402 # should we build libmsrpc?
4403 INSTALL_LIBMSRPC=
4404 UNINSTALL_LIBMSRPC=
4405 LIBMSRPC_SHARED=
4406 LIBMSRPC=
4407 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4408 AC_ARG_WITH(libmsrpc,
4409 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4410 [ case "$withval" in
4411   no) 
4412      AC_MSG_RESULT(no)
4413      ;;
4414   *)
4415      if test $BLDSHARED = true; then
4416         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4417         LIBMSRPC=libmsrpc
4418         AC_MSG_RESULT(yes)
4419      else
4420         enable_static=yes
4421         AC_MSG_RESULT(no shared library support -- will supply static library)
4422      fi
4423      if test $enable_static = yes; then
4424         LIBMSRPC=libmsrpc
4425      fi
4426      INSTALL_LIBMSRPC=installlibmsrpc
4427      UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4428      ;;
4429   esac ],
4431 # if unspecified, default is to built it if possible.
4432   if test $BLDSHARED = true; then
4433      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4434      LIBMSRPC=libmsrpc
4435      AC_MSG_RESULT(yes)
4436    else
4437      enable_static=yes
4438      AC_MSG_RESULT(no shared library support -- will supply static library)
4439    fi
4440    if test $enable_static = yes; then
4441      LIBMSRPC=libmsrpc
4442   fi]
4443   INSTALL_LIBMSRPC=installlibmsrpc
4444   UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4447 #################################################
4448 # should we build libsmbclient?
4449 INSTALL_LIBSMBCLIENT=
4450 UNINSTALL_LIBSMBCLIENT=
4451 LIBSMBCLIENT_SHARED=
4452 LIBSMBCLIENT=
4453 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4454 AC_ARG_WITH(libsmbclient,
4455 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4456 [ case "$withval" in
4457   no) 
4458      AC_MSG_RESULT(no)
4459      ;;
4460   *)
4461      if test $BLDSHARED = true; then
4462         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4463         LIBSMBCLIENT=libsmbclient
4464         AC_MSG_RESULT(yes)
4465      else
4466         enable_static=yes
4467         AC_MSG_RESULT(no shared library support -- will supply static library)
4468      fi
4469      if test $enable_static = yes; then
4470         LIBSMBCLIENT=libsmbclient
4471      fi
4472      INSTALL_LIBSMBCLIENT=installclientlib
4473      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4474      ;;
4475   esac ],
4477 # if unspecified, default is to built it if possible.
4478   if test $BLDSHARED = true; then
4479      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4480      LIBSMBCLIENT=libsmbclient
4481      AC_MSG_RESULT(yes)
4482    else
4483      enable_static=yes
4484      AC_MSG_RESULT(no shared library support -- will supply static library)
4485    fi
4486    if test $enable_static = yes; then
4487      LIBSMBCLIENT=libsmbclient
4488   fi]
4489   INSTALL_LIBSMBCLIENT=installclientlib
4490   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4493 INSTALL_LIBSMBSHAREMODES=
4494 LIBSMBSHAREMODES_SHARED=
4495 LIBSMBSHAREMODES=
4496 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4497 AC_ARG_WITH(libsmbsharemodes,
4498 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4499 [ case "$withval" in
4500   no)
4501      AC_MSG_RESULT(no)
4502      ;;
4503   *)
4504      if test $BLDSHARED = true; then
4505         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4506         LIBSMBSHAREMODES=libsmbsharemodes
4507         AC_MSG_RESULT(yes)
4508      else
4509         enable_static=yes
4510         AC_MSG_RESULT(no shared library support -- will supply static library)
4511      fi
4512      if test $enable_static = yes; then
4513         LIBSMBSHAREMODES=libsmbsharemodes
4514      fi
4515      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4516      ;;
4517   esac ],
4519 # if unspecified, default is to built it if possible.
4520   if test $BLDSHARED = true; then
4521      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4522      LIBSMBSHAREMODES=libsmbsharemodes
4523      AC_MSG_RESULT(yes)
4524    else
4525      enable_static=yes
4526      AC_MSG_RESULT(no shared library support -- will supply static library)
4527    fi
4528    if test $enable_static = yes; then
4529      LIBSMBSHAREMODES=libsmbsharemodes
4530   fi]
4531   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4534 #################################################
4535 # these tests are taken from the GNU fileutils package
4536 AC_CHECKING(how to get filesystem space usage)
4537 space=no
4539 # Test for statvfs64.
4540 if test $space = no; then
4541   # SVR4
4542   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4543   [AC_TRY_RUN([
4544 #if defined(HAVE_UNISTD_H)
4545 #include <unistd.h>
4546 #endif
4547 #include <sys/types.h>
4548 #include <sys/statvfs.h>
4549   main ()
4550   {
4551     struct statvfs64 fsd;
4552     exit (statvfs64 (".", &fsd));
4553   }],
4554   fu_cv_sys_stat_statvfs64=yes,
4555   fu_cv_sys_stat_statvfs64=no,
4556   fu_cv_sys_stat_statvfs64=cross)])
4557   if test $fu_cv_sys_stat_statvfs64 = yes; then
4558     space=yes
4559     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4560   fi
4563 # Perform only the link test since it seems there are no variants of the
4564 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4565 # because that got a false positive on SCO OSR5.  Adding the declaration
4566 # of a `struct statvfs' causes this test to fail (as it should) on such
4567 # systems.  That system is reported to work fine with STAT_STATFS4 which
4568 # is what it gets when this test fails.
4569 if test $space = no; then
4570   # SVR4
4571   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4572                  [AC_TRY_LINK([#include <sys/types.h>
4573 #include <sys/statvfs.h>],
4574                               [struct statvfs fsd; statvfs (0, &fsd);],
4575                               fu_cv_sys_stat_statvfs=yes,
4576                               fu_cv_sys_stat_statvfs=no)])
4577   if test $fu_cv_sys_stat_statvfs = yes; then
4578     space=yes
4579     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4580   fi
4583 if test $space = no; then
4584   # DEC Alpha running OSF/1
4585   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4586   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4587   [AC_TRY_RUN([
4588 #include <sys/param.h>
4589 #include <sys/types.h>
4590 #include <sys/mount.h>
4591   main ()
4592   {
4593     struct statfs fsd;
4594     fsd.f_fsize = 0;
4595     exit (statfs (".", &fsd, sizeof (struct statfs)));
4596   }],
4597   fu_cv_sys_stat_statfs3_osf1=yes,
4598   fu_cv_sys_stat_statfs3_osf1=no,
4599   fu_cv_sys_stat_statfs3_osf1=no)])
4600   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4601   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4602     space=yes
4603     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4604   fi
4607 if test $space = no; then
4608 # AIX
4609   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4610 member (AIX, 4.3BSD)])
4611   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4612   [AC_TRY_RUN([
4613 #ifdef HAVE_SYS_PARAM_H
4614 #include <sys/param.h>
4615 #endif
4616 #ifdef HAVE_SYS_MOUNT_H
4617 #include <sys/mount.h>
4618 #endif
4619 #ifdef HAVE_SYS_VFS_H
4620 #include <sys/vfs.h>
4621 #endif
4622   main ()
4623   {
4624   struct statfs fsd;
4625   fsd.f_bsize = 0;
4626   exit (statfs (".", &fsd));
4627   }],
4628   fu_cv_sys_stat_statfs2_bsize=yes,
4629   fu_cv_sys_stat_statfs2_bsize=no,
4630   fu_cv_sys_stat_statfs2_bsize=no)])
4631   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4632   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4633     space=yes
4634     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4635   fi
4638 if test $space = no; then
4639 # SVR3
4640   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4641   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4642   [AC_TRY_RUN([#include <sys/types.h>
4643 #include <sys/statfs.h>
4644   main ()
4645   {
4646   struct statfs fsd;
4647   exit (statfs (".", &fsd, sizeof fsd, 0));
4648   }],
4649     fu_cv_sys_stat_statfs4=yes,
4650     fu_cv_sys_stat_statfs4=no,
4651     fu_cv_sys_stat_statfs4=no)])
4652   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4653   if test $fu_cv_sys_stat_statfs4 = yes; then
4654     space=yes
4655     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4656   fi
4659 if test $space = no; then
4660 # 4.4BSD and NetBSD
4661   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4662 member (4.4BSD and NetBSD)])
4663   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4664   [AC_TRY_RUN([#include <sys/types.h>
4665 #ifdef HAVE_SYS_PARAM_H
4666 #include <sys/param.h>
4667 #endif
4668 #ifdef HAVE_SYS_MOUNT_H
4669 #include <sys/mount.h>
4670 #endif
4671   main ()
4672   {
4673   struct statfs fsd;
4674   fsd.f_fsize = 0;
4675   exit (statfs (".", &fsd));
4676   }],
4677   fu_cv_sys_stat_statfs2_fsize=yes,
4678   fu_cv_sys_stat_statfs2_fsize=no,
4679   fu_cv_sys_stat_statfs2_fsize=no)])
4680   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4681   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4682     space=yes
4683         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4684   fi
4687 if test $space = no; then
4688   # Ultrix
4689   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4690   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4691   [AC_TRY_RUN([#include <sys/types.h>
4692 #ifdef HAVE_SYS_PARAM_H
4693 #include <sys/param.h>
4694 #endif
4695 #ifdef HAVE_SYS_MOUNT_H
4696 #include <sys/mount.h>
4697 #endif
4698 #ifdef HAVE_SYS_FS_TYPES_H
4699 #include <sys/fs_types.h>
4700 #endif
4701   main ()
4702   {
4703   struct fs_data fsd;
4704   /* Ultrix's statfs returns 1 for success,
4705      0 for not mounted, -1 for failure.  */
4706   exit (statfs (".", &fsd) != 1);
4707   }],
4708   fu_cv_sys_stat_fs_data=yes,
4709   fu_cv_sys_stat_fs_data=no,
4710   fu_cv_sys_stat_fs_data=no)])
4711   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4712   if test $fu_cv_sys_stat_fs_data = yes; then
4713     space=yes
4714     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4715   fi
4719 # As a gating factor for large file support, in order to
4720 # use <4GB files we must have the following minimal support
4721 # available.
4722 # long long, and a 64 bit off_t or off64_t.
4723 # If we don't have all of these then disable large
4724 # file support.
4726 AC_MSG_CHECKING([if large file support can be enabled])
4727 AC_TRY_COMPILE([
4728 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4729 #include <sys/types.h>
4730 #else
4731 __COMPILE_ERROR_
4732 #endif
4734 [int i],
4735 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4736 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4737         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4739 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4741 AC_ARG_WITH(spinlocks, 
4742 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4743 if test "x$with_spinlocks" = "xyes"; then
4744     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4746     case "$host_cpu" in
4747         sparc)
4748             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4749             ;;
4751         i386|i486|i586|i686)
4752             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4753             ;;
4755         mips)
4756             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4757             ;;
4759         powerpc)
4760             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4761             ;;
4762     esac
4765 #################################################
4766 # check for cluster extensions
4768 AC_MSG_CHECKING(whether to include cluster support)
4769 AC_ARG_WITH(cluster-support, 
4770 [  --with-cluster-support  Enable cluster extensions (default=no)])
4771 if test "x$with_cluster_support" = "xyes"; then
4772     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
4773     AC_MSG_RESULT(yes)
4774 else
4775     AC_MSG_RESULT(no)
4779 #################################################
4780 # check for ACL support
4782 AC_MSG_CHECKING(whether to support ACLs)
4783 AC_ARG_WITH(acl-support,
4784 [  --with-acl-support      Include ACL support (default=no)],
4785 [ case "$withval" in
4786   yes)
4788         case "$host_os" in
4789         *sysv5*)
4790                 AC_MSG_RESULT(Using UnixWare ACLs)
4791                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4792                 default_static_modules="$default_static_modules vfs_solarisacl"
4793                 ;;
4794         *solaris*)
4795                 AC_MSG_RESULT(Using solaris ACLs)
4796                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4797                 ACL_LIBS="$ACL_LIBS -lsec"
4798                 default_static_modules="$default_static_modules vfs_solarisacl"
4799                 ;;
4800         *hpux*)
4801                 AC_MSG_RESULT(Using HPUX ACLs)
4802                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4803                 default_static_modules="$default_static_modules vfs_hpuxacl"
4804                 ;;
4805         *irix*)
4806                 AC_MSG_RESULT(Using IRIX ACLs)
4807                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4808                 default_static_modules="$default_static_modules vfs_irixacl"
4809                 ;;
4810         *aix*)
4811                 AC_MSG_RESULT(Using AIX ACLs)
4812                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4813                 default_static_modules="$default_static_modules vfs_aixacl"
4814                 ;;
4815         *osf*)
4816                 AC_MSG_RESULT(Using Tru64 ACLs)
4817                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4818                 ACL_LIBS="$ACL_LIBS -lpacl"
4819                 default_static_modules="$default_static_modules vfs_tru64acl"
4820                 ;;
4821         *freebsd[[5-9]]*)
4822                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4823                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4824                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4825                 ;;
4826         *linux*)
4827                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4828                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4829                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4830                         acl_LIBS=$LIBS
4831                         LIBS="$LIBS -lacl"
4832                         AC_TRY_LINK([
4833                                 #include <sys/types.h>
4834                                 #include <sys/acl.h>
4835                         ],[
4836                                 acl_t acl;
4837                                 int entry_id;
4838                                 acl_entry_t *entry_p;
4839                                 return acl_get_entry(acl, entry_id, entry_p);
4840                         ],
4841                         [samba_cv_HAVE_POSIX_ACLS=yes],
4842                         [samba_cv_HAVE_POSIX_ACLS=no])
4843                         LIBS=$acl_LIBS
4844                 ])
4845                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4846                         AC_MSG_RESULT(Using posix ACLs)
4847                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4848                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4849                                 acl_LIBS=$LIBS
4850                                 LIBS="$LIBS -lacl"
4851                                 AC_TRY_LINK([
4852                                         #include <sys/types.h>
4853                                         #include <sys/acl.h>
4854                                 ],[
4855                                         acl_permset_t permset_d;
4856                                         acl_perm_t perm;
4857                                         return acl_get_perm_np(permset_d, perm);
4858                                 ],
4859                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
4860                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
4861                                 LIBS=$acl_LIBS
4862                         ])
4863                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4864                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4865                         fi
4866                 fi
4867             ;;
4868          *)
4869                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4870                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4871                         acl_LIBS=$LIBS
4872                         LIBS="$LIBS -lacl"
4873                         AC_TRY_LINK([
4874                                 #include <sys/types.h>
4875                                 #include <sys/acl.h>
4876                         ],[
4877                                 acl_t acl;
4878                                 int entry_id;
4879                                 acl_entry_t *entry_p;
4880                                 return acl_get_entry( acl, entry_id, entry_p);
4881                         ],
4882                         [samba_cv_HAVE_POSIX_ACLS=yes],
4883                         [samba_cv_HAVE_POSIX_ACLS=no])
4884                         LIBS=$acl_LIBS
4885                 ])
4886                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4887                         AC_MSG_RESULT(Using posix ACLs)
4888                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4889                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4890                                 acl_LIBS=$LIBS
4891                                 LIBS="$LIBS -lacl"
4892                                 AC_TRY_LINK([
4893                                         #include <sys/types.h>
4894                                         #include <sys/acl.h>
4895                                 ],[
4896                                         acl_permset_t permset_d;
4897                                         acl_perm_t perm;
4898                                         return acl_get_perm_np( permset_d, perm);
4899                                 ],
4900                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
4901                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
4902                                 LIBS=$acl_LIBS
4903                         ])
4904                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4905                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4906                         fi
4907                 fi
4908             ;;
4909         esac
4910         ;;
4911   *)
4912     AC_MSG_RESULT(no)
4913     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4914     ;;
4915   esac ],
4916   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4917   AC_MSG_RESULT(no)
4920 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4921    default_static_modules="$default_static_modules vfs_posixacl"
4924 #################################################
4925 # check for AIO support
4927 AC_MSG_CHECKING(whether to support asynchronous io)
4928 AC_ARG_WITH(aio-support,
4929 [  --with-aio-support      Include asynchronous io support (default=no)],
4930 [ case "$withval" in
4931   yes)
4933         AC_MSG_RESULT(yes)
4934         case "$host_os" in
4935         *)
4936                 AIO_LIBS=$LIBS
4937                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
4938                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
4939                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4940                 aio_LIBS=$LIBS
4941                 LIBS=$AIO_LIBS
4942                 AC_TRY_LINK([#include <sys/types.h>
4943 #include <aio.h>],
4944 [ struct aiocb a; return aio_read(&a);],
4945 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4946                 LIBS=$aio_LIBS])
4947                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4948                 aio_LIBS=$LIBS
4949                 LIBS=$AIO_LIBS
4950                 AC_TRY_LINK([#include <sys/types.h>
4951 #include <aio.h>],
4952 [ struct aiocb64 a; return aio_read64(&a);],
4953 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4954                 LIBS=$aio_LIBS])
4955                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4956                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4957                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4958                         LIBS=$AIO_LIBS
4959                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4960                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4961                         LIBS=$AIO_LIBS
4962                 fi
4964                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4965                         AC_MSG_CHECKING(for aio_read)
4966                         AC_LINK_IFELSE([#include <aio.h>
4967 int main() { struct aiocb a; return aio_read(&a); }],
4968 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4969 [AC_MSG_RESULT(no)])
4971                         AC_MSG_CHECKING(for aio_write)
4972                         AC_LINK_IFELSE([#include <aio.h>
4973 int main() { struct aiocb a; return aio_write(&a); }],
4974 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4975 [AC_MSG_RESULT(no)])
4977                         AC_MSG_CHECKING(for aio_fsync)
4978                         AC_LINK_IFELSE([#include <aio.h>
4979 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4980 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4981 [AC_MSG_RESULT(no)])
4983                         AC_MSG_CHECKING(for aio_return)
4984                         AC_LINK_IFELSE([#include <aio.h>
4985 int main() { struct aiocb a; return aio_return(&a); }],
4986 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4987 [AC_MSG_RESULT(no)])
4989                         AC_MSG_CHECKING(for aio_error)
4990                         AC_LINK_IFELSE([#include <aio.h>
4991 int main() { struct aiocb a; return aio_error(&a); }],
4992 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4993 [AC_MSG_RESULT(no)])
4995                         AC_MSG_CHECKING(for aio_cancel)
4996                         AC_LINK_IFELSE([#include <aio.h>
4997 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4998 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4999 [AC_MSG_RESULT(no)])
5001                         AC_MSG_CHECKING(for aio_suspend)
5002                         AC_LINK_IFELSE([#include <aio.h>
5003 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5004 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5005 [AC_MSG_RESULT(no)])
5006                 fi
5008                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5009                         AC_MSG_CHECKING(for aio_read64)
5010                         AC_LINK_IFELSE([#include <aio.h>
5011 int main() { struct aiocb a; return aio_read64(&a); }],
5012 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5013 [AC_MSG_RESULT(no)])
5015                         AC_MSG_CHECKING(for aio_write64)
5016                         AC_LINK_IFELSE([#include <aio.h>
5017 int main() { struct aiocb a; return aio_write64(&a); }],
5018 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5019 [AC_MSG_RESULT(no)])
5021                         AC_MSG_CHECKING(for aio_fsync64)
5022                         AC_LINK_IFELSE([#include <aio.h>
5023 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5024 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5025 [AC_MSG_RESULT(no)])
5027                         AC_MSG_CHECKING(for aio_return64)
5028                         AC_LINK_IFELSE([#include <aio.h>
5029 int main() { struct aiocb a; return aio_return64(&a); }],
5030 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5031 [AC_MSG_RESULT(no)])
5033                         AC_MSG_CHECKING(for aio_error64)
5034                         AC_LINK_IFELSE([#include <aio.h>
5035 int main() { struct aiocb a; return aio_error64(&a); }],
5036 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5037 [AC_MSG_RESULT(no)])
5039                         AC_MSG_CHECKING(for aio_cancel64)
5040                         AC_LINK_IFELSE([#include <aio.h>
5041 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5042 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5043 [AC_MSG_RESULT(no)])
5045                         AC_MSG_CHECKING(for aio_suspend64)
5046                         AC_LINK_IFELSE([#include <aio.h>
5047 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5048 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5049 [AC_MSG_RESULT(no)])
5050                 fi
5051             ;;
5052         esac
5053         ;;
5054   *)
5055     AC_MSG_RESULT(no)
5056     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5057     ;;
5058   esac ],
5059   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5060   AC_MSG_RESULT(no)
5063 #################################################
5064 # check for sendfile support
5066 with_sendfile_support=yes
5067 AC_MSG_CHECKING(whether to check to support sendfile)
5068 AC_ARG_WITH(sendfile-support,
5069 [  --with-sendfile-support Check for sendfile support (default=yes)],
5070 [ case "$withval" in
5071   yes)
5073         AC_MSG_RESULT(yes);
5075         case "$host_os" in
5076         *linux*)
5077                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5078                 AC_TRY_LINK([#include <sys/sendfile.h>],
5080 int tofd, fromfd;
5081 off64_t offset;
5082 size_t total;
5083 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5085 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5087                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5088                 AC_TRY_LINK([#include <sys/sendfile.h>],
5090 int tofd, fromfd;
5091 off_t offset;
5092 size_t total;
5093 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5095 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5097 # Try and cope with broken Linux sendfile....
5098                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5099                 AC_TRY_LINK([\
5100 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5101 #undef _FILE_OFFSET_BITS
5102 #endif
5103 #include <sys/sendfile.h>],
5105 int tofd, fromfd;
5106 off_t offset;
5107 size_t total;
5108 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5110 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5112         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5113                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5114                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5115                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5116         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5117                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5118                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5119                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5120         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5121                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5122                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5123         else
5124                 AC_MSG_RESULT(no);
5125         fi
5127         ;;
5128         *freebsd* | *dragonfly* )
5129                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5130                 AC_TRY_LINK([\
5131 #include <sys/types.h>
5132 #include <unistd.h>
5133 #include <sys/socket.h>
5134 #include <sys/uio.h>],
5136         int fromfd, tofd, ret, total=0;
5137         off_t offset, nwritten;
5138         struct sf_hdtr hdr;
5139         struct iovec hdtrl;
5140         hdr.headers = &hdtrl;
5141         hdr.hdr_cnt = 1;
5142         hdr.trailers = NULL;
5143         hdr.trl_cnt = 0;
5144         hdtrl.iov_base = NULL;
5145         hdtrl.iov_len = 0;
5146         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5148 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5150         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5151                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5152                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5153                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5154         else
5155                 AC_MSG_RESULT(no);
5156         fi
5157         ;;
5159         *hpux*)
5160                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5161                 AC_TRY_LINK([\
5162 #include <sys/socket.h>
5163 #include <sys/uio.h>],
5165         int fromfd, tofd;
5166         size_t total=0;
5167         struct iovec hdtrl[2];
5168         ssize_t nwritten;
5169         off64_t offset;
5171         hdtrl[0].iov_base = 0;
5172         hdtrl[0].iov_len = 0;
5174         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5176 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5177         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5178                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5179                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5180                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5181         else
5182                 AC_MSG_RESULT(no);
5183         fi
5185                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5186                 AC_TRY_LINK([\
5187 #include <sys/socket.h>
5188 #include <sys/uio.h>],
5190         int fromfd, tofd;
5191         size_t total=0;
5192         struct iovec hdtrl[2];
5193         ssize_t nwritten;
5194         off_t offset;
5196         hdtrl[0].iov_base = 0;
5197         hdtrl[0].iov_len = 0;
5199         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5201 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5202         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5203                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5204                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5205                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5206         else
5207                 AC_MSG_RESULT(no);
5208         fi
5209         ;;
5211         *solaris*)
5212                 AC_CHECK_LIB(sendfile,sendfilev)
5213                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5214                 AC_TRY_LINK([\
5215 #include <sys/sendfile.h>],
5217         int sfvcnt;
5218         size_t xferred;
5219         struct sendfilevec vec[2];
5220         ssize_t nwritten;
5221         int tofd;
5223         sfvcnt = 2;
5225         vec[0].sfv_fd = SFV_FD_SELF;
5226         vec[0].sfv_flag = 0;
5227         vec[0].sfv_off = 0;
5228         vec[0].sfv_len = 0;
5230         vec[1].sfv_fd = 0;
5231         vec[1].sfv_flag = 0;
5232         vec[1].sfv_off = 0;
5233         vec[1].sfv_len = 0;
5234         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5236 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5238         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5239                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5240                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5241                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5242         else
5243                 AC_MSG_RESULT(no);
5244         fi
5246                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5247                 AC_TRY_LINK([\
5248 #include <sys/sendfile.h>],
5250         int sfvcnt;
5251         size_t xferred;
5252         struct sendfilevec vec[2];
5253         ssize_t nwritten;
5254         int tofd;
5256         sfvcnt = 2;
5258         vec[0].sfv_fd = SFV_FD_SELF;
5259         vec[0].sfv_flag = 0;
5260         vec[0].sfv_off = 0;
5261         vec[0].sfv_len = 0;
5263         vec[1].sfv_fd = 0;
5264         vec[1].sfv_flag = 0;
5265         vec[1].sfv_off = 0;
5266         vec[1].sfv_len = 0;
5267         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5269 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5271         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5272                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5273                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5274                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5275         else
5276                 AC_MSG_RESULT(no);
5277         fi
5278         ;;
5279         *aix*)
5280                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5281                 AC_TRY_LINK([\
5282 #include <sys/socket.h>],
5284         int fromfd, tofd;
5285         size_t total=0;
5286         struct sf_parms hdtrl;
5287         ssize_t nwritten;
5288         off64_t offset;
5290         hdtrl.header_data = 0;
5291         hdtrl.header_length = 0;
5292         hdtrl.file_descriptor = fromfd;
5293         hdtrl.file_offset = 0;
5294         hdtrl.file_bytes = 0;
5295         hdtrl.trailer_data = 0;
5296         hdtrl.trailer_length = 0;
5298         nwritten = send_file(&tofd, &hdtrl, 0);
5300 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5301         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5302                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5303                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5304                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5305         else
5306                 AC_MSG_RESULT(no);
5307         fi
5308         ;;
5309         *)
5310         ;;
5311         esac
5312         ;;
5313   *)
5314     AC_MSG_RESULT(no)
5315     ;;
5316   esac ],
5317   AC_MSG_RESULT(yes)
5321 #################################################
5322 # Check whether winbind is supported on this platform.  If so we need to
5323 # build and install client programs, sbin programs and shared libraries
5325 AC_MSG_CHECKING(whether to build winbind)
5327 # Initially, the value of $host_os decides whether winbind is supported
5329 HAVE_WINBIND=yes
5331 # Define the winbind shared library name and any specific linker flags
5332 # it needs to be built with.
5334 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5335 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5336 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5337 NSSSONAMEVERSIONSUFFIX=""
5339 case "$host_os" in
5340         *linux*)
5341                 NSSSONAMEVERSIONSUFFIX=".2"
5342                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5343                 ;;
5344         *freebsd[[5-9]]*)
5345                 # FreeBSD winbind client is implemented as a wrapper around
5346                 # the Linux version.
5347                 NSSSONAMEVERSIONSUFFIX=".1"
5348                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5349                     nsswitch/winbind_nss_linux.o"
5350                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5351                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5352                 ;;
5353         *irix*)
5354                 # IRIX has differently named shared libraries
5355                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5356                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5357                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5358                 ;;
5359         *solaris*)
5360                 # Solaris winbind client is implemented as a wrapper around
5361                 # the Linux version.
5362                 NSSSONAMEVERSIONSUFFIX=".1"
5363                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5364                     nsswitch/winbind_nss_linux.o"
5365                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5366                 ;;
5367         *hpux11*)
5368                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5369                 ;;
5370         *aix*)
5371                 # AIX has even differently named shared libraries.  No
5372                 # WINS support has been implemented yet.
5373                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5374                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5375                 WINBIND_NSS="nsswitch/WINBIND"
5376                 WINBIND_WINS_NSS=""
5377                 ;;
5378         *)
5379                 HAVE_WINBIND=no
5380                 winbind_no_reason=", unsupported on $host_os"
5381                 ;;
5382 esac
5384 AC_SUBST(WINBIND_NSS)
5385 AC_SUBST(WINBIND_WINS_NSS)
5386 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5387 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5388 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5389 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5391 # Check the setting of --with-winbind
5393 AC_ARG_WITH(winbind,
5394 [  --with-winbind          Build winbind (default, if supported by OS)],
5396   case "$withval" in
5397         yes)
5398                 HAVE_WINBIND=yes
5399                 ;;
5400         no)
5401                 HAVE_WINBIND=no
5402                 winbind_reason=""
5403                 ;;
5404   esac ],
5407 # We need unix domain sockets for winbind
5409 if test x"$HAVE_WINBIND" = x"yes"; then
5410         if test x"$samba_cv_unixsocket" = x"no"; then
5411                 winbind_no_reason=", no unix domain socket support on $host_os"
5412                 HAVE_WINBIND=no
5413         fi
5416 # Display test results
5418 if test x"$HAVE_WINBIND" = x"yes"; then
5419         AC_MSG_RESULT(yes)
5420         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5422         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5423         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5424         if test $BLDSHARED = true; then
5425                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
5427                 if test x"$with_pam" = x"yes"; then
5428                         PAM_MODULES="$PAM_MODULES pam_winbind"
5429                         INSTALL_PAM_MODULES="installpammodules"
5430                         UNINSTALL_PAM_MODULES="uninstallpammodules"
5431                 fi
5432         fi
5433 else
5434         AC_MSG_RESULT(no$winbind_no_reason)
5437 # Solaris 10 does have new member in nss_XbyY_key
5438 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5439                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5440                 [#include <nss_dbdefs.h>])
5442 # Solaris has some extra fields in struct passwd that need to be
5443 # initialised otherwise nscd crashes.  
5445 AC_CHECK_MEMBER(struct passwd.pw_comment,
5446                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5447                 [#include <pwd.h>])
5449 AC_CHECK_MEMBER(struct passwd.pw_age,
5450                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5451                 [#include <pwd.h>])
5453 # AIX 4.3.x and 5.1 do not have as many members in
5454 # struct secmethod_table as AIX 5.2
5455 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5456        [#include <usersec.h>])
5457 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5458        [#include <usersec.h>])
5461 #################################################
5462 # Check to see if we should use the included popt 
5464 AC_ARG_WITH(included-popt,
5465 [  --with-included-popt    use bundled popt library, not from system],
5467   case "$withval" in
5468         yes)
5469                 INCLUDED_POPT=yes
5470                 ;;
5471         no)
5472                 INCLUDED_POPT=no
5473                 ;;
5474   esac ],
5476 if test x"$INCLUDED_POPT" != x"yes"; then
5477     AC_CHECK_LIB(popt, poptGetContext,
5478                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5481 AC_MSG_CHECKING(whether to use included popt)
5482 if test x"$INCLUDED_POPT" = x"yes"; then
5483     AC_MSG_RESULT(yes)
5484     BUILD_POPT='$(POPT_OBJS)'
5485         POPTLIBS='$(POPT_OBJS)'
5486     FLAGS1="-I\$(srcdir)/popt"
5487 else
5488     AC_MSG_RESULT(no)
5489         BUILD_POPT=""
5490     POPTLIBS="-lpopt"
5492 AC_SUBST(BUILD_POPT)
5493 AC_SUBST(POPTLIBS)
5494 AC_SUBST(FLAGS1)
5496 #################################################
5497 # Check to see if we should use the included iniparser 
5499 AC_ARG_WITH(included-iniparser,
5500 [  --with-included-iniparser    use bundled iniparser library, not from system],
5502   case "$withval" in
5503         yes)
5504                 INCLUDED_INIPARSER=yes
5505                 ;;
5506         no)
5507                 INCLUDED_INIPARSER=no
5508                 ;;
5509   esac ],
5511 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5512     AC_CHECK_LIB(iniparser, iniparser_load,
5513                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5516 AC_MSG_CHECKING(whether to use included iniparser)
5517 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5518     AC_MSG_RESULT(yes)
5519     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5520         INIPARSERLIBS=""
5521     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5522 else
5523     AC_MSG_RESULT(no)
5524         BUILD_INIPARSER=""
5525     INIPARSERLIBS="-liniparser"
5527 AC_SUBST(BUILD_INIPARSER)
5528 AC_SUBST(INIPARSERLIBS)
5529 AC_SUBST(FLAGS1)
5533 #################################################
5534 # Check if the user wants Python
5536 # At the moment, you can use this to set which Python binary to link
5537 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5538 # though they can coexist in different directories.)  In the future
5539 # this might make the Python stuff be built by default.
5541 # Defaulting python breaks the clean target if python isn't installed
5543 PYTHON=
5545 AC_ARG_WITH(python,
5546 [  --with-python=PYTHONNAME  build Python libraries],
5547 [ case "${withval-python}" in
5548   yes)
5549         PYTHON=python
5550         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5551         ;;
5552   no)
5553         PYTHON=
5554         ;;
5555   *)
5556         PYTHON=${withval-python}
5557         ;;
5558   esac ])
5559 AC_SUBST(PYTHON)
5561 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5563         eval MODULE_DEFAULT_$i=STATIC
5564 done
5566 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5568         dnl Fall back to static if we cannot build shared libraries
5569         eval MODULE_DEFAULT_$i=STATIC
5571         if test $BLDSHARED = true; then
5572                 eval MODULE_DEFAULT_$i=SHARED
5573         fi
5574 done
5576 dnl Always built these modules static
5577 MODULE_rpc_spoolss=STATIC
5578 MODULE_rpc_srv=STATIC
5579 MODULE_idmap_tdb=STATIC
5581 AC_ARG_WITH(static-modules,
5582 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
5583 [ if test $withval; then
5584         for i in `echo $withval | sed -e 's/,/ /g'`
5585         do
5586                 eval MODULE_$i=STATIC
5587         done
5588 fi ])
5590 AC_ARG_WITH(shared-modules,
5591 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
5592 [ if test $withval; then
5593         for i in `echo $withval | sed -e 's/,/ /g'`
5594         do
5595                         eval MODULE_$i=SHARED
5596         done
5597 fi ])
5599 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
5600                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5601 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5602 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5603 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5606 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5607 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5608 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5609 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5610 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
5611 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
5612 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5613 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5614 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
5615 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5616 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
5617 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5618 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
5619 SMB_SUBSYSTEM(RPC,smbd/server.o)
5621 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
5622 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
5623 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
5624 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
5625 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
5627 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5628 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5629 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5630 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5631 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5633 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5634 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5635 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5636 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5637 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5638 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5639 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5640 SMB_SUBSYSTEM(AUTH,auth/auth.o)
5642 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
5643 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
5644 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
5645 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
5646 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
5647 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
5648 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
5649 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
5650 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
5651 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
5652 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
5653 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
5654 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
5655 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
5656 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
5657 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
5658 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
5659 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
5660 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
5661 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
5662 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
5663 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
5665 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5667 #################################################
5668 # do extra things if we are running insure
5670 if test "${ac_cv_prog_CC}" = "insure"; then
5671         CPPFLAGS="$CPPFLAGS -D__INSURE__"
5674 #################################################
5675 # Display summary of libraries detected
5677 AC_MSG_RESULT([Using libraries:])
5678 AC_MSG_RESULT([    LIBS = $LIBS])
5679 if test x"$with_ads_support" != x"no"; then
5680    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
5682 if test x"$with_ldap_support" != x"no"; then
5683    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
5685 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
5687 #################################################
5688 # final configure stuff
5690 AC_MSG_CHECKING([configure summary])
5691 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
5692            AC_MSG_RESULT(yes),
5693            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5694            AC_MSG_WARN([cannot run when cross-compiling]))
5696 builddir=`pwd`
5697 AC_SUBST(builddir)
5699 # Stuff the smbd-only libraries at the end of the smbd link
5700 # path (if we have them).
5701 SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs"
5702 AC_SUBST(SMBD_LIBS)
5704 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5705 LIB_REMOVE_USR_LIB(LDFLAGS)
5706 LIB_REMOVE_USR_LIB(LIBS)
5708 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5709 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5710 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5712 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
5714 #################################################
5715 # Print very concise instructions on building/use
5716 if test "x$enable_dmalloc" = xyes
5717 then
5718         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5719         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])