r16344: Allow to set passwords directly when creating users via "net rpc user
[Samba.git] / source / configure.in
blob9dce9e0e2c92a0da462e4868db764b258fbfad64
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(NSSSONAMEVERSIONSUFFIX)
246 AC_SUBST(SHLD)
247 AC_SUBST(HOST_OS)
248 AC_SUBST(PICFLAGS)
249 AC_SUBST(PICSUFFIX)
250 AC_SUBST(libc_cv_fpie)
251 AC_SUBST(PIE_CFLAGS)
252 AC_SUBST(PIE_LDFLAGS)
253 AC_SUBST(SHLIBEXT)
254 AC_SUBST(INSTALLLIBCMD_SH)
255 AC_SUBST(INSTALLLIBCMD_A)
256 AC_SUBST(UNINSTALLLIBCMD_SH)
257 AC_SUBST(UNINSTALLLIBCMD_A)
258 AC_SUBST(INSTALL_LIBMSRPC)
259 AC_SUBST(UNINSTALL_LIBMSRPC)
260 AC_SUBST(LIBMSRPC_SHARED)
261 AC_SUBST(LIBMSRPC)
262 AC_SUBST(INSTALL_LIBSMBCLIENT)
263 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
264 AC_SUBST(LIBSMBCLIENT_SHARED)
265 AC_SUBST(LIBSMBCLIENT)
266 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
267 AC_SUBST(LIBSMBSHAREMODES_SHARED)
268 AC_SUBST(LIBSMBSHAREMODES)
269 AC_SUBST(PRINT_LIBS)
270 AC_SUBST(AUTH_LIBS)
271 AC_SUBST(ACL_LIBS)
272 AC_SUBST(PASSDB_LIBS)
273 AC_SUBST(IDMAP_LIBS)
274 AC_SUBST(KRB5_LIBS)
275 AC_SUBST(LDAP_LIBS)
276 AC_SUBST(SHLIB_PROGS)
277 AC_SUBST(PAM_MODULES)
278 AC_SUBST(INSTALL_PAM_MODULES)
279 AC_SUBST(UNINSTALL_PAM_MODULES)
280 AC_SUBST(SMBWRAPPER)
281 AC_SUBST(SMBWRAP_OBJS)
282 AC_SUBST(SMBWRAP_INC)
283 AC_SUBST(EXTRA_BIN_PROGS)
284 AC_SUBST(CIFSMOUNT_PROGS)
285 AC_SUBST(INSTALL_CIFSMOUNT)
286 AC_SUBST(UNINSTALL_CIFSMOUNT)
287 AC_SUBST(EXTRA_SBIN_PROGS)
288 AC_SUBST(EXTRA_ALL_TARGETS)
289 AC_SUBST(CONFIG_LIBS)
290 AC_SUBST(NSCD_LIBS)
292 # Set defaults
293 PIE_CFLAGS=""
294 PIE_LDFLAGS=""
295 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
297 if test "x$enable_pie" != xno
298 then
299         AC_CACHE_CHECK(for -fPIE, libc_cv_fpie, [dnl
300                 cat > conftest.c <<EOF
301 int foo;
302 main () { return 0;}
304                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
305                 then
306                         libc_cv_fpie=yes
307                         PIE_CFLAGS="-fPIE"
308                         PIE_LDFLAGS="-pie"
309                 fi
310                 rm -f conftest*])
312 if test "x$PIE_CFLAGS" = x
313 then
314         libc_cv_fpie=no
317 AC_ARG_ENABLE(debug, 
318 [  --enable-debug          Turn on compiler debugging information (default=no)],
319     [if eval "test x$enable_debug = xyes"; then
320         CFLAGS="${CFLAGS} -g"
321     fi])
323 AC_SUBST(SOCKWRAP)
324 AC_ARG_ENABLE(socket-wrapper, 
325 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)],
326     [if eval "test x$enable_socket_wrapper = xyes"; then
327         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
328         SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
329     fi])
331 #################################################
332 # set prefix for 'make test'
333 selftest_prefix="./"
334 AC_SUBST(selftest_prefix)
335 AC_ARG_WITH(selftest-prefix,
336 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
337 [ case "$withval" in
338   yes|no)
339     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
340   ;;
341   * )
342     selftest_prefix="$withval"
343     ;;
344   esac
347 #################################################
348 # set path of samba4's smbtorture
349 smbtorture4_path=""
350 AC_SUBST(smbtorture4_path)
351 AC_ARG_WITH(smbtorture4_path,
352 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
353 [ case "$withval" in
354   yes|no)
355     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
356   ;;
357   * )
358     smbtorture4_path="$withval"
359     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
360         AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
361     fi
362   ;;
363  esac
366 # compile with optimization and without debugging by default, but
367 # allow people to set their own preference.
368 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
369 # if it has no value.  This prevent *very* large debug binaries from occurring
370 # by default.
371 if test "x$CFLAGS" = x; then
372   CFLAGS="-O"
375 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_"
377 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
378     [if eval "test x$enable_developer = xyes"; then
379         developer=yes
380         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
381         # Add -Wdeclaration-after-statement if compiler supports it
382         AC_CACHE_CHECK(
383           [that the C compiler understands -Wdeclaration-after-statement],
384           samba_cv_HAVE_Wdeclaration_after_statement, [
385           AC_TRY_RUN_STRICT([
386             int main(void)
387             {
388                 return 0;
389             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
390             samba_cv_HAVE_Wdeclaration_after_statement=yes,
391             samba_cv_HAVE_Wdeclaration_after_statement=no,
392             samba_cv_HAVE_Wdeclaration_after_statement=cross)
393        ])
394        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
395             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
396        fi
397     fi])
399 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
400     [if eval "test x$enable_krb5developer = xyes"; then
401         developer=yes
402         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
403     fi])
405 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
407 if test "x$enable_dmalloc" = xyes
408 then
409         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
410         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
411                   [Define to check invariants around some common functions])
412         LIBS="$LIBS -ldmalloc"  
415 #################################################
416 # check for a shared memory profiling support
417 AC_MSG_CHECKING(whether to use profiling)
418 AC_ARG_WITH(profiling-data,
419 [  --with-profiling-data   Include gathering source code profile information (default=no)],
420 [ case "$withval" in
421   yes)
422     AC_MSG_RESULT(yes)
423     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
424     samba_cv_WITH_PROFILE=yes
425     ;;
426   *)
427     AC_MSG_RESULT(no)
428     samba_cv_WITH_PROFILE=no
429     ;;
430   esac ],
431   AC_MSG_RESULT(no)
434 dnl Checks for programs.
437 ## for some reason this macro resets the CFLAGS
438 ## so save and restore
440 OLD_CFLAGS=${CFLAGS}
441 AC_PROG_CC
442 CFLAGS=${OLD_CFLAGS}
444 OLD_CFLAGS=${CFLAGS}
445 AC_PROG_CPP
446 CFLAGS=${OLD_CFLAGS}
448 AC_PROG_INSTALL
449 AC_PROG_AWK
450 AC_PATH_PROG(PERL, perl)
452 AC_CHECK_TOOL(AR, ar)
454 dnl Check if we use GNU ld
455 LD=ld
456 AC_PROG_LD_GNU
458 dnl Certain versions of GNU ld the default is not to have the 
459 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
460 dnl warnings when building modules.
461 if test "$ac_cv_prog_gnu_ld" = "yes"; then
462         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
463         AC_MSG_CHECKING(GNU ld release date)
464         changequote(,)dnl
465         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'`
466         changequote([,])dnl
467         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
468         if test -n "$ac_cv_gnu_ld_date"; then
469         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
470                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
471         fi
472         else
473            AC_MSG_CHECKING(GNU ld release version)
474            changequote(,)dnl
475            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
476            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
477            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
478            changequote([,])dnl
479            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
480            AC_MSG_CHECKING(GNU ld release version major)
481            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
482            AC_MSG_CHECKING(GNU ld release version minor)
483            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
484            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
485              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
486            fi
487         fi
490 dnl needed before AC_TRY_COMPILE
491 AC_ISC_POSIX
493 dnl look for executable suffix
494 AC_EXEEXT
496 dnl Check if C compiler understands -c and -o at the same time
497 AC_PROG_CC_C_O
498 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
499       BROKEN_CC=
500 else
501       BROKEN_CC=#
503 AC_SUBST(BROKEN_CC)
505 dnl Check if the C compiler understands -Werror
506 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
507  AC_TRY_RUN_STRICT([
508   int main(void)
509   {
510         return 0;
511   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
512   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
513 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
514    Werror_FLAGS="-Werror"
515 else 
516 dnl Check if the C compiler understands -w2
517 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
518  AC_TRY_RUN_STRICT([
519   int main(void)
520   {
521         return 0;
522   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
523   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
524 if test x"$samba_cv_HAVE_w2" = x"yes"; then
525    Werror_FLAGS="-w2"
529 dnl Check if the C compiler understands volatile (it should, being ANSI).
530 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
531     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
532         samba_cv_volatile=yes,samba_cv_volatile=no)])
533 if test x"$samba_cv_volatile" = x"yes"; then
534    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
537 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
538 AC_MSG_CHECKING(uname -s)
539 AC_MSG_RESULT(${UNAME_S})
541 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
542 AC_MSG_CHECKING(uname -r)
543 AC_MSG_RESULT(${UNAME_R})
545 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
546 AC_MSG_CHECKING(uname -m)
547 AC_MSG_RESULT(${UNAME_M})
549 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
550 AC_MSG_CHECKING(uname -p)
551 AC_MSG_RESULT(${UNAME_P})
553 AC_CANONICAL_SYSTEM
555 dnl Add #include for broken IRIX header files
556   case "$host_os" in
557         *irix6*) AC_ADD_INCLUDE(<standards.h>)
558         ;;
559 esac
561 AC_VALIDATE_CACHE_SYSTEM_TYPE
563 DYNEXP=
565 dnl Add modules that have to be built by default here
566 dnl These have to be built static:
567 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"
569 dnl These are preferably build shared, and static if dlopen() is not available
570 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"
572 if test "x$developer" = xyes; then
573    default_static_modules="$default_static_modules rpc_echo"
574    default_shared_modules="$default_shared_modules charset_weird"
578 # Config CPPFLAG settings for strange OS's that must be set
579 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
580 # case statement; its first reference must be unconditional.
582 case "$host_os" in
583 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
584     *hpux*)
585     
586       AC_PROG_CC_FLAG(Ae)
587       # mmap on HPUX is completely broken...
588       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
589       if test $ac_cv_prog_cc_Ae = yes; then
590         CPPFLAGS="$CPPFLAGS -Ae"
591       fi
593 # Defines needed for HPUX support.
594 # HPUX has bigcrypt but (sometimes?) doesn't use it for
595 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
597       case `uname -r` in
598                         *9*|*10*)
599                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
600                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
601                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
602                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
603                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
604                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
605                                 ;;
606                         *11*)
607                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
608                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
609                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
610                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
611                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
612                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
613                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
614                                 ;;
615       esac
616       ;;
619 # CRAY Unicos has broken const handling
620        *unicos*)
621           AC_MSG_RESULT([disabling const])
622           CPPFLAGS="$CPPFLAGS -Dconst="
623           ;;
624         
626 # AIX4.x doesn't even admit to having large
627 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
629     *aix4*)
630           AC_MSG_RESULT([enabling large file support])
631       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
632           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
633       ;;    
635 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
636 # to the existance of large files..
637 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
638 # recommendations on large file support, however it makes the
639 # compile work using gcc 2.7 and 2.8, whereas using the Sun
640 # recommendation makes the compile fail on gcc2.7. JRA.
642 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
644         *solaris*)
645                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
646                 case `uname -r` in
647                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
648                                 AC_MSG_RESULT([no large file support])
649                                 ;;
650                         5.*)
651                         AC_MSG_RESULT([enabling large file support])
652                         if test "$ac_cv_prog_gcc" = yes; then
653                                 ${CC-cc} -v >conftest.c 2>&1
654                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
655                                 rm -fr conftest.c
656                                 case "$ac_cv_gcc_compiler_version_number" in
657                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
658                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
659                                                 LDFLAGS="$LDFLAGS -lthread"
660                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
661                                                 ;;
662                                         *)
663                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
664                                                 LDFLAGS="$LDFLAGS -lthread"
665                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
666                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
667                                                 ;;
668                                 esac
669                         else
670                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
671                                 LDFLAGS="$LDFLAGS -lthread"
672                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
673                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
674                         fi
675                         ;;
676                 esac
677                 ;;
679 # IRIX uses SYSV printing.  Make sure to set that here
681         *irix*)
682                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
683                 ;;
684         *freebsd*|*dragonfly*)
685                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
686                 ;;
688 # VOS may need to have POSIX support and System V compatibility enabled.
690     *vos*)
691     case "$CPPFLAGS" in
692           *-D_POSIX_C_SOURCE*)
693                 ;;
694           *)
695                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
696                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
697                 ;;
698     esac
699     case "$CPPFLAGS" in
700           *-D_SYSV*|*-D_SVID_SOURCE*)
701                 ;;
702           *)
703                 CPPFLAGS="$CPPFLAGS -D_SYSV"
704                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
705     esac
706     ;;
708 # Tests needed for SINIX large file support.
710     *sysv4*)
711       if test $host = mips-sni-sysv4 ; then
712         AC_MSG_CHECKING([for LFS support])
713         old_CPPFLAGS="$CPPFLAGS"
714         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
715         AC_TRY_RUN([
716 #include <unistd.h>
717 main () {
718 #if _LFS64_LARGEFILE == 1
719 exit(0);
720 #else
721 exit(1);
722 #endif
723 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
724         CPPFLAGS="$old_CPPFLAGS"
725         if test x$SINIX_LFS_SUPPORT = xyes ; then
726           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
727                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
728           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
729           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
730           LIBS="`getconf LFS64_LIBS` $LIBS"
731         fi
732       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
733       fi
734     ;;
736 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
738     *linux*)
739         AC_MSG_CHECKING([for LFS support])
740         old_CPPFLAGS="$CPPFLAGS"
741         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
742        AC_TRY_RUN([
743 #include <unistd.h>
744 #include <sys/utsname.h>
745 #include <string.h>
746 #include <stdlib.h>
747 main() {
748 #if _LFS64_LARGEFILE == 1
749        struct utsname uts;
750        char *release;
751        int major, minor;
753        /* Ensure this is glibc 2.2 or higher */
754 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
755        int libc_major = __GLIBC__;
756        int libc_minor = __GLIBC_MINOR__;
758        if (libc_major < 2)
759               exit(1);
760        if (libc_minor < 2)
761               exit(1);
762 #endif
764        /* Ensure this is kernel 2.4 or higher */
766        uname(&uts);
767        release = strdup(uts.release);
768        major = atoi(strsep(&release, "."));
769        minor = atoi(strsep(&release, "."));
771        if (major > 2 || (major == 2 && minor > 3))
772                exit(0);
773        exit(1);
774 #else
775        exit(1);
776 #endif
778 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
779         CPPFLAGS="$old_CPPFLAGS"
780         if test x$LINUX_LFS_SUPPORT = xyes ; then
781                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
782                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
783                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
784                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
785         fi
786         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
787         ;;
790 # MacOS X is the *only* system that uses compose character in utf8. This
791 # is so horribly broken....
793     *darwin*)
794         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
795 # Add Fink directories for various packages, like dlcompat.
796 # Note: iconv does that explicitly below, but other packages
797 # don't.
798         CPPFLAGS="$CPPFLAGS -I/sw/include"
799         LDFLAGS="$LDFLAGS -L/sw/lib"
801 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
802 # use that instead of plain dlsym.
804         AC_CHECK_LIB(dl,dlopen)
805         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
807 # Add a system specific charset module.
809         default_shared_modules="$default_shared_modules charset_macosxfs"
810         ;;
811     *hurd*)
812         AC_MSG_CHECKING([for LFS support])
813         old_CPPFLAGS="$CPPFLAGS"
814         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
815         AC_TRY_RUN([
816 #include <unistd.h>
817 main () {
818 #if _LFS64_LARGEFILE == 1
819 exit(0);
820 #else
821 exit(1);
822 #endif
823 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
824         CPPFLAGS="$old_CPPFLAGS"
825         if test x$GLIBC_LFS_SUPPORT = xyes ; then
826           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
827                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
828           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
829         fi
830       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
831     ;;
833 esac
835 AC_INLINE
836 AC_HEADER_STDC
837 AC_HEADER_DIRENT
838 AC_HEADER_TIME
839 AC_HEADER_SYS_WAIT
840 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)
841 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
842 AC_CHECK_HEADERS(limits.h float.h)
843 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
844 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
845 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
846 AC_CHECK_HEADERS(sys/un.h)
847 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
848 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
849 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
850 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
851 AC_CHECK_HEADERS(langinfo.h locale.h)
853 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
854 #if HAVE_RPC_RPC_H
855 #include <rpc/rpc.h>
856 #endif
859 ## These fail to compile on IRIX so just check for their presence
860 AC_CHECK_HEADERS(sys/mode.h,,,)
862 # Look for Darwin headers
863 old_CPPFLAGS="$CPPFLAGS"
864 CPPFLAGS="-Iinclude $CPPFLAGS"
865 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
866 CPPFLAGS="$old_CPPFLAGS"
868 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
869 # subdirectory of headers.
870 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
872 # check for linux on amd64 since valgrind is not quite there yet
873 case "$host_os" in
874         *linux*)
875                 case "$UNAME_P" in
876                         *x86_64*)
877                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
878                                 ;;
879                 esac
880                 ;;
881 esac
885 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
886 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
888 case "$host_os" in
889     *hpux*)
890                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
891                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
892                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
893                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
894                 fi
895         ;;
896 esac
897 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
898 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
899 AC_CHECK_HEADERS(stropts.h poll.h)
900 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
902 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
903 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
905 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
907 AC_CHECK_HEADERS(netinet/ip.h,,,[[
908 #include <sys/types.h>
909 #if HAVE_SYS_SOCKET_H
910 #include <sys/socket.h>
911 #endif
912 #include <netinet/in.h>
913 #if HAVE_NETINET_IN_SYSTM_H
914 #include <netinet/in_systm.h>
915 #endif
918 AC_CHECK_HEADERS(net/if.h,,,[[
919 #include <sys/types.h>
920 #if HAVE_SYS_SOCKET_H
921 #include <sys/socket.h>
922 #endif
925 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
926 #if HAVE_SECURITY_PAM_APPL_H
927 #include <security/pam_appl.h>
928 #endif
931 # For experimental utmp support (lastlog on some BSD-like systems)
932 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
934 AC_CHECK_SIZEOF(int,cross)
935 AC_CHECK_SIZEOF(long,cross)
936 AC_CHECK_SIZEOF(long long,cross)
937 AC_CHECK_SIZEOF(short,cross)
939 AC_C_CONST
940 AC_C_INLINE
941 AC_C_BIGENDIAN
942 AC_C_CHAR_UNSIGNED
944 AC_TYPE_SIGNAL
945 AC_TYPE_UID_T
946 AC_TYPE_MODE_T
947 AC_TYPE_OFF_T
948 AC_TYPE_SIZE_T
949 AC_TYPE_PID_T
950 AC_STRUCT_ST_RDEV
951 AC_DIRENT_D_OFF
952 AC_CHECK_TYPE(ino_t,unsigned)
953 AC_CHECK_TYPE(loff_t,off_t)
954 AC_CHECK_TYPE(offset_t,loff_t)
955 AC_CHECK_TYPE(ssize_t, int)
956 AC_CHECK_TYPE(wchar_t, unsigned short)
958 ############################################
959 # for cups support we need libcups, and a handful of header files
961 AC_ARG_ENABLE(cups,
962 [  --enable-cups           Turn on CUPS support (default=auto)])
964 if test x$enable_cups != xno; then
965         AC_PATH_PROG(CUPS_CONFIG, cups-config)
967         if test "x$CUPS_CONFIG" != x; then
968                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
969                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
970                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
971                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
972         elif test x"$enable_cups" = x"yes"; then
973                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
974         fi
977 AC_ARG_ENABLE(iprint,
978 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
980 if test x$enable_iprint != xno; then
981         if test "x$CUPS_CONFIG" != x; then
982                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
983         elif test x"$enable_iprint" = x"yes"; then
984                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
985         fi
988 ############################################
989 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
990 AC_SEARCH_LIBS(dlopen, [dl])
991 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
993 ############################################
994 # check if the compiler can do immediate structures
995 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
996     AC_TRY_COMPILE([
997 #include <stdio.h>],
999    typedef struct {unsigned x;} FOOBAR;
1000    #define X_FOOBAR(x) ((FOOBAR) { x })
1001    #define FOO_ONE X_FOOBAR(1)
1002    FOOBAR f = FOO_ONE;   
1003    static struct {
1004         FOOBAR y; 
1005         } f2[] = {
1006                 {FOO_ONE}
1007         };   
1009         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
1010 if test x"$samba_cv_immediate_structures" = x"yes"; then
1011    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
1014 ############################################
1015 # check if the compiler can do immediate structures
1016 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1017     AC_TRY_LINK([
1018 #include <stdio.h>],
1020                 if (0) {
1021                    this_function_does_not_exist();
1022                 } else {
1023                   return 1;
1024                 }
1027         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1028 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1029    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1032 ############################################
1033 # check for unix domain sockets
1034 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1035     AC_TRY_COMPILE([
1036 #include <sys/types.h>
1037 #include <stdlib.h>
1038 #include <stddef.h>
1039 #include <sys/socket.h>
1040 #include <sys/un.h>],
1042   struct sockaddr_un sunaddr; 
1043   sunaddr.sun_family = AF_UNIX;
1045         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1046 if test x"$samba_cv_unixsocket" = x"yes"; then
1047    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1051 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1052     AC_TRY_COMPILE([
1053 #include <sys/types.h>
1054 #if STDC_HEADERS
1055 #include <stdlib.h>
1056 #include <stddef.h>
1057 #endif
1058 #include <sys/socket.h>],[socklen_t i = 0],
1059         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1060 if test x"$samba_cv_socklen_t" = x"yes"; then
1061    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1064 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1065     AC_TRY_COMPILE([
1066 #include <sys/types.h>
1067 #if STDC_HEADERS
1068 #include <stdlib.h>
1069 #include <stddef.h>
1070 #endif
1071 #include <signal.h>],[sig_atomic_t i = 0],
1072         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1073 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1074    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1077 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1078     AC_TRY_COMPILE([
1079 #include <sys/types.h>
1080 #if STDC_HEADERS
1081 #include <stdlib.h>
1082 #include <stddef.h>
1083 #endif
1084 #if TIME_WITH_SYS_TIME
1085 # include <sys/time.h>
1086 # include <time.h>
1087 #else
1088 # if HAVE_SYS_TIME_H
1089 #  include <sys/time.h>
1090 # else
1091 #  include <time.h>
1092 # endif
1093 #endif
1094 #if HAVE_AIO_H
1095 #include <aio.h>
1096 #endif
1097 ],[struct timespec ts;],
1098         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1099 if test x"$samba_cv_struct_timespec" = x"yes"; then
1100    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1103 # stupid headers have the functions but no declaration. grrrr.
1104 AC_HAVE_DECL(errno, [#include <errno.h>])
1105 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1106 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1107 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1108 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1109 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1110 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1112 # and glibc has setresuid under linux but the function does
1113 # nothing until kernel 2.1.44! very dumb.
1114 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1115     AC_TRY_RUN([#include <errno.h>
1116 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1117         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1118 if test x"$samba_cv_have_setresuid" = x"yes"; then
1119     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1122 # Do the same check for setresguid...
1124 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1125     AC_TRY_RUN([#include <unistd.h>
1126 #include <errno.h>
1127 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1128         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1129 if test x"$samba_cv_have_setresgid" = x"yes"; then
1130     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1133 AC_FUNC_MEMCMP
1135 ###############################################
1136 # Readline included by default unless explicitly asked not to
1137 test "${with_readline+set}" != "set" && with_readline=yes
1139 # test for where we get readline() from
1140 AC_MSG_CHECKING(whether to use readline)
1141 AC_ARG_WITH(readline,
1142 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1143 [  case "$with_readline" in
1144   yes)
1145     AC_MSG_RESULT(yes)
1147     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1148     AC_CHECK_HEADERS(readline/history.h)
1150     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1151       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1152        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1153       done
1154       AC_CHECK_LIB(readline, rl_callback_handler_install,
1155        [TERMLIBS="-lreadline $TERMLIBS"
1156        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1157        break], [TERMLIBS=], $TERMLIBS)])
1158     ;;
1159   no)
1160     AC_MSG_RESULT(no)
1161     ;;
1162   *)
1163     AC_MSG_RESULT(yes)
1165     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1166     # alternate readline path
1167     _ldflags=${LDFLAGS}
1168     _cppflags=${CPPFLAGS}
1170     # Add additional search path
1171     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1172     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1174     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1175     AC_CHECK_HEADERS(readline/history.h)
1177     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1178       for termlib in ncurses curses termcap terminfo termlib; do
1179        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1180       done
1181       AC_CHECK_LIB(readline, rl_callback_handler_install,
1182        [TERMLDFLAGS="-L$with_readline/lib"
1183        TERMCPPFLAGS="-I$with_readline/include"
1184        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1185        TERMLIBS="-lreadline $TERMLIBS"
1186        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1187        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1189     LDFLAGS=$_ldflags
1190     ;;
1191   esac],
1192   AC_MSG_RESULT(no)
1194 AC_SUBST(TERMLIBS)
1195 AC_SUBST(TERMLDFLAGS)
1197 # The readline API changed slightly from readline3 to readline4, so
1198 # code will generate warnings on one of them unless we have a few
1199 # special cases.
1200 AC_CHECK_LIB(readline, rl_completion_matches,
1201              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1202                         [Do we have rl_completion_matches?])],
1203              [],
1204              [$TERMLIBS])
1206 # The following test taken from the cvs sources
1207 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1208 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1209 # libsocket.so which has a bad implementation of gethostbyname (it
1210 # only looks in /etc/hosts), so we only look for -lsocket if we need
1211 # it.
1212 AC_CHECK_FUNCS(connect)
1213 if test x"$ac_cv_func_connect" = x"no"; then
1214     case "$LIBS" in
1215     *-lnsl*) ;;
1216     *) AC_CHECK_LIB(nsl_s, connect) ;;
1217     esac
1218     case "$LIBS" in
1219     *-lnsl*) ;;
1220     *) AC_CHECK_LIB(nsl, connect) ;;
1221     esac
1222     case "$LIBS" in
1223     *-lsocket*) ;;
1224     *) AC_CHECK_LIB(socket, connect) ;;
1225     esac
1226     case "$LIBS" in
1227     *-linet*) ;;
1228     *) AC_CHECK_LIB(inet, connect) ;;
1229     esac
1230     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1231     dnl has been cached.
1232     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1233        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1234         # ac_cv_func_connect=yes
1235         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1236         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1237     fi
1240 ###############################################
1241 # test for where we get yp_get_default_domain() from
1242 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1243 AC_CHECK_FUNCS(yp_get_default_domain)
1245 # Check if we have execl, if not we need to compile smbrun.
1246 AC_CHECK_FUNCS(execl)
1247 if test x"$ac_cv_func_execl" = x"no"; then
1248     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1251 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1252 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1253 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1254 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1255 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1256 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1257 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1258 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1259 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1260 AC_CHECK_FUNCS(getdents getdents64)
1261 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1262 AC_CHECK_FUNCS(syslog vsyslog timegm)
1263 AC_CHECK_FUNCS(setlocale nl_langinfo)
1264 AC_CHECK_FUNCS(nanosleep)
1265 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1266 AC_CHECK_HEADERS(sys/mman.h)
1267 # setbuffer, shmget, shm_open are needed for smbtorture
1268 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1270 # Find a method of generating a stack trace
1271 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1272 AC_CHECK_FUNCS(backtrace_symbols)
1273 AC_CHECK_LIB(exc, trace_back_stack)
1275 # Note that all the libunwind symbols in the API are defined to internal
1276 # platform-specific version, so we must include libunwind.h before checking
1277 # any of them.
1278 AC_MSG_CHECKING([for libunwind])
1279 save_LIBS=$LIBS
1280 if test x"$UNAME_P" = xunknown ; then
1281     # This probably won't link without the platform-specific libunwind.
1282     LIBS="$LIBS -lunwind"
1283 else
1284     # Add the platform-specific libunwind module. uname -p seems the most
1285     # plausible option and works for ia64, where libunwind is most useful.
1286     LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1289 AC_TRY_LINK(
1290     [
1291 #ifdef HAVE_LIBUNWIND_H
1292 #include <libunwind.h>
1293 #endif
1294     ],
1295     [
1296         unw_context_t ctx; unw_cursor_t cur;
1297         char buf[256]; unw_word_t off; 
1298         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1299         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1300     ],
1301     [
1302         AC_MSG_RESULT(yes)
1303         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1305         # If we have libunwind, test whether we also have libunwind-ptrace
1306         # which would let us unwind arbitrary processes.
1307         save_LIBS=$LIBS
1308         AC_CHECK_HEADERS(libunwind-ptrace.h)
1309         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1310             [
1311                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1312                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1313                     [Whether libunwind-ptrace.a is available.])
1314             ],
1315             [ LIBUNWIND_PTRACE="" ])
1317         LIBS=$save_LIBS
1318     ],
1319     [
1320         AC_MSG_RESULT(no)
1321         LIBS=$save_LIBS
1322     ])
1324 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1325 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1326     AC_CHECK_HEADERS(sys/ptrace.h)
1327     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1328     AC_TRY_LINK(
1329             [
1330 #if HAVE_SYS_TYPES_H
1331 #include <sys/types.h>
1332 #endif
1333 #if HAVE_SYS_PTRACE_H
1334 #include <sys/ptrace.h>
1335 #endif
1336             ],
1337             [
1338                 int main(int argc, const char ** argv)
1339                 {
1340                         pid_t me = (pid_t)-1;
1341                         ptrace(PTRACE_ATTACH, me, 0, 0);
1342                         ptrace(PTRACE_DETACH, me, 0, 0);
1343                         return 0;
1344                 }
1345             ],
1346             [
1347                 AC_MSG_RESULT(yes)
1348                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1349                     [Whether the Linux ptrace(2) interface is available.])
1350             ],
1351             [
1352                 AC_MSG_RESULT(no)
1353                 LIBUNWIND_PTRACE=""
1354             ])
1357 AC_SUBST(LIBUNWIND_PTRACE)
1359 # syscall() is needed for smbwrapper.
1360 AC_CHECK_FUNCS(syscall)
1362 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1363 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1364 AC_CHECK_FUNCS(__getcwd _getcwd)
1365 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1366 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1367 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1368 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1369 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1370 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1371 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1372 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1373 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1374 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1375 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1376 AC_CHECK_FUNCS(prctl)
1378 AC_TRY_COMPILE([
1379 #ifdef HAVE_SYS_PRCTL_H
1380 #include <sys/prctl.h>
1381 #endif
1383 [int i; i = prtcl(0); ],
1384 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1389 case "$host_os" in
1390     *linux*)
1391        # glibc <= 2.3.2 has a broken getgrouplist
1392        AC_TRY_RUN([
1393 #include <unistd.h>
1394 #include <sys/utsname.h>
1395 main() {
1396        /* glibc up to 2.3 has a broken getgrouplist */
1397 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1398        int libc_major = __GLIBC__;
1399        int libc_minor = __GLIBC_MINOR__;
1401        if (libc_major < 2)
1402               exit(1);
1403        if ((libc_major == 2) && (libc_minor <= 3))
1404               exit(1);
1405 #endif
1406        exit(0);
1408 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1409        if test x"$linux_getgrouplist_ok" = x"yes"; then
1410           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1411        fi
1412        ;;
1413     *)
1414        AC_CHECK_FUNCS(getgrouplist)
1415        ;;
1416 esac
1419 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1422 if test x$ac_cv_func_stat64 = xno ; then
1423   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1424   AC_TRY_LINK([
1425 #if defined(HAVE_UNISTD_H)
1426 #include <unistd.h>
1427 #endif
1428 #include <sys/stat.h>
1429 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1430   AC_MSG_RESULT([$ac_cv_func_stat64])
1431   if test x$ac_cv_func_stat64 = xyes ; then
1432     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1433   fi
1436 if test x$ac_cv_func_lstat64 = xno ; then
1437   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1438   AC_TRY_LINK([
1439 #if defined(HAVE_UNISTD_H)
1440 #include <unistd.h>
1441 #endif
1442 #include <sys/stat.h>
1443 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1444   AC_MSG_RESULT([$ac_cv_func_lstat64])
1445   if test x$ac_cv_func_lstat64 = xyes ; then
1446     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1447   fi
1450 if test x$ac_cv_func_fstat64 = xno ; then
1451   AC_MSG_CHECKING([for fstat64 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(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1458   AC_MSG_RESULT([$ac_cv_func_fstat64])
1459   if test x$ac_cv_func_fstat64 = xyes ; then
1460     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1461   fi
1464 #################################################
1465 # Check whether struct stat has timestamps with sub-second resolution.
1466 # At least IRIX and Solaris have these.
1468 # We check that 
1469 #       all of st_mtim, st_atim and st_ctim exist
1470 #       all of the members are in fact of type struct timespec
1472 # There is some conflicting standards weirdness about whether we should use
1473 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1474 # prefer struct timespec.
1476 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1477     [
1478         AC_TRY_COMPILE(
1479             [
1480 #if TIME_WITH_SYS_TIME
1481 # include <sys/time.h>
1482 # include <time.h>
1483 #else
1484 # if HAVE_SYS_TIME_H
1485 #  include <sys/time.h>
1486 # else
1487 #  include <time.h>
1488 # endif
1489 #endif
1490 #ifdef HAVE_SYS_STAT_H
1491 #include <sys/stat.h>
1492 #endif
1493             ],
1494             [
1495                 struct timespec t;
1496                 struct stat s = {0};
1497                 t.tv_sec = s.st_mtim.tv_sec;
1498                 t.tv_nsec = s.st_mtim.tv_nsec;
1499                 t.tv_sec = s.st_ctim.tv_sec;
1500                 t.tv_nsec = s.st_ctim.tv_nsec;
1501                 t.tv_sec = s.st_atim.tv_sec;
1502                 t.tv_nsec = s.st_atim.tv_nsec;
1503             ],
1504             samba_stat_hires=yes, samba_stat_hires=no)
1505     ])
1507 if test x"$samba_stat_hires" = x"yes" ; then
1508     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1509     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1510     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1511     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1512             [whether struct stat has sub-second timestamps])
1515 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1516     [
1517         AC_TRY_COMPILE(
1518             [
1519 #if TIME_WITH_SYS_TIME
1520 # include <sys/time.h>
1521 # include <time.h>
1522 #else
1523 # if HAVE_SYS_TIME_H
1524 #  include <sys/time.h>
1525 # else
1526 #  include <time.h>
1527 # endif
1528 #endif
1529 #ifdef HAVE_SYS_STAT_H
1530 #include <sys/stat.h>
1531 #endif
1532             ],
1533             [
1534                 struct timespec t;
1535                 struct stat s = {0};
1536                 t.tv_sec = s.st_mtime;
1537                 t.tv_nsec = s.st_mtimensec;
1538                 t.tv_sec = s.st_ctime;
1539                 t.tv_nsec = s.st_ctimensec;
1540                 t.tv_sec = s.st_atime;
1541                 t.tv_nsec = s.st_atimensec;
1542             ],
1543             samba_stat_hires=yes, samba_stat_hires=no)
1544     ])
1546 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1547     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1548     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1549     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1550     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1551             [whether struct stat has sub-second timestamps without struct timespec])
1554 #####################################
1555 # needed for SRV lookups
1556 AC_CHECK_LIB(resolv, dn_expand)
1557 AC_CHECK_LIB(resolv, _dn_expand)
1558 AC_CHECK_LIB(resolv, __dn_expand)
1561 # Check for the functions putprpwnam, set_auth_parameters,
1562 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1563 # Needed for OSF1 and HPUX.
1566 AC_LIBTESTFUNC(security, putprpwnam)
1567 AC_LIBTESTFUNC(sec, putprpwnam)
1569 AC_LIBTESTFUNC(security, set_auth_parameters)
1570 AC_LIBTESTFUNC(sec, set_auth_parameters)
1572 # UnixWare 7.x has its getspnam in -lgen
1573 AC_LIBTESTFUNC(gen, getspnam)
1575 AC_LIBTESTFUNC(security, getspnam)
1576 AC_LIBTESTFUNC(sec, getspnam)
1578 AC_LIBTESTFUNC(security, bigcrypt)
1579 AC_LIBTESTFUNC(sec, bigcrypt)
1581 AC_LIBTESTFUNC(security, getprpwnam)
1582 AC_LIBTESTFUNC(sec, getprpwnam)
1584 AC_CHECK_FUNCS(strsignal)
1586 ############################################
1587 # Check if we have libattr
1588 case "$host_os" in
1589   *osf*)
1590         AC_SEARCH_LIBS(getproplist, [proplist])
1591         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1592         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1593         AC_CHECK_FUNCS(sizeof_proplist_entry)
1594   ;;
1595   *)
1596         AC_SEARCH_LIBS(getxattr, [attr])
1597         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1598         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1599         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1600         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1601         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1602         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1603         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1604   ;;
1605 esac
1607 # Check if we have extattr
1608 case "$host_os" in
1609   *freebsd4* | *dragonfly* )
1610     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1611     ;;
1612   *)
1613     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1614     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1615     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1616     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1617     ;;
1618 esac
1620 # Assume non-shared by default and override below
1621 BLDSHARED="false"
1623 # these are the defaults, good for lots of systems
1624 HOST_OS="$host_os"
1625 LDSHFLAGS="-shared"
1626 SONAMEFLAG="#"
1627 NSSSONAMEVERSIONSUFFIX=""
1628 SHLD="\${CC} \${CFLAGS}"
1629 PICFLAGS=""
1630 PICSUFFIX="po"
1631 SHLIBEXT="so"
1633 if test "$enable_shared" = "yes"; then
1634   # this bit needs to be modified for each OS that is suported by
1635   # smbwrapper. You need to specify how to create a shared library and
1636   # how to compile C code to produce PIC object files
1638   AC_MSG_CHECKING([ability to build shared libraries])
1640   # and these are for particular systems
1641   case "$host_os" in
1642                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1643                         BLDSHARED="true"
1644                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1645                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1646                         else
1647                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1648                         fi
1649                         DYNEXP="-Wl,--export-dynamic"
1650                         PICFLAGS="-fPIC"
1651                         SONAMEFLAG="-Wl,-soname="
1652                         NSSSONAMEVERSIONSUFFIX=".2"
1653                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1654                         ;;
1655                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1656                         BLDSHARED="true"
1657                         LDSHFLAGS="-G"
1658                         SONAMEFLAG="-h "
1659                         if test "${GCC}" = "yes"; then
1660                                 PICFLAGS="-fPIC"
1661                                 SONAMEFLAG="-Wl,-soname="
1662                                 NSSSONAMEVERSIONSUFFIX=".1"
1663                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1664                                         DYNEXP="-Wl,-E"
1665                                 fi
1666                         else
1667                                 PICFLAGS="-KPIC"
1668                                 ## ${CFLAGS} added for building 64-bit shared 
1669                                 ## libs using Sun's Compiler
1670                                 LDSHFLAGS="-G \${CFLAGS}"
1671                                 PICSUFFIX="po.o"
1672                         fi
1673                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1674                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1675                         ;;
1676                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1677                         BLDSHARED="true"
1678                         LDSHFLAGS="-G"
1679                         SONAMEFLAG="-Wl,-h,"
1680                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1681                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1682                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1683                         ;;
1684                 *netbsd* | *freebsd* | *dragonfly* )  
1685                         BLDSHARED="true"
1686                         LDSHFLAGS="-shared"
1687                         DYNEXP="-Wl,--export-dynamic"
1688                         SONAMEFLAG="-Wl,-soname,"
1689                         PICFLAGS="-fPIC -DPIC"
1690                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1691                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1692                         ;;
1693                 *openbsd*)  BLDSHARED="true"
1694                         LDSHFLAGS="-shared"
1695                         DYNEXP="-Wl,-Bdynamic"
1696                         SONAMEFLAG="-Wl,-soname,"
1697                         PICFLAGS="-fPIC"
1698                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1699                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1700                         ;;
1701                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1702                         case "$host_os" in
1703                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1704                         ;;
1705                         esac
1706                         BLDSHARED="true"
1707                         LDSHFLAGS="-set_version sgi1.0 -shared"
1708                         SONAMEFLAG="-soname "
1709                         SHLD="\${LD}"
1710                         if test "${GCC}" = "yes"; then
1711                                 PICFLAGS="-fPIC"
1712                         else 
1713                                 PICFLAGS="-KPIC"
1714                         fi
1715                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1716                         ;;
1717                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1718                         BLDSHARED="true"
1719                         LDSHFLAGS="-Wl,-G,-bexpall"
1720                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1721                         PICFLAGS="-O2"
1722                         # as AIX code is always position independent...
1723                         # .po will just create compile warnings, use .o:
1724                         PICSUFFIX="o"
1725                         if test "${GCC}" != "yes"; then
1726                                 ## for funky AIX compiler using strncpy()
1727                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1728                         fi
1730                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1731                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1732                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1733                         ;;
1734                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1735                         # Use special PIC flags for the native HP-UX compiler.
1736                         if test $ac_cv_prog_cc_Ae = yes; then
1737                                 BLDSHARED="true"
1738                                 SHLD="cc"
1739                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1740                                 SONAMEFLAG="-Wl,+h "
1741                                 PICFLAGS="+z"
1742                         elif test "${GCC}" = "yes"; then
1743                                 PICFLAGS="-fPIC"
1744                         fi
1745                         if test "$host_cpu" = "ia64"; then
1746                                 SHLIBEXT="so"
1747                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1748                         else
1749                                 SHLIBEXT="sl"
1750                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1751                         fi
1752                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1753                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1754                         ;;
1755                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1756                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1757                         ;;
1758                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1759                         BLDSHARED="true"
1760                         LDSHFLAGS="-shared"
1761                         SONAMEFLAG="-Wl,-soname,"
1762                         PICFLAGS="-fPIC"
1763                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1764                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1765                         ;;
1766                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1767                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1768                         ;;
1769                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1770                         BLDSHARED="true"
1771                         LDSHFLAGS="-shared"
1772                         SONAMEFLAG="-Wl,-soname,"
1773                         PICFLAGS="-KPIC"
1774                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1775                         ;;
1776                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1777                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1778                         ;;
1779                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1780                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1781                         ;;
1782                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1783                         case "$host" in
1784                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1785                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1786                                         fi
1787                                         LDSHFLAGS="-G"
1788                                         DYNEXP="-Bexport"
1789                                 ;;
1790                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1791                         esac
1792                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1793                         ;;
1795                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1796                         if [ test "$GCC" != yes ]; then
1797                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1798                         fi
1799                         LDSHFLAGS="-G"
1800                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1801                         ;;
1802                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1803                         BLDSHARED="false"
1804                         LDSHFLAGS=""
1805                         ;;
1807                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1808                         BLDSHARED="true"
1809                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1810                         SHLIBEXT="dylib"
1811                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1812                         ;;
1814                 *)
1815                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1816                         ;;
1817   esac
1818   AC_SUBST(DYNEXP)
1819   AC_MSG_RESULT($BLDSHARED)
1820   AC_MSG_CHECKING([linker flags for shared libraries])
1821   AC_MSG_RESULT([$LDSHFLAGS])
1822   AC_MSG_CHECKING([compiler flags for position-independent code])
1823   AC_MSG_RESULT([$PICFLAGS])
1826 #######################################################
1827 # test whether building a shared library actually works
1828 if test $BLDSHARED = true; then
1829 AC_CACHE_CHECK([whether building shared libraries actually works], 
1830                [ac_cv_shlib_works],[
1831    # try building a trivial shared library
1832    ac_cv_shlib_works=no
1833    # The $SHLD and $LDSHFLAGS variables may contain references to other
1834    # variables so they need to be eval'ed.
1835    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1836         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1837    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1838         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1839    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1841 if test $ac_cv_shlib_works = no; then
1842    BLDSHARED=false
1846 ################
1848 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1849 AC_TRY_RUN([#include <stdio.h>
1850 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1851 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1852 if test x"$samba_cv_have_longlong" = x"yes"; then
1853     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1854     AC_CHECK_TYPE(intptr_t, unsigned long long)
1855 else
1856     AC_CHECK_TYPE(intptr_t, unsigned long)
1860 # Check if the compiler supports the LL prefix on long long integers.
1861 # AIX needs this.
1863 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1864     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1865         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1866 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1867    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1870   
1871 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1872 AC_TRY_RUN([#include <stdio.h>
1873 #include <sys/stat.h>
1874 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1875 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1876 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1877     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1880 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1881 AC_TRY_RUN([
1882 #if defined(HAVE_UNISTD_H)
1883 #include <unistd.h>
1884 #endif
1885 #include <stdio.h>
1886 #include <sys/stat.h>
1887 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1888 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1889 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1890     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1893 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1894 AC_TRY_RUN([
1895 #if defined(HAVE_UNISTD_H)
1896 #include <unistd.h>
1897 #endif
1898 #include <stdio.h>
1899 #include <sys/stat.h>
1900 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1901 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1902 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1903     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1906 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1907 AC_TRY_RUN([
1908 #if defined(HAVE_UNISTD_H)
1909 #include <unistd.h>
1910 #endif
1911 #include <stdio.h>
1912 #include <sys/stat.h>
1913 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1914 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1915 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1916     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1919 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1920 AC_TRY_RUN([
1921 #if defined(HAVE_UNISTD_H)
1922 #include <unistd.h>
1923 #endif
1924 #include <stdio.h>
1925 #include <sys/stat.h>
1926 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1927 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1928 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1929     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1932 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1933 AC_TRY_RUN([
1934 #if defined(HAVE_UNISTD_H)
1935 #include <unistd.h>
1936 #endif
1937 #include <stdio.h>
1938 #include <sys/stat.h>
1939 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1940 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1941 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1942     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1945 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1946 AC_TRY_COMPILE([
1947 #if defined(HAVE_UNISTD_H)
1948 #include <unistd.h>
1949 #endif
1950 #include <sys/types.h>
1951 #include <dirent.h>],
1952 [DIR64 de;],
1953 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1954 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1955     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1958 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1959 AC_TRY_COMPILE([
1960 #if defined(HAVE_UNISTD_H)
1961 #include <unistd.h>
1962 #endif
1963 #include <sys/types.h>
1964 #include <dirent.h>],
1965 [struct dirent64 de;],
1966 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1967 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1968     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1971 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1972 AC_TRY_RUN([
1973 #if defined(HAVE_UNISTD_H)
1974 #include <unistd.h>
1975 #endif
1976 #include <sys/types.h>
1977 main() { dev_t dev; int i = major(dev); return 0; }],
1978 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1979 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1980     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1983 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1984 AC_TRY_RUN([
1985 #if defined(HAVE_UNISTD_H)
1986 #include <unistd.h>
1987 #endif
1988 #include <sys/types.h>
1989 main() { dev_t dev; int i = minor(dev); return 0; }],
1990 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1991 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1992     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1995 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1996 AC_TRY_RUN([
1997 #if defined(HAVE_UNISTD_H)
1998 #include <unistd.h>
1999 #endif
2000 #include <sys/types.h>
2001 main() { dev_t dev = makedev(1,2); return 0; }],
2002 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2003 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2004     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2007 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2008 AC_TRY_RUN([#include <stdio.h>
2009 main() { char c; c=250; exit((c > 0)?0:1); }],
2010 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2011 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2012     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2015 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2016 AC_TRY_COMPILE([#include <sys/types.h>
2017 #include <sys/socket.h>
2018 #include <netinet/in.h>],
2019 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2020 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2021 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2022     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2025 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2026 AC_TRY_COMPILE([#include <sys/types.h>
2027 #include <dirent.h>
2028 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2029 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2030 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2031     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2034 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2035 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2036 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2037 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2038     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2041 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2042 AC_TRY_RUN([
2043 #include <sys/time.h>
2044 #include <unistd.h>
2045 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
2046            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
2047 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2048     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
2051 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2053     # On some systems (eg. Linux) librt can pull in libpthread. We
2054     # don't want this to happen because libpthreads changes signal delivery
2055     # semantics in ways we are not prepared for. This breaks Linux oplocks
2056     # which rely on signals.
2058     AC_LIBTESTFUNC(rt, clock_gettime,
2059             [
2060                 SMB_IS_LIBPTHREAD_LINKED(
2061                         [ SMB_REMOVELIB(rt) ],
2062                         [
2063                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2064                                 [Whether clock_gettime is available])
2065                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2066                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2067                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2068                         ])
2069             ])
2073 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2074 AC_TRY_LINK([#include <stdarg.h>
2075 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2076 samba_cv_HAVE_VA_COPY=yes,
2077 samba_cv_HAVE_VA_COPY=no)])
2078 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2079     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2080 else
2081     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2082     AC_TRY_LINK([#include <stdarg.h>
2083     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2084     samba_cv_HAVE___VA_COPY=yes,
2085     samba_cv_HAVE___VA_COPY=no)])
2086     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2087         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2088     fi
2091 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2092 AC_TRY_RUN([
2093 #include <sys/types.h>
2094 #include <stdarg.h>
2095 void foo(const char *format, ...) { 
2096        va_list ap;
2097        int len;
2098        char buf[5];
2100        va_start(ap, format);
2101        len = vsnprintf(buf, 0, format, ap);
2102        va_end(ap);
2103        if (len != 5) exit(1);
2105        va_start(ap, format);
2106        len = vsnprintf(0, 0, format, ap);
2107        va_end(ap);
2108        if (len != 5) exit(1);
2110        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2112        exit(0);
2114 main() { foo("hello"); }
2116 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2117 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2118     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2121 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2122 AC_TRY_RUN([#include <sys/types.h>
2123 #include <dirent.h>
2124 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2125 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2126 di->d_name[0] == 0) exit(0); exit(1);} ],
2127 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2128 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2129     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2132 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2133 AC_TRY_COMPILE([#include <sys/types.h>
2134 #include <utime.h>],
2135 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2136 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2137 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2138     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2141 ##############
2142 # Check utmp details, but only if our OS offers utmp.h
2143 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2144 dnl  utmp and utmpx come in many flavours
2145 dnl  We need to check for many of them
2146 dnl  But we don't need to do each and every one, because our code uses
2147 dnl  mostly just the utmp (not utmpx) fields.
2149 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2151 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2152 AC_TRY_COMPILE([#include <sys/types.h>
2153 #include <utmp.h>],
2154 [struct utmp ut;  ut.ut_name[0] = 'a';],
2155 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2156 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2157     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2158 fi 
2160 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2161 AC_TRY_COMPILE([#include <sys/types.h>
2162 #include <utmp.h>],
2163 [struct utmp ut;  ut.ut_user[0] = 'a';],
2164 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2165 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2166     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2167 fi 
2169 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2170 AC_TRY_COMPILE([#include <sys/types.h>
2171 #include <utmp.h>],
2172 [struct utmp ut;  ut.ut_id[0] = 'a';],
2173 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2174 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2175     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2176 fi 
2178 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2179 AC_TRY_COMPILE([#include <sys/types.h>
2180 #include <utmp.h>],
2181 [struct utmp ut;  ut.ut_host[0] = 'a';],
2182 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2183 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2184     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2185 fi 
2187 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2188 AC_TRY_COMPILE([#include <sys/types.h>
2189 #include <utmp.h>],
2190 [struct utmp ut;  time_t t; ut.ut_time = t;],
2191 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2192 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2193     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2194 fi 
2196 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2197 AC_TRY_COMPILE([#include <sys/types.h>
2198 #include <utmp.h>],
2199 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2200 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2201 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2202     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2203 fi 
2205 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2206 AC_TRY_COMPILE([#include <sys/types.h>
2207 #include <utmp.h>],
2208 [struct utmp ut;  ut.ut_type = 0;],
2209 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2210 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2211     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2212 fi 
2214 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2215 AC_TRY_COMPILE([#include <sys/types.h>
2216 #include <utmp.h>],
2217 [struct utmp ut;  ut.ut_pid = 0;],
2218 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2219 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2220     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2221 fi 
2223 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2224 AC_TRY_COMPILE([#include <sys/types.h>
2225 #include <utmp.h>],
2226 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2227 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2228 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2229     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2230 fi 
2232 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2233 AC_TRY_COMPILE([#include <sys/types.h>
2234 #include <utmp.h>],
2235 [struct utmp ut;  ut.ut_addr = 0;],
2236 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2237 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2238     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2239 fi 
2241 if test x$ac_cv_func_pututline = xyes ; then
2242   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2243   AC_TRY_COMPILE([#include <sys/types.h>
2244 #include <utmp.h>],
2245   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2246   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2247   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2248       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2249   fi
2252 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2253 AC_TRY_COMPILE([#include <sys/types.h>
2254 #include <utmpx.h>],
2255 [struct utmpx ux;  ux.ut_syslen = 0;],
2256 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2257 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2258     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2259 fi 
2262 # end utmp details
2265 ICONV_LOCATION=standard
2266 LOOK_DIRS="/usr /usr/local /sw /opt"
2267 AC_ARG_WITH(libiconv,
2268 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2270   if test "$withval" = "no" ; then
2271     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2272   else
2273      if test "$withval" != "yes" ; then
2274         ICONV_PATH_SPEC=yes
2275         LOOK_DIRS="$withval"
2276      fi
2277   fi
2280 for i in $LOOK_DIRS ; do
2281     save_LIBS=$LIBS
2282     save_LDFLAGS=$LDFLAGS
2283     save_CPPFLAGS=$CPPFLAGS
2284     ICONV_FOUND="no"
2285     unset libext
2286     CPPFLAGS="$CPPFLAGS -I$i/include"
2287 dnl This is here to handle -withval stuff for --with-libiconv
2288 dnl Perhaps we should always add a -L
2290 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2291 dnl installation paths. This gets a little tricky since we might have iconv
2292 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2293 dnl succeed when the header is found. To counter this, make sure the 
2294 dnl library directory is there and check the ABI directory first (which
2295 dnl should be harmless on other systems.
2296 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2297     for l in "lib32" "lib" "lib/hpux32"; do
2298         if test -d "$i/$l" ; then
2299                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2300         LIBS=
2301         export LDFLAGS LIBS CPPFLAGS
2302 dnl Try to find iconv(3)
2303                 jm_ICONV($i/$l)
2304                 if test x"$ICONV_FOUND" = "xyes" ; then
2305             libext="$l"
2306             break;
2307         fi
2308         fi
2309     done
2311     if test x"$ICONV_FOUND" = "xyes" ; then
2312         LDFLAGS=$save_LDFLAGS
2313         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2314         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2315         LIBS="$save_LIBS"
2316         ICONV_LOCATION=$i
2317         export LDFLAGS LIBS CPPFLAGS
2318 dnl Now, check for a working iconv ... we want to do it here because
2319 dnl there might be a working iconv further down the list of LOOK_DIRS
2321         ############
2322         # check for iconv in libc
2323         ic_save_LIBS="$LIBS"
2324         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2325            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2326         fi
2327         if test x"$jm_cv_lib_iconv" != x; then
2328            LIBS="$LIBS -l$jm_cv_lib_iconv"
2329         fi
2330 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2331         default_dos_charset=no
2332         default_display_charset=no
2333         default_unix_charset=no
2335         # check for default dos charset name
2336         for j in CP850 IBM850 ; do
2337             rjs_CHARSET($j)
2338             if test x"$ICONV_CHARSET" = x"$j"; then
2339                 default_dos_charset="\"$j\""
2340                 break
2341             fi
2342         done
2343         # check for default display charset name
2344         for j in ASCII 646 ; do
2345             rjs_CHARSET($j)
2346             if test x"$ICONV_CHARSET" = x"$j"; then
2347                 default_display_charset="\"$j\""
2348                 break
2349             fi
2350         done
2351         # check for default unix charset name
2352         for j in UTF-8 UTF8 ; do
2353             rjs_CHARSET($j)
2354             if test x"$ICONV_CHARSET" = x"$j"; then
2355                 default_unix_charset="\"$j\""
2356                 break
2357             fi
2358         done
2359         
2360         if test "$default_dos_charset" != "no" -a \
2361                 "$default_dos_charset" != "cross" -a \
2362                 "$default_display_charset" != "no" -a \ 
2363                 "$default_display_charset" != "cross" -a \
2364                 "$default_unix_charset" != "no" -a \
2365                 "$default_unix_charset" != "cross"
2366         then
2367                 samba_cv_HAVE_NATIVE_ICONV=yes
2368         else if test "$default_dos_charset" = "cross" -o \
2369                      "$default_display_charset" = "cross" -o \
2370                      "$default_unix_charset" = "cross"
2371         then
2372                 samba_cv_HAVE_NATIVE_ICONV=cross
2373         else
2374                 samba_cv_HAVE_NATIVE_ICONV=no
2375         fi
2376         fi
2377 dnl ])
2379         LIBS="$ic_save_LIBS"
2380         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2381            CPPFLAGS=$save_CPPFLAGS
2382            LDFLAGS=$save_LDFLAGS
2383            LIBS=$save_LIBS
2384            if test x"$jm_cv_lib_iconv" != x; then
2385               LIBS="$LIBS -l$jm_cv_lib_iconv"
2386            fi
2387            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2388            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2389            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2390            export CPPFLAGS
2391            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2392            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2393            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2394            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2395            break
2396         fi
2397 dnl We didn't find a working iconv, so keep going
2398     fi
2399 dnl We only need to clean these up here for the next pass through the loop
2400     CPPFLAGS=$save_CPPFLAGS
2401     LDFLAGS=$save_LDFLAGS
2402     LIBS=$save_LIBS
2403     export LDFLAGS LIBS CPPFLAGS
2404 done
2405 unset libext
2408 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2409     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2410     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2411    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2412    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2413    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2417 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2418 AC_TRY_RUN([
2419 #include <sys/types.h>
2420 #include <fcntl.h>
2421 #ifndef F_GETLEASE
2422 #define F_GETLEASE      1025
2423 #endif
2424 main() {
2425        int fd = open("/dev/null", O_RDONLY);
2426        return fcntl(fd, F_GETLEASE, 0) == -1;
2429 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2430 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2431     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2434 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2435 AC_TRY_RUN([
2436 #include <sys/types.h>
2437 #include <fcntl.h>
2438 #include <signal.h>
2439 #ifndef F_NOTIFY
2440 #define F_NOTIFY 1026
2441 #endif
2442 main() {
2443         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2446 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2447 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2448     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2451 #################################################
2452 # Check if FAM notifications are available. For FAM info, see
2453 #       http://oss.sgi.com/projects/fam/
2454 #       http://savannah.nongnu.org/projects/fam/
2456 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2457 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2458     # On IRIX, libfam requires libC, but other FAM implementations might not
2459     # need it.
2460     AC_CHECK_LIB(fam, FAMOpen2,
2461             [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2462             [samba_cv_HAVE_LIBFAM=no])
2464     if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2465         samba_fam_xtra=-lC
2466         AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2467                 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2468                 [samba_cv_HAVE_LIBFAM=no])
2469         unset samba_fam_xtra
2470     fi
2473 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2474     AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1,
2475             [Whether FAM is file notifications are available])
2476     AC_TRY_COMPILE([#include <fam.h>],
2477                 [FAMCodes code = FAMChanged;],
2478                 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2479                     [Whether fam.h contains a typedef for enum FAMCodes]),
2480                 [])
2483 #################################################
2484 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2486 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2488 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2489 AC_TRY_RUN([
2490 #include <sys/types.h>
2491 #include <fcntl.h>
2492 #include <signal.h>
2493 #include <sys/file.h>
2494 #ifndef LOCK_MAND
2495 #define LOCK_MAND       32
2496 #define LOCK_READ       64
2497 #endif
2498 main() {
2499         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2502 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2503 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2504     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2508 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2509 AC_TRY_COMPILE([#include <sys/types.h>
2510 #include <fcntl.h>],
2511 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2512 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2513 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2514     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2517 #################################################
2518 # Check for POSIX capability support
2520 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2521     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2522     [], [])
2524 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2526     ac_save_LIBS=$LIBS
2527     AC_LIBTESTFUNC(cap, cap_get_proc)
2529     AC_CACHE_CHECK([for POSIX capabilities],
2530             samba_cv_HAVE_POSIX_CAPABILITIES,
2531             [
2532                 AC_TRY_RUN([
2533 #include <sys/types.h>
2534 #include <sys/capability.h>
2535 main() {
2536  cap_t cap;
2537  cap_value_t vals[1];
2538  if (!(cap = cap_get_proc()))
2539    exit(1);
2540  vals[0] = CAP_CHOWN;
2541  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2542  cap_set_proc(cap);
2543  exit(0);
2545                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2546                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2547                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2548             ])
2550 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2551     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2552             [Whether POSIX capabilities are available])
2553 else
2554     LIBS=$ac_save_LIBS
2560 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2561 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2564 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2565 AC_TRY_COMPILE([#include <sys/types.h>
2566 #if defined(HAVE_RPC_RPC_H)
2567 #include <rpc/rpc.h>
2568 #endif],
2569 [int16 testvar;],
2570 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2571 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2572     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2575 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2576 AC_TRY_COMPILE([#include <sys/types.h>
2577 #if defined(HAVE_RPC_RPC_H)
2578 #include <rpc/rpc.h>
2579 #endif],
2580 [uint16 testvar;],
2581 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2582 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2583     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2586 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2587 AC_TRY_COMPILE([#include <sys/types.h>
2588 #if defined(HAVE_RPC_RPC_H)
2589 #include <rpc/rpc.h>
2590 #endif],
2591 [int32 testvar;],
2592 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2593 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2594     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2597 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2598 AC_TRY_COMPILE([#include <sys/types.h>
2599 #if defined(HAVE_RPC_RPC_H)
2600 #include <rpc/rpc.h>
2601 #endif],
2602 [uint32 testvar;],
2603 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2604 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2605     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2609 dnl Some systems (SCO) have a problem including
2610 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2611 dnl as a #define in <prot.h> and as part of an enum
2612 dnl in <rpc/rpc.h>.
2615 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2616 AC_TRY_COMPILE([#include <sys/types.h>
2617 #ifdef HAVE_SYS_SECURITY_H
2618 #include <sys/security.h>
2619 #include <prot.h>
2620 #endif  /* HAVE_SYS_SECURITY_H */
2621 #if defined(HAVE_RPC_RPC_H)
2622 #include <rpc/rpc.h>
2623 #endif],
2624 [int testvar;],
2625 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2626 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2627     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2630 AC_MSG_CHECKING([for test routines])
2631 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2632            AC_MSG_RESULT(yes),
2633            AC_MSG_ERROR([cant find test code. Aborting config]),
2634            AC_MSG_WARN([cannot run when cross-compiling]))
2636 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2637 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2638            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2639 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2640     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2643 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2644 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2645            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2646            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2647            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2648 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2649 then
2650     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2653 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2654 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2655            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2656 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2657     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2660 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2661 SAVE_CPPFLAGS="$CPPFLAGS"
2662 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2663 AC_TRY_COMPILE([
2664 #define REPLACE_GETPASS 1
2665 #define NO_PROTO_H 1
2666 #define NO_CONFIG_H 1
2667 #define main dont_declare_main
2668 #include "${srcdir-.}/lib/getsmbpass.c"
2669 #undef main
2670 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2671 CPPFLAGS="$SAVE_CPPFLAGS"
2673 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2674         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2677 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2678 AC_TRY_RUN([
2679 #include <stdio.h>
2680 #include <sys/types.h>
2681 #include <netinet/in.h>
2682 #ifdef HAVE_ARPA_INET_H
2683 #include <arpa/inet.h>
2684 #endif
2685 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2686 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2687     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2688 exit(1);}],
2689            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2690 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2691     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2694 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2695 AC_TRY_RUN([#include <stdlib.h>
2696 #include <sys/types.h>
2697 #include <sys/stat.h>
2698 #include <unistd.h>
2699 main() { 
2700   struct stat st;
2701   char tpl[20]="/tmp/test.XXXXXX"; 
2702   int fd = mkstemp(tpl); 
2703   if (fd == -1) exit(1);
2704   unlink(tpl);
2705   if (fstat(fd, &st) != 0) exit(1);
2706   if ((st.st_mode & 0777) != 0600) exit(1);
2707   exit(0);
2709 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2710 samba_cv_HAVE_SECURE_MKSTEMP=no,
2711 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2712 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2713     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2716 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2717         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2718                 [samba_cv_HAVE_BROKEN_READDIR=no],
2719                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2720                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2722 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2723 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2724         AC_TRY_RUN([
2725 #include "${srcdir-.}/lib/repdir.c"
2726 #include "${srcdir-.}/tests/os2_delete.c"],
2727         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2730 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2731         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2734 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2735 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2736 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2737 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2739 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2740 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2741            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2742 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2743     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2744 else
2745     AC_MSG_WARN(running as non-root will disable some tests)
2748 ##################
2749 # look for a method of finding the list of network interfaces
2750 iface=no;
2751 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2752 AC_TRY_RUN([
2753 #define HAVE_IFACE_AIX 1
2754 #define AUTOCONF_TEST 1
2755 #include "confdefs.h"
2756 #include "${srcdir-.}/lib/interfaces.c"],
2757            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2758 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2759     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2762 if test $iface = no; then
2763 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2764 AC_TRY_RUN([
2765 #define HAVE_IFACE_IFCONF 1
2766 #define AUTOCONF_TEST 1
2767 #include "confdefs.h"
2768 #include "${srcdir-.}/lib/interfaces.c"],
2769            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2770 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2771     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2775 if test $iface = no; then
2776 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2777 AC_TRY_RUN([
2778 #define HAVE_IFACE_IFREQ 1
2779 #define AUTOCONF_TEST 1
2780 #include "confdefs.h"
2781 #include "${srcdir-.}/lib/interfaces.c"],
2782            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2783 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2784     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2789 ################################################
2790 # look for a method of setting the effective uid
2791 seteuid=no;
2792 if test $seteuid = no; then
2793 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2794 AC_TRY_RUN([
2795 #define AUTOCONF_TEST 1
2796 #define USE_SETRESUID 1
2797 #include "confdefs.h"
2798 #include "${srcdir-.}/lib/util_sec.c"],
2799            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2800 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2801     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2806 if test $seteuid = no; then
2807 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2808 AC_TRY_RUN([
2809 #define AUTOCONF_TEST 1
2810 #define USE_SETREUID 1
2811 #include "confdefs.h"
2812 #include "${srcdir-.}/lib/util_sec.c"],
2813            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2814 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2815     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2819 if test $seteuid = no; then
2820 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2821 AC_TRY_RUN([
2822 #define AUTOCONF_TEST 1
2823 #define USE_SETEUID 1
2824 #include "confdefs.h"
2825 #include "${srcdir-.}/lib/util_sec.c"],
2826            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2827 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2828     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2832 if test $seteuid = no; then
2833 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2834 AC_TRY_RUN([
2835 #define AUTOCONF_TEST 1
2836 #define USE_SETUIDX 1
2837 #include "confdefs.h"
2838 #include "${srcdir-.}/lib/util_sec.c"],
2839            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2840 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2841     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2846 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2847 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2848            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2849 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2850     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2853 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2854 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2855            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2856 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2857     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2860 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2861 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2862            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2863 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2864     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2866 else
2869 dnl Don't check for 64 bit fcntl locking if we know that the
2870 dnl glibc2.1 broken check has succeeded.
2871 dnl 
2873   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2874   AC_TRY_RUN([
2875 #if defined(HAVE_UNISTD_H)
2876 #include <unistd.h>
2877 #endif
2878 #include <stdio.h>
2879 #include <stdlib.h>
2881 #ifdef HAVE_FCNTL_H
2882 #include <fcntl.h>
2883 #endif
2885 #ifdef HAVE_SYS_FCNTL_H
2886 #include <sys/fcntl.h>
2887 #endif
2888 main() { struct flock64 fl64;
2889 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2890 exit(0);
2891 #else
2892 exit(1);
2893 #endif
2895        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2897   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2898       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2899   fi
2902 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2903 AC_TRY_COMPILE([#include <sys/types.h>
2904 #include <sys/stat.h>
2905 #include <unistd.h>],
2906 [struct stat st;  st.st_blocks = 0;],
2907 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2908 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2909     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2910 fi 
2912 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2913 AC_TRY_COMPILE([#include <sys/types.h>
2914 #include <sys/stat.h>
2915 #include <unistd.h>],
2916 [struct stat st;  st.st_blksize = 0;],
2917 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2918 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2919     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2922 case "$host_os" in
2923 *linux*)
2924 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2925 AC_TRY_COMPILE([
2926 #ifdef HAVE_SYS_VFS_H
2927 #include <sys/vfs.h>
2928 #endif
2929 #ifdef HAVE_SYS_CAPABILITY_H
2930 #include <sys/capability.h>
2931 #endif
2932 ],[int i;],
2933    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2934 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2935    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2938 esac
2940 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2941 AC_TRY_COMPILE([
2942 #include <sys/types.h>
2943 #include <sys/acl.h>
2944 #if defined(HAVE_RPCSVC_NIS_H)
2945 #include <rpcsvc/nis.h>
2946 #endif],
2947 [int i;],
2948 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2949 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2950         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2953 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2954 AC_TRY_RUN([
2955 #include <stdio.h>
2956 #include <limits.h>
2957 main() {
2958         char *newpath = realpath("/tmp", NULL);
2959         exit ((newpath != NULL) ? 0 : 1);
2962 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2963 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2964     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2967 #################################################
2968 # check for smbwrapper support
2969 AC_MSG_CHECKING(whether to use smbwrapper)
2970 AC_ARG_WITH(smbwrapper,
2971 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2972 [ case "$withval" in
2973   yes)
2974     AC_MSG_RESULT(yes)
2975     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2976         WRAPPROG="bin/smbsh\$(EXEEXT)"
2977         WRAP="bin/smbwrapper.$SHLIBEXT"
2978         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
2979         WRAP_INC="-I\$(srcdir)/smbwrapper"
2981 # Conditions under which smbwrapper should not be built.
2983         if test x"$PICFLAGS" = x; then
2984            echo No support for PIC code - disabling smbwrapper and smbsh
2985            WRAPPROG=""
2986            WRAP=""
2987            WRAP_OBJS=""
2988            WRAP_INC=""
2989         elif test x$ac_cv_func_syscall = xno; then
2990            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2991            WRAPPROG=""
2992            WRAP=""
2993            WRAP_OBJS=""
2994            WRAP_INC=""
2995         fi
2996         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2997         SMBWRAPPER="$WRAPPROG $WRAP"
2998         SMBWRAP_OBJS="$WRAP_OBJS"
2999         SMBWRAP_INC="$WRAP_INC"
3000     ;;
3001   *)
3002     AC_MSG_RESULT(no)
3003     ;;
3004   esac ],
3005   AC_MSG_RESULT(no)
3008 #################################################
3009 # check for AFS clear-text auth support
3010 samba_cv_WITH_AFS=no
3011 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3012 AC_ARG_WITH(afs,
3013 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3014 [ case "$withval" in
3015   yes|auto)
3016     AC_MSG_RESULT($withval)
3017     samba_cv_WITH_AFS=$withval
3018     ;;
3019   *)
3020     AC_MSG_RESULT(no)
3021     ;;
3022   esac ],
3023   AC_MSG_RESULT(no)
3026 ####################################################
3027 # check for Linux-specific AFS fake-kaserver support
3028 samba_cv_WITH_FAKE_KASERVER=no
3029 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3030 AC_ARG_WITH(fake-kaserver,
3031 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3032 [ case "$withval" in
3033   yes|auto)
3034     AC_MSG_RESULT($withval)
3035     samba_cv_WITH_FAKE_KASERVER=$withval
3036     ;;
3037   *)
3038     AC_MSG_RESULT(no)
3039     ;;
3040   esac ],
3041   AC_MSG_RESULT(no)
3044 #################################################
3045 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3046 if test x"$samba_cv_WITH_AFS" != x"no" ||
3047    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3049     # see if this box has the afs-headers in /usr/include/afs
3050     AC_MSG_CHECKING(for /usr/include/afs)
3051     if test -d /usr/include/afs; then
3052           CFLAGS="$CFLAGS -I/usr/include/afs"
3053           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3054           AC_MSG_RESULT(yes)
3055     else
3056       AC_MSG_RESULT(no)
3057     fi
3058    
3059     # check for afs.h
3060     have_afs_headers=no
3061     AC_CHECK_HEADERS(afs.h afs/afs.h)
3062     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3063         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3064            test x"$samba_cv_WITH_AFS" = x"auto"; then
3065                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3066         else
3067                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3068         fi
3069     else
3070         have_afs_headers=yes
3071     fi
3074 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3075     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3078 #################################################
3079 # check whether to compile AFS/NT ACL mapping module
3080 samba_cv_WITH_VFS_AFSACL=no
3081 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3082 AC_ARG_WITH(vfs-afsacl,
3083 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3084 [ case "$withval" in
3085   yes|auto)
3086     AC_MSG_RESULT($withval)
3087     samba_cv_WITH_VFS_AFSACL=yes
3088     ;;
3089   *)
3090     AC_MSG_RESULT(no)
3091     ;;
3092   esac ],
3093   AC_MSG_RESULT(no)
3096 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3097    default_shared_modules="$default_shared_modules vfs_afsacl"
3099         
3100 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3101     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3104 #################################################
3105 # check for the DFS clear-text auth system
3106 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3107 AC_ARG_WITH(dfs,
3108 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3109 [ case "$withval" in
3110   yes)
3111     AC_MSG_RESULT(yes)
3112     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3113     ;;
3114   *)
3115     AC_MSG_RESULT(no)
3116     ;;
3117   esac ],
3118   AC_MSG_RESULT(no)
3121 ########################################################
3122 # Compile with LDAP support?
3124 with_ldap_support=auto
3125 AC_MSG_CHECKING([for LDAP support])
3127 AC_ARG_WITH(ldap,
3128 [  --with-ldap             LDAP support (default yes)],
3129 [ case "$withval" in
3130     yes|no)
3131         with_ldap_support=$withval
3132         ;;
3133   esac ])
3135 AC_MSG_RESULT($with_ldap_support)
3137 SMBLDAP=""
3138 AC_SUBST(SMBLDAP)
3139 SMBLDAPUTIL=""
3140 AC_SUBST(SMBLDAPUTIL)
3141 if test x"$with_ldap_support" != x"no"; then
3143   ##################################################################
3144   # first test for ldap.h and lber.h
3145   # (ldap.h is required for this test)
3146   AC_CHECK_HEADERS(ldap.h lber.h)
3147   
3148   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3149         if test x"$with_ldap_support" = x"yes"; then
3150          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3151         else
3152          AC_MSG_WARN(ldap.h is needed for LDAP support)
3153         fi
3154         
3155         with_ldap_support=no
3156   fi
3159 if test x"$with_ldap_support" != x"no"; then
3160   ac_save_LIBS=$LIBS
3162   ##################################################################
3163   # we might need the lber lib on some systems. To avoid link errors
3164   # this test must be before the libldap test
3165   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3167   ########################################################
3168   # now see if we can find the ldap libs in standard paths
3169   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3171   ########################################################
3172   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3173   # Check found in pam_ldap 145.
3174   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3176   LIBS="$LIBS $LDAP_LIBS"
3177   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3178     AC_TRY_COMPILE([
3179         #include <lber.h>
3180         #include <ldap.h>], 
3181         [ldap_set_rebind_proc(0, 0, 0);], 
3182         [smb_ldap_cv_ldap_set_rebind_proc=3], 
3183         [smb_ldap_cv_ldap_set_rebind_proc=2]
3184     ) 
3185   ])
3186   
3187   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3189   AC_CHECK_FUNC_EXT(ldap_dn2ad_canonical,$LDAP_LIBS)    
3190   
3191   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3192     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3193     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3194     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3195     default_shared_modules="$default_shared_modules";
3196     SMBLDAP="lib/smbldap.o"
3197     SMBLDAPUTIL="lib/smbldap_util.o"
3198     with_ldap_support=yes
3199     AC_MSG_CHECKING(whether LDAP support is used)
3200     AC_MSG_RESULT(yes)
3201   else
3202     if test x"$with_ldap_support" = x"yes"; then
3203         AC_MSG_ERROR(libldap is needed for LDAP support)
3204     else
3205         AC_MSG_WARN(libldap is needed for LDAP support)
3206     fi
3207     
3208     LDAP_LIBS=""
3209     with_ldap_support=no
3210   fi
3211   LIBS=$ac_save_LIBS
3215 #################################################
3216 # active directory support
3218 with_ads_support=auto
3219 AC_MSG_CHECKING([for Active Directory and krb5 support])
3221 AC_ARG_WITH(ads,
3222 [  --with-ads              Active Directory support (default auto)],
3223 [ case "$withval" in
3224     yes|no)
3225         with_ads_support="$withval"
3226         ;;
3227   esac ])
3229 AC_MSG_RESULT($with_ads_support)
3231 FOUND_KRB5=no
3232 KRB5_LIBS=""
3234 if test x"$with_ldap_support" != x"yes"; then
3236     if test x"$with_ads_support" = x"yes"; then
3237         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3238     elif test x"$with_ads_support" = x"auto"; then
3239         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3240         with_ads_support=no
3241     fi
3243 else
3245     # Check to see whether there is enough LDAP functionality to be able
3246     # to build AD support.
3248     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3250     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3251         if test x"$with_ads_support" = x"yes"; then
3252             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3253         elif test x"$with_ads_support" = x"auto"; then
3254             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3255             with_ads_support=no
3256         fi
3257     fi
3259     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3261     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3262         if test x"$with_ads_support" = x"yes"; then
3263             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3264         elif test x"$with_ads_support" = x"auto"; then
3265             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3266             with_ads_support=no
3267         fi
3268     fi
3272 if test x"$with_ads_support" != x"no"; then
3274   # Do no harm to the values of CFLAGS and LIBS while testing for
3275   # Kerberos support.
3277   if test x$FOUND_KRB5 = x"no"; then
3278     #################################################
3279     # check for location of Kerberos 5 install
3280     AC_MSG_CHECKING(for kerberos 5 install path)
3281     AC_ARG_WITH(krb5,
3282     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3283     [ case "$withval" in
3284       no)
3285         AC_MSG_RESULT(no krb5-path given)
3286         ;;
3287       yes)
3288         AC_MSG_RESULT(/usr)
3289         FOUND_KRB5=yes
3290         ;;
3291       *)
3292         AC_MSG_RESULT($withval)
3293         KRB5_CFLAGS="-I$withval/include"
3294         KRB5_CPPFLAGS="-I$withval/include"
3295         KRB5_LDFLAGS="-L$withval/lib"
3296         FOUND_KRB5=yes
3297         if test -x "$withval/bin/krb5-config"; then
3298                 KRB5CONFIG=$withval/bin/krb5-config
3299         fi
3300         ;;
3301       esac ],
3302       AC_MSG_RESULT(no krb5-path given)
3303     )
3304   fi
3306   #################################################
3307   # check for krb5-config from recent MIT and Heimdal kerberos 5
3308   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3309   AC_MSG_CHECKING(for working krb5-config)
3310   if test -x "$KRB5CONFIG"; then
3311     ac_save_CFLAGS=$CFLAGS
3312     CFLAGS="";export CFLAGS
3313     ac_save_LDFLAGS=$LDFLAGS
3314     LDFLAGS="";export LDFLAGS
3315     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3316     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3317     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
3318     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3319     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3320     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3321     FOUND_KRB5=yes
3322     AC_MSG_RESULT(yes)
3323   else
3324     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3325   fi
3327   if test x$FOUND_KRB5 = x"no"; then
3328     #################################################
3329     # see if this box has the SuSE location for the heimdal krb implementation
3330     AC_MSG_CHECKING(for /usr/include/heimdal)
3331     if test -d /usr/include/heimdal; then
3332       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3333           KRB5_CFLAGS="-I/usr/include/heimdal"
3334           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3335           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3336           AC_MSG_RESULT(yes)
3337       else
3338           KRB5_CFLAGS="-I/usr/include/heimdal"
3339           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3340           AC_MSG_RESULT(yes)
3341       fi
3342     else
3343       AC_MSG_RESULT(no)
3344     fi
3345   fi
3347   if test x$FOUND_KRB5 = x"no"; then
3348     #################################################
3349     # see if this box has the RedHat location for kerberos
3350     AC_MSG_CHECKING(for /usr/kerberos)
3351     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3352       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3353       KRB5_CFLAGS="-I/usr/kerberos/include"
3354       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3355       AC_MSG_RESULT(yes)
3356     else
3357       AC_MSG_RESULT(no)
3358     fi
3359   fi
3361   ac_save_CFLAGS=$CFLAGS
3362   ac_save_CPPFLAGS=$CPPFLAGS
3363   ac_save_LDFLAGS=$LDFLAGS
3365   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3366   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3367   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3369   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3371   # now check for krb5.h. Some systems have the libraries without the headers!
3372   # note that this check is done here to allow for different kerberos
3373   # include paths
3374   AC_CHECK_HEADERS(krb5.h)
3376   if test x"$ac_cv_header_krb5_h" = x"no"; then
3378     # Give a warning if AD support was not explicitly requested,
3379     # i.e with_ads_support = auto, otherwise die with an error.
3381     if test x"$with_ads_support" = x"yes"; then
3382       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3383     else
3384       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3385     fi
3387     # Turn off AD support and restore CFLAGS and LIBS variables
3389     with_ads_support="no"
3390     
3391     CFLAGS=$ac_save_CFLAGS
3392     CPPFLAGS=$ac_save_CPPFLAGS
3393     LDFLAGS=$ac_save_LDFLAGS
3394   fi
3397 # Now we have determined whether we really want ADS support
3399 if test x"$with_ads_support" != x"no"; then
3400   ac_save_LIBS=$LIBS
3402   # now check for gssapi headers.  This is also done here to allow for
3403   # different kerberos include paths
3404   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3406   ##################################################################
3407   # we might need the k5crypto and com_err libraries on some systems
3408   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3409   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3411   # Heimdal checks.
3412   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3413   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3414   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3416   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3417   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
3418                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3420   ########################################################
3421   # now see if we can find the krb5 libs in standard paths
3422   # or as specified above
3423   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3424   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3426   ########################################################
3427   # now see if we can find the gssapi libs in standard paths
3428   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3429             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3431   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3432   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3433   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3434   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3435   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3436   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3437   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3438   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3439   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3440   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3441   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3442   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3443   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3444   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3445   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3446   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3447   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3448   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3449   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3450   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3451   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3452   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3453   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3454   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3455   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3456   AC_CHECK_FUNC_EXT(decode_krb5_ap_req, $KRB5_LIBS)
3457   AC_CHECK_FUNC_EXT(krb5_free_ap_req, $KRB5_LIBS)
3458   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3459   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3460   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3461   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3462   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3463   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3464   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3465   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3466   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3468   LIBS="$KRB5_LIBS $LIBS"
3470   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3471     AC_TRY_COMPILE([
3472         #include <krb5.h>], 
3473         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 
3474         [smb_krb5_verify_checksum=7], 
3475         [smb_krb5_verify_checksum=6], 
3476     ) 
3477   ])
3478   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3480   AC_CACHE_CHECK([for checksum in krb5_checksum],
3481                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3482     AC_TRY_COMPILE([#include <krb5.h>],
3483       [krb5_checksum cksum; cksum.checksum.length = 0;],
3484       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3485       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3487   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3488     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3489                [Whether the krb5_checksum struct has a checksum property])
3490   fi
3492   AC_CACHE_CHECK([for etype in EncryptedData],
3493                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3494     AC_TRY_COMPILE([#include <krb5.h>],
3495       [EncryptedData edata; edata.etype = 0;],
3496       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3497       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3499   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3500     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3501                [Whether the EncryptedData struct has a etype property])
3502   fi
3504   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3505                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3506     AC_TRY_COMPILE([#include <krb5.h>],
3507       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3508       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3509       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3511   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3512     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3513                [Whether the krb5_ap_req struct has a ticket pointer])
3514   fi
3516   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3517                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3518     AC_TRY_COMPILE([#include <krb5.h>],
3519       [krb5_error err; err.e_data = NULL;],
3520       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3521       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3523   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3524     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3525                [Whether the krb5_error struct has a e_data pointer])
3526   fi
3528   AC_CACHE_CHECK([for krb5_crypto type],
3529                 samba_cv_HAVE_KRB5_CRYPTO,[
3530     AC_TRY_COMPILE([#include <krb5.h>],
3531       [krb5_crypto crypto;],
3532       samba_cv_HAVE_KRB5_CRYPTO=yes,
3533       samba_cv_HAVE_KRB5_CRYPTO=no)])
3535   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3536     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3537                [Whether the type krb5_crypto exists])
3538   fi
3540   AC_CACHE_CHECK([for krb5_encrypt_block type],
3541                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3542     AC_TRY_COMPILE([#include <krb5.h>],
3543       [krb5_encrypt_block block;],
3544       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3545       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3547   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3548     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3549                [Whether the type krb5_encrypt_block exists])
3550   fi
3552   AC_CACHE_CHECK([for addrtype in krb5_address],
3553                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3554     AC_TRY_COMPILE([#include <krb5.h>],
3555       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3556       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3557       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3559   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3560     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3561                [Whether the krb5_address struct has a addrtype property])
3562   fi
3564   AC_CACHE_CHECK([for addr_type in krb5_address],
3565                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3566     AC_TRY_COMPILE([#include <krb5.h>],
3567       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3568       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3569       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3571   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3572     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3573               [Whether the krb5_address struct has a addr_type property])
3574   fi
3576   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3577                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3578                  [AC_TRY_COMPILE([#include <krb5.h>],
3579     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3580     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3582   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3583     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3584               [Whether the krb5_ticket struct has a enc_part2 property])
3585   fi
3587   AC_CACHE_CHECK([for keyblock in krb5_creds],
3588                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3589     AC_TRY_COMPILE([#include <krb5.h>],
3590       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3591       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3592       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3594   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3595     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3596               [Whether the krb5_creds struct has a keyblock property])
3597   fi
3599   AC_CACHE_CHECK([for session in krb5_creds],
3600                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3601     AC_TRY_COMPILE([#include <krb5.h>],
3602       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3603       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3604       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3606   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3607     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3608               [Whether the krb5_creds struct has a session property])
3609   fi
3611   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3612                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3613     AC_TRY_COMPILE([#include <krb5.h>],
3614       [krb5_keyblock key; key.keyvalue.data = NULL;],
3615       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3616       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3618   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3619     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3620               [Whether the krb5_keyblock struct has a keyvalue property])
3621   fi
3623   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3624                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3625     AC_TRY_COMPILE([#include <krb5.h>],
3626       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3627       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3628       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3629   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3630                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3631     AC_TRY_COMPILE([#include <krb5.h>],
3632       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3633       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3634       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3635 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3636 # w.r.t. arcfour and windows, so we must not enable it here
3637   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3638           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3639     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3640               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3641   fi
3643   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3644                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3645     AC_TRY_COMPILE([#include <krb5.h>],
3646       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3647       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3648       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3650   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3651     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3652               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3653   fi
3655   AC_CACHE_CHECK([for KV5M_KEYTAB],
3656                  samba_cv_HAVE_KV5M_KEYTAB,[
3657     AC_TRY_COMPILE([#include <krb5.h>],
3658       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3659       samba_cv_HAVE_KV5M_KEYTAB=yes,
3660       samba_cv_HAVE_KV5M_KEYTAB=no)])
3662   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3663       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3664              [Whether the KV5M_KEYTAB option is available])
3665   fi
3667   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3668                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3669     AC_TRY_COMPILE([#include <krb5.h>],
3670       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3671       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3672       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3674   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3675     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3676               [Whether KRB5_KU_OTHER_CKSUM is available])
3677   fi
3678   
3679   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3680                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3681     AC_TRY_COMPILE([#include <krb5.h>],
3682       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3683       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3684       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3686   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3687     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3688               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3689   fi
3691   AC_CACHE_CHECK([for the krb5_princ_component macro],
3692                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3693     AC_TRY_LINK([#include <krb5.h>],
3694       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3695       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3696       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3698   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3699     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3700                [Whether krb5_princ_component is available])
3701   fi
3703   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3704                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3705     AC_TRY_COMPILE([#include <krb5.h>],
3706       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3707       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3708       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3710   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3711     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3712               [Whether krb5_keytab_entry has key member])
3713   fi
3715   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3716                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3717     AC_TRY_COMPILE([#include <krb5.h>],
3718       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3719       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3720       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3722   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3723     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3724               [Whether krb5_keytab_entry has keyblock member])
3725   fi
3727   AC_CACHE_CHECK([for magic in krb5_address],
3728                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3729     AC_TRY_COMPILE([#include <krb5.h>],
3730       [krb5_address addr; addr.magic = 0;],
3731       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3732       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3734   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3735     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3736               [Whether the krb5_address struct has a magic property])
3737   fi
3739   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3740     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3741     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3742     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3743     AC_MSG_RESULT(yes)
3744   else
3745     if test x"$with_ads_support" = x"yes"; then
3746         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3747     else
3748         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3749     fi
3750     KRB5_LIBS=""
3751     with_ads_support=no 
3752   fi
3754   AC_CACHE_CHECK([for WRFILE: keytab support],
3755                 samba_cv_HAVE_WRFILE_KEYTAB,[
3756     AC_TRY_RUN([
3757 #include<krb5.h>
3758   main()
3759   {
3760     krb5_context context;
3761     krb5_keytab keytab;
3763     krb5_init_context(&context);
3764     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3765   }],
3766   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3767   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3769   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3770       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3771                [Whether the WRFILE:-keytab is supported])
3772   fi
3774   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3775                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3776     AC_TRY_COMPILE([#include <krb5.h>],
3777     [
3778     krb5_context context;
3779     krb5_principal principal;
3780     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3781     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3782     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3784   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3785     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3786               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3787   fi
3789   AC_CACHE_CHECK([for krb5_addresses type],
3790                 samba_cv_HAVE_KRB5_ADDRESSES,[
3791     AC_TRY_COMPILE([#include <krb5.h>],
3792       [krb5_addresses addr;],
3793       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3794       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3796   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3797     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3798                [Whether the type krb5_addresses type exists])
3799   fi
3801 LIBS="$ac_save_LIBS"
3804 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3806 #################################################
3807 # check for automount support
3808 AC_MSG_CHECKING(whether to use automount)
3809 AC_ARG_WITH(automount,
3810 [  --with-automount        Include automount support (default=no)],
3811 [ case "$withval" in
3812   yes)
3813     AC_MSG_RESULT(yes)
3814     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3815     ;;
3816   *)
3817     AC_MSG_RESULT(no)
3818     ;;
3819   esac ],
3820   AC_MSG_RESULT(no)
3823 #################################################
3824 # check for smbmount support
3825 AC_MSG_CHECKING(whether to use smbmount)
3826 AC_ARG_WITH(smbmount,
3827 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3828 [ case "$withval" in
3829   yes)
3830         case "$host_os" in
3831         *linux*)
3832                 AC_MSG_RESULT(yes)
3833                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3834                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3835                 ;;
3836         *)
3837                 AC_MSG_ERROR(not on a linux system!)
3838                 ;;
3839         esac
3840     ;;
3841   *)
3842     AC_MSG_RESULT(no)
3843     ;;
3844   esac ],
3845   AC_MSG_RESULT(no)
3848 #################################################
3849 # check for mount- and umount.cifs support
3850 CIFSMOUNT_PROGS=""
3851 INSTALL_CIFSMOUNT=""
3852 UNINSTALL_CIFSMOUNT=""
3853 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
3854 AC_ARG_WITH(cifsmount,
3855 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
3856 [ case "$withval" in
3857   no)
3858         AC_MSG_RESULT(no)
3859         ;;
3860   *)
3861         case "$host_os" in
3862         *linux*)
3863                 AC_MSG_RESULT(yes)
3864                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3865                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3866                 INSTALL_CIFSMOUNT="installcifsmount"
3867                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3868                 ;;
3869         *)
3870                 AC_MSG_ERROR(not on a linux system!)
3871                 ;;
3872         esac
3873     ;;
3874   esac ],
3875 [ case "$host_os" in
3876   *linux*)
3877         AC_MSG_RESULT(yes)
3878         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3879         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3880         INSTALL_CIFSMOUNT="installcifsmount"
3881         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3882         ;;
3883   *)
3884         AC_MSG_RESULT(no)
3885         ;;
3886   esac ]
3890 #################################################
3891 # check for a PAM clear-text auth, accounts, password and session support
3892 with_pam_for_crypt=no
3893 AC_MSG_CHECKING(whether to use PAM)
3894 AC_ARG_WITH(pam,
3895 [  --with-pam              Include PAM support (default=no)],
3896 [ case "$withval" in
3897   yes)
3898     AC_MSG_RESULT(yes)
3899     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3900        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3901           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3902              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3903           fi
3904        fi
3905     fi
3906     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3907     AUTH_LIBS="$AUTH_LIBS -lpam"
3908     with_pam_for_crypt=yes
3909     ;;
3910   *)
3911     AC_MSG_RESULT(no)
3912     ;;
3913   esac ],
3914   AC_MSG_RESULT(no)
3917 # we can't build a pam module if we don't have pam.
3918 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3920 #################################################
3921 # check for pam_smbpass support
3922 PAM_MODULES=""
3923 INSTALL_PAM_MODULES=""
3924 UNINSTALL_PAM_MODULES=""
3925 AC_MSG_CHECKING(whether to use pam_smbpass)
3926 AC_ARG_WITH(pam_smbpass,
3927 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3928 [ case "$withval" in
3929   yes)
3930     AC_MSG_RESULT(yes)
3932        # Conditions under which pam_smbpass should not be built.
3934        if test x"$PICFLAGS" = x; then
3935           AC_MSG_ERROR([No support for PIC code])
3936        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3937           AC_MSG_ERROR([No security/pam_appl.h found])
3938        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3939           AC_MSG_ERROR([No libpam found])
3940        else
3941           AUTH_LIBS="$AUTH_LIBS -lpam"
3942           PAM_MODULES="pam_smbpass"
3943           INSTALL_PAM_MODULES="installpammodules"
3944           UNINSTALL_PAM_MODULES="uninstallpammodules"
3945        fi
3946     ;;
3947   *)
3948     AC_MSG_RESULT(no)
3949     ;;
3950   esac ],
3951   AC_MSG_RESULT(no)
3955 ###############################################
3956 # test for where we get crypt() from
3957 AC_SEARCH_LIBS(crypt, [crypt],
3958   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3959   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3962 ## moved after the check for -lcrypt in order to
3963 ## ensure that the necessary libraries are included
3964 ## check checking for truncated salt.  Wrapped by the
3965 ## $with_pam_for_crypt variable as above   --jerry
3967 if test $with_pam_for_crypt = no; then
3968 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3969 crypt_LIBS="$LIBS"
3970 LIBS="$AUTH_LIBS $LIBS"
3971 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3972         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3973 LIBS="$crypt_LIBS"])
3974 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3975         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3979 #################################################
3980 # check for a NISPLUS_HOME support 
3981 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3982 AC_ARG_WITH(nisplus-home,
3983 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3984 [ case "$withval" in
3985   yes)
3986     AC_MSG_RESULT(yes)
3987     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3988     ;;
3989   *)
3990     AC_MSG_RESULT(no)
3991     ;;
3992   esac ],
3993   AC_MSG_RESULT(no)
3996 #################################################
3997 # check for syslog logging
3998 AC_MSG_CHECKING(whether to use syslog logging)
3999 AC_ARG_WITH(syslog,
4000 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4001 [ case "$withval" in
4002   yes)
4003     AC_MSG_RESULT(yes)
4004     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4005     ;;
4006   *)
4007     AC_MSG_RESULT(no)
4008     ;;
4009   esac ],
4010   AC_MSG_RESULT(no)
4013 #################################################
4014 # check for experimental disk-quotas support
4016 samba_cv_WITH_QUOTAS=auto
4017 samba_cv_TRY_QUOTAS=no
4018 samba_cv_RUN_QUOTA_TESTS=auto
4019 samba_cv_WITH_SYS_QUOTAS=auto
4020 samba_cv_TRY_SYS_QUOTAS=auto
4021 samba_cv_SYSQUOTA_FOUND=no
4023 AC_MSG_CHECKING(whether to try disk-quotas support)
4024 AC_ARG_WITH(quotas,
4025 [  --with-quotas           Include disk-quota support (default=no)],
4026 [ case "$withval" in
4027   yes)
4028     AC_MSG_RESULT(yes)
4029     samba_cv_WITH_QUOTAS=yes
4030     samba_cv_TRY_QUOTAS=yes
4031     samba_cv_RUN_QUOTA_TESTS=yes
4032     #set sys quotas to auto in this case
4033     samba_cv_TRY_SYS_QUOTAS=auto
4034     ;;
4035   auto)
4036     AC_MSG_RESULT(auto)
4037     samba_cv_WITH_QUOTAS=auto
4038     samba_cv_TRY_QUOTAS=auto
4039     samba_cv_RUN_QUOTA_TESTS=auto
4040     #set sys quotas to auto in this case
4041     samba_cv_TRY_SYS_QUOTAS=auto
4042     ;;
4043   no)
4044     AC_MSG_RESULT(no)
4045     samba_cv_WITH_QUOTAS=no
4046     samba_cv_TRY_QUOTAS=no
4047     samba_cv_RUN_QUOTA_TESTS=no
4048     ;;
4049   *)
4050     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4051     ;;
4052   esac ],
4053   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4056 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4057 AC_ARG_WITH(sys-quotas,
4058 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4059 [ case "$withval" in
4060   yes)
4061     AC_MSG_RESULT(yes)
4062     samba_cv_WITH_SYS_QUOTAS=yes
4063     samba_cv_TRY_SYS_QUOTAS=yes
4064     samba_cv_RUN_QUOTA_TESTS=yes
4065     ;;
4066   auto)
4067     AC_MSG_RESULT(auto)
4068     samba_cv_WITH_SYS_QUOTAS=auto
4069     samba_cv_TRY_SYS_QUOTAS=auto
4070     samba_cv_RUN_QUOTA_TESTS=auto
4071     ;;
4072   no)
4073     AC_MSG_RESULT(no)
4074     samba_cv_WITH_SYS_QUOTAS=no
4075     samba_cv_TRY_SYS_QUOTAS=no
4076     ;;
4077   *)
4078     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4079     ;;
4080   esac ],
4081   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4084 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4085 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4086   case "$host_os" in
4087         *linux*)
4088             AC_MSG_RESULT(yes)
4089             samba_cv_TRY_SYS_QUOTAS=yes
4090             samba_cv_RUN_QUOTA_TESTS=yes
4091             ;;
4092         *)
4093             AC_MSG_RESULT(no)
4094             samba_cv_TRY_SYS_QUOTAS=no
4095             ;;
4096   esac
4099 #############################################
4100 # only check for quota stuff if --with-quotas
4101 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4103 case "$host_os" in
4104         # on linux we didn't need to test we have builtin support
4105         *linux*)
4106             samba_cv_SYSQUOTA_FOUND=yes
4107             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4108             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4109             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4110             AC_MSG_RESULT(yes)
4112             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4113             samba_cv_found_xfs_header=yes
4114             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4115             AC_MSG_RESULT(yes)
4116             ;;
4117         *solaris*)
4118             # need to set this define when using static linking (BUG 1473)
4119             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4120             ;;
4121         *)
4122             ;;
4123 esac
4125 # some broken header files need this
4126 AC_CHECK_HEADER(asm/types.h,[
4127             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4128             AC_ADD_INCLUDE(<asm/types.h>)
4129             ])
4131 # For quotas on Veritas VxFS filesystems
4132 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4134 # For sys/quota.h and linux/quota.h
4135 AC_CHECK_HEADERS(sys/quota.h)
4137 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4138 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4139 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4140 AC_TRY_COMPILE([
4141 #include "confdefs.h"
4142 #ifdef HAVE_SYS_TYPES_H
4143 #include <sys/types.h>
4144 #endif
4145 #ifdef HAVE_ASM_TYPES_H
4146 #include <asm/types.h>
4147 #endif
4148 #include <sys/quota.h>
4149 ],[int i = Q_XGETQUOTA;],
4150 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4151 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4152         samba_cv_found_xfs_header=yes
4156 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
4157 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4158 AC_TRY_COMPILE([
4159 #include "confdefs.h"
4160 #ifdef HAVE_SYS_QUOTA_H
4161 #include <sys/quota.h>
4162 #endif
4164 struct dqblk D;
4165 D.dqb_fsoftlimit = 0;],
4166 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4167 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4168         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4171 ##################
4172 # look for a working quota system
4174 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4175 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4176 AC_TRY_RUN_STRICT([
4177 #define HAVE_QUOTACTL_4A 1
4178 #define AUTOCONF_TEST 1
4179 #include "confdefs.h"
4180 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4181            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4182 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4183     samba_cv_SYSQUOTA_FOUND=yes;
4184     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4185     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4189 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4190 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4191 AC_TRY_RUN_STRICT([
4192 #define HAVE_QUOTACTL_4B 1
4193 #define AUTOCONF_TEST 1
4194 #include "confdefs.h"
4195 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4196            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4197 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4198     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4199     samba_cv_SYSQUOTA_FOUND=yes;
4200     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4201     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4205 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4206 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4207 AC_TRY_RUN_STRICT([
4208 #define HAVE_QUOTACTL_3 1
4209 #define AUTOCONF_TEST 1
4210 #include "confdefs.h"
4211 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4212            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4213 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4214     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4215     samba_cv_SYSQUOTA_FOUND=yes;
4216     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4217     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4221 #################################################
4222 # check for mntent.h and struct mntent
4223 AC_CHECK_HEADERS(mntent.h)
4224 #################################################
4225 # check for setmntent,getmntent,endmntent
4226 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4228 #################################################
4229 # check for devnm.h and struct mntent
4230 AC_CHECK_HEADERS(devnm.h)
4231 #################################################
4232 # check for devnm
4233 AC_CHECK_FUNCS(devnm)
4235 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4236     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4237         # if --with-sys-quotas=yes then build it 
4238         # you have can use the get/set quota command smb.conf
4239         # options then
4240         samba_cv_SYSQUOTA_FOUND=auto
4241     fi
4242     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4243         # if --with-sys-quotas=yes then build it 
4244         # you have can use the get/set quota command smb.conf
4245         # options then
4246         samba_cv_TRY_SYS_QUOTAS=auto
4247     fi
4250 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4251 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4252 SAVE_CPPFLAGS="$CPPFLAGS"
4253 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4254 AC_TRY_COMPILE([
4255 #include "confdefs.h"
4256 #define NO_PROTO_H 1
4257 #define NO_CONFIG_H 1
4258 #define HAVE_SYS_QUOTAS 1
4259 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4260 #include "${srcdir-.}/lib/sysquotas.c"
4261 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4262 CPPFLAGS="$SAVE_CPPFLAGS"
4264 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4265 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4266     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
4267         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4268         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4269         samba_cv_WE_USE_SYS_QUOTAS=yes
4270         AC_MSG_RESULT(yes)
4271     else
4272         AC_MSG_RESULT(no)
4273     fi
4277 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4278 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4279 SAVE_CPPFLAGS="$CPPFLAGS"
4280 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4281 AC_TRY_COMPILE([
4282 #include "confdefs.h"
4283 #define NO_PROTO_H 1
4284 #define NO_CONFIG_H 1
4285 #define HAVE_SYS_QUOTAS 1
4286 #define HAVE_XFS_QUOTAS 1
4287 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4288 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4289 CPPFLAGS="$SAVE_CPPFLAGS"
4291 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4292     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4293         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4294     fi
4298 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4299 SAVE_CPPFLAGS="$CPPFLAGS"
4300 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch -I${srcdir-.}/smbwrapper"
4301 AC_TRY_COMPILE([
4302 #include "confdefs.h"
4303 #define NO_PROTO_H 1
4304 #define NO_CONFIG_H 1
4305 #include "${srcdir-.}/smbd/quotas.c"
4306 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4307 CPPFLAGS="$SAVE_CPPFLAGS"
4309 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4310 AC_MSG_CHECKING(whether to use the old quota support)
4311     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4312       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4313         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4314         AC_MSG_RESULT(yes)
4315       else
4316         AC_MSG_RESULT(no)
4317       fi
4318     else
4319       AC_MSG_RESULT(no)
4320     fi
4323 ####################
4324 # End of quota check samba_cv_RUN_QUOTA_TESTS
4327 #################################################
4328 # check for experimental utmp accounting
4330 AC_MSG_CHECKING(whether to support utmp accounting)
4331 WITH_UTMP=yes
4332 AC_ARG_WITH(utmp,
4333 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4334 [ case "$withval" in
4335   no)
4336                 WITH_UTMP=no
4337                 ;;
4338   *)
4339                 WITH_UTMP=yes
4340                 ;;
4341   esac ],
4344 # utmp requires utmp.h
4345 # Note similar check earlier, when checking utmp details.
4347 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4348         utmp_no_reason=", no utmp.h on $host_os"
4349         WITH_UTMP=no
4352 # Display test results
4354 if test x"$WITH_UTMP" = x"yes"; then
4355         AC_MSG_RESULT(yes)
4356         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4357 else
4358         AC_MSG_RESULT(no$utmp_no_reason)
4361 INSTALLLIBCMD_SH=:
4362 INSTALLLIBCMD_A=:
4363 UNINSTALLLIBCMD_SH=:
4364 UNINSTALLLIBCMD_A=:
4366 if test $BLDSHARED = true; then
4367         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4368         UNINSTALLLIBCMD_SH="rm -f"
4370 if test $enable_static = yes; then
4371         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4372         UNINSTALLLIBCMD_A="rm -f"
4375 #################################################
4376 # should we build libmsrpc?
4377 INSTALL_LIBMSRPC=
4378 UNINSTALL_LIBMSRPC=
4379 LIBMSRPC_SHARED=
4380 LIBMSRPC=
4381 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4382 AC_ARG_WITH(libmsrpc,
4383 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4384 [ case "$withval" in
4385   no) 
4386      AC_MSG_RESULT(no)
4387      ;;
4388   *)
4389      if test $BLDSHARED = true; then
4390         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4391         LIBMSRPC=libmsrpc
4392         AC_MSG_RESULT(yes)
4393      else
4394         enable_static=yes
4395         AC_MSG_RESULT(no shared library support -- will supply static library)
4396      fi
4397      if test $enable_static = yes; then
4398         LIBMSRPC=libmsrpc
4399      fi
4400      INSTALL_LIBMSRPC=installlibmsrpc
4401      UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4402      ;;
4403   esac ],
4405 # if unspecified, default is to built it if possible.
4406   if test $BLDSHARED = true; then
4407      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4408      LIBMSRPC=libmsrpc
4409      AC_MSG_RESULT(yes)
4410    else
4411      enable_static=yes
4412      AC_MSG_RESULT(no shared library support -- will supply static library)
4413    fi
4414    if test $enable_static = yes; then
4415      LIBMSRPC=libmsrpc
4416   fi]
4417   INSTALL_LIBMSRPC=installlibmsrpc
4418   UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4421 #################################################
4422 # should we build libsmbclient?
4423 INSTALL_LIBSMBCLIENT=
4424 UNINSTALL_LIBSMBCLIENT=
4425 LIBSMBCLIENT_SHARED=
4426 LIBSMBCLIENT=
4427 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4428 AC_ARG_WITH(libsmbclient,
4429 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4430 [ case "$withval" in
4431   no) 
4432      AC_MSG_RESULT(no)
4433      ;;
4434   *)
4435      if test $BLDSHARED = true; then
4436         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4437         LIBSMBCLIENT=libsmbclient
4438         AC_MSG_RESULT(yes)
4439      else
4440         enable_static=yes
4441         AC_MSG_RESULT(no shared library support -- will supply static library)
4442      fi
4443      if test $enable_static = yes; then
4444         LIBSMBCLIENT=libsmbclient
4445      fi
4446      INSTALL_LIBSMBCLIENT=installclientlib
4447      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4448      ;;
4449   esac ],
4451 # if unspecified, default is to built it if possible.
4452   if test $BLDSHARED = true; then
4453      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4454      LIBSMBCLIENT=libsmbclient
4455      AC_MSG_RESULT(yes)
4456    else
4457      enable_static=yes
4458      AC_MSG_RESULT(no shared library support -- will supply static library)
4459    fi
4460    if test $enable_static = yes; then
4461      LIBSMBCLIENT=libsmbclient
4462   fi]
4463   INSTALL_LIBSMBCLIENT=installclientlib
4464   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4467 INSTALL_LIBSMBSHAREMODES=
4468 LIBSMBSHAREMODES_SHARED=
4469 LIBSMBSHAREMODES=
4470 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4471 AC_ARG_WITH(libsmbsharemodes,
4472 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4473 [ case "$withval" in
4474   no)
4475      AC_MSG_RESULT(no)
4476      ;;
4477   *)
4478      if test $BLDSHARED = true; then
4479         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4480         LIBSMBSHAREMODES=libsmbsharemodes
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         LIBSMBSHAREMODES=libsmbsharemodes
4488      fi
4489      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4490      ;;
4491   esac ],
4493 # if unspecified, default is to built it if possible.
4494   if test $BLDSHARED = true; then
4495      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4496      LIBSMBSHAREMODES=libsmbsharemodes
4497      AC_MSG_RESULT(yes)
4498    else
4499      enable_static=yes
4500      AC_MSG_RESULT(no shared library support -- will supply static library)
4501    fi
4502    if test $enable_static = yes; then
4503      LIBSMBSHAREMODES=libsmbsharemodes
4504   fi]
4505   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4508 #################################################
4509 # these tests are taken from the GNU fileutils package
4510 AC_CHECKING(how to get filesystem space usage)
4511 space=no
4513 # Test for statvfs64.
4514 if test $space = no; then
4515   # SVR4
4516   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4517   [AC_TRY_RUN([
4518 #if defined(HAVE_UNISTD_H)
4519 #include <unistd.h>
4520 #endif
4521 #include <sys/types.h>
4522 #include <sys/statvfs.h>
4523   main ()
4524   {
4525     struct statvfs64 fsd;
4526     exit (statvfs64 (".", &fsd));
4527   }],
4528   fu_cv_sys_stat_statvfs64=yes,
4529   fu_cv_sys_stat_statvfs64=no,
4530   fu_cv_sys_stat_statvfs64=cross)])
4531   if test $fu_cv_sys_stat_statvfs64 = yes; then
4532     space=yes
4533     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4534   fi
4537 # Perform only the link test since it seems there are no variants of the
4538 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4539 # because that got a false positive on SCO OSR5.  Adding the declaration
4540 # of a `struct statvfs' causes this test to fail (as it should) on such
4541 # systems.  That system is reported to work fine with STAT_STATFS4 which
4542 # is what it gets when this test fails.
4543 if test $space = no; then
4544   # SVR4
4545   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4546                  [AC_TRY_LINK([#include <sys/types.h>
4547 #include <sys/statvfs.h>],
4548                               [struct statvfs fsd; statvfs (0, &fsd);],
4549                               fu_cv_sys_stat_statvfs=yes,
4550                               fu_cv_sys_stat_statvfs=no)])
4551   if test $fu_cv_sys_stat_statvfs = yes; then
4552     space=yes
4553     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4554   fi
4557 if test $space = no; then
4558   # DEC Alpha running OSF/1
4559   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4560   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4561   [AC_TRY_RUN([
4562 #include <sys/param.h>
4563 #include <sys/types.h>
4564 #include <sys/mount.h>
4565   main ()
4566   {
4567     struct statfs fsd;
4568     fsd.f_fsize = 0;
4569     exit (statfs (".", &fsd, sizeof (struct statfs)));
4570   }],
4571   fu_cv_sys_stat_statfs3_osf1=yes,
4572   fu_cv_sys_stat_statfs3_osf1=no,
4573   fu_cv_sys_stat_statfs3_osf1=no)])
4574   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4575   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4576     space=yes
4577     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4578   fi
4581 if test $space = no; then
4582 # AIX
4583   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4584 member (AIX, 4.3BSD)])
4585   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4586   [AC_TRY_RUN([
4587 #ifdef HAVE_SYS_PARAM_H
4588 #include <sys/param.h>
4589 #endif
4590 #ifdef HAVE_SYS_MOUNT_H
4591 #include <sys/mount.h>
4592 #endif
4593 #ifdef HAVE_SYS_VFS_H
4594 #include <sys/vfs.h>
4595 #endif
4596   main ()
4597   {
4598   struct statfs fsd;
4599   fsd.f_bsize = 0;
4600   exit (statfs (".", &fsd));
4601   }],
4602   fu_cv_sys_stat_statfs2_bsize=yes,
4603   fu_cv_sys_stat_statfs2_bsize=no,
4604   fu_cv_sys_stat_statfs2_bsize=no)])
4605   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4606   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4607     space=yes
4608     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4609   fi
4612 if test $space = no; then
4613 # SVR3
4614   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4615   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4616   [AC_TRY_RUN([#include <sys/types.h>
4617 #include <sys/statfs.h>
4618   main ()
4619   {
4620   struct statfs fsd;
4621   exit (statfs (".", &fsd, sizeof fsd, 0));
4622   }],
4623     fu_cv_sys_stat_statfs4=yes,
4624     fu_cv_sys_stat_statfs4=no,
4625     fu_cv_sys_stat_statfs4=no)])
4626   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4627   if test $fu_cv_sys_stat_statfs4 = yes; then
4628     space=yes
4629     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4630   fi
4633 if test $space = no; then
4634 # 4.4BSD and NetBSD
4635   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4636 member (4.4BSD and NetBSD)])
4637   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4638   [AC_TRY_RUN([#include <sys/types.h>
4639 #ifdef HAVE_SYS_PARAM_H
4640 #include <sys/param.h>
4641 #endif
4642 #ifdef HAVE_SYS_MOUNT_H
4643 #include <sys/mount.h>
4644 #endif
4645   main ()
4646   {
4647   struct statfs fsd;
4648   fsd.f_fsize = 0;
4649   exit (statfs (".", &fsd));
4650   }],
4651   fu_cv_sys_stat_statfs2_fsize=yes,
4652   fu_cv_sys_stat_statfs2_fsize=no,
4653   fu_cv_sys_stat_statfs2_fsize=no)])
4654   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4655   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4656     space=yes
4657         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4658   fi
4661 if test $space = no; then
4662   # Ultrix
4663   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4664   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4665   [AC_TRY_RUN([#include <sys/types.h>
4666 #ifdef HAVE_SYS_PARAM_H
4667 #include <sys/param.h>
4668 #endif
4669 #ifdef HAVE_SYS_MOUNT_H
4670 #include <sys/mount.h>
4671 #endif
4672 #ifdef HAVE_SYS_FS_TYPES_H
4673 #include <sys/fs_types.h>
4674 #endif
4675   main ()
4676   {
4677   struct fs_data fsd;
4678   /* Ultrix's statfs returns 1 for success,
4679      0 for not mounted, -1 for failure.  */
4680   exit (statfs (".", &fsd) != 1);
4681   }],
4682   fu_cv_sys_stat_fs_data=yes,
4683   fu_cv_sys_stat_fs_data=no,
4684   fu_cv_sys_stat_fs_data=no)])
4685   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4686   if test $fu_cv_sys_stat_fs_data = yes; then
4687     space=yes
4688     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4689   fi
4693 # As a gating factor for large file support, in order to
4694 # use <4GB files we must have the following minimal support
4695 # available.
4696 # long long, and a 64 bit off_t or off64_t.
4697 # If we don't have all of these then disable large
4698 # file support.
4700 AC_MSG_CHECKING([if large file support can be enabled])
4701 AC_TRY_COMPILE([
4702 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4703 #include <sys/types.h>
4704 #else
4705 __COMPILE_ERROR_
4706 #endif
4708 [int i],
4709 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4710 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4711         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4713 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4715 AC_ARG_WITH(spinlocks, 
4716 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4717 if test "x$with_spinlocks" = "xyes"; then
4718     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4720     case "$host_cpu" in
4721         sparc)
4722             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4723             ;;
4725         i386|i486|i586|i686)
4726             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4727             ;;
4729         mips)
4730             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4731             ;;
4733         powerpc)
4734             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4735             ;;
4736     esac
4739 #################################################
4740 # check for ACL support
4742 AC_MSG_CHECKING(whether to support ACLs)
4743 AC_ARG_WITH(acl-support,
4744 [  --with-acl-support      Include ACL support (default=no)],
4745 [ case "$withval" in
4746   yes)
4748         case "$host_os" in
4749         *sysv5*)
4750                 AC_MSG_RESULT(Using UnixWare ACLs)
4751                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4752                 ;;
4753         *solaris*)
4754                 AC_MSG_RESULT(Using solaris ACLs)
4755                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4756                 ACL_LIBS="$ACL_LIBS -lsec"
4757                 ;;
4758         *hpux*)
4759                 AC_MSG_RESULT(Using HPUX ACLs)
4760                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4761                 ;;
4762         *irix*)
4763                 AC_MSG_RESULT(Using IRIX ACLs)
4764                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4765                 ;;
4766         *aix*)
4767                 AC_MSG_RESULT(Using AIX ACLs)
4768                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4769                 ;;
4770         *osf*)
4771                 AC_MSG_RESULT(Using Tru64 ACLs)
4772                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4773                 ACL_LIBS="$ACL_LIBS -lpacl"
4774                 ;;
4775         *freebsd[[5-9]]*)
4776                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4777                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4778                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4779                 ;;
4780         *linux*)
4781                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4782                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4783                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4784                 acl_LIBS=$LIBS
4785                 LIBS="$LIBS -lacl"
4786                 AC_TRY_LINK([#include <sys/types.h>
4787 #include <sys/acl.h>],
4788 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4789 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4790                 LIBS=$acl_LIBS])
4791                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4792                                 AC_MSG_RESULT(Using posix ACLs)
4793                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4794                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4795                                 acl_LIBS=$LIBS
4796                                 LIBS="$LIBS -lacl"
4797                                 AC_TRY_LINK([#include <sys/types.h>
4798 #include <sys/acl.h>],
4799 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4800 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4801                                 LIBS=$acl_LIBS])
4802                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4803                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4804                                 fi
4805                         fi
4806             ;;
4807          *)
4808                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4809                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4810                 acl_LIBS=$LIBS
4811                 LIBS="$LIBS -lacl"
4812                 AC_TRY_LINK([#include <sys/types.h>
4813 #include <sys/acl.h>],
4814 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4815 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4816                 LIBS=$acl_LIBS])
4817                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4818                                 AC_MSG_RESULT(Using posix ACLs)
4819                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4820                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4821                                 acl_LIBS=$LIBS
4822                                 LIBS="$LIBS -lacl"
4823                                 AC_TRY_LINK([#include <sys/types.h>
4824 #include <sys/acl.h>],
4825 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4826 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4827                                 LIBS=$acl_LIBS])
4828                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4829                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4830                                 fi
4831                         fi
4832             ;;
4833         esac
4834         ;;
4835   *)
4836     AC_MSG_RESULT(no)
4837     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4838     ;;
4839   esac ],
4840   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4841   AC_MSG_RESULT(no)
4844 #################################################
4845 # check for AIO support
4847 AC_MSG_CHECKING(whether to support asynchronous io)
4848 AC_ARG_WITH(aio-support,
4849 [  --with-aio-support      Include asynchronous io support (default=no)],
4850 [ case "$withval" in
4851   yes)
4853         AC_MSG_RESULT(yes)
4854         case "$host_os" in
4855         *)
4856                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
4857                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
4858                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4859                 aio_LIBS=$LIBS
4860                 LIBS=$AIO_LIBS
4861                 AC_TRY_LINK([#include <sys/types.h>
4862 #include <aio.h>],
4863 [ struct aiocb a; return aio_read(&a);],
4864 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4865                 LIBS=$aio_LIBS])
4866                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4867                 aio_LIBS=$LIBS
4868                 LIBS=$AIO_LIBS
4869                 AC_TRY_LINK([#include <sys/types.h>
4870 #include <aio.h>],
4871 [ struct aiocb64 a; return aio_read64(&a);],
4872 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4873                 LIBS=$aio_LIBS])
4874                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4875                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4876                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4877                         LIBS=$AIO_LIBS
4878                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4879                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4880                         LIBS=$AIO_LIBS
4881                 fi
4883                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4884                         AC_MSG_CHECKING(for aio_read)
4885                         AC_LINK_IFELSE([#include <aio.h>
4886 int main() { struct aiocb a; return aio_read(&a); }],
4887 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4888 [AC_MSG_RESULT(no)])
4890                         AC_MSG_CHECKING(for aio_write)
4891                         AC_LINK_IFELSE([#include <aio.h>
4892 int main() { struct aiocb a; return aio_write(&a); }],
4893 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4894 [AC_MSG_RESULT(no)])
4896                         AC_MSG_CHECKING(for aio_fsync)
4897                         AC_LINK_IFELSE([#include <aio.h>
4898 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4899 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4900 [AC_MSG_RESULT(no)])
4902                         AC_MSG_CHECKING(for aio_return)
4903                         AC_LINK_IFELSE([#include <aio.h>
4904 int main() { struct aiocb a; return aio_return(&a); }],
4905 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4906 [AC_MSG_RESULT(no)])
4908                         AC_MSG_CHECKING(for aio_error)
4909                         AC_LINK_IFELSE([#include <aio.h>
4910 int main() { struct aiocb a; return aio_error(&a); }],
4911 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4912 [AC_MSG_RESULT(no)])
4914                         AC_MSG_CHECKING(for aio_cancel)
4915                         AC_LINK_IFELSE([#include <aio.h>
4916 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4917 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4918 [AC_MSG_RESULT(no)])
4920                         AC_MSG_CHECKING(for aio_suspend)
4921                         AC_LINK_IFELSE([#include <aio.h>
4922 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
4923 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
4924 [AC_MSG_RESULT(no)])
4925                 fi
4927                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4928                         AC_MSG_CHECKING(for aio_read64)
4929                         AC_LINK_IFELSE([#include <aio.h>
4930 int main() { struct aiocb a; return aio_read64(&a); }],
4931 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
4932 [AC_MSG_RESULT(no)])
4934                         AC_MSG_CHECKING(for aio_write64)
4935                         AC_LINK_IFELSE([#include <aio.h>
4936 int main() { struct aiocb a; return aio_write64(&a); }],
4937 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
4938 [AC_MSG_RESULT(no)])
4940                         AC_MSG_CHECKING(for aio_fsync64)
4941                         AC_LINK_IFELSE([#include <aio.h>
4942 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
4943 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
4944 [AC_MSG_RESULT(no)])
4946                         AC_MSG_CHECKING(for aio_return64)
4947                         AC_LINK_IFELSE([#include <aio.h>
4948 int main() { struct aiocb a; return aio_return64(&a); }],
4949 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
4950 [AC_MSG_RESULT(no)])
4952                         AC_MSG_CHECKING(for aio_error64)
4953                         AC_LINK_IFELSE([#include <aio.h>
4954 int main() { struct aiocb a; return aio_error64(&a); }],
4955 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
4956 [AC_MSG_RESULT(no)])
4958                         AC_MSG_CHECKING(for aio_cancel64)
4959                         AC_LINK_IFELSE([#include <aio.h>
4960 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
4961 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
4962 [AC_MSG_RESULT(no)])
4964                         AC_MSG_CHECKING(for aio_suspend64)
4965                         AC_LINK_IFELSE([#include <aio.h>
4966 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
4967 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
4968 [AC_MSG_RESULT(no)])
4969                 fi
4970             ;;
4971         esac
4972         ;;
4973   *)
4974     AC_MSG_RESULT(no)
4975     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
4976     ;;
4977   esac ],
4978   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
4979   AC_MSG_RESULT(no)
4982 #################################################
4983 # check for sendfile support
4985 with_sendfile_support=yes
4986 AC_MSG_CHECKING(whether to check to support sendfile)
4987 AC_ARG_WITH(sendfile-support,
4988 [  --with-sendfile-support Check for sendfile support (default=yes)],
4989 [ case "$withval" in
4990   yes)
4992         AC_MSG_RESULT(yes);
4994         case "$host_os" in
4995         *linux*)
4996                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4997                 AC_TRY_LINK([#include <sys/sendfile.h>],
4999 int tofd, fromfd;
5000 off64_t offset;
5001 size_t total;
5002 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5004 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5006                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5007                 AC_TRY_LINK([#include <sys/sendfile.h>],
5009 int tofd, fromfd;
5010 off_t offset;
5011 size_t total;
5012 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5014 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5016 # Try and cope with broken Linux sendfile....
5017                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5018                 AC_TRY_LINK([\
5019 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5020 #undef _FILE_OFFSET_BITS
5021 #endif
5022 #include <sys/sendfile.h>],
5024 int tofd, fromfd;
5025 off_t offset;
5026 size_t total;
5027 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5029 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5031         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5032                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5033                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5034                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5035         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5036                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5037                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5038                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5039         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5040                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5041                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5042         else
5043                 AC_MSG_RESULT(no);
5044         fi
5046         ;;
5047         *freebsd* | *dragonfly* )
5048                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5049                 AC_TRY_LINK([\
5050 #include <sys/types.h>
5051 #include <unistd.h>
5052 #include <sys/socket.h>
5053 #include <sys/uio.h>],
5055         int fromfd, tofd, ret, total=0;
5056         off_t offset, nwritten;
5057         struct sf_hdtr hdr;
5058         struct iovec hdtrl;
5059         hdr.headers = &hdtrl;
5060         hdr.hdr_cnt = 1;
5061         hdr.trailers = NULL;
5062         hdr.trl_cnt = 0;
5063         hdtrl.iov_base = NULL;
5064         hdtrl.iov_len = 0;
5065         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5067 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5069         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5070                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5071                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5072                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5073         else
5074                 AC_MSG_RESULT(no);
5075         fi
5076         ;;
5078         *hpux*)
5079                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5080                 AC_TRY_LINK([\
5081 #include <sys/socket.h>
5082 #include <sys/uio.h>],
5084         int fromfd, tofd;
5085         size_t total=0;
5086         struct iovec hdtrl[2];
5087         ssize_t nwritten;
5088         off64_t offset;
5090         hdtrl[0].iov_base = 0;
5091         hdtrl[0].iov_len = 0;
5093         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5095 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5096         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5097                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5098                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5099                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5100         else
5101                 AC_MSG_RESULT(no);
5102         fi
5104                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5105                 AC_TRY_LINK([\
5106 #include <sys/socket.h>
5107 #include <sys/uio.h>],
5109         int fromfd, tofd;
5110         size_t total=0;
5111         struct iovec hdtrl[2];
5112         ssize_t nwritten;
5113         off_t offset;
5115         hdtrl[0].iov_base = 0;
5116         hdtrl[0].iov_len = 0;
5118         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5120 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5121         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5122                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5123                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5124                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5125         else
5126                 AC_MSG_RESULT(no);
5127         fi
5128         ;;
5130         *solaris*)
5131                 AC_CHECK_LIB(sendfile,sendfilev)
5132                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5133                 AC_TRY_LINK([\
5134 #include <sys/sendfile.h>],
5136         int sfvcnt;
5137         size_t xferred;
5138         struct sendfilevec vec[2];
5139         ssize_t nwritten;
5140         int tofd;
5142         sfvcnt = 2;
5144         vec[0].sfv_fd = SFV_FD_SELF;
5145         vec[0].sfv_flag = 0;
5146         vec[0].sfv_off = 0;
5147         vec[0].sfv_len = 0;
5149         vec[1].sfv_fd = 0;
5150         vec[1].sfv_flag = 0;
5151         vec[1].sfv_off = 0;
5152         vec[1].sfv_len = 0;
5153         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5155 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5157         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5158                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5159                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5160                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5161         else
5162                 AC_MSG_RESULT(no);
5163         fi
5165                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5166                 AC_TRY_LINK([\
5167 #include <sys/sendfile.h>],
5169         int sfvcnt;
5170         size_t xferred;
5171         struct sendfilevec vec[2];
5172         ssize_t nwritten;
5173         int tofd;
5175         sfvcnt = 2;
5177         vec[0].sfv_fd = SFV_FD_SELF;
5178         vec[0].sfv_flag = 0;
5179         vec[0].sfv_off = 0;
5180         vec[0].sfv_len = 0;
5182         vec[1].sfv_fd = 0;
5183         vec[1].sfv_flag = 0;
5184         vec[1].sfv_off = 0;
5185         vec[1].sfv_len = 0;
5186         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5188 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5190         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5191                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5192                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5193                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5194         else
5195                 AC_MSG_RESULT(no);
5196         fi
5197         ;;
5198         *aix*)
5199                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5200                 AC_TRY_LINK([\
5201 #include <sys/socket.h>],
5203         int fromfd, tofd;
5204         size_t total=0;
5205         struct sf_parms hdtrl;
5206         ssize_t nwritten;
5207         off64_t offset;
5209         hdtrl.header_data = 0;
5210         hdtrl.header_length = 0;
5211         hdtrl.file_descriptor = fromfd;
5212         hdtrl.file_offset = 0;
5213         hdtrl.file_bytes = 0;
5214         hdtrl.trailer_data = 0;
5215         hdtrl.trailer_length = 0;
5217         nwritten = send_file(&tofd, &hdtrl, 0);
5219 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5220         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5221                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5222                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5223                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5224         else
5225                 AC_MSG_RESULT(no);
5226         fi
5227         ;;
5228         *)
5229         ;;
5230         esac
5231         ;;
5232   *)
5233     AC_MSG_RESULT(no)
5234     ;;
5235   esac ],
5236   AC_MSG_RESULT(yes)
5240 #################################################
5241 # Check whether winbind is supported on this platform.  If so we need to
5242 # build and install client programs, sbin programs and shared libraries
5244 AC_MSG_CHECKING(whether to build winbind)
5246 # Initially, the value of $host_os decides whether winbind is supported
5248 HAVE_WINBIND=yes
5250 # Define the winbind shared library name and any specific linker flags
5251 # it needs to be built with.
5253 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5254 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5255 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5257 case "$host_os" in
5258         *linux*)
5259                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5260                 ;;
5261         *freebsd[[5-9]]*)
5262                 # FreeBSD winbind client is implemented as a wrapper around
5263                 # the Linux version.
5264                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5265                     nsswitch/winbind_nss_linux.o"
5266                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5267                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5268                 ;;
5269         *irix*)
5270                 # IRIX has differently named shared libraries
5271                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5272                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5273                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5274                 ;;
5275         *solaris*)
5276                 # Solaris winbind client is implemented as a wrapper around
5277                 # the Linux version.
5278                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5279                     nsswitch/winbind_nss_linux.o"
5280                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5281                 ;;
5282         *hpux11*)
5283                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5284                 ;;
5285         *aix*)
5286                 # AIX has even differently named shared libraries.  No
5287                 # WINS support has been implemented yet.
5288                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5289                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5290                 WINBIND_NSS="nsswitch/WINBIND"
5291                 WINBIND_WINS_NSS=""
5292                 ;;
5293         *)
5294                 HAVE_WINBIND=no
5295                 winbind_no_reason=", unsupported on $host_os"
5296                 ;;
5297 esac
5299 AC_SUBST(WINBIND_NSS)
5300 AC_SUBST(WINBIND_WINS_NSS)
5301 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5302 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5303 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5305 # Check the setting of --with-winbind
5307 AC_ARG_WITH(winbind,
5308 [  --with-winbind          Build winbind (default, if supported by OS)],
5310   case "$withval" in
5311         yes)
5312                 HAVE_WINBIND=yes
5313                 ;;
5314         no)
5315                 HAVE_WINBIND=no
5316                 winbind_reason=""
5317                 ;;
5318   esac ],
5321 # We need unix domain sockets for winbind
5323 if test x"$HAVE_WINBIND" = x"yes"; then
5324         if test x"$samba_cv_unixsocket" = x"no"; then
5325                 winbind_no_reason=", no unix domain socket support on $host_os"
5326                 HAVE_WINBIND=no
5327         fi
5330 # Display test results
5332 if test x"$HAVE_WINBIND" = x"yes"; then
5333         AC_MSG_RESULT(yes)
5334         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5336         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5337         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5338         if test $BLDSHARED = true; then
5339                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
5341                 if test x"$with_pam" = x"yes"; then
5342                         PAM_MODULES="$PAM_MODULES pam_winbind"
5343                         INSTALL_PAM_MODULES="installpammodules"
5344                         UNINSTALL_PAM_MODULES="uninstallpammodules"
5345                 fi
5346         fi
5347 else
5348         AC_MSG_RESULT(no$winbind_no_reason)
5351 # Solaris 10 does have new member in nss_XbyY_key
5352 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5353                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5354                 [#include <nss_dbdefs.h>])
5356 # Solaris has some extra fields in struct passwd that need to be
5357 # initialised otherwise nscd crashes.  
5359 AC_CHECK_MEMBER(struct passwd.pw_comment,
5360                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5361                 [#include <pwd.h>])
5363 AC_CHECK_MEMBER(struct passwd.pw_age,
5364                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5365                 [#include <pwd.h>])
5367 # AIX 4.3.x and 5.1 do not have as many members in
5368 # struct secmethod_table as AIX 5.2
5369 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5370        [#include <usersec.h>])
5371 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5372        [#include <usersec.h>])
5375 #################################################
5376 # Check to see if we should use the included popt 
5378 AC_ARG_WITH(included-popt,
5379 [  --with-included-popt    use bundled popt library, not from system],
5381   case "$withval" in
5382         yes)
5383                 INCLUDED_POPT=yes
5384                 ;;
5385         no)
5386                 INCLUDED_POPT=no
5387                 ;;
5388   esac ],
5390 if test x"$INCLUDED_POPT" != x"yes"; then
5391     AC_CHECK_LIB(popt, poptGetContext,
5392                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5395 AC_MSG_CHECKING(whether to use included popt)
5396 if test x"$INCLUDED_POPT" = x"yes"; then
5397     AC_MSG_RESULT(yes)
5398     BUILD_POPT='$(POPT_OBJS)'
5399         POPTLIBS='$(POPT_OBJS)'
5400     FLAGS1="-I$srcdir/popt"
5401 else
5402     AC_MSG_RESULT(no)
5403         BUILD_POPT=""
5404     POPTLIBS="-lpopt"
5406 AC_SUBST(BUILD_POPT)
5407 AC_SUBST(POPTLIBS)
5408 AC_SUBST(FLAGS1)
5410 #################################################
5411 # Check to see if we should use the included iniparser 
5413 AC_ARG_WITH(included-iniparser,
5414 [  --with-included-iniparser    use bundled iniparser library, not from system],
5416   case "$withval" in
5417         yes)
5418                 INCLUDED_INIPARSER=yes
5419                 ;;
5420         no)
5421                 INCLUDED_INIPARSER=no
5422                 ;;
5423   esac ],
5425 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5426     AC_CHECK_LIB(iniparser, iniparser_load,
5427                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5430 AC_MSG_CHECKING(whether to use included iniparser)
5431 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5432     AC_MSG_RESULT(yes)
5433     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5434         INIPARSERLIBS=""
5435     FLAGS1="$FLAGS1 -I$srcdir/iniparser/src"
5436 else
5437     AC_MSG_RESULT(no)
5438         BUILD_INIPARSER=""
5439     INIPARSERLIBS="-liniparser"
5441 AC_SUBST(BUILD_INIPARSER)
5442 AC_SUBST(INIPARSERLIBS)
5443 AC_SUBST(FLAGS1)
5447 #################################################
5448 # Check if the user wants Python
5450 # At the moment, you can use this to set which Python binary to link
5451 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5452 # though they can coexist in different directories.)  In the future
5453 # this might make the Python stuff be built by default.
5455 # Defaulting python breaks the clean target if python isn't installed
5457 PYTHON=
5459 AC_ARG_WITH(python,
5460 [  --with-python=PYTHONNAME  build Python libraries],
5461 [ case "${withval-python}" in
5462   yes)
5463         PYTHON=python
5464         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5465         ;;
5466   no)
5467         PYTHON=
5468         ;;
5469   *)
5470         PYTHON=${withval-python}
5471         ;;
5472   esac ])
5473 AC_SUBST(PYTHON)
5475 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5477         eval MODULE_DEFAULT_$i=STATIC
5478 done
5480 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5482         dnl Fall back to static if we cannot build shared libraries
5483         eval MODULE_DEFAULT_$i=STATIC
5485         if test $BLDSHARED = true; then
5486                 eval MODULE_DEFAULT_$i=SHARED
5487         fi
5488 done
5490 dnl Always built these modules static
5491 MODULE_rpc_spoolss=STATIC
5492 MODULE_rpc_srv=STATIC
5493 MODULE_idmap_tdb=STATIC
5495 AC_ARG_WITH(static-modules,
5496 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
5497 [ if test $withval; then
5498         for i in `echo $withval | sed -e 's/,/ /g'`
5499         do
5500                 eval MODULE_$i=STATIC
5501         done
5502 fi ])
5504 AC_ARG_WITH(shared-modules,
5505 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
5506 [ if test $withval; then
5507         for i in `echo $withval | sed -e 's/,/ /g'`
5508         do
5509                         eval MODULE_$i=SHARED
5510         done
5511 fi ])
5513 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
5514                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5515 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5516 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5517 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5520 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5521 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5522 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5523 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5524 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
5525 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
5526 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5527 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5528 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
5529 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5530 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
5531 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5532 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
5533 SMB_SUBSYSTEM(RPC,smbd/server.o)
5535 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
5536 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
5537 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
5538 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
5539 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
5541 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5542 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5543 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5544 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5545 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5547 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5548 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5549 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5550 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5551 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5552 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5553 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5554 SMB_SUBSYSTEM(AUTH,auth/auth.o)
5556 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
5557 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
5558 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
5559 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
5560 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
5561 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
5562 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
5563 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
5564 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
5565 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
5566 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
5567 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
5568 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
5569 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
5571 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5573 #################################################
5574 # do extra things if we are running insure
5576 if test "${ac_cv_prog_CC}" = "insure"; then
5577         CPPFLAGS="$CPPFLAGS -D__INSURE__"
5580 #################################################
5581 # Display summary of libraries detected
5583 AC_MSG_RESULT([Using libraries:])
5584 AC_MSG_RESULT([    LIBS = $LIBS])
5585 if test x"$with_ads_support" != x"no"; then
5586    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
5588 if test x"$with_ldap_support" != x"no"; then
5589    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
5591 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
5593 #################################################
5594 # final configure stuff
5596 AC_MSG_CHECKING([configure summary])
5597 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
5598            AC_MSG_RESULT(yes),
5599            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5600            AC_MSG_WARN([cannot run when cross-compiling]))
5602 builddir=`pwd`
5603 AC_SUBST(builddir)
5605 # Stuff the smbd-only libraries at the end of the smbd link
5606 # path (if we have them).
5607 SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs"
5608 AC_SUBST(SMBD_LIBS)
5610 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5611 LIB_REMOVE_USR_LIB(LDFLAGS)
5612 LIB_REMOVE_USR_LIB(LIBS)
5614 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5615 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5616 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5618 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
5620 #################################################
5621 # Print very concise instructions on building/use
5622 if test "x$enable_dmalloc" = xyes
5623 then
5624         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5625         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])