r14631: Add {,un}installpammodules rule and add it to the install rule.
[Samba/gebeck_regimport.git] / source3 / configure.in
blob079376c6b7c5929729dfcb647fea48a9b412d6f3
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(SMBWRAPPER)
279 AC_SUBST(SMBWRAP_OBJS)
280 AC_SUBST(SMBWRAP_INC)
281 AC_SUBST(EXTRA_BIN_PROGS)
282 AC_SUBST(CIFSMOUNT_PROGS)
283 AC_SUBST(INSTALL_CIFSMOUNT)
284 AC_SUBST(UNINSTALL_CIFSMOUNT)
285 AC_SUBST(EXTRA_SBIN_PROGS)
286 AC_SUBST(EXTRA_ALL_TARGETS)
287 AC_SUBST(CONFIG_LIBS)
288 AC_SUBST(NSCD_LIBS)
290 # Set defaults
291 PIE_CFLAGS=""
292 PIE_LDFLAGS=""
293 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
295 if test "x$enable_pie" != xno
296 then
297         AC_CACHE_CHECK(for -fPIE, libc_cv_fpie, [dnl
298                 cat > conftest.c <<EOF
299 int foo;
300 main () { return 0;}
302                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
303                 then
304                         libc_cv_fpie=yes
305                         PIE_CFLAGS="-fPIE"
306                         PIE_LDFLAGS="-pie"
307                 fi
308                 rm -f conftest*])
310 if test "x$PIE_CFLAGS" = x
311 then
312         libc_cv_fpie=no
315 AC_ARG_ENABLE(debug, 
316 [  --enable-debug          Turn on compiler debugging information (default=no)],
317     [if eval "test x$enable_debug = xyes"; then
318         CFLAGS="${CFLAGS} -g"
319     fi])
321 AC_SUBST(SOCKWRAP)
322 AC_ARG_ENABLE(socket-wrapper, 
323 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)],
324     [if eval "test x$enable_socket_wrapper = xyes"; then
325         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
326         SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
327     fi])
329 #################################################
330 # set prefix for 'make test'
331 selftest_prefix="./"
332 AC_SUBST(selftest_prefix)
333 AC_ARG_WITH(selftest-prefix,
334 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
335 [ case "$withval" in
336   yes|no)
337     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
338   ;;
339   * )
340     selftest_prefix="$withval"
341     ;;
342   esac
345 #################################################
346 # set path of samba4's smbtorture
347 smbtorture4_path=""
348 AC_SUBST(smbtorture4_path)
349 AC_ARG_WITH(smbtorture4_path,
350 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
351 [ case "$withval" in
352   yes|no)
353     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
354   ;;
355   * )
356     smbtorture4_path="$withval"
357     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
358         AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
359     fi
360   ;;
361  esac
364 # compile with optimization and without debugging by default, but
365 # allow people to set their own preference.
366 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
367 # if it has no value.  This prevent *very* large debug binaries from occurring
368 # by default.
369 if test "x$CFLAGS" = x; then
370   CFLAGS="-O"
373 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_"
375 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
376     [if eval "test x$enable_developer = xyes"; then
377         developer=yes
378         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
379         # Add -Wdeclaration-after-statement if compiler supports it
380         AC_CACHE_CHECK(
381           [that the C compiler understands -Wdeclaration-after-statement],
382           samba_cv_HAVE_Wdeclaration_after_statement, [
383           AC_TRY_RUN_STRICT([
384             int main(void)
385             {
386                 return 0;
387             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
388             samba_cv_HAVE_Wdeclaration_after_statement=yes,
389             samba_cv_HAVE_Wdeclaration_after_statement=no,
390             samba_cv_HAVE_Wdeclaration_after_statement=cross)
391        ])
392        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
393             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
394        fi
395     fi])
397 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
398     [if eval "test x$enable_krb5developer = xyes"; then
399         developer=yes
400         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
401     fi])
403 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
405 if test "x$enable_dmalloc" = xyes
406 then
407         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
408         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
409                   [Define to check invariants around some common functions])
410         LIBS="$LIBS -ldmalloc"  
413 dnl Checks for programs.
416 ## for some reason this macro resets the CFLAGS
417 ## so save and restore
419 OLD_CFLAGS=${CFLAGS}
420 AC_PROG_CC
421 CFLAGS=${OLD_CFLAGS}
423 OLD_CFLAGS=${CFLAGS}
424 AC_PROG_CPP
425 CFLAGS=${OLD_CFLAGS}
427 AC_PROG_INSTALL
428 AC_PROG_AWK
429 AC_PATH_PROG(PERL, perl)
431 AC_CHECK_TOOL(AR, ar)
433 dnl Check if we use GNU ld
434 LD=ld
435 AC_PROG_LD_GNU
437 dnl Certain versions of GNU ld the default is not to have the 
438 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
439 dnl warnings when building modules.
440 if test "$ac_cv_prog_gnu_ld" = "yes"; then
441         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
442         AC_MSG_CHECKING(GNU ld release date)
443         changequote(,)dnl
444         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'`
445         changequote([,])dnl
446         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
447         if test -n "$ac_cv_gnu_ld_date"; then
448         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
449                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
450         fi
451         else
452            AC_MSG_CHECKING(GNU ld release version)
453            changequote(,)dnl
454            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
455            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
456            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
457            changequote([,])dnl
458            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
459            AC_MSG_CHECKING(GNU ld release version major)
460            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
461            AC_MSG_CHECKING(GNU ld release version minor)
462            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
463            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
464              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
465            fi
466         fi
469 dnl needed before AC_TRY_COMPILE
470 AC_ISC_POSIX
472 dnl look for executable suffix
473 AC_EXEEXT
475 dnl Check if C compiler understands -c and -o at the same time
476 AC_PROG_CC_C_O
477 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
478       BROKEN_CC=
479 else
480       BROKEN_CC=#
482 AC_SUBST(BROKEN_CC)
484 dnl Check if the C compiler understands -Werror
485 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
486  AC_TRY_RUN_STRICT([
487   int main(void)
488   {
489         return 0;
490   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
491   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
492 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
493    Werror_FLAGS="-Werror"
494 else 
495 dnl Check if the C compiler understands -w2
496 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
497  AC_TRY_RUN_STRICT([
498   int main(void)
499   {
500         return 0;
501   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
502   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
503 if test x"$samba_cv_HAVE_w2" = x"yes"; then
504    Werror_FLAGS="-w2"
508 dnl Check if the C compiler understands volatile (it should, being ANSI).
509 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
510     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
511         samba_cv_volatile=yes,samba_cv_volatile=no)])
512 if test x"$samba_cv_volatile" = x"yes"; then
513    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
516 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
517 AC_MSG_CHECKING(uname -s)
518 AC_MSG_RESULT(${UNAME_S})
520 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
521 AC_MSG_CHECKING(uname -r)
522 AC_MSG_RESULT(${UNAME_R})
524 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
525 AC_MSG_CHECKING(uname -m)
526 AC_MSG_RESULT(${UNAME_M})
528 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
529 AC_MSG_CHECKING(uname -p)
530 AC_MSG_RESULT(${UNAME_P})
532 AC_CANONICAL_SYSTEM
534 dnl Add #include for broken IRIX header files
535   case "$host_os" in
536         *irix6*) AC_ADD_INCLUDE(<standards.h>)
537         ;;
538 esac
540 AC_VALIDATE_CACHE_SYSTEM_TYPE
542 DYNEXP=
544 dnl Add modules that have to be built by default here
545 dnl These have to be built static:
546 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_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
548 dnl These are preferably build shared, and static if dlopen() is not available
549 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"
551 if test "x$developer" = xyes; then
552    default_static_modules="$default_static_modules rpc_echo"
553    default_shared_modules="$default_shared_modules charset_weird"
557 # Config CPPFLAG settings for strange OS's that must be set
558 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
559 # case statement; its first reference must be unconditional.
561 case "$host_os" in
562 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
563     *hpux*)
564     
565       AC_PROG_CC_FLAG(Ae)
566       # mmap on HPUX is completely broken...
567       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
568       if test $ac_cv_prog_cc_Ae = yes; then
569         CPPFLAGS="$CPPFLAGS -Ae"
570       fi
572 # Defines needed for HPUX support.
573 # HPUX has bigcrypt but (sometimes?) doesn't use it for
574 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
576       case `uname -r` in
577                         *9*|*10*)
578                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
579                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
580                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
581                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
582                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
583                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
584                                 ;;
585                         *11*)
586                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
587                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
588                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
589                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
590                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
591                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
592                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
593                                 ;;
594       esac
595       ;;
598 # CRAY Unicos has broken const handling
599        *unicos*)
600           AC_MSG_RESULT([disabling const])
601           CPPFLAGS="$CPPFLAGS -Dconst="
602           ;;
603         
605 # AIX4.x doesn't even admit to having large
606 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
608     *aix4*)
609           AC_MSG_RESULT([enabling large file support])
610       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
611           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
612       ;;    
614 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
615 # to the existance of large files..
616 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
617 # recommendations on large file support, however it makes the
618 # compile work using gcc 2.7 and 2.8, whereas using the Sun
619 # recommendation makes the compile fail on gcc2.7. JRA.
621 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
623         *solaris*)
624                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
625                 case `uname -r` in
626                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
627                                 AC_MSG_RESULT([no large file support])
628                                 ;;
629                         5.*)
630                         AC_MSG_RESULT([enabling large file support])
631                         if test "$ac_cv_prog_gcc" = yes; then
632                                 ${CC-cc} -v >conftest.c 2>&1
633                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
634                                 rm -fr conftest.c
635                                 case "$ac_cv_gcc_compiler_version_number" in
636                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
637                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
638                                                 LDFLAGS="$LDFLAGS -lthread"
639                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
640                                                 ;;
641                                         *)
642                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
643                                                 LDFLAGS="$LDFLAGS -lthread"
644                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
645                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
646                                                 ;;
647                                 esac
648                         else
649                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
650                                 LDFLAGS="$LDFLAGS -lthread"
651                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
652                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
653                         fi
654                         ;;
655                 esac
656                 ;;
658 # IRIX uses SYSV printing.  Make sure to set that here
660         *irix*)
661                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
662                 ;;
663         *freebsd*|*dragonfly*)
664                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
665                 ;;
667 # VOS may need to have POSIX support and System V compatibility enabled.
669     *vos*)
670     case "$CPPFLAGS" in
671           *-D_POSIX_C_SOURCE*)
672                 ;;
673           *)
674                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
675                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
676                 ;;
677     esac
678     case "$CPPFLAGS" in
679           *-D_SYSV*|*-D_SVID_SOURCE*)
680                 ;;
681           *)
682                 CPPFLAGS="$CPPFLAGS -D_SYSV"
683                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
684     esac
685     ;;
687 # Tests needed for SINIX large file support.
689     *sysv4*)
690       if test $host = mips-sni-sysv4 ; then
691         AC_MSG_CHECKING([for LFS support])
692         old_CPPFLAGS="$CPPFLAGS"
693         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
694         AC_TRY_RUN([
695 #include <unistd.h>
696 main () {
697 #if _LFS64_LARGEFILE == 1
698 exit(0);
699 #else
700 exit(1);
701 #endif
702 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
703         CPPFLAGS="$old_CPPFLAGS"
704         if test x$SINIX_LFS_SUPPORT = xyes ; then
705           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
706                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
707           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
708           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
709           LIBS="`getconf LFS64_LIBS` $LIBS"
710         fi
711       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
712       fi
713     ;;
715 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
717     *linux*)
718         AC_MSG_CHECKING([for LFS support])
719         old_CPPFLAGS="$CPPFLAGS"
720         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
721        AC_TRY_RUN([
722 #include <unistd.h>
723 #include <sys/utsname.h>
724 #include <string.h>
725 #include <stdlib.h>
726 main() {
727 #if _LFS64_LARGEFILE == 1
728        struct utsname uts;
729        char *release;
730        int major, minor;
732        /* Ensure this is glibc 2.2 or higher */
733 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
734        int libc_major = __GLIBC__;
735        int libc_minor = __GLIBC_MINOR__;
737        if (libc_major < 2)
738               exit(1);
739        if (libc_minor < 2)
740               exit(1);
741 #endif
743        /* Ensure this is kernel 2.4 or higher */
745        uname(&uts);
746        release = strdup(uts.release);
747        major = atoi(strsep(&release, "."));
748        minor = atoi(strsep(&release, "."));
750        if (major > 2 || (major == 2 && minor > 3))
751                exit(0);
752        exit(1);
753 #else
754        exit(1);
755 #endif
757 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
758         CPPFLAGS="$old_CPPFLAGS"
759         if test x$LINUX_LFS_SUPPORT = xyes ; then
760                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
761                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
762                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
763                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
764         fi
765         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
766         ;;
769 # MacOS X is the *only* system that uses compose character in utf8. This
770 # is so horribly broken....
772     *darwin*)
773         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
774 # Add Fink directories for various packages, like dlcompat.
775 # Note: iconv does that explicitly below, but other packages
776 # don't.
777         CPPFLAGS="$CPPFLAGS -I/sw/include"
778         LDFLAGS="$LDFLAGS -L/sw/lib"
780 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
781 # use that instead of plain dlsym.
783         AC_CHECK_LIB(dl,dlopen)
784         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
786 # Add a system specific charset module.
788         default_shared_modules="$default_shared_modules charset_macosxfs"
789         ;;
790     *hurd*)
791         AC_MSG_CHECKING([for LFS support])
792         old_CPPFLAGS="$CPPFLAGS"
793         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
794         AC_TRY_RUN([
795 #include <unistd.h>
796 main () {
797 #if _LFS64_LARGEFILE == 1
798 exit(0);
799 #else
800 exit(1);
801 #endif
802 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
803         CPPFLAGS="$old_CPPFLAGS"
804         if test x$GLIBC_LFS_SUPPORT = xyes ; then
805           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
806                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
807           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
808         fi
809       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
810     ;;
812 esac
814 AC_INLINE
815 AC_HEADER_STDC
816 AC_HEADER_DIRENT
817 AC_HEADER_TIME
818 AC_HEADER_SYS_WAIT
819 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)
820 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h alloca.h)
821 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
822 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
823 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
824 AC_CHECK_HEADERS(sys/un.h)
825 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
826 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
827 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
828 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
829 AC_CHECK_HEADERS(langinfo.h locale.h)
831 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
832 #if HAVE_RPC_RPC_H
833 #include <rpc/rpc.h>
834 #endif
837 ## These fail to compile on IRIX so just check for their presence
838 AC_CHECK_HEADERS(sys/mode.h,,,)
840 # Look for Darwin headers
841 old_CPPFLAGS="$CPPFLAGS"
842 CPPFLAGS="-Iinclude $CPPFLAGS"
843 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
844 CPPFLAGS="$old_CPPFLAGS"
846 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
847 # subdirectory of headers.
848 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
850 # check for linux on amd64 since valgrind is not quite there yet
851 case "$host_os" in
852         *linux*)
853                 case "$UNAME_P" in
854                         *x86_64*)
855                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
856                                 ;;
857                 esac
858                 ;;
859 esac
863 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
864 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
866 case "$host_os" in
867     *hpux*)
868                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
869                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
870                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
871                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
872                 fi
873         ;;
874 esac
875 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
876 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
877 AC_CHECK_HEADERS(stropts.h poll.h)
878 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
880 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
881 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
883 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
885 AC_CHECK_HEADERS(netinet/ip.h,,,[[
886 #include <sys/types.h>
887 #if HAVE_SYS_SOCKET_H
888 #include <sys/socket.h>
889 #endif
890 #include <netinet/in.h>
891 #if HAVE_NETINET_IN_SYSTM_H
892 #include <netinet/in_systm.h>
893 #endif
896 AC_CHECK_HEADERS(net/if.h,,,[[
897 #include <sys/types.h>
898 #if HAVE_SYS_SOCKET_H
899 #include <sys/socket.h>
900 #endif
903 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
904 #if HAVE_SECURITY_PAM_APPL_H
905 #include <security/pam_appl.h>
906 #endif
909 # For experimental utmp support (lastlog on some BSD-like systems)
910 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
912 AC_CHECK_SIZEOF(int,cross)
913 AC_CHECK_SIZEOF(long,cross)
914 AC_CHECK_SIZEOF(short,cross)
916 AC_C_CONST
917 AC_C_INLINE
918 AC_C_BIGENDIAN
919 AC_C_CHAR_UNSIGNED
921 AC_TYPE_SIGNAL
922 AC_TYPE_UID_T
923 AC_TYPE_MODE_T
924 AC_TYPE_OFF_T
925 AC_TYPE_SIZE_T
926 AC_TYPE_PID_T
927 AC_STRUCT_ST_RDEV
928 AC_DIRENT_D_OFF
929 AC_CHECK_TYPE(ino_t,unsigned)
930 AC_CHECK_TYPE(loff_t,off_t)
931 AC_CHECK_TYPE(offset_t,loff_t)
932 AC_CHECK_TYPE(ssize_t, int)
933 AC_CHECK_TYPE(wchar_t, unsigned short)
935 ############################################
936 # for cups support we need libcups, and a handful of header files
938 AC_ARG_ENABLE(cups,
939 [  --enable-cups           Turn on CUPS support (default=auto)])
941 if test x$enable_cups != xno; then
942         AC_PATH_PROG(CUPS_CONFIG, cups-config)
944         if test "x$CUPS_CONFIG" != x; then
945                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
946                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
947                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
948                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
949         elif test x"$enable_cups" = x"yes"; then
950                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
951         fi
954 AC_ARG_ENABLE(iprint,
955 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
957 if test x$enable_iprint != xno; then
958         if test "x$CUPS_CONFIG" != x; then
959                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
960         elif test x"$enable_iprint" = x"yes"; then
961                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
962         fi
965 ############################################
966 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
967 AC_SEARCH_LIBS(dlopen, [dl])
968 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
970 ############################################
971 # check if the compiler can do immediate structures
972 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
973     AC_TRY_COMPILE([
974 #include <stdio.h>],
976    typedef struct {unsigned x;} FOOBAR;
977    #define X_FOOBAR(x) ((FOOBAR) { x })
978    #define FOO_ONE X_FOOBAR(1)
979    FOOBAR f = FOO_ONE;   
980    static struct {
981         FOOBAR y; 
982         } f2[] = {
983                 {FOO_ONE}
984         };   
986         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
987 if test x"$samba_cv_immediate_structures" = x"yes"; then
988    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
991 ############################################
992 # check if the compiler can do immediate structures
993 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
994     AC_TRY_LINK([
995 #include <stdio.h>],
997                 if (0) {
998                    this_function_does_not_exist();
999                 } else {
1000                   return 1;
1001                 }
1004         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1005 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1006    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1009 ############################################
1010 # check for unix domain sockets
1011 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1012     AC_TRY_COMPILE([
1013 #include <sys/types.h>
1014 #include <stdlib.h>
1015 #include <stddef.h>
1016 #include <sys/socket.h>
1017 #include <sys/un.h>],
1019   struct sockaddr_un sunaddr; 
1020   sunaddr.sun_family = AF_UNIX;
1022         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1023 if test x"$samba_cv_unixsocket" = x"yes"; then
1024    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1028 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1029     AC_TRY_COMPILE([
1030 #include <sys/types.h>
1031 #if STDC_HEADERS
1032 #include <stdlib.h>
1033 #include <stddef.h>
1034 #endif
1035 #include <sys/socket.h>],[socklen_t i = 0],
1036         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1037 if test x"$samba_cv_socklen_t" = x"yes"; then
1038    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1041 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1042     AC_TRY_COMPILE([
1043 #include <sys/types.h>
1044 #if STDC_HEADERS
1045 #include <stdlib.h>
1046 #include <stddef.h>
1047 #endif
1048 #include <signal.h>],[sig_atomic_t i = 0],
1049         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1050 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1051    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1054 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1055     AC_TRY_COMPILE([
1056 #include <sys/types.h>
1057 #if STDC_HEADERS
1058 #include <stdlib.h>
1059 #include <stddef.h>
1060 #endif
1061 #if TIME_WITH_SYS_TIME
1062 # include <sys/time.h>
1063 # include <time.h>
1064 #else
1065 # if HAVE_SYS_TIME_H
1066 #  include <sys/time.h>
1067 # else
1068 #  include <time.h>
1069 # endif
1070 #endif
1071 #if HAVE_AIO_H
1072 #include <aio.h>
1073 #endif
1074 ],[struct timespec ts;],
1075         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1076 if test x"$samba_cv_struct_timespec" = x"yes"; then
1077    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1080 # stupid headers have the functions but no declaration. grrrr.
1081 AC_HAVE_DECL(errno, [#include <errno.h>])
1082 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1083 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1084 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1085 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1086 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1087 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1089 # and glibc has setresuid under linux but the function does
1090 # nothing until kernel 2.1.44! very dumb.
1091 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1092     AC_TRY_RUN([#include <errno.h>
1093 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1094         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1095 if test x"$samba_cv_have_setresuid" = x"yes"; then
1096     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1099 # Do the same check for setresguid...
1101 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1102     AC_TRY_RUN([#include <unistd.h>
1103 #include <errno.h>
1104 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1105         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1106 if test x"$samba_cv_have_setresgid" = x"yes"; then
1107     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1110 AC_FUNC_MEMCMP
1112 ###############################################
1113 # Readline included by default unless explicitly asked not to
1114 test "${with_readline+set}" != "set" && with_readline=yes
1116 # test for where we get readline() from
1117 AC_MSG_CHECKING(whether to use readline)
1118 AC_ARG_WITH(readline,
1119 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1120 [  case "$with_readline" in
1121   yes)
1122     AC_MSG_RESULT(yes)
1124     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1125     AC_CHECK_HEADERS(readline/history.h)
1127     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1128       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1129        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1130       done
1131       AC_CHECK_LIB(readline, rl_callback_handler_install,
1132        [TERMLIBS="-lreadline $TERMLIBS"
1133        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1134        break], [TERMLIBS=], $TERMLIBS)])
1135     ;;
1136   no)
1137     AC_MSG_RESULT(no)
1138     ;;
1139   *)
1140     AC_MSG_RESULT(yes)
1142     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1143     # alternate readline path
1144     _ldflags=${LDFLAGS}
1145     _cppflags=${CPPFLAGS}
1147     # Add additional search path
1148     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1149     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1151     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1152     AC_CHECK_HEADERS(readline/history.h)
1154     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1155       for termlib in ncurses curses termcap terminfo termlib; do
1156        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1157       done
1158       AC_CHECK_LIB(readline, rl_callback_handler_install,
1159        [TERMLDFLAGS="-L$with_readline/lib"
1160        TERMCPPFLAGS="-I$with_readline/include"
1161        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1162        TERMLIBS="-lreadline $TERMLIBS"
1163        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1164        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1166     LDFLAGS=$_ldflags
1167     ;;
1168   esac],
1169   AC_MSG_RESULT(no)
1171 AC_SUBST(TERMLIBS)
1172 AC_SUBST(TERMLDFLAGS)
1174 # The readline API changed slightly from readline3 to readline4, so
1175 # code will generate warnings on one of them unless we have a few
1176 # special cases.
1177 AC_CHECK_LIB(readline, rl_completion_matches,
1178              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1179                         [Do we have rl_completion_matches?])],
1180              [],
1181              [$TERMLIBS])
1183 # The following test taken from the cvs sources
1184 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1185 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1186 # libsocket.so which has a bad implementation of gethostbyname (it
1187 # only looks in /etc/hosts), so we only look for -lsocket if we need
1188 # it.
1189 AC_CHECK_FUNCS(connect)
1190 if test x"$ac_cv_func_connect" = x"no"; then
1191     case "$LIBS" in
1192     *-lnsl*) ;;
1193     *) AC_CHECK_LIB(nsl_s, connect) ;;
1194     esac
1195     case "$LIBS" in
1196     *-lnsl*) ;;
1197     *) AC_CHECK_LIB(nsl, connect) ;;
1198     esac
1199     case "$LIBS" in
1200     *-lsocket*) ;;
1201     *) AC_CHECK_LIB(socket, connect) ;;
1202     esac
1203     case "$LIBS" in
1204     *-linet*) ;;
1205     *) AC_CHECK_LIB(inet, connect) ;;
1206     esac
1207     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1208     dnl has been cached.
1209     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1210        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1211         # ac_cv_func_connect=yes
1212         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1213         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1214     fi
1217 ###############################################
1218 # test for where we get yp_get_default_domain() from
1219 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1220 AC_CHECK_FUNCS(yp_get_default_domain)
1222 # Check if we have execl, if not we need to compile smbrun.
1223 AC_CHECK_FUNCS(execl)
1224 if test x"$ac_cv_func_execl" = x"no"; then
1225     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1228 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1229 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1230 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1231 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1232 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1233 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1234 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1235 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1236 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1237 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1238 AC_CHECK_FUNCS(syslog vsyslog timegm)
1239 AC_CHECK_FUNCS(setlocale nl_langinfo)
1240 AC_CHECK_FUNCS(nanosleep)
1241 # setbuffer, shmget, shm_open are needed for smbtorture
1242 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1243 AC_CHECK_HEADERS(libexc.h)
1244 AC_CHECK_LIB(exc, trace_back_stack)
1246 # syscall() is needed for smbwrapper.
1247 AC_CHECK_FUNCS(syscall)
1249 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1250 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1251 AC_CHECK_FUNCS(__getcwd _getcwd)
1252 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1253 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1254 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1255 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1256 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1257 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1258 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1259 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1260 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1261 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1262 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1263 AC_CHECK_FUNCS(prctl)
1265 AC_TRY_COMPILE([
1266 #ifdef HAVE_SYS_PRCTL_H
1267 #include <sys/prctl.h>
1268 #endif
1270 [int i; i = prtcl(0); ],
1271 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1276 case "$host_os" in
1277     *linux*)
1278        # glibc <= 2.3.2 has a broken getgrouplist
1279        AC_TRY_RUN([
1280 #include <unistd.h>
1281 #include <sys/utsname.h>
1282 main() {
1283        /* glibc up to 2.3 has a broken getgrouplist */
1284 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1285        int libc_major = __GLIBC__;
1286        int libc_minor = __GLIBC_MINOR__;
1288        if (libc_major < 2)
1289               exit(1);
1290        if ((libc_major == 2) && (libc_minor <= 3))
1291               exit(1);
1292 #endif
1293        exit(0);
1295 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1296        if test x"$linux_getgrouplist_ok" = x"yes"; then
1297           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1298        fi
1299        ;;
1300     *)
1301        AC_CHECK_FUNCS(getgrouplist)
1302        ;;
1303 esac
1306 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1309 if test x$ac_cv_func_stat64 = xno ; then
1310   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1311   AC_TRY_LINK([
1312 #if defined(HAVE_UNISTD_H)
1313 #include <unistd.h>
1314 #endif
1315 #include <sys/stat.h>
1316 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1317   AC_MSG_RESULT([$ac_cv_func_stat64])
1318   if test x$ac_cv_func_stat64 = xyes ; then
1319     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1320   fi
1323 if test x$ac_cv_func_lstat64 = xno ; then
1324   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1325   AC_TRY_LINK([
1326 #if defined(HAVE_UNISTD_H)
1327 #include <unistd.h>
1328 #endif
1329 #include <sys/stat.h>
1330 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1331   AC_MSG_RESULT([$ac_cv_func_lstat64])
1332   if test x$ac_cv_func_lstat64 = xyes ; then
1333     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1334   fi
1337 if test x$ac_cv_func_fstat64 = xno ; then
1338   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1339   AC_TRY_LINK([
1340 #if defined(HAVE_UNISTD_H)
1341 #include <unistd.h>
1342 #endif
1343 #include <sys/stat.h>
1344 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1345   AC_MSG_RESULT([$ac_cv_func_fstat64])
1346   if test x$ac_cv_func_fstat64 = xyes ; then
1347     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1348   fi
1351 #################################################
1352 # Check whether struct stat has timestamps with sub-second resolution.
1353 # At least IRIX and Solaris have these.
1355 # We check that 
1356 #       all of st_mtim, st_atim and st_ctim exist
1357 #       all of the members are in fact of type struct timespec
1359 # There is some conflicting standards weirdness about whether we should use
1360 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1361 # prefer struct timespec.
1363 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1364     [
1365         AC_TRY_COMPILE(
1366             [
1367 #if TIME_WITH_SYS_TIME
1368 # include <sys/time.h>
1369 # include <time.h>
1370 #else
1371 # if HAVE_SYS_TIME_H
1372 #  include <sys/time.h>
1373 # else
1374 #  include <time.h>
1375 # endif
1376 #endif
1377 #ifdef HAVE_SYS_STAT_H
1378 #include <sys/stat.h>
1379 #endif
1380             ],
1381             [
1382                 struct timespec t;
1383                 struct stat s = {0};
1384                 t.tv_sec = s.st_mtim.tv_sec;
1385                 t.tv_nsec = s.st_mtim.tv_nsec;
1386                 t.tv_sec = s.st_ctim.tv_sec;
1387                 t.tv_nsec = s.st_ctim.tv_nsec;
1388                 t.tv_sec = s.st_atim.tv_sec;
1389                 t.tv_nsec = s.st_atim.tv_nsec;
1390             ],
1391             samba_stat_hires=yes, samba_stat_hires=no)
1392     ])
1394 if test x"$samba_stat_hires" = x"yes" ; then
1395     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1396     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1397     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1398     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1399             [whether struct stat has sub-second timestamps])
1402 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1403     [
1404         AC_TRY_COMPILE(
1405             [
1406 #if TIME_WITH_SYS_TIME
1407 # include <sys/time.h>
1408 # include <time.h>
1409 #else
1410 # if HAVE_SYS_TIME_H
1411 #  include <sys/time.h>
1412 # else
1413 #  include <time.h>
1414 # endif
1415 #endif
1416 #ifdef HAVE_SYS_STAT_H
1417 #include <sys/stat.h>
1418 #endif
1419             ],
1420             [
1421                 struct timespec t;
1422                 struct stat s = {0};
1423                 t.tv_sec = s.st_mtime;
1424                 t.tv_nsec = s.st_mtimensec;
1425                 t.tv_sec = s.st_ctime;
1426                 t.tv_nsec = s.st_ctimensec;
1427                 t.tv_sec = s.st_atime;
1428                 t.tv_nsec = s.st_atimensec;
1429             ],
1430             samba_stat_hires=yes, samba_stat_hires=no)
1431     ])
1433 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1434     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1435     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1436     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1437     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1438             [whether struct stat has sub-second timestamps without struct timespec])
1441 #####################################
1442 # we might need the resolv library on some systems
1443 AC_CHECK_LIB(resolv, dn_expand)
1446 # Check for the functions putprpwnam, set_auth_parameters,
1447 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1448 # Needed for OSF1 and HPUX.
1451 AC_LIBTESTFUNC(security, putprpwnam)
1452 AC_LIBTESTFUNC(sec, putprpwnam)
1454 AC_LIBTESTFUNC(security, set_auth_parameters)
1455 AC_LIBTESTFUNC(sec, set_auth_parameters)
1457 # UnixWare 7.x has its getspnam in -lgen
1458 AC_LIBTESTFUNC(gen, getspnam)
1460 AC_LIBTESTFUNC(security, getspnam)
1461 AC_LIBTESTFUNC(sec, getspnam)
1463 AC_LIBTESTFUNC(security, bigcrypt)
1464 AC_LIBTESTFUNC(sec, bigcrypt)
1466 AC_LIBTESTFUNC(security, getprpwnam)
1467 AC_LIBTESTFUNC(sec, getprpwnam)
1469 ############################################
1470 # Check if we have libattr
1471 case "$host_os" in
1472   *osf*)
1473         AC_SEARCH_LIBS(getproplist, [proplist])
1474         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1475         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1476         AC_CHECK_FUNCS(sizeof_proplist_entry)
1477   ;;
1478   *)
1479         AC_SEARCH_LIBS(getxattr, [attr])
1480         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1481         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1482         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1483         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1484         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1485         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1486         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1487   ;;
1488 esac
1490 # Check if we have extattr
1491 case "$host_os" in
1492   *freebsd4* | *dragonfly* )
1493     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1494     ;;
1495   *)
1496     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1497     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1498     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1499     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1500     ;;
1501 esac
1503 # Assume non-shared by default and override below
1504 BLDSHARED="false"
1506 # these are the defaults, good for lots of systems
1507 HOST_OS="$host_os"
1508 LDSHFLAGS="-shared"
1509 SONAMEFLAG="#"
1510 NSSSONAMEVERSIONSUFFIX=""
1511 SHLD="\${CC} \${CFLAGS}"
1512 PICFLAGS=""
1513 PICSUFFIX="po"
1514 SHLIBEXT="so"
1516 if test "$enable_shared" = "yes"; then
1517   # this bit needs to be modified for each OS that is suported by
1518   # smbwrapper. You need to specify how to create a shared library and
1519   # how to compile C code to produce PIC object files
1521   AC_MSG_CHECKING([ability to build shared libraries])
1523   # and these are for particular systems
1524   case "$host_os" in
1525                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1526                         BLDSHARED="true"
1527                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1528                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1529                         else
1530                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1531                         fi
1532                         DYNEXP="-Wl,--export-dynamic"
1533                         PICFLAGS="-fPIC"
1534                         SONAMEFLAG="-Wl,-soname="
1535                         NSSSONAMEVERSIONSUFFIX=".2"
1536                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1537                         ;;
1538                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1539                         BLDSHARED="true"
1540                         LDSHFLAGS="-G"
1541                         SONAMEFLAG="-h "
1542                         if test "${GCC}" = "yes"; then
1543                                 PICFLAGS="-fPIC"
1544                                 SONAMEFLAG="-Wl,-soname="
1545                                 NSSSONAMEVERSIONSUFFIX=".1"
1546                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1547                                         DYNEXP="-Wl,-E"
1548                                 fi
1549                         else
1550                                 PICFLAGS="-KPIC"
1551                                 ## ${CFLAGS} added for building 64-bit shared 
1552                                 ## libs using Sun's Compiler
1553                                 LDSHFLAGS="-G \${CFLAGS}"
1554                                 PICSUFFIX="po.o"
1555                         fi
1556                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1557                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1558                         ;;
1559                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1560                         BLDSHARED="true"
1561                         LDSHFLAGS="-G"
1562                         SONAMEFLAG="-Wl,-h,"
1563                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1564                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1565                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1566                         ;;
1567                 *netbsd* | *freebsd* | *dragonfly* )  
1568                         BLDSHARED="true"
1569                         LDSHFLAGS="-shared"
1570                         DYNEXP="-Wl,--export-dynamic"
1571                         SONAMEFLAG="-Wl,-soname,"
1572                         PICFLAGS="-fPIC -DPIC"
1573                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1574                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1575                         ;;
1576                 *openbsd*)  BLDSHARED="true"
1577                         LDSHFLAGS="-shared"
1578                         DYNEXP="-Wl,-Bdynamic"
1579                         SONAMEFLAG="-Wl,-soname,"
1580                         PICFLAGS="-fPIC"
1581                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1582                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1583                         ;;
1584                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1585                         case "$host_os" in
1586                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1587                         ;;
1588                         esac
1589                         BLDSHARED="true"
1590                         LDSHFLAGS="-set_version sgi1.0 -shared"
1591                         SONAMEFLAG="-soname "
1592                         SHLD="\${LD}"
1593                         if test "${GCC}" = "yes"; then
1594                                 PICFLAGS="-fPIC"
1595                         else 
1596                                 PICFLAGS="-KPIC"
1597                         fi
1598                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1599                         ;;
1600                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1601                         BLDSHARED="true"
1602                         LDSHFLAGS="-Wl,-G,-bexpall"
1603                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1604                         PICFLAGS="-O2"
1605                         if test "${GCC}" != "yes"; then
1606                                 ## for funky AIX compiler using strncpy()
1607                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1608                         fi
1610                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1611                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1612                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1613                         ;;
1614                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1615                         # Use special PIC flags for the native HP-UX compiler.
1616                         if test $ac_cv_prog_cc_Ae = yes; then
1617                                 BLDSHARED="true"
1618                                 SHLD="cc"
1619                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1620                                 SONAMEFLAG="-Wl,+h "
1621                                 PICFLAGS="+z"
1622                         elif test "${GCC}" = "yes"; then
1623                                 PICFLAGS="-fPIC"
1624                         fi
1625                         if test "$host_cpu" = "ia64"; then
1626                                 SHLIBEXT="so"
1627                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1628                         else
1629                                 SHLIBEXT="sl"
1630                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1631                         fi
1632                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1633                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1634                         ;;
1635                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1636                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1637                         ;;
1638                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1639                         BLDSHARED="true"
1640                         LDSHFLAGS="-shared"
1641                         SONAMEFLAG="-Wl,-soname,"
1642                         PICFLAGS="-fPIC"
1643                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1644                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1645                         ;;
1646                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1647                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1648                         ;;
1649                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1650                         BLDSHARED="true"
1651                         LDSHFLAGS="-shared"
1652                         SONAMEFLAG="-Wl,-soname,"
1653                         PICFLAGS="-KPIC"
1654                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1655                         ;;
1656                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1657                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1658                         ;;
1659                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1660                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1661                         ;;
1662                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1663                         case "$host" in
1664                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1665                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1666                                         fi
1667                                         LDSHFLAGS="-G"
1668                                         DYNEXP="-Bexport"
1669                                 ;;
1670                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1671                         esac
1672                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1673                         ;;
1675                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1676                         if [ test "$GCC" != yes ]; then
1677                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1678                         fi
1679                         LDSHFLAGS="-G"
1680                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1681                         ;;
1682                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1683                         BLDSHARED="false"
1684                         LDSHFLAGS=""
1685                         ;;
1687                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1688                         BLDSHARED="true"
1689                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1690                         SHLIBEXT="dylib"
1691                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1692                         ;;
1694                 *)
1695                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1696                         ;;
1697   esac
1698   AC_SUBST(DYNEXP)
1699   AC_MSG_RESULT($BLDSHARED)
1700   AC_MSG_CHECKING([linker flags for shared libraries])
1701   AC_MSG_RESULT([$LDSHFLAGS])
1702   AC_MSG_CHECKING([compiler flags for position-independent code])
1703   AC_MSG_RESULT([$PICFLAGS])
1706 #######################################################
1707 # test whether building a shared library actually works
1708 if test $BLDSHARED = true; then
1709 AC_CACHE_CHECK([whether building shared libraries actually works], 
1710                [ac_cv_shlib_works],[
1711    # try building a trivial shared library
1712    ac_cv_shlib_works=no
1713    # The $SHLD and $LDSHFLAGS variables may contain references to other
1714    # variables so they need to be eval'ed.
1715    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1716         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1717    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1718         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1719    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1721 if test $ac_cv_shlib_works = no; then
1722    BLDSHARED=false
1726 ################
1728 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1729 AC_TRY_RUN([#include <stdio.h>
1730 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1731 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1732 if test x"$samba_cv_have_longlong" = x"yes"; then
1733     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1737 # Check if the compiler supports the LL prefix on long long integers.
1738 # AIX needs this.
1740 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1741     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1742         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1743 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1744    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1747   
1748 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1749 AC_TRY_RUN([#include <stdio.h>
1750 #include <sys/stat.h>
1751 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1752 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1753 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1754     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1757 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1758 AC_TRY_RUN([
1759 #if defined(HAVE_UNISTD_H)
1760 #include <unistd.h>
1761 #endif
1762 #include <stdio.h>
1763 #include <sys/stat.h>
1764 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1765 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1766 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1767     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1770 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1771 AC_TRY_RUN([
1772 #if defined(HAVE_UNISTD_H)
1773 #include <unistd.h>
1774 #endif
1775 #include <stdio.h>
1776 #include <sys/stat.h>
1777 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1778 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1779 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1780     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1783 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1784 AC_TRY_RUN([
1785 #if defined(HAVE_UNISTD_H)
1786 #include <unistd.h>
1787 #endif
1788 #include <stdio.h>
1789 #include <sys/stat.h>
1790 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1791 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1792 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1793     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1796 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1797 AC_TRY_RUN([
1798 #if defined(HAVE_UNISTD_H)
1799 #include <unistd.h>
1800 #endif
1801 #include <stdio.h>
1802 #include <sys/stat.h>
1803 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1804 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1805 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1806     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1809 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1810 AC_TRY_RUN([
1811 #if defined(HAVE_UNISTD_H)
1812 #include <unistd.h>
1813 #endif
1814 #include <stdio.h>
1815 #include <sys/stat.h>
1816 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1817 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1818 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1819     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1822 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1823 AC_TRY_COMPILE([
1824 #if defined(HAVE_UNISTD_H)
1825 #include <unistd.h>
1826 #endif
1827 #include <sys/types.h>
1828 #include <dirent.h>],
1829 [DIR64 de;],
1830 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1831 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1832     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1835 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1836 AC_TRY_COMPILE([
1837 #if defined(HAVE_UNISTD_H)
1838 #include <unistd.h>
1839 #endif
1840 #include <sys/types.h>
1841 #include <dirent.h>],
1842 [struct dirent64 de;],
1843 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1844 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1845     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1848 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1849 AC_TRY_RUN([
1850 #if defined(HAVE_UNISTD_H)
1851 #include <unistd.h>
1852 #endif
1853 #include <sys/types.h>
1854 main() { dev_t dev; int i = major(dev); return 0; }],
1855 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1856 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1857     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1860 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1861 AC_TRY_RUN([
1862 #if defined(HAVE_UNISTD_H)
1863 #include <unistd.h>
1864 #endif
1865 #include <sys/types.h>
1866 main() { dev_t dev; int i = minor(dev); return 0; }],
1867 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1868 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1869     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1872 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1873 AC_TRY_RUN([
1874 #if defined(HAVE_UNISTD_H)
1875 #include <unistd.h>
1876 #endif
1877 #include <sys/types.h>
1878 main() { dev_t dev = makedev(1,2); return 0; }],
1879 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1880 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1881     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1884 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1885 AC_TRY_RUN([#include <stdio.h>
1886 main() { char c; c=250; exit((c > 0)?0:1); }],
1887 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1888 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1889     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1892 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1893 AC_TRY_COMPILE([#include <sys/types.h>
1894 #include <sys/socket.h>
1895 #include <netinet/in.h>],
1896 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1897 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1898 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1899     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1902 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1903 AC_TRY_COMPILE([#include <sys/types.h>
1904 #include <dirent.h>
1905 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1906 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1907 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1908     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1911 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1912 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1913 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1914 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1915     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1918 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1919 AC_TRY_RUN([
1920 #include <sys/time.h>
1921 #include <unistd.h>
1922 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1923            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1924 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1925     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1928 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1929 AC_TRY_LINK([#include <stdarg.h>
1930 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1931 samba_cv_HAVE_VA_COPY=yes,
1932 samba_cv_HAVE_VA_COPY=no)])
1933 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1934     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1935 else
1936     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1937     AC_TRY_LINK([#include <stdarg.h>
1938     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1939     samba_cv_HAVE___VA_COPY=yes,
1940     samba_cv_HAVE___VA_COPY=no)])
1941     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1942         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1943     fi
1946 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1947 AC_TRY_RUN([
1948 #include <sys/types.h>
1949 #include <stdarg.h>
1950 void foo(const char *format, ...) { 
1951        va_list ap;
1952        int len;
1953        char buf[5];
1955        va_start(ap, format);
1956        len = vsnprintf(buf, 0, format, ap);
1957        va_end(ap);
1958        if (len != 5) exit(1);
1960        va_start(ap, format);
1961        len = vsnprintf(0, 0, format, ap);
1962        va_end(ap);
1963        if (len != 5) exit(1);
1965        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1967        exit(0);
1969 main() { foo("hello"); }
1971 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1972 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1973     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1976 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1977 AC_TRY_RUN([#include <sys/types.h>
1978 #include <dirent.h>
1979 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1980 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1981 di->d_name[0] == 0) exit(0); exit(1);} ],
1982 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1983 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1984     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1987 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1988 AC_TRY_COMPILE([#include <sys/types.h>
1989 #include <utime.h>],
1990 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1991 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1992 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1993     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1996 ##############
1997 # Check utmp details, but only if our OS offers utmp.h
1998 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1999 dnl  utmp and utmpx come in many flavours
2000 dnl  We need to check for many of them
2001 dnl  But we don't need to do each and every one, because our code uses
2002 dnl  mostly just the utmp (not utmpx) fields.
2004 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2006 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2007 AC_TRY_COMPILE([#include <sys/types.h>
2008 #include <utmp.h>],
2009 [struct utmp ut;  ut.ut_name[0] = 'a';],
2010 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2011 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2012     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2013 fi 
2015 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2016 AC_TRY_COMPILE([#include <sys/types.h>
2017 #include <utmp.h>],
2018 [struct utmp ut;  ut.ut_user[0] = 'a';],
2019 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2020 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2021     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2022 fi 
2024 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2025 AC_TRY_COMPILE([#include <sys/types.h>
2026 #include <utmp.h>],
2027 [struct utmp ut;  ut.ut_id[0] = 'a';],
2028 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2029 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2030     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2031 fi 
2033 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2034 AC_TRY_COMPILE([#include <sys/types.h>
2035 #include <utmp.h>],
2036 [struct utmp ut;  ut.ut_host[0] = 'a';],
2037 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2038 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2039     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2040 fi 
2042 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2043 AC_TRY_COMPILE([#include <sys/types.h>
2044 #include <utmp.h>],
2045 [struct utmp ut;  time_t t; ut.ut_time = t;],
2046 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2047 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2048     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2049 fi 
2051 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2052 AC_TRY_COMPILE([#include <sys/types.h>
2053 #include <utmp.h>],
2054 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2055 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2056 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2057     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2058 fi 
2060 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2061 AC_TRY_COMPILE([#include <sys/types.h>
2062 #include <utmp.h>],
2063 [struct utmp ut;  ut.ut_type = 0;],
2064 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2065 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2066     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2067 fi 
2069 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2070 AC_TRY_COMPILE([#include <sys/types.h>
2071 #include <utmp.h>],
2072 [struct utmp ut;  ut.ut_pid = 0;],
2073 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2074 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2075     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2076 fi 
2078 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2079 AC_TRY_COMPILE([#include <sys/types.h>
2080 #include <utmp.h>],
2081 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2082 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2083 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2084     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2085 fi 
2087 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2088 AC_TRY_COMPILE([#include <sys/types.h>
2089 #include <utmp.h>],
2090 [struct utmp ut;  ut.ut_addr = 0;],
2091 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2092 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2093     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2094 fi 
2096 if test x$ac_cv_func_pututline = xyes ; then
2097   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2098   AC_TRY_COMPILE([#include <sys/types.h>
2099 #include <utmp.h>],
2100   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2101   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2102   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2103       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2104   fi
2107 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2108 AC_TRY_COMPILE([#include <sys/types.h>
2109 #include <utmpx.h>],
2110 [struct utmpx ux;  ux.ut_syslen = 0;],
2111 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2112 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2113     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2114 fi 
2117 # end utmp details
2120 ICONV_LOCATION=standard
2121 LOOK_DIRS="/usr /usr/local /sw /opt"
2122 AC_ARG_WITH(libiconv,
2123 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2125   if test "$withval" = "no" ; then
2126     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2127   else
2128      if test "$withval" != "yes" ; then
2129         ICONV_PATH_SPEC=yes
2130         LOOK_DIRS="$withval"
2131      fi
2132   fi
2135 for i in $LOOK_DIRS ; do
2136     save_LIBS=$LIBS
2137     save_LDFLAGS=$LDFLAGS
2138     save_CPPFLAGS=$CPPFLAGS
2139     ICONV_FOUND="no"
2140     unset libext
2141     CPPFLAGS="$CPPFLAGS -I$i/include"
2142 dnl This is here to handle -withval stuff for --with-libiconv
2143 dnl Perhaps we should always add a -L
2145 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2146 dnl installation paths. This gets a little tricky since we might have iconv
2147 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2148 dnl succeed when the header is found. To counter this, make sure the 
2149 dnl library directory is there and check the ABI directory first (which
2150 dnl should be harmless on other systems.
2151 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2152     for l in "lib32" "lib" "lib/hpux32"; do
2153         if test -d "$i/$l" ; then
2154                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2155         LIBS=
2156         export LDFLAGS LIBS CPPFLAGS
2157 dnl Try to find iconv(3)
2158                 jm_ICONV($i/$l)
2159                 if test x"$ICONV_FOUND" = "xyes" ; then
2160             libext="$l"
2161             break;
2162         fi
2163         fi
2164     done
2166     if test x"$ICONV_FOUND" = "xyes" ; then
2167         LDFLAGS=$save_LDFLAGS
2168         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2169         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2170         LIBS="$save_LIBS"
2171         ICONV_LOCATION=$i
2172         export LDFLAGS LIBS CPPFLAGS
2173 dnl Now, check for a working iconv ... we want to do it here because
2174 dnl there might be a working iconv further down the list of LOOK_DIRS
2176         ############
2177         # check for iconv in libc
2178         ic_save_LIBS="$LIBS"
2179         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2180            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2181         fi
2182         if test x"$jm_cv_lib_iconv" != x; then
2183            LIBS="$LIBS -l$jm_cv_lib_iconv"
2184         fi
2185 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2186         default_dos_charset=no
2187         default_display_charset=no
2188         default_unix_charset=no
2190         # check for default dos charset name
2191         for j in CP850 IBM850 ; do
2192             rjs_CHARSET($j)
2193             if test x"$ICONV_CHARSET" = x"$j"; then
2194                 default_dos_charset="\"$j\""
2195                 break
2196             fi
2197         done
2198         # check for default display charset name
2199         for j in ASCII 646 ; do
2200             rjs_CHARSET($j)
2201             if test x"$ICONV_CHARSET" = x"$j"; then
2202                 default_display_charset="\"$j\""
2203                 break
2204             fi
2205         done
2206         # check for default unix charset name
2207         for j in UTF-8 UTF8 ; do
2208             rjs_CHARSET($j)
2209             if test x"$ICONV_CHARSET" = x"$j"; then
2210                 default_unix_charset="\"$j\""
2211                 break
2212             fi
2213         done
2214         
2215         if test "$default_dos_charset" != "no" -a \
2216                 "$default_dos_charset" != "cross" -a \
2217                 "$default_display_charset" != "no" -a \ 
2218                 "$default_display_charset" != "cross" -a \
2219                 "$default_unix_charset" != "no" -a \
2220                 "$default_unix_charset" != "cross"
2221         then
2222                 samba_cv_HAVE_NATIVE_ICONV=yes
2223         else if test "$default_dos_charset" = "cross" -o \
2224                      "$default_display_charset" = "cross" -o \
2225                      "$default_unix_charset" = "cross"
2226         then
2227                 samba_cv_HAVE_NATIVE_ICONV=cross
2228         else
2229                 samba_cv_HAVE_NATIVE_ICONV=no
2230         fi
2231         fi
2232 dnl ])
2234         LIBS="$ic_save_LIBS"
2235         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2236            CPPFLAGS=$save_CPPFLAGS
2237            LDFLAGS=$save_LDFLAGS
2238            LIBS=$save_LIBS
2239            if test x"$jm_cv_lib_iconv" != x; then
2240               LIBS="$LIBS -l$jm_cv_lib_iconv"
2241            fi
2242            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2243            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2244            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2245            export CPPFLAGS
2246            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2247            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2248            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2249            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2250            break
2251         fi
2252 dnl We didn't find a working iconv, so keep going
2253     fi
2254 dnl We only need to clean these up here for the next pass through the loop
2255     CPPFLAGS=$save_CPPFLAGS
2256     LDFLAGS=$save_LDFLAGS
2257     LIBS=$save_LIBS
2258     export LDFLAGS LIBS CPPFLAGS
2259 done
2260 unset libext
2263 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2264     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2265     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2266    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2267    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2268    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2272 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2273 AC_TRY_RUN([
2274 #include <sys/types.h>
2275 #include <fcntl.h>
2276 #ifndef F_GETLEASE
2277 #define F_GETLEASE      1025
2278 #endif
2279 main() {
2280        int fd = open("/dev/null", O_RDONLY);
2281        return fcntl(fd, F_GETLEASE, 0) == -1;
2284 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2285 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2286     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2289 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2290 AC_TRY_RUN([
2291 #include <sys/types.h>
2292 #include <fcntl.h>
2293 #include <signal.h>
2294 #ifndef F_NOTIFY
2295 #define F_NOTIFY 1026
2296 #endif
2297 main() {
2298         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2301 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2302 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2303     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2306 #################################################
2307 # Check if FAM notifications are available. For FAM info, see
2308 #       http://oss.sgi.com/projects/fam/
2309 #       http://savannah.nongnu.org/projects/fam/
2311 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2312 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2313     # On IRIX, libfam requires libC, but other FAM implementations might not
2314     # need it.
2315     AC_CHECK_LIB(fam, FAMOpen2,
2316             [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2317             [samba_cv_HAVE_LIBFAM=no])
2319     if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2320         samba_fam_xtra=-lC
2321         AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2322                 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2323                 [samba_cv_HAVE_LIBFAM=no])
2324         unset samba_fam_xtra
2325     fi
2328 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2329     AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1,
2330             [Whether FAM is file notifications are available])
2331     AC_TRY_COMPILE([#include <fam.h>],
2332                 [FAMCodes code = FAMChanged;],
2333                 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2334                     [Whether fam.h contains a typedef for enum FAMCodes]),
2335                 [])
2338 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2339 AC_TRY_RUN([
2340 #include <sys/types.h>
2341 #include <fcntl.h>
2342 #include <signal.h>
2343 #include <sys/file.h>
2344 #ifndef LOCK_MAND
2345 #define LOCK_MAND       32
2346 #define LOCK_READ       64
2347 #endif
2348 main() {
2349         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2352 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2353 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2354     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2358 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2359 AC_TRY_COMPILE([#include <sys/types.h>
2360 #include <fcntl.h>],
2361 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2362 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2363 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2364     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2367 #################################################
2368 # Check for POSIX capability support
2370 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2371     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2372     [], [])
2374 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2376     ac_save_LIBS=$LIBS
2377     AC_LIBTESTFUNC(cap, cap_get_proc)
2379     AC_CACHE_CHECK([for POSIX capabilities],
2380             samba_cv_HAVE_POSIX_CAPABILITIES,
2381             [
2382                 AC_TRY_RUN([
2383 #include <sys/types.h>
2384 #include <sys/capability.h>
2385 main() {
2386  cap_t cap;
2387  cap_value_t vals[1];
2388  if (!(cap = cap_get_proc()))
2389    exit(1);
2390  vals[0] = CAP_CHOWN;
2391  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2392  cap_set_proc(cap);
2393  exit(0);
2395                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2396                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2397                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2398             ])
2400 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2401     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2402             [Whether POSIX capabilities are available])
2403 else
2404     LIBS=$ac_save_LIBS
2410 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2411 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2414 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2415 AC_TRY_COMPILE([#include <sys/types.h>
2416 #if defined(HAVE_RPC_RPC_H)
2417 #include <rpc/rpc.h>
2418 #endif],
2419 [int16 testvar;],
2420 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2421 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2422     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2425 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2426 AC_TRY_COMPILE([#include <sys/types.h>
2427 #if defined(HAVE_RPC_RPC_H)
2428 #include <rpc/rpc.h>
2429 #endif],
2430 [uint16 testvar;],
2431 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2432 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2433     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2436 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2437 AC_TRY_COMPILE([#include <sys/types.h>
2438 #if defined(HAVE_RPC_RPC_H)
2439 #include <rpc/rpc.h>
2440 #endif],
2441 [int32 testvar;],
2442 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2443 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2444     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2447 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2448 AC_TRY_COMPILE([#include <sys/types.h>
2449 #if defined(HAVE_RPC_RPC_H)
2450 #include <rpc/rpc.h>
2451 #endif],
2452 [uint32 testvar;],
2453 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2454 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2455     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2459 dnl Some systems (SCO) have a problem including
2460 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2461 dnl as a #define in <prot.h> and as part of an enum
2462 dnl in <rpc/rpc.h>.
2465 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2466 AC_TRY_COMPILE([#include <sys/types.h>
2467 #ifdef HAVE_SYS_SECURITY_H
2468 #include <sys/security.h>
2469 #include <prot.h>
2470 #endif  /* HAVE_SYS_SECURITY_H */
2471 #if defined(HAVE_RPC_RPC_H)
2472 #include <rpc/rpc.h>
2473 #endif],
2474 [int testvar;],
2475 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2476 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2477     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2480 AC_MSG_CHECKING([for test routines])
2481 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2482            AC_MSG_RESULT(yes),
2483            AC_MSG_ERROR([cant find test code. Aborting config]),
2484            AC_MSG_WARN([cannot run when cross-compiling]))
2486 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2487 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2488            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2489 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2490     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2493 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2494 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2495            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2496            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2497            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2498 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2499 then
2500     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2503 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2504 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2505            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2506 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2507     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2510 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2511 SAVE_CPPFLAGS="$CPPFLAGS"
2512 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2513 AC_TRY_COMPILE([
2514 #define REPLACE_GETPASS 1
2515 #define NO_PROTO_H 1
2516 #define NO_CONFIG_H 1
2517 #define main dont_declare_main
2518 #include "${srcdir-.}/lib/getsmbpass.c"
2519 #undef main
2520 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2521 CPPFLAGS="$SAVE_CPPFLAGS"
2523 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2524         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2527 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2528 AC_TRY_RUN([
2529 #include <stdio.h>
2530 #include <sys/types.h>
2531 #include <netinet/in.h>
2532 #ifdef HAVE_ARPA_INET_H
2533 #include <arpa/inet.h>
2534 #endif
2535 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2536 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2537     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2538 exit(1);}],
2539            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2540 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2541     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2544 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2545 AC_TRY_RUN([#include <stdlib.h>
2546 #include <sys/types.h>
2547 #include <sys/stat.h>
2548 #include <unistd.h>
2549 main() { 
2550   struct stat st;
2551   char tpl[20]="/tmp/test.XXXXXX"; 
2552   int fd = mkstemp(tpl); 
2553   if (fd == -1) exit(1);
2554   unlink(tpl);
2555   if (fstat(fd, &st) != 0) exit(1);
2556   if ((st.st_mode & 0777) != 0600) exit(1);
2557   exit(0);
2559 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2560 samba_cv_HAVE_SECURE_MKSTEMP=no,
2561 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2562 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2563     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2566 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2567 AC_TRY_RUN([#include <unistd.h>
2568 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2569 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2570 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2571     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2574 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2575 AC_TRY_RUN([#include <unistd.h>
2576 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2577 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2578 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2579     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2582 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2583 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2584            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2585 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2586     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2587 else
2588     AC_MSG_WARN(running as non-root will disable some tests)
2591 ##################
2592 # look for a method of finding the list of network interfaces
2593 iface=no;
2594 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2595 AC_TRY_RUN([
2596 #define HAVE_IFACE_AIX 1
2597 #define AUTOCONF_TEST 1
2598 #include "confdefs.h"
2599 #include "${srcdir-.}/lib/interfaces.c"],
2600            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2601 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2602     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2605 if test $iface = no; then
2606 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2607 AC_TRY_RUN([
2608 #define HAVE_IFACE_IFCONF 1
2609 #define AUTOCONF_TEST 1
2610 #include "confdefs.h"
2611 #include "${srcdir-.}/lib/interfaces.c"],
2612            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2613 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2614     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2618 if test $iface = no; then
2619 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2620 AC_TRY_RUN([
2621 #define HAVE_IFACE_IFREQ 1
2622 #define AUTOCONF_TEST 1
2623 #include "confdefs.h"
2624 #include "${srcdir-.}/lib/interfaces.c"],
2625            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2626 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2627     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2632 ################################################
2633 # look for a method of setting the effective uid
2634 seteuid=no;
2635 if test $seteuid = no; then
2636 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2637 AC_TRY_RUN([
2638 #define AUTOCONF_TEST 1
2639 #define USE_SETRESUID 1
2640 #include "confdefs.h"
2641 #include "${srcdir-.}/lib/util_sec.c"],
2642            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2643 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2644     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2649 if test $seteuid = no; then
2650 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2651 AC_TRY_RUN([
2652 #define AUTOCONF_TEST 1
2653 #define USE_SETREUID 1
2654 #include "confdefs.h"
2655 #include "${srcdir-.}/lib/util_sec.c"],
2656            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2657 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2658     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2662 if test $seteuid = no; then
2663 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2664 AC_TRY_RUN([
2665 #define AUTOCONF_TEST 1
2666 #define USE_SETEUID 1
2667 #include "confdefs.h"
2668 #include "${srcdir-.}/lib/util_sec.c"],
2669            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2670 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2671     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2675 if test $seteuid = no; then
2676 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2677 AC_TRY_RUN([
2678 #define AUTOCONF_TEST 1
2679 #define USE_SETUIDX 1
2680 #include "confdefs.h"
2681 #include "${srcdir-.}/lib/util_sec.c"],
2682            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2683 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2684     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2689 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2690 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2691            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2692 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2693     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2696 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2697 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2698            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2699 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2700     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2703 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2704 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2705            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2706 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2707     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2709 else
2712 dnl Don't check for 64 bit fcntl locking if we know that the
2713 dnl glibc2.1 broken check has succeeded.
2714 dnl 
2716   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2717   AC_TRY_RUN([
2718 #if defined(HAVE_UNISTD_H)
2719 #include <unistd.h>
2720 #endif
2721 #include <stdio.h>
2722 #include <stdlib.h>
2724 #ifdef HAVE_FCNTL_H
2725 #include <fcntl.h>
2726 #endif
2728 #ifdef HAVE_SYS_FCNTL_H
2729 #include <sys/fcntl.h>
2730 #endif
2731 main() { struct flock64 fl64;
2732 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2733 exit(0);
2734 #else
2735 exit(1);
2736 #endif
2738        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2740   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2741       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2742   fi
2745 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2746 AC_TRY_COMPILE([#include <sys/types.h>
2747 #include <sys/stat.h>
2748 #include <unistd.h>],
2749 [struct stat st;  st.st_blocks = 0;],
2750 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2751 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2752     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2753 fi 
2755 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2756 AC_TRY_COMPILE([#include <sys/types.h>
2757 #include <sys/stat.h>
2758 #include <unistd.h>],
2759 [struct stat st;  st.st_blksize = 0;],
2760 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2761 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2762     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2765 case "$host_os" in
2766 *linux*)
2767 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2768 AC_TRY_COMPILE([
2769 #ifdef HAVE_SYS_VFS_H
2770 #include <sys/vfs.h>
2771 #endif
2772 #ifdef HAVE_SYS_CAPABILITY_H
2773 #include <sys/capability.h>
2774 #endif
2775 ],[int i;],
2776    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2777 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2778    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2781 esac
2783 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2784 AC_TRY_COMPILE([
2785 #include <sys/types.h>
2786 #include <sys/acl.h>
2787 #if defined(HAVE_RPCSVC_NIS_H)
2788 #include <rpcsvc/nis.h>
2789 #endif],
2790 [int i;],
2791 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2792 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2793         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2796 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2797 AC_TRY_RUN([
2798 #include <stdio.h>
2799 #include <limits.h>
2800 main() {
2801         char *newpath = realpath("/tmp", NULL);
2802         exit ((newpath != NULL) ? 0 : 1);
2805 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2806 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2807     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2810 #################################################
2811 # check for smbwrapper support
2812 AC_MSG_CHECKING(whether to use smbwrapper)
2813 AC_ARG_WITH(smbwrapper,
2814 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2815 [ case "$withval" in
2816   yes)
2817     AC_MSG_RESULT(yes)
2818     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2819         WRAPPROG="bin/smbsh\$(EXEEXT)"
2820         WRAP="bin/smbwrapper.$SHLIBEXT"
2821         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
2822         WRAP_INC="-I\$(srcdir)/smbwrapper"
2824 # Conditions under which smbwrapper should not be built.
2826         if test x$PICFLAGS = x; then
2827            echo No support for PIC code - disabling smbwrapper and smbsh
2828            WRAPPROG=""
2829            WRAP=""
2830            WRAP_OBJS=""
2831            WRAP_INC=""
2832         elif test x$ac_cv_func_syscall = xno; then
2833            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2834            WRAPPROG=""
2835            WRAP=""
2836            WRAP_OBJS=""
2837            WRAP_INC=""
2838         fi
2839         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2840         SMBWRAPPER="$WRAPPROG $WRAP"
2841         SMBWRAP_OBJS="$WRAP_OBJS"
2842         SMBWRAP_INC="$WRAP_INC"
2843     ;;
2844   *)
2845     AC_MSG_RESULT(no)
2846     ;;
2847   esac ],
2848   AC_MSG_RESULT(no)
2851 #################################################
2852 # check for AFS clear-text auth support
2853 samba_cv_WITH_AFS=no
2854 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2855 AC_ARG_WITH(afs,
2856 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2857 [ case "$withval" in
2858   yes|auto)
2859     AC_MSG_RESULT($withval)
2860     samba_cv_WITH_AFS=$withval
2861     ;;
2862   *)
2863     AC_MSG_RESULT(no)
2864     ;;
2865   esac ],
2866   AC_MSG_RESULT(no)
2869 ####################################################
2870 # check for Linux-specific AFS fake-kaserver support
2871 samba_cv_WITH_FAKE_KASERVER=no
2872 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2873 AC_ARG_WITH(fake-kaserver,
2874 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2875 [ case "$withval" in
2876   yes|auto)
2877     AC_MSG_RESULT($withval)
2878     samba_cv_WITH_FAKE_KASERVER=$withval
2879     ;;
2880   *)
2881     AC_MSG_RESULT(no)
2882     ;;
2883   esac ],
2884   AC_MSG_RESULT(no)
2887 #################################################
2888 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2889 if test x"$samba_cv_WITH_AFS" != x"no" ||
2890    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2892     # see if this box has the afs-headers in /usr/include/afs
2893     AC_MSG_CHECKING(for /usr/include/afs)
2894     if test -d /usr/include/afs; then
2895           CFLAGS="$CFLAGS -I/usr/include/afs"
2896           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2897           AC_MSG_RESULT(yes)
2898     else
2899       AC_MSG_RESULT(no)
2900     fi
2901    
2902     # check for afs.h
2903     have_afs_headers=no
2904     AC_CHECK_HEADERS(afs.h afs/afs.h)
2905     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2906         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2907            test x"$samba_cv_WITH_AFS" = x"auto"; then
2908                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2909         else
2910                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2911         fi
2912     else
2913         have_afs_headers=yes
2914     fi
2917 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2918     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2921 #################################################
2922 # check whether to compile AFS/NT ACL mapping module
2923 samba_cv_WITH_VFS_AFSACL=no
2924 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2925 AC_ARG_WITH(vfs-afsacl,
2926 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2927 [ case "$withval" in
2928   yes|auto)
2929     AC_MSG_RESULT($withval)
2930     samba_cv_WITH_VFS_AFSACL=yes
2931     ;;
2932   *)
2933     AC_MSG_RESULT(no)
2934     ;;
2935   esac ],
2936   AC_MSG_RESULT(no)
2939 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2940    default_shared_modules="$default_shared_modules vfs_afsacl"
2942         
2943 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2944     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2947 #################################################
2948 # check for the DFS clear-text auth system
2949 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2950 AC_ARG_WITH(dfs,
2951 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2952 [ case "$withval" in
2953   yes)
2954     AC_MSG_RESULT(yes)
2955     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2956     ;;
2957   *)
2958     AC_MSG_RESULT(no)
2959     ;;
2960   esac ],
2961   AC_MSG_RESULT(no)
2964 ########################################################
2965 # Compile with LDAP support?
2967 with_ldap_support=auto
2968 AC_MSG_CHECKING([for LDAP support])
2970 AC_ARG_WITH(ldap,
2971 [  --with-ldap             LDAP support (default yes)],
2972 [ case "$withval" in
2973     yes|no)
2974         with_ldap_support=$withval
2975         ;;
2976   esac ])
2978 AC_MSG_RESULT($with_ldap_support)
2980 SMBLDAP=""
2981 AC_SUBST(SMBLDAP)
2982 SMBLDAPUTIL=""
2983 AC_SUBST(SMBLDAPUTIL)
2984 if test x"$with_ldap_support" != x"no"; then
2986   ##################################################################
2987   # first test for ldap.h and lber.h
2988   # (ldap.h is required for this test)
2989   AC_CHECK_HEADERS(ldap.h lber.h)
2990   
2991   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2992         if test x"$with_ldap_support" = x"yes"; then
2993          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2994         else
2995          AC_MSG_WARN(ldap.h is needed for LDAP support)
2996         fi
2997         
2998         with_ldap_support=no
2999   fi
3002 if test x"$with_ldap_support" != x"no"; then
3003   ac_save_LIBS=$LIBS
3005   ##################################################################
3006   # we might need the lber lib on some systems. To avoid link errors
3007   # this test must be before the libldap test
3008   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3010   ########################################################
3011   # now see if we can find the ldap libs in standard paths
3012   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3014   ########################################################
3015   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3016   # Check found in pam_ldap 145.
3017   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3019   LIBS="$LIBS $LDAP_LIBS"
3020   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3021     AC_TRY_COMPILE([
3022         #include <lber.h>
3023         #include <ldap.h>], 
3024         [ldap_set_rebind_proc(0, 0, 0);], 
3025         [smb_ldap_cv_ldap_set_rebind_proc=3], 
3026         [smb_ldap_cv_ldap_set_rebind_proc=2]
3027     ) 
3028   ])
3029   
3030   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3032   AC_CHECK_FUNC_EXT(ldap_dn2ad_canonical,$LDAP_LIBS)    
3033   
3034   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3035     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3036     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3037     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3038     default_shared_modules="$default_shared_modules";
3039     SMBLDAP="lib/smbldap.o"
3040     SMBLDAPUTIL="lib/smbldap_util.o"
3041     with_ldap_support=yes
3042     AC_MSG_CHECKING(whether LDAP support is used)
3043     AC_MSG_RESULT(yes)
3044   else
3045     if test x"$with_ldap_support" = x"yes"; then
3046         AC_MSG_ERROR(libldap is needed for LDAP support)
3047     else
3048         AC_MSG_WARN(libldap is needed for LDAP support)
3049     fi
3050     
3051     LDAP_LIBS=""
3052     with_ldap_support=no
3053   fi
3054   LIBS=$ac_save_LIBS
3058 #################################################
3059 # active directory support
3061 with_ads_support=auto
3062 AC_MSG_CHECKING([for Active Directory and krb5 support])
3064 AC_ARG_WITH(ads,
3065 [  --with-ads              Active Directory support (default auto)],
3066 [ case "$withval" in
3067     yes|no)
3068         with_ads_support="$withval"
3069         ;;
3070   esac ])
3072 AC_MSG_RESULT($with_ads_support)
3074 FOUND_KRB5=no
3075 KRB5_LIBS=""
3077 if test x"$with_ldap_support" != x"yes"; then
3078     if test x"$with_ads_support" = x"yes"; then
3079         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3080     elif test x"$with_ads_support" != x"no"; then
3081         AC_MSG_WARN(Active Directory Support requires LDAP support)
3082     fi
3083     with_ads_support=no
3086 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3088 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3089     if test x"$with_ads_support" = x"yes"; then
3090         AC_MSG_ERROR(Active Directory Support requires ldap_initialize)
3091     fi
3092     AC_MSG_WARN(Active Directory Support requires ldap_initialize)
3093     with_ads_support=no
3096 AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
3098 if test x"$ac_cv_func_ext_ldap_domain2hostlist" != x"yes"; then
3099     if test x"$with_ads_support" = x"yes"; then
3100         AC_MSG_ERROR(Active Directory Support requires ldap_domain2hostlist)
3101     fi
3102     AC_MSG_WARN(Active Directory Support requires ldap_domain2hostlist)
3103     with_ads_support=no
3106 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3108 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3109     if test x"$with_ads_support" = x"yes"; then
3110         AC_MSG_ERROR(Active Directory Support requires ldap_add_result_entry)
3111     fi
3112     AC_MSG_WARN(Active Directory Support requires ldap_add_result_entry)
3113     with_ads_support=no
3116 if test x"$with_ads_support" != x"no"; then
3118   # Do no harm to the values of CFLAGS and LIBS while testing for
3119   # Kerberos support.
3121   if test x$FOUND_KRB5 = x"no"; then
3122     #################################################
3123     # check for location of Kerberos 5 install
3124     AC_MSG_CHECKING(for kerberos 5 install path)
3125     AC_ARG_WITH(krb5,
3126     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3127     [ case "$withval" in
3128       no)
3129         AC_MSG_RESULT(no krb5-path given)
3130         ;;
3131       yes)
3132         AC_MSG_RESULT(/usr)
3133         FOUND_KRB5=yes
3134         ;;
3135       *)
3136         AC_MSG_RESULT($withval)
3137         KRB5_CFLAGS="-I$withval/include"
3138         KRB5_CPPFLAGS="-I$withval/include"
3139         KRB5_LDFLAGS="-L$withval/lib"
3140         FOUND_KRB5=yes
3141         if test -x "$withval/bin/krb5-config"; then
3142                 KRB5CONFIG=$withval/bin/krb5-config
3143         fi
3144         ;;
3145       esac ],
3146       AC_MSG_RESULT(no krb5-path given)
3147     )
3148   fi
3150   #################################################
3151   # check for krb5-config from recent MIT and Heimdal kerberos 5
3152   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3153   AC_MSG_CHECKING(for working krb5-config)
3154   if test -x "$KRB5CONFIG"; then
3155     ac_save_CFLAGS=$CFLAGS
3156     CFLAGS="";export CFLAGS
3157     ac_save_LDFLAGS=$LDFLAGS
3158     LDFLAGS="";export LDFLAGS
3159     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3160     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3161     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
3162     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3163     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3164     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3165     FOUND_KRB5=yes
3166     AC_MSG_RESULT(yes)
3167   else
3168     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3169   fi
3171   if test x$FOUND_KRB5 = x"no"; then
3172     #################################################
3173     # see if this box has the SuSE location for the heimdal krb implementation
3174     AC_MSG_CHECKING(for /usr/include/heimdal)
3175     if test -d /usr/include/heimdal; then
3176       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3177           KRB5_CFLAGS="-I/usr/include/heimdal"
3178           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3179           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3180           AC_MSG_RESULT(yes)
3181       else
3182           KRB5_CFLAGS="-I/usr/include/heimdal"
3183           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3184           AC_MSG_RESULT(yes)
3185       fi
3186     else
3187       AC_MSG_RESULT(no)
3188     fi
3189   fi
3191   if test x$FOUND_KRB5 = x"no"; then
3192     #################################################
3193     # see if this box has the RedHat location for kerberos
3194     AC_MSG_CHECKING(for /usr/kerberos)
3195     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3196       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3197       KRB5_CFLAGS="-I/usr/kerberos/include"
3198       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3199       AC_MSG_RESULT(yes)
3200     else
3201       AC_MSG_RESULT(no)
3202     fi
3203   fi
3205   ac_save_CFLAGS=$CFLAGS
3206   ac_save_CPPFLAGS=$CPPFLAGS
3207   ac_save_LDFLAGS=$LDFLAGS
3209   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3210   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3211   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3213   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3215   # now check for krb5.h. Some systems have the libraries without the headers!
3216   # note that this check is done here to allow for different kerberos
3217   # include paths
3218   AC_CHECK_HEADERS(krb5.h)
3220   if test x"$ac_cv_header_krb5_h" = x"no"; then
3222     # Give a warning if AD support was not explicitly requested,
3223     # i.e with_ads_support = auto, otherwise die with an error.
3225     if test x"$with_ads_support" = x"yes"; then
3226       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3227     else
3228       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3229     fi
3231     # Turn off AD support and restore CFLAGS and LIBS variables
3233     with_ads_support="no"
3234     
3235     CFLAGS=$ac_save_CFLAGS
3236     CPPFLAGS=$ac_save_CPPFLAGS
3237     LDFLAGS=$ac_save_LDFLAGS
3238   fi
3241 # Now we have determined whether we really want ADS support
3243 if test x"$with_ads_support" != x"no"; then
3244   ac_save_LIBS=$LIBS
3246   # now check for gssapi headers.  This is also done here to allow for
3247   # different kerberos include paths
3248   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3250   ##################################################################
3251   # we might need the k5crypto and com_err libraries on some systems
3252   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3253   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3255   # Heimdal checks.
3256   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3257   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3258   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3260   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3261   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
3262                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3264   ########################################################
3265   # now see if we can find the krb5 libs in standard paths
3266   # or as specified above
3267   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3268   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3270   ########################################################
3271   # now see if we can find the gssapi libs in standard paths
3272   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3273             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3275   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3276   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3277   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3278   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3279   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3280   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3281   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3282   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3283   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3284   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3285   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3286   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3287   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3288   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3289   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3290   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3291   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3292   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3293   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3294   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3295   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3296   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3297   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3298   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3299   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3300   AC_CHECK_FUNC_EXT(decode_krb5_ap_req, $KRB5_LIBS)
3301   AC_CHECK_FUNC_EXT(krb5_free_ap_req, $KRB5_LIBS)
3302   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3303   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3304   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3305   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3306   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3307   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3308   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3309   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3311   LIBS="$KRB5_LIBS $LIBS"
3313   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3314     AC_TRY_COMPILE([
3315         #include <krb5.h>], 
3316         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 
3317         [smb_krb5_verify_checksum=7], 
3318         [smb_krb5_verify_checksum=6], 
3319     ) 
3320   ])
3321   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3323   AC_CACHE_CHECK([for checksum in krb5_checksum],
3324                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3325     AC_TRY_COMPILE([#include <krb5.h>],
3326       [krb5_checksum cksum; cksum.checksum.length = 0;],
3327       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3328       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3330   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3331     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3332                [Whether the krb5_checksum struct has a checksum property])
3333   fi
3335   AC_CACHE_CHECK([for etype in EncryptedData],
3336                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3337     AC_TRY_COMPILE([#include <krb5.h>],
3338       [EncryptedData edata; edata.etype = 0;],
3339       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3340       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3342   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3343     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3344                [Whether the EncryptedData struct has a etype property])
3345   fi
3347   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3348                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3349     AC_TRY_COMPILE([#include <krb5.h>],
3350       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3351       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3352       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3354   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3355     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3356                [Whether the krb5_ap_req struct has a ticket pointer])
3357   fi
3359   AC_CACHE_CHECK([for krb5_crypto type],
3360                 samba_cv_HAVE_KRB5_CRYPTO,[
3361     AC_TRY_COMPILE([#include <krb5.h>],
3362       [krb5_crypto crypto;],
3363       samba_cv_HAVE_KRB5_CRYPTO=yes,
3364       samba_cv_HAVE_KRB5_CRYPTO=no)])
3366   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3367     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3368                [Whether the type krb5_crypto exists])
3369   fi
3371   AC_CACHE_CHECK([for krb5_encrypt_block type],
3372                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3373     AC_TRY_COMPILE([#include <krb5.h>],
3374       [krb5_encrypt_block block;],
3375       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3376       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3378   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3379     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3380                [Whether the type krb5_encrypt_block exists])
3381   fi
3383   AC_CACHE_CHECK([for addrtype in krb5_address],
3384                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3385     AC_TRY_COMPILE([#include <krb5.h>],
3386       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3387       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3388       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3390   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3391     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3392                [Whether the krb5_address struct has a addrtype property])
3393   fi
3395   AC_CACHE_CHECK([for addr_type in krb5_address],
3396                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3397     AC_TRY_COMPILE([#include <krb5.h>],
3398       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3399       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3400       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3402   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3403     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3404               [Whether the krb5_address struct has a addr_type property])
3405   fi
3407   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3408                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3409                  [AC_TRY_COMPILE([#include <krb5.h>],
3410     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3411     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3413   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3414     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3415               [Whether the krb5_ticket struct has a enc_part2 property])
3416   fi
3418   AC_CACHE_CHECK([for keyblock in krb5_creds],
3419                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3420     AC_TRY_COMPILE([#include <krb5.h>],
3421       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3422       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3423       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3425   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3426     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3427               [Whether the krb5_creds struct has a keyblock property])
3428   fi
3430   AC_CACHE_CHECK([for session in krb5_creds],
3431                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3432     AC_TRY_COMPILE([#include <krb5.h>],
3433       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3434       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3435       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3437   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3438     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3439               [Whether the krb5_creds struct has a session property])
3440   fi
3442   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3443                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3444     AC_TRY_COMPILE([#include <krb5.h>],
3445       [krb5_keyblock key; key.keyvalue.data = NULL;],
3446       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3447       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3449   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3450     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3451               [Whether the krb5_keyblock struct has a keyvalue property])
3452   fi
3454   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3455                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3456     AC_TRY_COMPILE([#include <krb5.h>],
3457       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3458       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3459       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3460   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3461                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3462     AC_TRY_COMPILE([#include <krb5.h>],
3463       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3464       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3465       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3466 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3467 # w.r.t. arcfour and windows, so we must not enable it here
3468   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3469           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3470     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3471               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3472   fi
3474   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3475                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3476     AC_TRY_COMPILE([#include <krb5.h>],
3477       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3478       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3479       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3481   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3482     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3483               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3484   fi
3486   AC_CACHE_CHECK([for KV5M_KEYTAB],
3487                  samba_cv_HAVE_KV5M_KEYTAB,[
3488     AC_TRY_COMPILE([#include <krb5.h>],
3489       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3490       samba_cv_HAVE_KV5M_KEYTAB=yes,
3491       samba_cv_HAVE_KV5M_KEYTAB=no)])
3493   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3494       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3495              [Whether the KV5M_KEYTAB option is available])
3496   fi
3498   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3499                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3500     AC_TRY_COMPILE([#include <krb5.h>],
3501       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3502       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3503       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3505   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3506     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3507               [Whether KRB5_KU_OTHER_CKSUM is available])
3508   fi
3509   
3510   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3511                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3512     AC_TRY_COMPILE([#include <krb5.h>],
3513       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3514       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3515       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3517   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3518     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3519               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3520   fi
3522   AC_CACHE_CHECK([for the krb5_princ_component macro],
3523                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3524     AC_TRY_LINK([#include <krb5.h>],
3525       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3526       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3527       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3529   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3530     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3531                [Whether krb5_princ_component is available])
3532   fi
3534   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3535                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3536     AC_TRY_COMPILE([#include <krb5.h>],
3537       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3538       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3539       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3541   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3542     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3543               [Whether krb5_keytab_entry has key member])
3544   fi
3546   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3547                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3548     AC_TRY_COMPILE([#include <krb5.h>],
3549       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3550       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3551       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3553   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3554     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3555               [Whether krb5_keytab_entry has keyblock member])
3556   fi
3558   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3559     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3560     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3561     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3562     AC_MSG_RESULT(yes)
3563   else
3564     if test x"$with_ads_support" = x"yes"; then
3565         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3566     else
3567         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3568     fi
3569     KRB5_LIBS=""
3570     with_ads_support=no 
3571   fi
3573   AC_CACHE_CHECK([for WRFILE: keytab support],
3574                 samba_cv_HAVE_WRFILE_KEYTAB,[
3575     AC_TRY_RUN([
3576 #include<krb5.h>
3577   main()
3578   {
3579     krb5_context context;
3580     krb5_keytab keytab;
3582     krb5_init_context(&context);
3583     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3584   }],
3585   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3586   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3588   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3589       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3590                [Whether the WRFILE:-keytab is supported])
3591   fi
3593   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3594                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3595     AC_TRY_COMPILE([#include <krb5.h>],
3596     [
3597     krb5_context context;
3598     krb5_principal principal;
3599     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3600     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3601     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3603   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3604     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3605               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3606   fi
3608 LIBS="$ac_save_LIBS"
3611 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3613 #################################################
3614 # check for automount support
3615 AC_MSG_CHECKING(whether to use automount)
3616 AC_ARG_WITH(automount,
3617 [  --with-automount        Include automount support (default=no)],
3618 [ case "$withval" in
3619   yes)
3620     AC_MSG_RESULT(yes)
3621     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3622     ;;
3623   *)
3624     AC_MSG_RESULT(no)
3625     ;;
3626   esac ],
3627   AC_MSG_RESULT(no)
3630 #################################################
3631 # check for smbmount support
3632 AC_MSG_CHECKING(whether to use smbmount)
3633 AC_ARG_WITH(smbmount,
3634 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3635 [ case "$withval" in
3636   yes)
3637         case "$host_os" in
3638         *linux*)
3639                 AC_MSG_RESULT(yes)
3640                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3641                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3642                 ;;
3643         *)
3644                 AC_MSG_ERROR(not on a linux system!)
3645                 ;;
3646         esac
3647     ;;
3648   *)
3649     AC_MSG_RESULT(no)
3650     ;;
3651   esac ],
3652   AC_MSG_RESULT(no)
3655 #################################################
3656 # check for mount- and umount.cifs support
3657 CIFSMOUNT_PROGS=""
3658 INSTALL_CIFSMOUNT=""
3659 UNINSTALL_CIFSMOUNT=""
3660 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
3661 AC_ARG_WITH(cifsmount,
3662 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
3663 [ case "$withval" in
3664   no)
3665         AC_MSG_RESULT(no)
3666         ;;
3667   *)
3668         case "$host_os" in
3669         *linux*)
3670                 AC_MSG_RESULT(yes)
3671                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3672                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3673                 INSTALL_CIFSMOUNT="installcifsmount"
3674                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3675                 ;;
3676         *)
3677                 AC_MSG_ERROR(not on a linux system!)
3678                 ;;
3679         esac
3680     ;;
3681   esac ],
3682 [ case "$host_os" in
3683   *linux*)
3684         AC_MSG_RESULT(yes)
3685         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3686         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
3687         INSTALL_CIFSMOUNT="installcifsmount"
3688         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
3689         ;;
3690   *)
3691         AC_MSG_RESULT(no)
3692         ;;
3693   esac ]
3697 #################################################
3698 # check for a PAM clear-text auth, accounts, password and session support
3699 with_pam_for_crypt=no
3700 AC_MSG_CHECKING(whether to use PAM)
3701 AC_ARG_WITH(pam,
3702 [  --with-pam              Include PAM support (default=no)],
3703 [ case "$withval" in
3704   yes)
3705     AC_MSG_RESULT(yes)
3706     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3707        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3708           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3709              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3710           fi
3711        fi
3712     fi
3713     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3714     AUTH_LIBS="$AUTH_LIBS -lpam"
3715     with_pam_for_crypt=yes
3716     ;;
3717   *)
3718     AC_MSG_RESULT(no)
3719     ;;
3720   esac ],
3721   AC_MSG_RESULT(no)
3724 # we can't build a pam module if we don't have pam.
3725 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3727 #################################################
3728 # check for pam_smbpass support
3729 PAM_MODULES=""
3730 AC_MSG_CHECKING(whether to use pam_smbpass)
3731 AC_ARG_WITH(pam_smbpass,
3732 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3733 [ case "$withval" in
3734   yes)
3735     AC_MSG_RESULT(yes)
3737        # Conditions under which pam_smbpass should not be built.
3739        if test x$PICFLAGS = x; then
3740           AC_MSG_ERROR([No support for PIC code])
3741        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3742           AC_MSG_ERROR([No security/pam_appl.h found])
3743        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3744           AC_MSG_ERROR([No libpam found])
3745        else
3746           AUTH_LIBS="$AUTH_LIBS -lpam"
3747           PAM_MODULES="pam_smbpass"
3748        fi
3749     ;;
3750   *)
3751     AC_MSG_RESULT(no)
3752     ;;
3753   esac ],
3754   AC_MSG_RESULT(no)
3758 ###############################################
3759 # test for where we get crypt() from
3760 AC_SEARCH_LIBS(crypt, [crypt],
3761   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3762   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3765 ## moved after the check for -lcrypt in order to
3766 ## ensure that the necessary libraries are included
3767 ## check checking for truncated salt.  Wrapped by the
3768 ## $with_pam_for_crypt variable as above   --jerry
3770 if test $with_pam_for_crypt = no; then
3771 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3772 crypt_LIBS="$LIBS"
3773 LIBS="$AUTH_LIBS $LIBS"
3774 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3775         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3776 LIBS="$crypt_LIBS"])
3777 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3778         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3783 ########################################################################################
3785 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3787 ########################################################################################
3789 #################################################
3790 # check for a LDAP password database configuration backwards compatibility
3791 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3792 AC_ARG_WITH(ldapsam,
3793 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3794 [ case "$withval" in
3795   yes)
3796     AC_MSG_RESULT(yes)
3797     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3798     ;;
3799   *)
3800     AC_MSG_RESULT(no)
3801     ;;
3802   esac ],
3803   AC_MSG_RESULT(no)
3806 ########################################################################################
3808 ## END OF TESTS FOR SAM BACKENDS.  
3810 ########################################################################################
3812 #################################################
3813 # check for a NISPLUS_HOME support 
3814 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3815 AC_ARG_WITH(nisplus-home,
3816 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3817 [ case "$withval" in
3818   yes)
3819     AC_MSG_RESULT(yes)
3820     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3821     ;;
3822   *)
3823     AC_MSG_RESULT(no)
3824     ;;
3825   esac ],
3826   AC_MSG_RESULT(no)
3829 #################################################
3830 # check for syslog logging
3831 AC_MSG_CHECKING(whether to use syslog logging)
3832 AC_ARG_WITH(syslog,
3833 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3834 [ case "$withval" in
3835   yes)
3836     AC_MSG_RESULT(yes)
3837     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3838     ;;
3839   *)
3840     AC_MSG_RESULT(no)
3841     ;;
3842   esac ],
3843   AC_MSG_RESULT(no)
3846 #################################################
3847 # check for a shared memory profiling support
3848 AC_MSG_CHECKING(whether to use profiling)
3849 AC_ARG_WITH(profiling-data,
3850 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3851 [ case "$withval" in
3852   yes)
3853     AC_MSG_RESULT(yes)
3854     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3855     ;;
3856   *)
3857     AC_MSG_RESULT(no)
3858     ;;
3859   esac ],
3860   AC_MSG_RESULT(no)
3864 #################################################
3865 # check for experimental disk-quotas support
3867 samba_cv_WITH_QUOTAS=auto
3868 samba_cv_TRY_QUOTAS=no
3869 samba_cv_RUN_QUOTA_TESTS=auto
3870 samba_cv_WITH_SYS_QUOTAS=auto
3871 samba_cv_TRY_SYS_QUOTAS=auto
3872 samba_cv_SYSQUOTA_FOUND=no
3874 AC_MSG_CHECKING(whether to try disk-quotas support)
3875 AC_ARG_WITH(quotas,
3876 [  --with-quotas           Include disk-quota support (default=no)],
3877 [ case "$withval" in
3878   yes)
3879     AC_MSG_RESULT(yes)
3880     samba_cv_WITH_QUOTAS=yes
3881     samba_cv_TRY_QUOTAS=yes
3882     samba_cv_RUN_QUOTA_TESTS=yes
3883     #set sys quotas to auto in this case
3884     samba_cv_TRY_SYS_QUOTAS=auto
3885     ;;
3886   auto)
3887     AC_MSG_RESULT(auto)
3888     samba_cv_WITH_QUOTAS=auto
3889     samba_cv_TRY_QUOTAS=auto
3890     samba_cv_RUN_QUOTA_TESTS=auto
3891     #set sys quotas to auto in this case
3892     samba_cv_TRY_SYS_QUOTAS=auto
3893     ;;
3894   no)
3895     AC_MSG_RESULT(no)
3896     samba_cv_WITH_QUOTAS=no
3897     samba_cv_TRY_QUOTAS=no
3898     samba_cv_RUN_QUOTA_TESTS=no
3899     ;;
3900   *)
3901     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3902     ;;
3903   esac ],
3904   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3907 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3908 AC_ARG_WITH(sys-quotas,
3909 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3910 [ case "$withval" in
3911   yes)
3912     AC_MSG_RESULT(yes)
3913     samba_cv_WITH_SYS_QUOTAS=yes
3914     samba_cv_TRY_SYS_QUOTAS=yes
3915     samba_cv_RUN_QUOTA_TESTS=yes
3916     ;;
3917   auto)
3918     AC_MSG_RESULT(auto)
3919     samba_cv_WITH_SYS_QUOTAS=auto
3920     samba_cv_TRY_SYS_QUOTAS=auto
3921     samba_cv_RUN_QUOTA_TESTS=auto
3922     ;;
3923   no)
3924     AC_MSG_RESULT(no)
3925     samba_cv_WITH_SYS_QUOTAS=no
3926     samba_cv_TRY_SYS_QUOTAS=no
3927     ;;
3928   *)
3929     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3930     ;;
3931   esac ],
3932   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3935 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3936 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3937   case "$host_os" in
3938         *linux*)
3939             AC_MSG_RESULT(yes)
3940             samba_cv_TRY_SYS_QUOTAS=yes
3941             samba_cv_RUN_QUOTA_TESTS=yes
3942             ;;
3943         *)
3944             AC_MSG_RESULT(no)
3945             samba_cv_TRY_SYS_QUOTAS=no
3946             ;;
3947   esac
3950 #############################################
3951 # only check for quota stuff if --with-quotas
3952 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3954 case "$host_os" in
3955         # on linux we didn't need to test we have builtin support
3956         *linux*)
3957             samba_cv_SYSQUOTA_FOUND=yes
3958             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3959             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3960             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
3961             AC_MSG_RESULT(yes)
3963             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3964             samba_cv_found_xfs_header=yes
3965             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
3966             AC_MSG_RESULT(yes)
3967             ;;
3968         *solaris*)
3969             # need to set this define when using static linking (BUG 1473)
3970             CPPFLAGS="$CPPFLAGS -DSUNOS5"
3971             ;;
3972         *)
3973             ;;
3974 esac
3976 # some broken header files need this
3977 AC_CHECK_HEADER(asm/types.h,[
3978             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3979             AC_ADD_INCLUDE(<asm/types.h>)
3980             ])
3982 # For quotas on Veritas VxFS filesystems
3983 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3985 # For sys/quota.h and linux/quota.h
3986 AC_CHECK_HEADERS(sys/quota.h)
3988 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3989 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3990 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3991 AC_TRY_COMPILE([
3992 #include "confdefs.h"
3993 #ifdef HAVE_SYS_TYPES_H
3994 #include <sys/types.h>
3995 #endif
3996 #ifdef HAVE_ASM_TYPES_H
3997 #include <asm/types.h>
3998 #endif
3999 #include <sys/quota.h>
4000 ],[int i = Q_XGETQUOTA;],
4001 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4002 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4003         samba_cv_found_xfs_header=yes
4007 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
4008 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4009 AC_TRY_COMPILE([
4010 #include "confdefs.h"
4011 #ifdef HAVE_SYS_QUOTA_H
4012 #include <sys/quota.h>
4013 #endif
4015 struct dqblk D;
4016 D.dqb_fsoftlimit = 0;],
4017 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4018 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4019         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4022 ##################
4023 # look for a working quota system
4025 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4026 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4027 AC_TRY_RUN_STRICT([
4028 #define HAVE_QUOTACTL_4A 1
4029 #define AUTOCONF_TEST 1
4030 #include "confdefs.h"
4031 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4032            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4033 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4034     samba_cv_SYSQUOTA_FOUND=yes;
4035     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4036     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4040 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4041 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4042 AC_TRY_RUN_STRICT([
4043 #define HAVE_QUOTACTL_4B 1
4044 #define AUTOCONF_TEST 1
4045 #include "confdefs.h"
4046 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4047            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4048 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4049     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4050     samba_cv_SYSQUOTA_FOUND=yes;
4051     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4052     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4056 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4057 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4058 AC_TRY_RUN_STRICT([
4059 #define HAVE_QUOTACTL_3 1
4060 #define AUTOCONF_TEST 1
4061 #include "confdefs.h"
4062 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4063            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4064 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4065     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4066     samba_cv_SYSQUOTA_FOUND=yes;
4067     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4068     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4072 #################################################
4073 # check for mntent.h and struct mntent
4074 AC_CHECK_HEADERS(mntent.h)
4075 #################################################
4076 # check for setmntent,getmntent,endmntent
4077 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4079 #################################################
4080 # check for devnm.h and struct mntent
4081 AC_CHECK_HEADERS(devnm.h)
4082 #################################################
4083 # check for devnm
4084 AC_CHECK_FUNCS(devnm)
4086 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4087     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4088         # if --with-sys-quotas=yes then build it 
4089         # you have can use the get/set quota command smb.conf
4090         # options then
4091         samba_cv_SYSQUOTA_FOUND=auto
4092     fi
4093     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4094         # if --with-sys-quotas=yes then build it 
4095         # you have can use the get/set quota command smb.conf
4096         # options then
4097         samba_cv_TRY_SYS_QUOTAS=auto
4098     fi
4101 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4102 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4103 SAVE_CPPFLAGS="$CPPFLAGS"
4104 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4105 AC_TRY_COMPILE([
4106 #include "confdefs.h"
4107 #define NO_PROTO_H 1
4108 #define NO_CONFIG_H 1
4109 #define HAVE_SYS_QUOTAS 1
4110 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4111 #include "${srcdir-.}/lib/sysquotas.c"
4112 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4113 CPPFLAGS="$SAVE_CPPFLAGS"
4115 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4116 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4117     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
4118         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4119         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4120         samba_cv_WE_USE_SYS_QUOTAS=yes
4121         AC_MSG_RESULT(yes)
4122     else
4123         AC_MSG_RESULT(no)
4124     fi
4128 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4129 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4130 SAVE_CPPFLAGS="$CPPFLAGS"
4131 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
4132 AC_TRY_COMPILE([
4133 #include "confdefs.h"
4134 #define NO_PROTO_H 1
4135 #define NO_CONFIG_H 1
4136 #define HAVE_SYS_QUOTAS 1
4137 #define HAVE_XFS_QUOTAS 1
4138 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4139 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4140 CPPFLAGS="$SAVE_CPPFLAGS"
4142 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4143     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4144         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4145     fi
4149 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4150 SAVE_CPPFLAGS="$CPPFLAGS"
4151 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch -I${srcdir-.}/smbwrapper"
4152 AC_TRY_COMPILE([
4153 #include "confdefs.h"
4154 #define NO_PROTO_H 1
4155 #define NO_CONFIG_H 1
4156 #include "${srcdir-.}/smbd/quotas.c"
4157 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4158 CPPFLAGS="$SAVE_CPPFLAGS"
4160 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4161 AC_MSG_CHECKING(whether to use the old quota support)
4162     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4163       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4164         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4165         AC_MSG_RESULT(yes)
4166       else
4167         AC_MSG_RESULT(no)
4168       fi
4169     else
4170       AC_MSG_RESULT(no)
4171     fi
4174 ####################
4175 # End of quota check samba_cv_RUN_QUOTA_TESTS
4178 #################################################
4179 # check for experimental utmp accounting
4181 AC_MSG_CHECKING(whether to support utmp accounting)
4182 WITH_UTMP=yes
4183 AC_ARG_WITH(utmp,
4184 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4185 [ case "$withval" in
4186   no)
4187                 WITH_UTMP=no
4188                 ;;
4189   *)
4190                 WITH_UTMP=yes
4191                 ;;
4192   esac ],
4195 # utmp requires utmp.h
4196 # Note similar check earlier, when checking utmp details.
4198 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4199         utmp_no_reason=", no utmp.h on $host_os"
4200         WITH_UTMP=no
4203 # Display test results
4205 if test x"$WITH_UTMP" = x"yes"; then
4206         AC_MSG_RESULT(yes)
4207         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4208 else
4209         AC_MSG_RESULT(no$utmp_no_reason)
4212 INSTALLLIBCMD_SH=:
4213 INSTALLLIBCMD_A=:
4214 UNINSTALLLIBCMD_SH=:
4215 UNINSTALLLIBCMD_A=:
4217 if test $BLDSHARED = true; then
4218         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4219         UNINSTALLLIBCMD_SH="rm -f"
4221 if test $enable_static = yes; then
4222         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4223         UNINSTALLLIBCMD_A="rm -f"
4226 #################################################
4227 # should we build libmsrpc?
4228 INSTALL_LIBMSRPC=
4229 UNINSTALL_LIBMSRPC=
4230 LIBMSRPC_SHARED=
4231 LIBMSRPC=
4232 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4233 AC_ARG_WITH(libmsrpc,
4234 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4235 [ case "$withval" in
4236   no) 
4237      AC_MSG_RESULT(no)
4238      ;;
4239   *)
4240      if test $BLDSHARED = true; then
4241         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4242         LIBMSRPC=libmsrpc
4243         AC_MSG_RESULT(yes)
4244      else
4245         enable_static=yes
4246         AC_MSG_RESULT(no shared library support -- will supply static library)
4247      fi
4248      if test $enable_static = yes; then
4249         LIBMSRPC=libmsrpc
4250      fi
4251      INSTALL_LIBMSRPC=installlibmsrpc
4252      UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4253      ;;
4254   esac ],
4256 # if unspecified, default is to built it if possible.
4257   if test $BLDSHARED = true; then
4258      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4259      LIBMSRPC=libmsrpc
4260      AC_MSG_RESULT(yes)
4261    else
4262      enable_static=yes
4263      AC_MSG_RESULT(no shared library support -- will supply static library)
4264    fi
4265    if test $enable_static = yes; then
4266      LIBMSRPC=libmsrpc
4267   fi]
4268   INSTALL_LIBMSRPC=installlibmsrpc
4269   UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4272 #################################################
4273 # should we build libsmbclient?
4274 INSTALL_LIBSMBCLIENT=
4275 UNINSTALL_LIBSMBCLIENT=
4276 LIBSMBCLIENT_SHARED=
4277 LIBSMBCLIENT=
4278 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4279 AC_ARG_WITH(libsmbclient,
4280 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4281 [ case "$withval" in
4282   no) 
4283      AC_MSG_RESULT(no)
4284      ;;
4285   *)
4286      if test $BLDSHARED = true; then
4287         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4288         LIBSMBCLIENT=libsmbclient
4289         AC_MSG_RESULT(yes)
4290      else
4291         enable_static=yes
4292         AC_MSG_RESULT(no shared library support -- will supply static library)
4293      fi
4294      if test $enable_static = yes; then
4295         LIBSMBCLIENT=libsmbclient
4296      fi
4297      INSTALL_LIBSMBCLIENT=installclientlib
4298      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4299      ;;
4300   esac ],
4302 # if unspecified, default is to built it if possible.
4303   if test $BLDSHARED = true; then
4304      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4305      LIBSMBCLIENT=libsmbclient
4306      AC_MSG_RESULT(yes)
4307    else
4308      enable_static=yes
4309      AC_MSG_RESULT(no shared library support -- will supply static library)
4310    fi
4311    if test $enable_static = yes; then
4312      LIBSMBCLIENT=libsmbclient
4313   fi]
4314   INSTALL_LIBSMBCLIENT=installclientlib
4315   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4318 INSTALL_LIBSMBSHAREMODES=
4319 LIBSMBSHAREMODES_SHARED=
4320 LIBSMBSHAREMODES=
4321 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4322 AC_ARG_WITH(libsmbsharemodes,
4323 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4324 [ case "$withval" in
4325   no)
4326      AC_MSG_RESULT(no)
4327      ;;
4328   *)
4329      if test $BLDSHARED = true; then
4330         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4331         LIBSMBSHAREMODES=libsmbsharemodes
4332         AC_MSG_RESULT(yes)
4333      else
4334         enable_static=yes
4335         AC_MSG_RESULT(no shared library support -- will supply static library)
4336      fi
4337      if test $enable_static = yes; then
4338         LIBSMBSHAREMODES=libsmbsharemodes
4339      fi
4340      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4341      ;;
4342   esac ],
4344 # if unspecified, default is to built it if possible.
4345   if test $BLDSHARED = true; then
4346      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4347      LIBSMBSHAREMODES=libsmbsharemodes
4348      AC_MSG_RESULT(yes)
4349    else
4350      enable_static=yes
4351      AC_MSG_RESULT(no shared library support -- will supply static library)
4352    fi
4353    if test $enable_static = yes; then
4354      LIBSMBSHAREMODES=libsmbsharemodes
4355   fi]
4356   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4359 #################################################
4360 # these tests are taken from the GNU fileutils package
4361 AC_CHECKING(how to get filesystem space usage)
4362 space=no
4364 # Test for statvfs64.
4365 if test $space = no; then
4366   # SVR4
4367   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4368   [AC_TRY_RUN([
4369 #if defined(HAVE_UNISTD_H)
4370 #include <unistd.h>
4371 #endif
4372 #include <sys/types.h>
4373 #include <sys/statvfs.h>
4374   main ()
4375   {
4376     struct statvfs64 fsd;
4377     exit (statvfs64 (".", &fsd));
4378   }],
4379   fu_cv_sys_stat_statvfs64=yes,
4380   fu_cv_sys_stat_statvfs64=no,
4381   fu_cv_sys_stat_statvfs64=cross)])
4382   if test $fu_cv_sys_stat_statvfs64 = yes; then
4383     space=yes
4384     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4385   fi
4388 # Perform only the link test since it seems there are no variants of the
4389 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4390 # because that got a false positive on SCO OSR5.  Adding the declaration
4391 # of a `struct statvfs' causes this test to fail (as it should) on such
4392 # systems.  That system is reported to work fine with STAT_STATFS4 which
4393 # is what it gets when this test fails.
4394 if test $space = no; then
4395   # SVR4
4396   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4397                  [AC_TRY_LINK([#include <sys/types.h>
4398 #include <sys/statvfs.h>],
4399                               [struct statvfs fsd; statvfs (0, &fsd);],
4400                               fu_cv_sys_stat_statvfs=yes,
4401                               fu_cv_sys_stat_statvfs=no)])
4402   if test $fu_cv_sys_stat_statvfs = yes; then
4403     space=yes
4404     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4405   fi
4408 if test $space = no; then
4409   # DEC Alpha running OSF/1
4410   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4411   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4412   [AC_TRY_RUN([
4413 #include <sys/param.h>
4414 #include <sys/types.h>
4415 #include <sys/mount.h>
4416   main ()
4417   {
4418     struct statfs fsd;
4419     fsd.f_fsize = 0;
4420     exit (statfs (".", &fsd, sizeof (struct statfs)));
4421   }],
4422   fu_cv_sys_stat_statfs3_osf1=yes,
4423   fu_cv_sys_stat_statfs3_osf1=no,
4424   fu_cv_sys_stat_statfs3_osf1=no)])
4425   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4426   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4427     space=yes
4428     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4429   fi
4432 if test $space = no; then
4433 # AIX
4434   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4435 member (AIX, 4.3BSD)])
4436   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4437   [AC_TRY_RUN([
4438 #ifdef HAVE_SYS_PARAM_H
4439 #include <sys/param.h>
4440 #endif
4441 #ifdef HAVE_SYS_MOUNT_H
4442 #include <sys/mount.h>
4443 #endif
4444 #ifdef HAVE_SYS_VFS_H
4445 #include <sys/vfs.h>
4446 #endif
4447   main ()
4448   {
4449   struct statfs fsd;
4450   fsd.f_bsize = 0;
4451   exit (statfs (".", &fsd));
4452   }],
4453   fu_cv_sys_stat_statfs2_bsize=yes,
4454   fu_cv_sys_stat_statfs2_bsize=no,
4455   fu_cv_sys_stat_statfs2_bsize=no)])
4456   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4457   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4458     space=yes
4459     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4460   fi
4463 if test $space = no; then
4464 # SVR3
4465   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4466   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4467   [AC_TRY_RUN([#include <sys/types.h>
4468 #include <sys/statfs.h>
4469   main ()
4470   {
4471   struct statfs fsd;
4472   exit (statfs (".", &fsd, sizeof fsd, 0));
4473   }],
4474     fu_cv_sys_stat_statfs4=yes,
4475     fu_cv_sys_stat_statfs4=no,
4476     fu_cv_sys_stat_statfs4=no)])
4477   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4478   if test $fu_cv_sys_stat_statfs4 = yes; then
4479     space=yes
4480     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4481   fi
4484 if test $space = no; then
4485 # 4.4BSD and NetBSD
4486   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4487 member (4.4BSD and NetBSD)])
4488   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4489   [AC_TRY_RUN([#include <sys/types.h>
4490 #ifdef HAVE_SYS_PARAM_H
4491 #include <sys/param.h>
4492 #endif
4493 #ifdef HAVE_SYS_MOUNT_H
4494 #include <sys/mount.h>
4495 #endif
4496   main ()
4497   {
4498   struct statfs fsd;
4499   fsd.f_fsize = 0;
4500   exit (statfs (".", &fsd));
4501   }],
4502   fu_cv_sys_stat_statfs2_fsize=yes,
4503   fu_cv_sys_stat_statfs2_fsize=no,
4504   fu_cv_sys_stat_statfs2_fsize=no)])
4505   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4506   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4507     space=yes
4508         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4509   fi
4512 if test $space = no; then
4513   # Ultrix
4514   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4515   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4516   [AC_TRY_RUN([#include <sys/types.h>
4517 #ifdef HAVE_SYS_PARAM_H
4518 #include <sys/param.h>
4519 #endif
4520 #ifdef HAVE_SYS_MOUNT_H
4521 #include <sys/mount.h>
4522 #endif
4523 #ifdef HAVE_SYS_FS_TYPES_H
4524 #include <sys/fs_types.h>
4525 #endif
4526   main ()
4527   {
4528   struct fs_data fsd;
4529   /* Ultrix's statfs returns 1 for success,
4530      0 for not mounted, -1 for failure.  */
4531   exit (statfs (".", &fsd) != 1);
4532   }],
4533   fu_cv_sys_stat_fs_data=yes,
4534   fu_cv_sys_stat_fs_data=no,
4535   fu_cv_sys_stat_fs_data=no)])
4536   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4537   if test $fu_cv_sys_stat_fs_data = yes; then
4538     space=yes
4539     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4540   fi
4544 # As a gating factor for large file support, in order to
4545 # use <4GB files we must have the following minimal support
4546 # available.
4547 # long long, and a 64 bit off_t or off64_t.
4548 # If we don't have all of these then disable large
4549 # file support.
4551 AC_MSG_CHECKING([if large file support can be enabled])
4552 AC_TRY_COMPILE([
4553 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4554 #include <sys/types.h>
4555 #else
4556 __COMPILE_ERROR_
4557 #endif
4559 [int i],
4560 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4561 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4562         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4564 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4566 AC_ARG_WITH(spinlocks, 
4567 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4568 if test "x$with_spinlocks" = "xyes"; then
4569     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4571     case "$host_cpu" in
4572         sparc)
4573             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4574             ;;
4576         i386|i486|i586|i686)
4577             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4578             ;;
4580         mips)
4581             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4582             ;;
4584         powerpc)
4585             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4586             ;;
4587     esac
4590 #################################################
4591 # check for ACL support
4593 AC_MSG_CHECKING(whether to support ACLs)
4594 AC_ARG_WITH(acl-support,
4595 [  --with-acl-support      Include ACL support (default=no)],
4596 [ case "$withval" in
4597   yes)
4599         case "$host_os" in
4600         *sysv5*)
4601                 AC_MSG_RESULT(Using UnixWare ACLs)
4602                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4603                 ;;
4604         *solaris*)
4605                 AC_MSG_RESULT(Using solaris ACLs)
4606                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4607                 ACL_LIBS="$ACL_LIBS -lsec"
4608                 ;;
4609         *hpux*)
4610                 AC_MSG_RESULT(Using HPUX ACLs)
4611                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4612                 ;;
4613         *irix*)
4614                 AC_MSG_RESULT(Using IRIX ACLs)
4615                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4616                 ;;
4617         *aix*)
4618                 AC_MSG_RESULT(Using AIX ACLs)
4619                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4620                 ;;
4621         *osf*)
4622                 AC_MSG_RESULT(Using Tru64 ACLs)
4623                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4624                 ACL_LIBS="$ACL_LIBS -lpacl"
4625                 ;;
4626         *freebsd[[5-9]]*)
4627                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4628                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4629                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4630                 ;;
4631         *linux*)
4632                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4633                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4634                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4635                 acl_LIBS=$LIBS
4636                 LIBS="$LIBS -lacl"
4637                 AC_TRY_LINK([#include <sys/types.h>
4638 #include <sys/acl.h>],
4639 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4640 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4641                 LIBS=$acl_LIBS])
4642                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4643                                 AC_MSG_RESULT(Using posix ACLs)
4644                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4645                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4646                                 acl_LIBS=$LIBS
4647                                 LIBS="$LIBS -lacl"
4648                                 AC_TRY_LINK([#include <sys/types.h>
4649 #include <sys/acl.h>],
4650 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4651 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4652                                 LIBS=$acl_LIBS])
4653                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4654                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4655                                 fi
4656                         fi
4657             ;;
4658          *)
4659                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4660                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4661                 acl_LIBS=$LIBS
4662                 LIBS="$LIBS -lacl"
4663                 AC_TRY_LINK([#include <sys/types.h>
4664 #include <sys/acl.h>],
4665 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4666 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4667                 LIBS=$acl_LIBS])
4668                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4669                                 AC_MSG_RESULT(Using posix ACLs)
4670                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4671                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4672                                 acl_LIBS=$LIBS
4673                                 LIBS="$LIBS -lacl"
4674                                 AC_TRY_LINK([#include <sys/types.h>
4675 #include <sys/acl.h>],
4676 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4677 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4678                                 LIBS=$acl_LIBS])
4679                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4680                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4681                                 fi
4682                         fi
4683             ;;
4684         esac
4685         ;;
4686   *)
4687     AC_MSG_RESULT(no)
4688     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4689     ;;
4690   esac ],
4691   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4692   AC_MSG_RESULT(no)
4695 #################################################
4696 # check for AIO support
4698 AC_MSG_CHECKING(whether to support asynchronous io)
4699 AC_ARG_WITH(aio-support,
4700 [  --with-aio-support      Include asynchronous io support (default=no)],
4701 [ case "$withval" in
4702   yes)
4704         AC_MSG_RESULT(yes)
4705         case "$host_os" in
4706         *)
4707                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
4708                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
4709                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4710                 aio_LIBS=$LIBS
4711                 LIBS=$AIO_LIBS
4712                 AC_TRY_LINK([#include <sys/types.h>
4713 #include <aio.h>],
4714 [ struct aiocb a; return aio_read(&a);],
4715 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4716                 LIBS=$aio_LIBS])
4717                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4718                 aio_LIBS=$LIBS
4719                 LIBS=$AIO_LIBS
4720                 AC_TRY_LINK([#include <sys/types.h>
4721 #include <aio.h>],
4722 [ struct aiocb64 a; return aio_read64(&a);],
4723 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4724                 LIBS=$aio_LIBS])
4725                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4726                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4727                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4728                         LIBS=$AIO_LIBS
4729                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4730                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4731                         LIBS=$AIO_LIBS
4732                 fi
4734                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4735                         AC_MSG_CHECKING(for aio_read)
4736                         AC_LINK_IFELSE([#include <aio.h>
4737 int main() { struct aiocb a; return aio_read(&a); }],
4738 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4739 [AC_MSG_RESULT(no)])
4741                         AC_MSG_CHECKING(for aio_write)
4742                         AC_LINK_IFELSE([#include <aio.h>
4743 int main() { struct aiocb a; return aio_write(&a); }],
4744 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4745 [AC_MSG_RESULT(no)])
4747                         AC_MSG_CHECKING(for aio_fsync)
4748                         AC_LINK_IFELSE([#include <aio.h>
4749 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4750 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4751 [AC_MSG_RESULT(no)])
4753                         AC_MSG_CHECKING(for aio_return)
4754                         AC_LINK_IFELSE([#include <aio.h>
4755 int main() { struct aiocb a; return aio_return(&a); }],
4756 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4757 [AC_MSG_RESULT(no)])
4759                         AC_MSG_CHECKING(for aio_error)
4760                         AC_LINK_IFELSE([#include <aio.h>
4761 int main() { struct aiocb a; return aio_error(&a); }],
4762 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4763 [AC_MSG_RESULT(no)])
4765                         AC_MSG_CHECKING(for aio_cancel)
4766                         AC_LINK_IFELSE([#include <aio.h>
4767 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4768 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4769 [AC_MSG_RESULT(no)])
4771                         AC_MSG_CHECKING(for aio_suspend)
4772                         AC_LINK_IFELSE([#include <aio.h>
4773 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
4774 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
4775 [AC_MSG_RESULT(no)])
4776                 fi
4778                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4779                         AC_MSG_CHECKING(for aio_read64)
4780                         AC_LINK_IFELSE([#include <aio.h>
4781 int main() { struct aiocb a; return aio_read64(&a); }],
4782 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
4783 [AC_MSG_RESULT(no)])
4785                         AC_MSG_CHECKING(for aio_write64)
4786                         AC_LINK_IFELSE([#include <aio.h>
4787 int main() { struct aiocb a; return aio_write64(&a); }],
4788 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
4789 [AC_MSG_RESULT(no)])
4791                         AC_MSG_CHECKING(for aio_fsync64)
4792                         AC_LINK_IFELSE([#include <aio.h>
4793 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
4794 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
4795 [AC_MSG_RESULT(no)])
4797                         AC_MSG_CHECKING(for aio_return64)
4798                         AC_LINK_IFELSE([#include <aio.h>
4799 int main() { struct aiocb a; return aio_return64(&a); }],
4800 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
4801 [AC_MSG_RESULT(no)])
4803                         AC_MSG_CHECKING(for aio_error64)
4804                         AC_LINK_IFELSE([#include <aio.h>
4805 int main() { struct aiocb a; return aio_error64(&a); }],
4806 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
4807 [AC_MSG_RESULT(no)])
4809                         AC_MSG_CHECKING(for aio_cancel64)
4810                         AC_LINK_IFELSE([#include <aio.h>
4811 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
4812 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
4813 [AC_MSG_RESULT(no)])
4815                         AC_MSG_CHECKING(for aio_suspend64)
4816                         AC_LINK_IFELSE([#include <aio.h>
4817 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
4818 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
4819 [AC_MSG_RESULT(no)])
4820                 fi
4821             ;;
4822         esac
4823         ;;
4824   *)
4825     AC_MSG_RESULT(no)
4826     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
4827     ;;
4828   esac ],
4829   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
4830   AC_MSG_RESULT(no)
4833 #################################################
4834 # check for sendfile support
4836 with_sendfile_support=yes
4837 AC_MSG_CHECKING(whether to check to support sendfile)
4838 AC_ARG_WITH(sendfile-support,
4839 [  --with-sendfile-support Check for sendfile support (default=yes)],
4840 [ case "$withval" in
4841   yes)
4843         AC_MSG_RESULT(yes);
4845         case "$host_os" in
4846         *linux*)
4847                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4848                 AC_TRY_LINK([#include <sys/sendfile.h>],
4850 int tofd, fromfd;
4851 off64_t offset;
4852 size_t total;
4853 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4855 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4857                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4858                 AC_TRY_LINK([#include <sys/sendfile.h>],
4860 int tofd, fromfd;
4861 off_t offset;
4862 size_t total;
4863 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4865 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4867 # Try and cope with broken Linux sendfile....
4868                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4869                 AC_TRY_LINK([\
4870 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4871 #undef _FILE_OFFSET_BITS
4872 #endif
4873 #include <sys/sendfile.h>],
4875 int tofd, fromfd;
4876 off_t offset;
4877 size_t total;
4878 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4880 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4882         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4883                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4884                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4885                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4886         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4887                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4888                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4889                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4890         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4891                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4892                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4893         else
4894                 AC_MSG_RESULT(no);
4895         fi
4897         ;;
4898         *freebsd* | *dragonfly* )
4899                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4900                 AC_TRY_LINK([\
4901 #include <sys/types.h>
4902 #include <unistd.h>
4903 #include <sys/socket.h>
4904 #include <sys/uio.h>],
4906         int fromfd, tofd, ret, total=0;
4907         off_t offset, nwritten;
4908         struct sf_hdtr hdr;
4909         struct iovec hdtrl;
4910         hdr.headers = &hdtrl;
4911         hdr.hdr_cnt = 1;
4912         hdr.trailers = NULL;
4913         hdr.trl_cnt = 0;
4914         hdtrl.iov_base = NULL;
4915         hdtrl.iov_len = 0;
4916         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4918 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4920         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4921                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4922                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4923                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4924         else
4925                 AC_MSG_RESULT(no);
4926         fi
4927         ;;
4929         *hpux*)
4930                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4931                 AC_TRY_LINK([\
4932 #include <sys/socket.h>
4933 #include <sys/uio.h>],
4935         int fromfd, tofd;
4936         size_t total=0;
4937         struct iovec hdtrl[2];
4938         ssize_t nwritten;
4939         off64_t offset;
4941         hdtrl[0].iov_base = 0;
4942         hdtrl[0].iov_len = 0;
4944         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4946 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4947         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4948                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4949                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4950                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4951         else
4952                 AC_MSG_RESULT(no);
4953         fi
4955                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4956                 AC_TRY_LINK([\
4957 #include <sys/socket.h>
4958 #include <sys/uio.h>],
4960         int fromfd, tofd;
4961         size_t total=0;
4962         struct iovec hdtrl[2];
4963         ssize_t nwritten;
4964         off_t offset;
4966         hdtrl[0].iov_base = 0;
4967         hdtrl[0].iov_len = 0;
4969         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4971 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4972         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4973                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4974                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4975                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4976         else
4977                 AC_MSG_RESULT(no);
4978         fi
4979         ;;
4981         *solaris*)
4982                 AC_CHECK_LIB(sendfile,sendfilev)
4983                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4984                 AC_TRY_LINK([\
4985 #include <sys/sendfile.h>],
4987         int sfvcnt;
4988         size_t xferred;
4989         struct sendfilevec vec[2];
4990         ssize_t nwritten;
4991         int tofd;
4993         sfvcnt = 2;
4995         vec[0].sfv_fd = SFV_FD_SELF;
4996         vec[0].sfv_flag = 0;
4997         vec[0].sfv_off = 0;
4998         vec[0].sfv_len = 0;
5000         vec[1].sfv_fd = 0;
5001         vec[1].sfv_flag = 0;
5002         vec[1].sfv_off = 0;
5003         vec[1].sfv_len = 0;
5004         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5006 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5008         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5009                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5010                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5011                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5012         else
5013                 AC_MSG_RESULT(no);
5014         fi
5016                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5017                 AC_TRY_LINK([\
5018 #include <sys/sendfile.h>],
5020         int sfvcnt;
5021         size_t xferred;
5022         struct sendfilevec vec[2];
5023         ssize_t nwritten;
5024         int tofd;
5026         sfvcnt = 2;
5028         vec[0].sfv_fd = SFV_FD_SELF;
5029         vec[0].sfv_flag = 0;
5030         vec[0].sfv_off = 0;
5031         vec[0].sfv_len = 0;
5033         vec[1].sfv_fd = 0;
5034         vec[1].sfv_flag = 0;
5035         vec[1].sfv_off = 0;
5036         vec[1].sfv_len = 0;
5037         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5039 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5041         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5042                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5043                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5044                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5045         else
5046                 AC_MSG_RESULT(no);
5047         fi
5048         ;;
5049         *aix*)
5050                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5051                 AC_TRY_LINK([\
5052 #include <sys/socket.h>],
5054         int fromfd, tofd;
5055         size_t total=0;
5056         struct sf_parms hdtrl;
5057         ssize_t nwritten;
5058         off64_t offset;
5060         hdtrl.header_data = 0;
5061         hdtrl.header_length = 0;
5062         hdtrl.file_descriptor = fromfd;
5063         hdtrl.file_offset = 0;
5064         hdtrl.file_bytes = 0;
5065         hdtrl.trailer_data = 0;
5066         hdtrl.trailer_length = 0;
5068         nwritten = send_file(&tofd, &hdtrl, 0);
5070 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5071         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5072                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5073                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5074                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5075         else
5076                 AC_MSG_RESULT(no);
5077         fi
5078         ;;
5079         *)
5080         ;;
5081         esac
5082         ;;
5083   *)
5084     AC_MSG_RESULT(no)
5085     ;;
5086   esac ],
5087   AC_MSG_RESULT(yes)
5091 #################################################
5092 # Check whether winbind is supported on this platform.  If so we need to
5093 # build and install client programs, sbin programs and shared libraries
5095 AC_MSG_CHECKING(whether to build winbind)
5097 # Initially, the value of $host_os decides whether winbind is supported
5099 HAVE_WINBIND=yes
5101 # Define the winbind shared library name and any specific linker flags
5102 # it needs to be built with.
5104 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5105 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5106 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5108 case "$host_os" in
5109         *linux*)
5110                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5111                 ;;
5112         *freebsd[[5-9]]*)
5113                 # FreeBSD winbind client is implemented as a wrapper around
5114                 # the Linux version.
5115                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5116                     nsswitch/winbind_nss_linux.o"
5117                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5118                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5119                 ;;
5120         *irix*)
5121                 # IRIX has differently named shared libraries
5122                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5123                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5124                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5125                 ;;
5126         *solaris*)
5127                 # Solaris winbind client is implemented as a wrapper around
5128                 # the Linux version.
5129                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5130                     nsswitch/winbind_nss_linux.o"
5131                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5132                 ;;
5133         *hpux11*)
5134                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5135                 ;;
5136         *aix*)
5137                 # AIX has even differently named shared libraries.  No
5138                 # WINS support has been implemented yet.
5139                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5140                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5141                 WINBIND_NSS="nsswitch/WINBIND"
5142                 WINBIND_WINS_NSS=""
5143                 ;;
5144         *)
5145                 HAVE_WINBIND=no
5146                 winbind_no_reason=", unsupported on $host_os"
5147                 ;;
5148 esac
5150 AC_SUBST(WINBIND_NSS)
5151 AC_SUBST(WINBIND_WINS_NSS)
5152 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5153 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5154 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5156 # Check the setting of --with-winbind
5158 AC_ARG_WITH(winbind,
5159 [  --with-winbind          Build winbind (default, if supported by OS)],
5161   case "$withval" in
5162         yes)
5163                 HAVE_WINBIND=yes
5164                 ;;
5165         no)
5166                 HAVE_WINBIND=no
5167                 winbind_reason=""
5168                 ;;
5169   esac ],
5172 # We need unix domain sockets for winbind
5174 if test x"$HAVE_WINBIND" = x"yes"; then
5175         if test x"$samba_cv_unixsocket" = x"no"; then
5176                 winbind_no_reason=", no unix domain socket support on $host_os"
5177                 HAVE_WINBIND=no
5178         fi
5181 # Display test results
5183 if test x"$HAVE_WINBIND" = x"yes"; then
5184         AC_MSG_RESULT(yes)
5185         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5187         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5188         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5189         if test $BLDSHARED = true; then
5190                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
5192                 if test x"$with_pam" = x"yes"; then
5193                         PAM_MODULES="$PAM_MODULES pam_winbind"
5194                 fi
5195         fi
5196 else
5197         AC_MSG_RESULT(no$winbind_no_reason)
5200 # Solaris 10 does have new member in nss_XbyY_key
5201 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5202                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5203                 [#include <nss_dbdefs.h>])
5205 # Solaris has some extra fields in struct passwd that need to be
5206 # initialised otherwise nscd crashes.  
5208 AC_CHECK_MEMBER(struct passwd.pw_comment,
5209                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5210                 [#include <pwd.h>])
5212 AC_CHECK_MEMBER(struct passwd.pw_age,
5213                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5214                 [#include <pwd.h>])
5216 # AIX 4.3.x and 5.1 do not have as many members in
5217 # struct secmethod_table as AIX 5.2
5218 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5219        [#include <usersec.h>])
5220 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5221        [#include <usersec.h>])
5224 #################################################
5225 # Check to see if we should use the included popt 
5227 AC_ARG_WITH(included-popt,
5228 [  --with-included-popt    use bundled popt library, not from system],
5230   case "$withval" in
5231         yes)
5232                 INCLUDED_POPT=yes
5233                 ;;
5234         no)
5235                 INCLUDED_POPT=no
5236                 ;;
5237   esac ],
5239 if test x"$INCLUDED_POPT" != x"yes"; then
5240     AC_CHECK_LIB(popt, poptGetContext,
5241                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5244 AC_MSG_CHECKING(whether to use included popt)
5245 if test x"$INCLUDED_POPT" = x"yes"; then
5246     AC_MSG_RESULT(yes)
5247     BUILD_POPT='$(POPT_OBJS)'
5248         POPTLIBS='$(POPT_OBJS)'
5249     FLAGS1="-I$srcdir/popt"
5250 else
5251     AC_MSG_RESULT(no)
5252         BUILD_POPT=""
5253     POPTLIBS="-lpopt"
5255 AC_SUBST(BUILD_POPT)
5256 AC_SUBST(POPTLIBS)
5257 AC_SUBST(FLAGS1)
5259 #################################################
5260 # Check if the user wants Python
5262 # At the moment, you can use this to set which Python binary to link
5263 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5264 # though they can coexist in different directories.)  In the future
5265 # this might make the Python stuff be built by default.
5267 # Defaulting python breaks the clean target if python isn't installed
5269 PYTHON=
5271 AC_ARG_WITH(python,
5272 [  --with-python=PYTHONNAME  build Python libraries],
5273 [ case "${withval-python}" in
5274   yes)
5275         PYTHON=python
5276         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5277         ;;
5278   no)
5279         PYTHON=
5280         ;;
5281   *)
5282         PYTHON=${withval-python}
5283         ;;
5284   esac ])
5285 AC_SUBST(PYTHON)
5287 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5289         eval MODULE_DEFAULT_$i=STATIC
5290 done
5292 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5294         dnl Fall back to static if we cannot build shared libraries
5295         eval MODULE_DEFAULT_$i=STATIC
5297         if test $BLDSHARED = true; then
5298                 eval MODULE_DEFAULT_$i=SHARED
5299         fi
5300 done
5302 dnl Always built these modules static
5303 MODULE_rpc_spoolss=STATIC
5304 MODULE_rpc_srv=STATIC
5305 MODULE_idmap_tdb=STATIC
5307 AC_ARG_WITH(static-modules,
5308 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
5309 [ if test $withval; then
5310         for i in `echo $withval | sed -e 's/,/ /g'`
5311         do
5312                 eval MODULE_$i=STATIC
5313         done
5314 fi ])
5316 AC_ARG_WITH(shared-modules,
5317 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
5318 [ if test $withval; then
5319         for i in `echo $withval | sed -e 's/,/ /g'`
5320         do
5321                         eval MODULE_$i=SHARED
5322         done
5323 fi ])
5325 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
5326                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5327 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5328 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5329 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5332 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5333 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5334 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5335 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5336 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
5337 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
5338 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5339 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5340 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
5341 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5342 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
5343 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5344 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
5345 SMB_SUBSYSTEM(RPC,smbd/server.o)
5347 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
5348 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
5349 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
5350 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
5351 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
5353 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5354 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5355 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5356 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5357 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5359 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
5360 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5361 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5362 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5363 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5364 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5365 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5366 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5367 SMB_SUBSYSTEM(AUTH,auth/auth.o)
5369 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
5370 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
5371 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
5372 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
5373 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
5374 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
5375 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
5376 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
5377 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
5378 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
5379 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
5380 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
5381 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
5382 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
5384 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5386 #################################################
5387 # do extra things if we are running insure
5389 if test "${ac_cv_prog_CC}" = "insure"; then
5390         CPPFLAGS="$CPPFLAGS -D__INSURE__"
5393 #################################################
5394 # Display summary of libraries detected
5396 AC_MSG_RESULT([Using libraries:])
5397 AC_MSG_RESULT([    LIBS = $LIBS])
5398 if test x"$with_ads_support" != x"no"; then
5399    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
5401 if test x"$with_ldap_support" != x"no"; then
5402    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
5404 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
5406 #################################################
5407 # final configure stuff
5409 AC_MSG_CHECKING([configure summary])
5410 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
5411            AC_MSG_RESULT(yes),
5412            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5413            AC_MSG_WARN([cannot run when cross-compiling]))
5415 builddir=`pwd`
5416 AC_SUBST(builddir)
5418 # Stuff the FAM libraries at the end of the smbd link path (if we have them).
5419 SMBD_LIBS="$samba_fam_libs"
5420 AC_SUBST(SMBD_LIBS)
5422 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5423 LIB_REMOVE_USR_LIB(LDFLAGS)
5424 LIB_REMOVE_USR_LIB(LIBS)
5426 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5427 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5428 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5430 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
5432 #################################################
5433 # Print very concise instructions on building/use
5434 if test "x$enable_dmalloc" = xyes
5435 then
5436         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5437         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])