r11165: deparate the library install commands from the logic of whether to build...
[Samba.git] / source / configure.in
blobf5ac6052041a8e2897f7ffcb8b3edda0d9cc79fb
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 lockdir="\${VARDIR}/locks"
26 piddir="\${VARDIR}/locks"
27 mandir="\${prefix}/man"
28 logfilebase="\${VARDIR}"
29 privatedir="\${prefix}/private"
30 libdir="\${prefix}/lib"
31 configdir="\${LIBDIR}"
32 swatdir="\${prefix}/swat"
34 AC_ARG_WITH(fhs, 
35 [  --with-fhs              Use FHS-compliant paths (default=no)],
36 [ case "$withval" in
37   yes)
38     lockdir="\${VARDIR}/lib/samba"
39     piddir="\${VARDIR}/run"
40     mandir="\${prefix}/share/man"
41     logfilebase="\${VARDIR}/log/samba"
42     privatedir="\${CONFIGDIR}/private"
43     libdir="\${prefix}/lib/samba"
44     configdir="${sysconfdir}/samba"
45     swatdir="\${DATADIR}/samba/swat"
46     ;;
47   esac])
49 #################################################
50 # set private directory location
51 AC_ARG_WITH(privatedir,
52 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
53 [ case "$withval" in
54   yes|no)
55   #
56   # Just in case anybody calls it without argument
57   #
58     AC_MSG_WARN([--with-privatedir called without argument - will use default])
59   ;;
60   * )
61     privatedir="$withval"
62     ;;
63   esac])
65 #################################################
66 # set lock directory location
67 AC_ARG_WITH(lockdir,
68 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
69 [ case "$withval" in
70   yes|no)
71   #
72   # Just in case anybody calls it without argument
73   #
74     AC_MSG_WARN([--with-lockdir called without argument - will use default])
75   ;;
76   * )
77     lockdir="$withval"
78     ;;
79   esac])
81 #################################################
82 # set pid directory location
83 AC_ARG_WITH(piddir,
84 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
85 [ case "$withval" in
86   yes|no)
87   #
88   # Just in case anybody calls it without argument
89   #
90     AC_MSG_WARN([--with-piddir called without argument - will use default])
91   ;;
92   * )
93     piddir="$withval"
94     ;;
95   esac])
97 #################################################
98 # set SWAT directory location
99 AC_ARG_WITH(swatdir,
100 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
101 [ case "$withval" in
102   yes|no)
103   #
104   # Just in case anybody does it
105   #
106     AC_MSG_WARN([--with-swatdir called without argument - will use default])
107   ;;
108   * )
109     swatdir="$withval"
110     ;;
111   esac])
113 #################################################
114 # set configuration directory location
115 AC_ARG_WITH(configdir,
116 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
117 [ case "$withval" in
118   yes|no)
119   #
120   # Just in case anybody does it
121   #
122     AC_MSG_WARN([--with-configdir called without argument - will use default])
123   ;;
124   * )
125     configdir="$withval"
126     ;;
127   esac])
129 #################################################
130 # set log directory location
131 AC_ARG_WITH(logfilebase,
132 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
133 [ case "$withval" in
134   yes|no)
135   #
136   # Just in case anybody does it
137   #
138     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
139   ;;
140   * )
141     logfilebase="$withval"
142     ;;
143   esac])
145 #################################################
146 # set lib directory location
147 AC_ARG_WITH(libdir,
148 [  --with-libdir=DIR       Where to put libdir ($libdir)],
149 [ case "$withval" in
150   yes|no)
151   #
152   # Just in case anybody does it
153   #
154     AC_MSG_WARN([--with-libdir without argument - will use default])
155   ;;
156   * )
157     libdir="$withval"
158     ;;
159   esac])
161 #################################################
162 # set lib directory location
163 AC_ARG_WITH(mandir,
164 [  --with-mandir=DIR       Where to put man pages ($mandir)],
165 [ case "$withval" in
166   yes|no)
167   #
168   # Just in case anybody does it
169   #
170     AC_MSG_WARN([--with-mandir without argument - will use default])
171   ;;
172   * )
173     mandir="$withval"
174     ;;
175   esac])
177 AC_ARG_WITH(cfenc,
178 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
179                           for optimization (Mac OS X/Darwin only)],
181 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
182 # Should have been in framework $withval/CoreFoundation.framework/Headers.
183 for d in \
184     $withval/CoreFoundation/StringEncodings.subproj \
185     $withval/StringEncodings.subproj \
186     $withval/CoreFoundation.framework/Headers \
187     $withval/Headers \
188     $withval
190     if test -r $d/CFStringEncodingConverter.h; then
191         ln -sfh $d include/CoreFoundation
192     fi
193 done
196 AC_SUBST(configdir)
197 AC_SUBST(lockdir)
198 AC_SUBST(piddir)
199 AC_SUBST(logfilebase)
200 AC_SUBST(privatedir)
201 AC_SUBST(swatdir)
202 AC_SUBST(bindir)
203 AC_SUBST(sbindir)
205 dnl Unique-to-Samba variables we'll be playing with.
206 AC_SUBST(SHELL)
207 AC_SUBST(LDSHFLAGS)
208 AC_SUBST(SONAMEFLAG)
209 AC_SUBST(SHLD)
210 AC_SUBST(HOST_OS)
211 AC_SUBST(PICFLAGS)
212 AC_SUBST(PICSUFFIX)
213 AC_SUBST(libc_cv_fpie)
214 AC_SUBST(PIE_CFLAGS)
215 AC_SUBST(PIE_LDFLAGS)
216 AC_SUBST(SHLIBEXT)
217 AC_SUBST(INSTALLCLIENT)
218 AC_SUBST(INSTALLCLIENTCMD_SH)
219 AC_SUBST(INSTALLCLIENTCMD_A)
220 AC_SUBST(LIBSMBCLIENT_SHARED)
221 AC_SUBST(LIBSMBCLIENT)
222 AC_SUBST(LIBSMBSHAREMODES_SHARED)
223 AC_SUBST(LIBSMBSHAREMODES)
224 AC_SUBST(PRINT_LIBS)
225 AC_SUBST(AUTH_LIBS)
226 AC_SUBST(ACL_LIBS)
227 AC_SUBST(PASSDB_LIBS)
228 AC_SUBST(IDMAP_LIBS)
229 AC_SUBST(KRB5_LIBS)
230 AC_SUBST(LDAP_LIBS)
231 AC_SUBST(SHLIB_PROGS)
232 AC_SUBST(SMBWRAPPER)
233 AC_SUBST(SMBWRAP_OBJS)
234 AC_SUBST(SMBWRAP_INC)
235 AC_SUBST(EXTRA_BIN_PROGS)
236 AC_SUBST(EXTRA_SBIN_PROGS)
237 AC_SUBST(EXTRA_ALL_TARGETS)
238 AC_SUBST(CONFIG_LIBS)
240 # Set defaults
241 PIE_CFLAGS=""
242 PIE_LDFLAGS=""
243 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
245 if test "x$enable_pie" != xno
246 then
247         AC_CACHE_CHECK(for -fPIE, libc_cv_fpie, [dnl
248                 cat > conftest.c <<EOF
249 int foo;
250 main () { return 0;}
252                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
253                 then
254                         libc_cv_fpie=yes
255                         PIE_CFLAGS="-fPIE"
256                         PIE_LDFLAGS="-pie"
257                 fi
258                 rm -f conftest*])
260 if test "x$PIE_CFLAGS" = x
261 then
262         libc_cv_fpie=no
265 AC_ARG_ENABLE(debug, 
266 [  --enable-debug          Turn on compiler debugging information (default=no)],
267     [if eval "test x$enable_debug = xyes"; then
268         CFLAGS="${CFLAGS} -g"
269     fi])
271 AC_SUBST(SOCKWRAP)
272 AC_ARG_ENABLE(socket-wrapper, 
273 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)],
274     [if eval "test x$enable_socket_wrapper = xyes"; then
275         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
276         SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
277     fi])
279 # compile with optimization and without debugging by default, but
280 # allow people to set their own preference.
281 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
282 # if it has no value.  This prevent *very* large debug binaries from occurring
283 # by default.
284 if test "x$CFLAGS" = x; then
285   CFLAGS="-O"
288 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_"
290 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
291     [if eval "test x$enable_developer = xyes"; then
292         developer=yes
293         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
294         # Add -Wdeclaration-after-statement if compiler supports it
295         AC_CACHE_CHECK(
296           [that the C compiler understands -Wdeclaration-after-statement],
297           samba_cv_HAVE_Wdeclaration_after_statement, [
298           AC_TRY_RUN_STRICT([
299             int main(void)
300             {
301                 return 0;
302             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
303             samba_cv_HAVE_Wdeclaration_after_statement=yes,
304             samba_cv_HAVE_Wdeclaration_after_statement=no,
305             samba_cv_HAVE_Wdeclaration_after_statement=cross)
306        ])
307        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
308             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
309        fi
310     fi])
312 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
313     [if eval "test x$enable_krb5developer = xyes"; then
314         developer=yes
315         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
316     fi])
318 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
320 if test "x$enable_dmalloc" = xyes
321 then
322         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
323         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
324                   [Define to check invariants around some common functions])
325         LIBS="$LIBS -ldmalloc"  
328 dnl Checks for programs.
331 ## for some reason this macro resets the CFLAGS
332 ## so save and restore
334 OLD_CFLAGS=${CFLAGS}
335 AC_PROG_CC
336 CFLAGS=${OLD_CFLAGS}
338 OLD_CFLAGS=${CFLAGS}
339 AC_PROG_CPP
340 CFLAGS=${OLD_CFLAGS}
342 AC_PROG_INSTALL
343 AC_PROG_AWK
344 AC_PATH_PROG(PERL, perl)
346 AC_CHECK_TOOL(AR, ar)
348 dnl Check if we use GNU ld
349 LD=ld
350 AC_PROG_LD_GNU
352 dnl Certain versions of GNU ld the default is not to have the 
353 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
354 dnl warnings when building modules.
355 if test "$ac_cv_prog_gnu_ld" = "yes"; then
356         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
357         AC_MSG_CHECKING(GNU ld release date)
358         changequote(,)dnl
359         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'`
360         changequote([,])dnl
361         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
362         if test -n "$ac_cv_gnu_ld_date"; then
363         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
364                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
365         fi
366         else
367            AC_MSG_CHECKING(GNU ld release version)
368            changequote(,)dnl
369            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
370            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
371            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
372            changequote([,])dnl
373            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
374            AC_MSG_CHECKING(GNU ld release version major)
375            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
376            AC_MSG_CHECKING(GNU ld release version minor)
377            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
378            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
379              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
380            fi
381         fi
384 dnl needed before AC_TRY_COMPILE
385 AC_ISC_POSIX
387 dnl look for executable suffix
388 AC_EXEEXT
390 dnl Check if C compiler understands -c and -o at the same time
391 AC_PROG_CC_C_O
392 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
393       BROKEN_CC=
394 else
395       BROKEN_CC=#
397 AC_SUBST(BROKEN_CC)
399 dnl Check if the C compiler understands -Werror
400 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
401  AC_TRY_RUN_STRICT([
402   int main(void)
403   {
404         return 0;
405   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
406   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
407 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
408    Werror_FLAGS="-Werror"
409 else 
410 dnl Check if the C compiler understands -w2
411 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
412  AC_TRY_RUN_STRICT([
413   int main(void)
414   {
415         return 0;
416   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
417   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
418 if test x"$samba_cv_HAVE_w2" = x"yes"; then
419    Werror_FLAGS="-w2"
423 dnl Check if the C compiler understands volatile (it should, being ANSI).
424 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
425     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
426         samba_cv_volatile=yes,samba_cv_volatile=no)])
427 if test x"$samba_cv_volatile" = x"yes"; then
428    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
431 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
432 AC_MSG_CHECKING(uname -s)
433 AC_MSG_RESULT(${UNAME_S})
435 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
436 AC_MSG_CHECKING(uname -r)
437 AC_MSG_RESULT(${UNAME_R})
439 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
440 AC_MSG_CHECKING(uname -m)
441 AC_MSG_RESULT(${UNAME_M})
443 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
444 AC_MSG_CHECKING(uname -p)
445 AC_MSG_RESULT(${UNAME_P})
447 AC_CANONICAL_SYSTEM
449 dnl Add #include for broken IRIX header files
450   case "$host_os" in
451         *irix6*) AC_ADD_INCLUDE(<standards.h>)
452         ;;
453 esac
455 AC_VALIDATE_CACHE_SYSTEM_TYPE
457 DYNEXP=
459 dnl Add modules that have to be built by default here
460 dnl These have to be built static:
461 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_dfs rpc_srv rpc_spoolss rpc_eventlog auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
463 dnl These are preferably build shared, and static if dlopen() is not available
464 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"
466 if test "x$developer" = xyes; then
467    default_static_modules="$default_static_modules rpc_echo"
468    default_shared_modules="$default_shared_modules charset_weird"
472 # Config CPPFLAG settings for strange OS's that must be set
473 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
474 # case statement; its first reference must be unconditional.
476 case "$host_os" in
477 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
478     *hpux*)
479     
480       AC_PROG_CC_FLAG(Ae)
481       # mmap on HPUX is completely broken...
482       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
483       if test $ac_cv_prog_cc_Ae = yes; then
484         CPPFLAGS="$CPPFLAGS -Ae"
485       fi
487 # Defines needed for HPUX support.
488 # HPUX has bigcrypt but (sometimes?) doesn't use it for
489 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
491       case `uname -r` in
492                         *9*|*10*)
493                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
494                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
495                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
496                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
497                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
498                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
499                                 ;;
500                         *11*)
501                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
502                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
503                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
504                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
505                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
506                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
507                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
508                                 ;;
509       esac
510       ;;
513 # CRAY Unicos has broken const handling
514        *unicos*)
515           AC_MSG_RESULT([disabling const])
516           CPPFLAGS="$CPPFLAGS -Dconst="
517           ;;
518         
520 # AIX4.x doesn't even admit to having large
521 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
523     *aix4*)
524           AC_MSG_RESULT([enabling large file support])
525       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
526           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
527       ;;    
529 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
530 # to the existance of large files..
531 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
532 # recommendations on large file support, however it makes the
533 # compile work using gcc 2.7 and 2.8, whereas using the Sun
534 # recommendation makes the compile fail on gcc2.7. JRA.
536 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
538         *solaris*)
539                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
540                 case `uname -r` in
541                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
542                                 AC_MSG_RESULT([no large file support])
543                                 ;;
544                         5.*)
545                         AC_MSG_RESULT([enabling large file support])
546                         if test "$ac_cv_prog_gcc" = yes; then
547                                 ${CC-cc} -v >conftest.c 2>&1
548                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
549                                 rm -fr conftest.c
550                                 case "$ac_cv_gcc_compiler_version_number" in
551                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
552                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
553                                                 LDFLAGS="$LDFLAGS -lthread"
554                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
555                                                 ;;
556                                         *)
557                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
558                                                 LDFLAGS="$LDFLAGS -lthread"
559                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
560                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
561                                                 ;;
562                                 esac
563                         else
564                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
565                                 LDFLAGS="$LDFLAGS -lthread"
566                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
567                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
568                         fi
569                         ;;
570                 esac
571                 ;;
573 # IRIX uses SYSV printing.  Make sure to set that here
575         *irix*)
576                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
577                 ;;
578         *freebsd*|*dragonfly*)
579                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
580                 ;;
582 # VOS may need to have POSIX support and System V compatibility enabled.
584     *vos*)
585     case "$CPPFLAGS" in
586           *-D_POSIX_C_SOURCE*)
587                 ;;
588           *)
589                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
590                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
591                 ;;
592     esac
593     case "$CPPFLAGS" in
594           *-D_SYSV*|*-D_SVID_SOURCE*)
595                 ;;
596           *)
597                 CPPFLAGS="$CPPFLAGS -D_SYSV"
598                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
599     esac
600     ;;
602 # Tests needed for SINIX large file support.
604     *sysv4*)
605       if test $host = mips-sni-sysv4 ; then
606         AC_MSG_CHECKING([for LFS support])
607         old_CPPFLAGS="$CPPFLAGS"
608         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
609         AC_TRY_RUN([
610 #include <unistd.h>
611 main () {
612 #if _LFS64_LARGEFILE == 1
613 exit(0);
614 #else
615 exit(1);
616 #endif
617 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
618         CPPFLAGS="$old_CPPFLAGS"
619         if test x$SINIX_LFS_SUPPORT = xyes ; then
620           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
621                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
622           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
623           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
624           LIBS="`getconf LFS64_LIBS` $LIBS"
625         fi
626       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
627       fi
628     ;;
630 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
632     *linux*)
633         AC_MSG_CHECKING([for LFS support])
634         old_CPPFLAGS="$CPPFLAGS"
635         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
636        AC_TRY_RUN([
637 #include <unistd.h>
638 #include <sys/utsname.h>
639 #include <string.h>
640 #include <stdlib.h>
641 main() {
642 #if _LFS64_LARGEFILE == 1
643        struct utsname uts;
644        char *release;
645        int major, minor;
647        /* Ensure this is glibc 2.2 or higher */
648 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
649        int libc_major = __GLIBC__;
650        int libc_minor = __GLIBC_MINOR__;
652        if (libc_major < 2)
653               exit(1);
654        if (libc_minor < 2)
655               exit(1);
656 #endif
658        /* Ensure this is kernel 2.4 or higher */
660        uname(&uts);
661        release = strdup(uts.release);
662        major = atoi(strsep(&release, "."));
663        minor = atoi(strsep(&release, "."));
665        if (major > 2 || (major == 2 && minor > 3))
666                exit(0);
667        exit(1);
668 #else
669        exit(1);
670 #endif
672 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
673         CPPFLAGS="$old_CPPFLAGS"
674         if test x$LINUX_LFS_SUPPORT = xyes ; then
675                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
676                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
677                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
678                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
679         fi
680         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
681         ;;
684 # MacOS X is the *only* system that uses compose character in utf8. This
685 # is so horribly broken....
687     *darwin*)
688         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
689 # Add Fink directories for various packages, like dlcompat.
690 # Note: iconv does that explicitly below, but other packages
691 # don't.
692         CPPFLAGS="$CPPFLAGS -I/sw/include"
693         LDFLAGS="$LDFLAGS -L/sw/lib"
695 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
696 # use that instead of plain dlsym.
698         AC_CHECK_LIB(dl,dlopen)
699         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
701 # Add a system specific charset module.
703         default_shared_modules="$default_shared_modules charset_macosxfs"
704         ;;
705     *hurd*)
706         AC_MSG_CHECKING([for LFS support])
707         old_CPPFLAGS="$CPPFLAGS"
708         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
709         AC_TRY_RUN([
710 #include <unistd.h>
711 main () {
712 #if _LFS64_LARGEFILE == 1
713 exit(0);
714 #else
715 exit(1);
716 #endif
717 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
718         CPPFLAGS="$old_CPPFLAGS"
719         if test x$GLIBC_LFS_SUPPORT = xyes ; then
720           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
721                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
722           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
723         fi
724       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
725     ;;
727 esac
729 AC_INLINE
730 AC_HEADER_STDC
731 AC_HEADER_DIRENT
732 AC_HEADER_TIME
733 AC_HEADER_SYS_WAIT
734 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)
735 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h alloca.h)
736 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
737 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
738 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
739 AC_CHECK_HEADERS(sys/un.h)
740 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
741 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
742 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
743 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
744 AC_CHECK_HEADERS(langinfo.h locale.h)
746 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
747 #if HAVE_RPC_RPC_H
748 #include <rpc/rpc.h>
749 #endif
752 ## These fail to compile on IRIX so just check for their presence
753 AC_CHECK_HEADERS(sys/mode.h,,,)
755 # Look for Darwin headers
756 old_CPPFLAGS="$CPPFLAGS"
757 CPPFLAGS="-Iinclude $CPPFLAGS"
758 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
759 CPPFLAGS="$old_CPPFLAGS"
761 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
762 # subdirectory of headers.
763 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
765 # check for linux on amd64 since valgrind is not quite there yet
766 case "$host_os" in
767         *linux*)
768                 case "$UNAME_P" in
769                         *x86_64*)
770                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
771                                 ;;
772                 esac
773                 ;;
774 esac
778 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
779 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
781 case "$host_os" in
782     *hpux*)
783                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
784                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
785                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
786                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
787                 fi
788         ;;
789 esac
790 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
791 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
792 AC_CHECK_HEADERS(stropts.h poll.h)
793 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
794 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
795 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
797 AC_CHECK_HEADERS(netinet/ip.h,,,[[
798 #include <sys/types.h>
799 #if HAVE_SYS_SOCKET_H
800 #include <sys/socket.h>
801 #endif
802 #include <netinet/in.h>
803 #if HAVE_NETINET_IN_SYSTM_H
804 #include <netinet/in_systm.h>
805 #endif
808 AC_CHECK_HEADERS(net/if.h,,,[[
809 #include <sys/types.h>
810 #if HAVE_SYS_SOCKET_H
811 #include <sys/socket.h>
812 #endif
815 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
816 #if HAVE_SECURITY_PAM_APPL_H
817 #include <security/pam_appl.h>
818 #endif
821 # For experimental utmp support (lastlog on some BSD-like systems)
822 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
824 AC_CHECK_SIZEOF(int,cross)
825 AC_CHECK_SIZEOF(long,cross)
826 AC_CHECK_SIZEOF(short,cross)
828 AC_C_CONST
829 AC_C_INLINE
830 AC_C_BIGENDIAN
831 AC_C_CHAR_UNSIGNED
833 AC_TYPE_SIGNAL
834 AC_TYPE_UID_T
835 AC_TYPE_MODE_T
836 AC_TYPE_OFF_T
837 AC_TYPE_SIZE_T
838 AC_TYPE_PID_T
839 AC_STRUCT_ST_RDEV
840 AC_DIRENT_D_OFF
841 AC_CHECK_TYPE(ino_t,unsigned)
842 AC_CHECK_TYPE(loff_t,off_t)
843 AC_CHECK_TYPE(offset_t,loff_t)
844 AC_CHECK_TYPE(ssize_t, int)
845 AC_CHECK_TYPE(wchar_t, unsigned short)
847 ############################################
848 # for cups support we need libcups, and a handful of header files
850 AC_ARG_ENABLE(cups,
851 [  --enable-cups           Turn on CUPS support (default=auto)])
853 if test x$enable_cups != xno; then
854         AC_PATH_PROG(CUPS_CONFIG, cups-config)
856         if test "x$CUPS_CONFIG" != x; then
857                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
858                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
859                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
860                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
861         elif test x"$enable_cups" = x"yes"; then
862                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
863         fi
866 AC_ARG_ENABLE(iprint,
867 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
869 if test x$enable_iprint != xno; then
870         if test "x$CUPS_CONFIG" != x; then
871                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
872         elif test x"$enable_iprint" = x"yes"; then
873                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
874         fi
877 ############################################
878 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
879 AC_SEARCH_LIBS(dlopen, [dl])
880 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
882 ############################################
883 # check if the compiler can do immediate structures
884 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
885     AC_TRY_COMPILE([
886 #include <stdio.h>],
888    typedef struct {unsigned x;} FOOBAR;
889    #define X_FOOBAR(x) ((FOOBAR) { x })
890    #define FOO_ONE X_FOOBAR(1)
891    FOOBAR f = FOO_ONE;   
892    static struct {
893         FOOBAR y; 
894         } f2[] = {
895                 {FOO_ONE}
896         };   
898         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
899 if test x"$samba_cv_immediate_structures" = x"yes"; then
900    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
903 ############################################
904 # check if the compiler can do immediate structures
905 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
906     AC_TRY_LINK([
907 #include <stdio.h>],
909                 if (0) {
910                    this_function_does_not_exist();
911                 } else {
912                   return 1;
913                 }
916         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
917 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
918    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
921 ############################################
922 # check for unix domain sockets
923 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
924     AC_TRY_COMPILE([
925 #include <sys/types.h>
926 #include <stdlib.h>
927 #include <stddef.h>
928 #include <sys/socket.h>
929 #include <sys/un.h>],
931   struct sockaddr_un sunaddr; 
932   sunaddr.sun_family = AF_UNIX;
934         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
935 if test x"$samba_cv_unixsocket" = x"yes"; then
936    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
940 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
941     AC_TRY_COMPILE([
942 #include <sys/types.h>
943 #if STDC_HEADERS
944 #include <stdlib.h>
945 #include <stddef.h>
946 #endif
947 #include <sys/socket.h>],[socklen_t i = 0],
948         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
949 if test x"$samba_cv_socklen_t" = x"yes"; then
950    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
953 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
954     AC_TRY_COMPILE([
955 #include <sys/types.h>
956 #if STDC_HEADERS
957 #include <stdlib.h>
958 #include <stddef.h>
959 #endif
960 #include <signal.h>],[sig_atomic_t i = 0],
961         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
962 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
963    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
966 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
967     AC_TRY_COMPILE([
968 #include <sys/types.h>
969 #if STDC_HEADERS
970 #include <stdlib.h>
971 #include <stddef.h>
972 #endif
973 #if TIME_WITH_SYS_TIME
974 # include <sys/time.h>
975 # include <time.h>
976 #else
977 # if HAVE_SYS_TIME_H
978 #  include <sys/time.h>
979 # else
980 #  include <time.h>
981 # endif
982 #endif
983 #if HAVE_AIO_H
984 #include <aio.h>
985 #endif
986 ],[struct timespec ts;],
987         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
988 if test x"$samba_cv_struct_timespec" = x"yes"; then
989    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
992 # stupid headers have the functions but no declaration. grrrr.
993 AC_HAVE_DECL(errno, [#include <errno.h>])
994 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
995 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
996 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
997 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
998 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
999 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1001 # and glibc has setresuid under linux but the function does
1002 # nothing until kernel 2.1.44! very dumb.
1003 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1004     AC_TRY_RUN([#include <errno.h>
1005 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1006         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1007 if test x"$samba_cv_have_setresuid" = x"yes"; then
1008     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1011 # Do the same check for setresguid...
1013 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1014     AC_TRY_RUN([#include <unistd.h>
1015 #include <errno.h>
1016 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1017         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1018 if test x"$samba_cv_have_setresgid" = x"yes"; then
1019     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1022 AC_FUNC_MEMCMP
1024 ###############################################
1025 # Readline included by default unless explicitly asked not to
1026 test "${with_readline+set}" != "set" && with_readline=yes
1028 # test for where we get readline() from
1029 AC_MSG_CHECKING(whether to use readline)
1030 AC_ARG_WITH(readline,
1031 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1032 [  case "$with_readline" in
1033   yes)
1034     AC_MSG_RESULT(yes)
1036     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1037     AC_CHECK_HEADERS(readline/history.h)
1039     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1040       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1041        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1042       done
1043       AC_CHECK_LIB(readline, rl_callback_handler_install,
1044        [TERMLIBS="-lreadline $TERMLIBS"
1045        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1046        break], [TERMLIBS=], $TERMLIBS)])
1047     ;;
1048   no)
1049     AC_MSG_RESULT(no)
1050     ;;
1051   *)
1052     AC_MSG_RESULT(yes)
1054     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1055     # alternate readline path
1056     _ldflags=${LDFLAGS}
1057     _cppflags=${CPPFLAGS}
1059     # Add additional search path
1060     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1061     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1063     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1064     AC_CHECK_HEADERS(readline/history.h)
1066     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1067       for termlib in ncurses curses termcap terminfo termlib; do
1068        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1069       done
1070       AC_CHECK_LIB(readline, rl_callback_handler_install,
1071        [TERMLDFLAGS="-L$with_readline/lib"
1072        TERMCPPFLAGS="-I$with_readline/include"
1073        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1074        TERMLIBS="-lreadline $TERMLIBS"
1075        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1076        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1078     LDFLAGS=$_ldflags
1079     ;;
1080   esac],
1081   AC_MSG_RESULT(no)
1083 AC_SUBST(TERMLIBS)
1084 AC_SUBST(TERMLDFLAGS)
1086 # The readline API changed slightly from readline3 to readline4, so
1087 # code will generate warnings on one of them unless we have a few
1088 # special cases.
1089 AC_CHECK_LIB(readline, rl_completion_matches,
1090              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1091                         [Do we have rl_completion_matches?])],
1092              [],
1093              [$TERMLIBS])
1095 # The following test taken from the cvs sources
1096 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1097 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1098 # libsocket.so which has a bad implementation of gethostbyname (it
1099 # only looks in /etc/hosts), so we only look for -lsocket if we need
1100 # it.
1101 AC_CHECK_FUNCS(connect)
1102 if test x"$ac_cv_func_connect" = x"no"; then
1103     case "$LIBS" in
1104     *-lnsl*) ;;
1105     *) AC_CHECK_LIB(nsl_s, printf) ;;
1106     esac
1107     case "$LIBS" in
1108     *-lnsl*) ;;
1109     *) AC_CHECK_LIB(nsl, printf) ;;
1110     esac
1111     case "$LIBS" in
1112     *-lsocket*) ;;
1113     *) AC_CHECK_LIB(socket, connect) ;;
1114     esac
1115     case "$LIBS" in
1116     *-linet*) ;;
1117     *) AC_CHECK_LIB(inet, connect) ;;
1118     esac
1119     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1120     dnl has been cached.
1121     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1122        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1123         # ac_cv_func_connect=yes
1124         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1125         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1126     fi
1129 ###############################################
1130 # test for where we get yp_get_default_domain() from
1131 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1132 AC_CHECK_FUNCS(yp_get_default_domain)
1134 # Check if we have execl, if not we need to compile smbrun.
1135 AC_CHECK_FUNCS(execl)
1136 if test x"$ac_cv_func_execl" = x"no"; then
1137     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1140 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1141 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1142 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1143 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1144 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1145 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1146 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1147 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1148 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1149 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1150 AC_CHECK_FUNCS(syslog vsyslog timegm)
1151 AC_CHECK_FUNCS(setlocale nl_langinfo)
1152 AC_CHECK_FUNCS(nanosleep)
1153 # setbuffer, shmget, shm_open are needed for smbtorture
1154 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1155 AC_CHECK_HEADERS(libexc.h)
1156 AC_CHECK_LIB(exc, trace_back_stack)
1158 # syscall() is needed for smbwrapper.
1159 AC_CHECK_FUNCS(syscall)
1161 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1162 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1163 AC_CHECK_FUNCS(__getcwd _getcwd)
1164 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1165 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1166 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1167 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1168 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1169 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1170 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1171 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1172 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1173 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1174 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1175 AC_CHECK_FUNCS(prctl)
1177 AC_TRY_COMPILE([
1178 #ifdef HAVE_SYS_PRCTL_H
1179 #include <sys/prctl.h>
1180 #endif
1182 [int i; i = prtcl(0); ],
1183 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1188 case "$host_os" in
1189     *linux*)
1190        # glibc <= 2.3.2 has a broken getgrouplist
1191        AC_TRY_RUN([
1192 #include <unistd.h>
1193 #include <sys/utsname.h>
1194 main() {
1195        /* glibc up to 2.3 has a broken getgrouplist */
1196 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1197        int libc_major = __GLIBC__;
1198        int libc_minor = __GLIBC_MINOR__;
1200        if (libc_major < 2)
1201               exit(1);
1202        if ((libc_major == 2) && (libc_minor <= 3))
1203               exit(1);
1204 #endif
1205        exit(0);
1207 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1208        if test x"$linux_getgrouplist_ok" = x"yes"; then
1209           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1210        fi
1211        ;;
1212     *)
1213        AC_CHECK_FUNCS(getgrouplist)
1214        ;;
1215 esac
1218 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1221 if test x$ac_cv_func_stat64 = xno ; then
1222   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1223   AC_TRY_LINK([
1224 #if defined(HAVE_UNISTD_H)
1225 #include <unistd.h>
1226 #endif
1227 #include <sys/stat.h>
1228 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1229   AC_MSG_RESULT([$ac_cv_func_stat64])
1230   if test x$ac_cv_func_stat64 = xyes ; then
1231     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1232   fi
1235 if test x$ac_cv_func_lstat64 = xno ; then
1236   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1237   AC_TRY_LINK([
1238 #if defined(HAVE_UNISTD_H)
1239 #include <unistd.h>
1240 #endif
1241 #include <sys/stat.h>
1242 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1243   AC_MSG_RESULT([$ac_cv_func_lstat64])
1244   if test x$ac_cv_func_lstat64 = xyes ; then
1245     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1246   fi
1249 if test x$ac_cv_func_fstat64 = xno ; then
1250   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1251   AC_TRY_LINK([
1252 #if defined(HAVE_UNISTD_H)
1253 #include <unistd.h>
1254 #endif
1255 #include <sys/stat.h>
1256 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1257   AC_MSG_RESULT([$ac_cv_func_fstat64])
1258   if test x$ac_cv_func_fstat64 = xyes ; then
1259     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1260   fi
1263 #################################################
1264 # Check whether struct stat has timestamps with sub-second resolution.
1265 # At least IRIX and Solaris have these.
1267 # We check that 
1268 #       all of st_mtim, st_atim and st_ctim exist
1269 #       all of the members are in fact of type struct timespec
1271 # There is some conflicting standards weirdness about whether we should use
1272 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1273 # prefer struct timespec.
1275 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1276     [
1277         AC_TRY_COMPILE(
1278             [
1279 #if TIME_WITH_SYS_TIME
1280 # include <sys/time.h>
1281 # include <time.h>
1282 #else
1283 # if HAVE_SYS_TIME_H
1284 #  include <sys/time.h>
1285 # else
1286 #  include <time.h>
1287 # endif
1288 #endif
1289 #ifdef HAVE_SYS_STAT_H
1290 #include <sys/stat.h>
1291 #endif
1292             ],
1293             [
1294                 struct timespec t;
1295                 struct stat s = {0};
1296                 t.tv_sec = s.st_mtim.tv_sec;
1297                 t.tv_nsec = s.st_mtim.tv_nsec;
1298                 t.tv_sec = s.st_ctim.tv_sec;
1299                 t.tv_nsec = s.st_ctim.tv_nsec;
1300                 t.tv_sec = s.st_atim.tv_sec;
1301                 t.tv_nsec = s.st_atim.tv_nsec;
1302             ],
1303             samba_stat_hires=yes, samba_stat_hires=no)
1304     ])
1306 if test x"$samba_stat_hires" = x"yes" ; then
1307     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1308     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1309     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1310     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1311             [whether struct stat has sub-second timestamps])
1314 #####################################
1315 # we might need the resolv library on some systems
1316 AC_CHECK_LIB(resolv, dn_expand)
1319 # Check for the functions putprpwnam, set_auth_parameters,
1320 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1321 # Needed for OSF1 and HPUX.
1324 AC_LIBTESTFUNC(security, putprpwnam)
1325 AC_LIBTESTFUNC(sec, putprpwnam)
1327 AC_LIBTESTFUNC(security, set_auth_parameters)
1328 AC_LIBTESTFUNC(sec, set_auth_parameters)
1330 # UnixWare 7.x has its getspnam in -lgen
1331 AC_LIBTESTFUNC(gen, getspnam)
1333 AC_LIBTESTFUNC(security, getspnam)
1334 AC_LIBTESTFUNC(sec, getspnam)
1336 AC_LIBTESTFUNC(security, bigcrypt)
1337 AC_LIBTESTFUNC(sec, bigcrypt)
1339 AC_LIBTESTFUNC(security, getprpwnam)
1340 AC_LIBTESTFUNC(sec, getprpwnam)
1342 ############################################
1343 # Check if we have libattr
1344 AC_SEARCH_LIBS(getxattr, [attr])
1345 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1346 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1347 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1348 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1349 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1350 # Check if we have extattr
1351 case "$host_os" in
1352   *freebsd4* | *dragonfly* )
1353     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1354     ;;
1355   *)
1356     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1357     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1358     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1359     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1360     ;;
1361 esac
1363 # Assume non-shared by default and override below
1364 BLDSHARED="false"
1366 # these are the defaults, good for lots of systems
1367 HOST_OS="$host_os"
1368 LDSHFLAGS="-shared"
1369 SONAMEFLAG="#"
1370 SHLD="\${CC} \${CFLAGS}"
1371 PICFLAGS=""
1372 PICSUFFIX="po"
1373 SHLIBEXT="so"
1375 if test "$enable_shared" = "yes"; then
1376   # this bit needs to be modified for each OS that is suported by
1377   # smbwrapper. You need to specify how to create a shared library and
1378   # how to compile C code to produce PIC object files
1380   AC_MSG_CHECKING([ability to build shared libraries])
1382   # and these are for particular systems
1383   case "$host_os" in
1384                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1385                         BLDSHARED="true"
1386                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1387                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1388                         else
1389                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1390                         fi
1391                         DYNEXP="-Wl,--export-dynamic"
1392                         PICFLAGS="-fPIC"
1393                         SONAMEFLAG="-Wl,-soname="
1394                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1395                         ;;
1396                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1397                         BLDSHARED="true"
1398                         LDSHFLAGS="-G"
1399                         SONAMEFLAG="-h "
1400                         if test "${GCC}" = "yes"; then
1401                                 PICFLAGS="-fPIC"
1402                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1403                                         DYNEXP="-Wl,-E"
1404                                 fi
1405                         else
1406                                 PICFLAGS="-KPIC"
1407                                 ## ${CFLAGS} added for building 64-bit shared 
1408                                 ## libs using Sun's Compiler
1409                                 LDSHFLAGS="-G \${CFLAGS}"
1410                                 PICSUFFIX="po.o"
1411                         fi
1412                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1413                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1414                         ;;
1415                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1416                         BLDSHARED="true"
1417                         LDSHFLAGS="-G"
1418                         SONAMEFLAG="-Wl,-h,"
1419                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1420                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1421                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1422                         ;;
1423                 *netbsd* | *freebsd* | *dragonfly* )  
1424                         BLDSHARED="true"
1425                         LDSHFLAGS="-shared"
1426                         DYNEXP="-Wl,--export-dynamic"
1427                         SONAMEFLAG="-Wl,-soname,"
1428                         PICFLAGS="-fPIC -DPIC"
1429                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1430                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1431                         ;;
1432                 *openbsd*)  BLDSHARED="true"
1433                         LDSHFLAGS="-shared"
1434                         DYNEXP="-Wl,-Bdynamic"
1435                         SONAMEFLAG="-Wl,-soname,"
1436                         PICFLAGS="-fPIC"
1437                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1438                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1439                         ;;
1440                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1441                         case "$host_os" in
1442                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1443                         ;;
1444                         esac
1445                         BLDSHARED="true"
1446                         LDSHFLAGS="-set_version sgi1.0 -shared"
1447                         SONAMEFLAG="-soname "
1448                         SHLD="\${LD}"
1449                         if test "${GCC}" = "yes"; then
1450                                 PICFLAGS="-fPIC"
1451                         else 
1452                                 PICFLAGS="-KPIC"
1453                         fi
1454                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1455                         ;;
1456                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1457                         BLDSHARED="true"
1458                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1459                         DYNEXP="-Wl,-brtl,-bexpall"
1460                         PICFLAGS="-O2"
1461                         if test "${GCC}" != "yes"; then
1462                                 ## for funky AIX compiler using strncpy()
1463                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1464                         fi
1466                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1467                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1468                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1469                         ;;
1470                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1471                         # Use special PIC flags for the native HP-UX compiler.
1472                         if test $ac_cv_prog_cc_Ae = yes; then
1473                                 BLDSHARED="true"
1474                                 SHLD="cc"
1475                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1476                                 SONAMEFLAG="-Wl,+h "
1477                                 PICFLAGS="+z"
1478                         elif test "${GCC}" = "yes"; then
1479                                 PICFLAGS="-fPIC"
1480                         fi
1481                         if test "$host_cpu" = "ia64"; then
1482                                 SHLIBEXT="so"
1483                                 DYNEXP="-Wl,-E,+b /usr/local/lib/hpux32:/usr/lib/hpux32"
1484                         else
1485                                 SHLIBEXT="sl"
1486                                 DYNEXP="-Wl,-E,+b /usr/local/lib:/usr/lib"
1487                         fi
1488                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1489                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1490                         ;;
1491                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1492                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1493                         ;;
1494                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1495                         BLDSHARED="true"
1496                         LDSHFLAGS="-shared"
1497                         SONAMEFLAG="-Wl,-soname,"
1498                         PICFLAGS="-fPIC"
1499                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1500                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1501                         ;;
1502                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1503                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1504                         ;;
1505                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1506                         BLDSHARED="true"
1507                         LDSHFLAGS="-shared"
1508                         SONAMEFLAG="-Wl,-soname,"
1509                         PICFLAGS="-KPIC"
1510                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1511                         ;;
1512                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1513                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1514                         ;;
1515                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1516                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1517                         ;;
1518                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1519                         case "$host" in
1520                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1521                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1522                                         fi
1523                                         LDSHFLAGS="-G"
1524                                         DYNEXP="-Bexport"
1525                                 ;;
1526                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1527                         esac
1528                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1529                         ;;
1531                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1532                         if [ test "$GCC" != yes ]; then
1533                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1534                         fi
1535                         LDSHFLAGS="-G"
1536                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1537                         ;;
1538                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1539                         BLDSHARED="false"
1540                         LDSHFLAGS=""
1541                         ;;
1543                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1544                         BLDSHARED="true"
1545                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1546                         SHLIBEXT="dylib"
1547                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1548                         ;;
1550                 *)
1551                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1552                         ;;
1553   esac
1554   AC_SUBST(DYNEXP)
1555   AC_MSG_RESULT($BLDSHARED)
1556   AC_MSG_CHECKING([linker flags for shared libraries])
1557   AC_MSG_RESULT([$LDSHFLAGS])
1558   AC_MSG_CHECKING([compiler flags for position-independent code])
1559   AC_MSG_RESULT([$PICFLAGS])
1562 #######################################################
1563 # test whether building a shared library actually works
1564 if test $BLDSHARED = true; then
1565 AC_CACHE_CHECK([whether building shared libraries actually works], 
1566                [ac_cv_shlib_works],[
1567    # try building a trivial shared library
1568    ac_cv_shlib_works=no
1569    # The $SHLD and $LDSHFLAGS variables may contain references to other
1570    # variables so they need to be eval'ed.
1571    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1572         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1573    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1574         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1575    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1577 if test $ac_cv_shlib_works = no; then
1578    BLDSHARED=false
1582 ################
1584 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1585 AC_TRY_RUN([#include <stdio.h>
1586 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1587 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1588 if test x"$samba_cv_have_longlong" = x"yes"; then
1589     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1593 # Check if the compiler supports the LL prefix on long long integers.
1594 # AIX needs this.
1596 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1597     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1598         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1599 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1600    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1603   
1604 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1605 AC_TRY_RUN([#include <stdio.h>
1606 #include <sys/stat.h>
1607 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1608 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1609 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1610     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1613 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1614 AC_TRY_RUN([
1615 #if defined(HAVE_UNISTD_H)
1616 #include <unistd.h>
1617 #endif
1618 #include <stdio.h>
1619 #include <sys/stat.h>
1620 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1621 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1622 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1623     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1626 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1627 AC_TRY_RUN([#include <stdio.h>
1628 #include <sys/stat.h>
1629 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1630 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1631 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1632     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1635 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1636 AC_TRY_RUN([
1637 #if defined(HAVE_UNISTD_H)
1638 #include <unistd.h>
1639 #endif
1640 #include <stdio.h>
1641 #include <sys/stat.h>
1642 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1643 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1644 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1645     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1648 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1649 AC_TRY_RUN([
1650 #if defined(HAVE_UNISTD_H)
1651 #include <unistd.h>
1652 #endif
1653 #include <stdio.h>
1654 #include <sys/stat.h>
1655 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1656 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1657 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1658     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1661 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1662 AC_TRY_COMPILE([
1663 #if defined(HAVE_UNISTD_H)
1664 #include <unistd.h>
1665 #endif
1666 #include <sys/types.h>
1667 #include <dirent.h>],
1668 [DIR64 de;],
1669 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1670 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1671     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1674 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1675 AC_TRY_COMPILE([
1676 #if defined(HAVE_UNISTD_H)
1677 #include <unistd.h>
1678 #endif
1679 #include <sys/types.h>
1680 #include <dirent.h>],
1681 [struct dirent64 de;],
1682 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1683 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1684     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1687 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1688 AC_TRY_RUN([
1689 #if defined(HAVE_UNISTD_H)
1690 #include <unistd.h>
1691 #endif
1692 #include <sys/types.h>
1693 main() { dev_t dev; int i = major(dev); return 0; }],
1694 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1695 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1696     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1699 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1700 AC_TRY_RUN([
1701 #if defined(HAVE_UNISTD_H)
1702 #include <unistd.h>
1703 #endif
1704 #include <sys/types.h>
1705 main() { dev_t dev; int i = minor(dev); return 0; }],
1706 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1707 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1708     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1711 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1712 AC_TRY_RUN([
1713 #if defined(HAVE_UNISTD_H)
1714 #include <unistd.h>
1715 #endif
1716 #include <sys/types.h>
1717 main() { dev_t dev = makedev(1,2); return 0; }],
1718 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1719 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1720     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1723 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1724 AC_TRY_RUN([#include <stdio.h>
1725 main() { char c; c=250; exit((c > 0)?0:1); }],
1726 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1727 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1728     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1731 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1732 AC_TRY_COMPILE([#include <sys/types.h>
1733 #include <sys/socket.h>
1734 #include <netinet/in.h>],
1735 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1736 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1737 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1738     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1741 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1742 AC_TRY_COMPILE([#include <sys/types.h>
1743 #include <dirent.h>
1744 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1745 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1746 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1747     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1750 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1751 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1752 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1753 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1754     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1757 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1758 AC_TRY_RUN([
1759 #include <sys/time.h>
1760 #include <unistd.h>
1761 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1762            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1763 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1764     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1767 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1768 AC_TRY_LINK([#include <stdarg.h>
1769 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1770 samba_cv_HAVE_VA_COPY=yes,
1771 samba_cv_HAVE_VA_COPY=no)])
1772 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1773     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1774 else
1775     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1776     AC_TRY_LINK([#include <stdarg.h>
1777     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1778     samba_cv_HAVE___VA_COPY=yes,
1779     samba_cv_HAVE___VA_COPY=no)])
1780     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1781         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1782     fi
1785 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1786 AC_TRY_RUN([
1787 #include <sys/types.h>
1788 #include <stdarg.h>
1789 void foo(const char *format, ...) { 
1790        va_list ap;
1791        int len;
1792        char buf[5];
1794        va_start(ap, format);
1795        len = vsnprintf(buf, 0, format, ap);
1796        va_end(ap);
1797        if (len != 5) exit(1);
1799        va_start(ap, format);
1800        len = vsnprintf(0, 0, format, ap);
1801        va_end(ap);
1802        if (len != 5) exit(1);
1804        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1806        exit(0);
1808 main() { foo("hello"); }
1810 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1811 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1812     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1815 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1816 AC_TRY_RUN([#include <sys/types.h>
1817 #include <dirent.h>
1818 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1819 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1820 di->d_name[0] == 0) exit(0); exit(1);} ],
1821 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1822 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1823     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1826 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1827 AC_TRY_COMPILE([#include <sys/types.h>
1828 #include <utime.h>],
1829 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1830 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1831 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1832     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1835 ##############
1836 # Check utmp details, but only if our OS offers utmp.h
1837 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1838 dnl  utmp and utmpx come in many flavours
1839 dnl  We need to check for many of them
1840 dnl  But we don't need to do each and every one, because our code uses
1841 dnl  mostly just the utmp (not utmpx) fields.
1843 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1845 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1846 AC_TRY_COMPILE([#include <sys/types.h>
1847 #include <utmp.h>],
1848 [struct utmp ut;  ut.ut_name[0] = 'a';],
1849 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1850 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1851     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1852 fi 
1854 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1855 AC_TRY_COMPILE([#include <sys/types.h>
1856 #include <utmp.h>],
1857 [struct utmp ut;  ut.ut_user[0] = 'a';],
1858 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1859 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1860     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1861 fi 
1863 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1864 AC_TRY_COMPILE([#include <sys/types.h>
1865 #include <utmp.h>],
1866 [struct utmp ut;  ut.ut_id[0] = 'a';],
1867 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1868 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1869     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1870 fi 
1872 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1873 AC_TRY_COMPILE([#include <sys/types.h>
1874 #include <utmp.h>],
1875 [struct utmp ut;  ut.ut_host[0] = 'a';],
1876 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1877 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1878     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1879 fi 
1881 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1882 AC_TRY_COMPILE([#include <sys/types.h>
1883 #include <utmp.h>],
1884 [struct utmp ut;  time_t t; ut.ut_time = t;],
1885 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1886 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1887     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1888 fi 
1890 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1891 AC_TRY_COMPILE([#include <sys/types.h>
1892 #include <utmp.h>],
1893 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1894 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1895 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1896     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1897 fi 
1899 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1900 AC_TRY_COMPILE([#include <sys/types.h>
1901 #include <utmp.h>],
1902 [struct utmp ut;  ut.ut_type = 0;],
1903 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1904 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1905     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1906 fi 
1908 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1909 AC_TRY_COMPILE([#include <sys/types.h>
1910 #include <utmp.h>],
1911 [struct utmp ut;  ut.ut_pid = 0;],
1912 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1913 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1914     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1915 fi 
1917 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1918 AC_TRY_COMPILE([#include <sys/types.h>
1919 #include <utmp.h>],
1920 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1921 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1922 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1923     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1924 fi 
1926 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1927 AC_TRY_COMPILE([#include <sys/types.h>
1928 #include <utmp.h>],
1929 [struct utmp ut;  ut.ut_addr = 0;],
1930 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1931 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1932     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1933 fi 
1935 if test x$ac_cv_func_pututline = xyes ; then
1936   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1937   AC_TRY_COMPILE([#include <sys/types.h>
1938 #include <utmp.h>],
1939   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1940   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1941   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1942       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1943   fi
1946 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1947 AC_TRY_COMPILE([#include <sys/types.h>
1948 #include <utmpx.h>],
1949 [struct utmpx ux;  ux.ut_syslen = 0;],
1950 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1951 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1952     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1953 fi 
1956 # end utmp details
1959 ICONV_LOCATION=standard
1960 LOOK_DIRS="/usr /usr/local /sw /opt"
1961 AC_ARG_WITH(libiconv,
1962 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1964   if test "$withval" = "no" ; then
1965     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
1966   else
1967      if test "$withval" != "yes" ; then
1968         ICONV_PATH_SPEC=yes
1969         LOOK_DIRS="$withval"
1970      fi
1971   fi
1974 for i in $LOOK_DIRS ; do
1975     save_LIBS=$LIBS
1976     save_LDFLAGS=$LDFLAGS
1977     save_CPPFLAGS=$CPPFLAGS
1978     ICONV_FOUND="no"
1979     unset libext
1980     CPPFLAGS="$CPPFLAGS -I$i/include"
1981 dnl This is here to handle -withval stuff for --with-libiconv
1982 dnl Perhaps we should always add a -L
1984 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
1985 dnl installation paths. This gets a little tricky since we might have iconv
1986 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
1987 dnl succeed when the header is found. To counter this, make sure the 
1988 dnl library directory is there and check the ABI directory first (which
1989 dnl should be harmless on other systems.
1990 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
1991     for l in "lib32" "lib" "lib/hpux32"; do
1992         if test -d "$i/$l" ; then
1993                 LDFLAGS="$save_LDFLAGS -L$i/$l"
1994         LIBS=
1995         export LDFLAGS LIBS CPPFLAGS
1996 dnl Try to find iconv(3)
1997                 jm_ICONV($i/$l)
1998                 if test x"$ICONV_FOUND" = "xyes" ; then
1999             libext="$l"
2000             break;
2001         fi
2002         fi
2003     done
2005     if test x"$ICONV_FOUND" = "xyes" ; then
2006         LDFLAGS=$save_LDFLAGS
2007         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2008         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2009         LIBS="$save_LIBS"
2010         ICONV_LOCATION=$i
2011         export LDFLAGS LIBS CPPFLAGS
2012 dnl Now, check for a working iconv ... we want to do it here because
2013 dnl there might be a working iconv further down the list of LOOK_DIRS
2015         ############
2016         # check for iconv in libc
2017         ic_save_LIBS="$LIBS"
2018         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2019            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2020         fi
2021         if test x"$jm_cv_lib_iconv" != x; then
2022            LIBS="$LIBS -l$jm_cv_lib_iconv"
2023         fi
2024 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2025         default_dos_charset=no
2026         default_display_charset=no
2027         default_unix_charset=no
2029         # check for default dos charset name
2030         for j in CP850 IBM850 ; do
2031             rjs_CHARSET($j)
2032             if test x"$ICONV_CHARSET" = x"$j"; then
2033                 default_dos_charset="\"$j\""
2034                 break
2035             fi
2036         done
2037         # check for default display charset name
2038         for j in ASCII 646 ; do
2039             rjs_CHARSET($j)
2040             if test x"$ICONV_CHARSET" = x"$j"; then
2041                 default_display_charset="\"$j\""
2042                 break
2043             fi
2044         done
2045         # check for default unix charset name
2046         for j in UTF-8 UTF8 ; do
2047             rjs_CHARSET($j)
2048             if test x"$ICONV_CHARSET" = x"$j"; then
2049                 default_unix_charset="\"$j\""
2050                 break
2051             fi
2052         done
2053         
2054         if test "$default_dos_charset" != "no" -a \
2055                 "$default_dos_charset" != "cross" -a \
2056                 "$default_display_charset" != "no" -a \ 
2057                 "$default_display_charset" != "cross" -a \
2058                 "$default_unix_charset" != "no" -a \
2059                 "$default_unix_charset" != "cross"
2060         then
2061                 samba_cv_HAVE_NATIVE_ICONV=yes
2062         else if test "$default_dos_charset" = "cross" -o \
2063                      "$default_display_charset" = "cross" -o \
2064                      "$default_unix_charset" = "cross"
2065         then
2066                 samba_cv_HAVE_NATIVE_ICONV=cross
2067         else
2068                 samba_cv_HAVE_NATIVE_ICONV=no
2069         fi
2070         fi
2071 dnl ])
2073         LIBS="$ic_save_LIBS"
2074         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2075            CPPFLAGS=$save_CPPFLAGS
2076            LDFLAGS=$save_LDFLAGS
2077            LIBS=$save_LIBS
2078            if test x"$jm_cv_lib_iconv" != x; then
2079               LIBS="$LIBS -l$jm_cv_lib_iconv"
2080            fi
2081            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2082            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2083            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2084            export CPPFLAGS
2085            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2086            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2087            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2088            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2089            break
2090         fi
2091 dnl We didn't find a working iconv, so keep going
2092     fi
2093 dnl We only need to clean these up here for the next pass through the loop
2094     CPPFLAGS=$save_CPPFLAGS
2095     LDFLAGS=$save_LDFLAGS
2096     LIBS=$save_LIBS
2097     export LDFLAGS LIBS CPPFLAGS
2098 done
2099 unset libext
2102 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2103     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2104     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2105    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2106    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2107    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2111 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2112 AC_TRY_RUN([
2113 #include <sys/types.h>
2114 #include <fcntl.h>
2115 #ifndef F_GETLEASE
2116 #define F_GETLEASE      1025
2117 #endif
2118 main() {
2119        int fd = open("/dev/null", O_RDONLY);
2120        return fcntl(fd, F_GETLEASE, 0) == -1;
2123 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2124 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2125     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2128 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2129 AC_TRY_RUN([
2130 #include <sys/types.h>
2131 #include <fcntl.h>
2132 #include <signal.h>
2133 #ifndef F_NOTIFY
2134 #define F_NOTIFY 1026
2135 #endif
2136 main() {
2137         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2140 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2141 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2142     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2145 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2146 AC_TRY_RUN([
2147 #include <sys/types.h>
2148 #include <fcntl.h>
2149 #include <signal.h>
2150 #include <sys/file.h>
2151 #ifndef LOCK_MAND
2152 #define LOCK_MAND       32
2153 #define LOCK_READ       64
2154 #endif
2155 main() {
2156         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2159 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2160 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2161     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2167 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2168 AC_TRY_COMPILE([#include <sys/types.h>
2169 #include <fcntl.h>],
2170 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2171 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2172 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2173     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2176 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
2177 AC_TRY_RUN([#include <sys/types.h>
2178 #include <sys/capability.h>
2179 main() {
2180  cap_t cap;
2181  if ((cap = cap_get_proc()) == NULL)
2182    exit(1);
2183  cap->cap_effective |= CAP_NETWORK_MGT;
2184  cap->cap_inheritable |= CAP_NETWORK_MGT;
2185  cap_set_proc(cap);
2186  exit(0);
2189 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
2190 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
2191     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
2195 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2196 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2199 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2200 AC_TRY_COMPILE([#include <sys/types.h>
2201 #if defined(HAVE_RPC_RPC_H)
2202 #include <rpc/rpc.h>
2203 #endif],
2204 [int16 testvar;],
2205 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2206 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2207     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2210 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2211 AC_TRY_COMPILE([#include <sys/types.h>
2212 #if defined(HAVE_RPC_RPC_H)
2213 #include <rpc/rpc.h>
2214 #endif],
2215 [uint16 testvar;],
2216 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2217 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2218     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2221 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2222 AC_TRY_COMPILE([#include <sys/types.h>
2223 #if defined(HAVE_RPC_RPC_H)
2224 #include <rpc/rpc.h>
2225 #endif],
2226 [int32 testvar;],
2227 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2228 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2229     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2232 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2233 AC_TRY_COMPILE([#include <sys/types.h>
2234 #if defined(HAVE_RPC_RPC_H)
2235 #include <rpc/rpc.h>
2236 #endif],
2237 [uint32 testvar;],
2238 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2239 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2240     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2244 dnl Some systems (SCO) have a problem including
2245 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2246 dnl as a #define in <prot.h> and as part of an enum
2247 dnl in <rpc/rpc.h>.
2250 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2251 AC_TRY_COMPILE([#include <sys/types.h>
2252 #ifdef HAVE_SYS_SECURITY_H
2253 #include <sys/security.h>
2254 #include <prot.h>
2255 #endif  /* HAVE_SYS_SECURITY_H */
2256 #if defined(HAVE_RPC_RPC_H)
2257 #include <rpc/rpc.h>
2258 #endif],
2259 [int testvar;],
2260 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2261 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2262     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2265 AC_MSG_CHECKING([for test routines])
2266 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2267            AC_MSG_RESULT(yes),
2268            AC_MSG_ERROR([cant find test code. Aborting config]),
2269            AC_MSG_WARN([cannot run when cross-compiling]))
2271 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2272 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2273            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2274 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2275     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2278 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2279 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2280            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2281            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2282            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2283 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2284 then
2285     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2288 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2289 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2290            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2291 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2292     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2295 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2296 SAVE_CPPFLAGS="$CPPFLAGS"
2297 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2298 AC_TRY_COMPILE([
2299 #define REPLACE_GETPASS 1
2300 #define NO_PROTO_H 1
2301 #define NO_CONFIG_H 1
2302 #define main dont_declare_main
2303 #include "${srcdir-.}/lib/getsmbpass.c"
2304 #undef main
2305 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2306 CPPFLAGS="$SAVE_CPPFLAGS"
2308 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2309         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2312 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2313 AC_TRY_RUN([
2314 #include <stdio.h>
2315 #include <sys/types.h>
2316 #include <netinet/in.h>
2317 #ifdef HAVE_ARPA_INET_H
2318 #include <arpa/inet.h>
2319 #endif
2320 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2321 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2322     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2323 exit(1);}],
2324            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2325 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2326     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2329 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2330 AC_TRY_RUN([#include <stdlib.h>
2331 #include <sys/types.h>
2332 #include <sys/stat.h>
2333 #include <unistd.h>
2334 main() { 
2335   struct stat st;
2336   char tpl[20]="/tmp/test.XXXXXX"; 
2337   int fd = mkstemp(tpl); 
2338   if (fd == -1) exit(1);
2339   unlink(tpl);
2340   if (fstat(fd, &st) != 0) exit(1);
2341   if ((st.st_mode & 0777) != 0600) exit(1);
2342   exit(0);
2344 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2345 samba_cv_HAVE_SECURE_MKSTEMP=no,
2346 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2347 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2348     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2351 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2352 AC_TRY_RUN([#include <unistd.h>
2353 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2354 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2355 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2356     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2359 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2360 AC_TRY_RUN([#include <unistd.h>
2361 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2362 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2363 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2364     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2367 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2368 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2369            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2370 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2371     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2372 else
2373     AC_MSG_WARN(running as non-root will disable some tests)
2376 ##################
2377 # look for a method of finding the list of network interfaces
2378 iface=no;
2379 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2380 AC_TRY_RUN([
2381 #define HAVE_IFACE_AIX 1
2382 #define AUTOCONF_TEST 1
2383 #include "confdefs.h"
2384 #include "${srcdir-.}/lib/interfaces.c"],
2385            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2386 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2387     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2390 if test $iface = no; then
2391 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2392 AC_TRY_RUN([
2393 #define HAVE_IFACE_IFCONF 1
2394 #define AUTOCONF_TEST 1
2395 #include "confdefs.h"
2396 #include "${srcdir-.}/lib/interfaces.c"],
2397            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2398 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2399     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2403 if test $iface = no; then
2404 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2405 AC_TRY_RUN([
2406 #define HAVE_IFACE_IFREQ 1
2407 #define AUTOCONF_TEST 1
2408 #include "confdefs.h"
2409 #include "${srcdir-.}/lib/interfaces.c"],
2410            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2411 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2412     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2417 ################################################
2418 # look for a method of setting the effective uid
2419 seteuid=no;
2420 if test $seteuid = no; then
2421 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2422 AC_TRY_RUN([
2423 #define AUTOCONF_TEST 1
2424 #define USE_SETRESUID 1
2425 #include "confdefs.h"
2426 #include "${srcdir-.}/lib/util_sec.c"],
2427            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2428 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2429     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2434 if test $seteuid = no; then
2435 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2436 AC_TRY_RUN([
2437 #define AUTOCONF_TEST 1
2438 #define USE_SETREUID 1
2439 #include "confdefs.h"
2440 #include "${srcdir-.}/lib/util_sec.c"],
2441            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2442 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2443     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2447 if test $seteuid = no; then
2448 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2449 AC_TRY_RUN([
2450 #define AUTOCONF_TEST 1
2451 #define USE_SETEUID 1
2452 #include "confdefs.h"
2453 #include "${srcdir-.}/lib/util_sec.c"],
2454            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2455 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2456     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2460 if test $seteuid = no; then
2461 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2462 AC_TRY_RUN([
2463 #define AUTOCONF_TEST 1
2464 #define USE_SETUIDX 1
2465 #include "confdefs.h"
2466 #include "${srcdir-.}/lib/util_sec.c"],
2467            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2468 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2469     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2474 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2475 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2476            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2477 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2478     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2481 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2482 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2483            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2484 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2485     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2488 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2489 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2490            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2491 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2492     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2494 else
2497 dnl Don't check for 64 bit fcntl locking if we know that the
2498 dnl glibc2.1 broken check has succeeded.
2499 dnl 
2501   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2502   AC_TRY_RUN([
2503 #if defined(HAVE_UNISTD_H)
2504 #include <unistd.h>
2505 #endif
2506 #include <stdio.h>
2507 #include <stdlib.h>
2509 #ifdef HAVE_FCNTL_H
2510 #include <fcntl.h>
2511 #endif
2513 #ifdef HAVE_SYS_FCNTL_H
2514 #include <sys/fcntl.h>
2515 #endif
2516 main() { struct flock64 fl64;
2517 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2518 exit(0);
2519 #else
2520 exit(1);
2521 #endif
2523        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2525   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2526       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2527   fi
2530 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2531 AC_TRY_COMPILE([#include <sys/types.h>
2532 #include <sys/stat.h>
2533 #include <unistd.h>],
2534 [struct stat st;  st.st_blocks = 0;],
2535 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2536 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2537     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2538 fi 
2540 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2541 AC_TRY_COMPILE([#include <sys/types.h>
2542 #include <sys/stat.h>
2543 #include <unistd.h>],
2544 [struct stat st;  st.st_blksize = 0;],
2545 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2546 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2547     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2550 case "$host_os" in
2551 *linux*)
2552 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2553 AC_TRY_COMPILE([
2554 #ifdef HAVE_SYS_VFS_H
2555 #include <sys/vfs.h>
2556 #endif
2557 #ifdef HAVE_SYS_CAPABILITY_H
2558 #include <sys/capability.h>
2559 #endif
2560 ],[int i;],
2561    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2562 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2563    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2566 esac
2568 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2569 AC_TRY_COMPILE([
2570 #include <sys/types.h>
2571 #include <sys/acl.h>
2572 #if defined(HAVE_RPCSVC_NIS_H)
2573 #include <rpcsvc/nis.h>
2574 #endif],
2575 [int i;],
2576 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2577 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2578         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2581 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2582 AC_TRY_RUN([
2583 #include <stdio.h>
2584 #include <limits.h>
2585 main() {
2586         char *newpath = realpath("/tmp", NULL);
2587         exit ((newpath != NULL) ? 0 : 1);
2590 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2591 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2592     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2595 #################################################
2596 # check for smbwrapper support
2597 AC_MSG_CHECKING(whether to use smbwrapper)
2598 AC_ARG_WITH(smbwrapper,
2599 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2600 [ case "$withval" in
2601   yes)
2602     AC_MSG_RESULT(yes)
2603     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2604         WRAPPROG="bin/smbsh\$(EXEEXT)"
2605         WRAP="bin/smbwrapper.$SHLIBEXT"
2606         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
2607         WRAP_INC="-I\$(srcdir)/smbwrapper"
2609 # Conditions under which smbwrapper should not be built.
2611         if test x$PICFLAGS = x; then
2612            echo No support for PIC code - disabling smbwrapper and smbsh
2613            WRAPPROG=""
2614            WRAP=""
2615            WRAP_OBJS=""
2616            WRAP_INC=""
2617         elif test x$ac_cv_func_syscall = xno; then
2618            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2619            WRAPPROG=""
2620            WRAP=""
2621            WRAP_OBJS=""
2622            WRAP_INC=""
2623         fi
2624         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2625         SMBWRAPPER="$WRAPPROG $WRAP"
2626         SMBWRAP_OBJS="$WRAP_OBJS"
2627         SMBWRAP_INC="$WRAP_INC"
2628     ;;
2629   *)
2630     AC_MSG_RESULT(no)
2631     ;;
2632   esac ],
2633   AC_MSG_RESULT(no)
2636 #################################################
2637 # check for AFS clear-text auth support
2638 samba_cv_WITH_AFS=no
2639 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2640 AC_ARG_WITH(afs,
2641 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2642 [ case "$withval" in
2643   yes|auto)
2644     AC_MSG_RESULT($withval)
2645     samba_cv_WITH_AFS=$withval
2646     ;;
2647   *)
2648     AC_MSG_RESULT(no)
2649     ;;
2650   esac ],
2651   AC_MSG_RESULT(no)
2654 ####################################################
2655 # check for Linux-specific AFS fake-kaserver support
2656 samba_cv_WITH_FAKE_KASERVER=no
2657 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2658 AC_ARG_WITH(fake-kaserver,
2659 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2660 [ case "$withval" in
2661   yes|auto)
2662     AC_MSG_RESULT($withval)
2663     samba_cv_WITH_FAKE_KASERVER=$withval
2664     ;;
2665   *)
2666     AC_MSG_RESULT(no)
2667     ;;
2668   esac ],
2669   AC_MSG_RESULT(no)
2672 #################################################
2673 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2674 if test x"$samba_cv_WITH_AFS" != x"no" ||
2675    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2677     # see if this box has the afs-headers in /usr/include/afs
2678     AC_MSG_CHECKING(for /usr/include/afs)
2679     if test -d /usr/include/afs; then
2680           CFLAGS="$CFLAGS -I/usr/include/afs"
2681           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2682           AC_MSG_RESULT(yes)
2683     else
2684       AC_MSG_RESULT(no)
2685     fi
2686    
2687     # check for afs.h
2688     have_afs_headers=no
2689     AC_CHECK_HEADERS(afs.h afs/afs.h)
2690     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2691         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2692            test x"$samba_cv_WITH_AFS" = x"auto"; then
2693                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2694         else
2695                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2696         fi
2697     else
2698         have_afs_headers=yes
2699     fi
2702 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2703     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2706 #################################################
2707 # check whether to compile AFS/NT ACL mapping module
2708 samba_cv_WITH_VFS_AFSACL=no
2709 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2710 AC_ARG_WITH(vfs-afsacl,
2711 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2712 [ case "$withval" in
2713   yes|auto)
2714     AC_MSG_RESULT($withval)
2715     samba_cv_WITH_VFS_AFSACL=yes
2716     ;;
2717   *)
2718     AC_MSG_RESULT(no)
2719     ;;
2720   esac ],
2721   AC_MSG_RESULT(no)
2724 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2725    default_shared_modules="$default_shared_modules vfs_afsacl"
2727         
2728 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2729     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2732 #################################################
2733 # check for the DFS clear-text auth system
2734 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2735 AC_ARG_WITH(dfs,
2736 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2737 [ case "$withval" in
2738   yes)
2739     AC_MSG_RESULT(yes)
2740     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2741     ;;
2742   *)
2743     AC_MSG_RESULT(no)
2744     ;;
2745   esac ],
2746   AC_MSG_RESULT(no)
2749 ########################################################
2750 # Compile with LDAP support?
2752 with_ldap_support=auto
2753 AC_MSG_CHECKING([for LDAP support])
2755 AC_ARG_WITH(ldap,
2756 [  --with-ldap             LDAP support (default yes)],
2757 [ case "$withval" in
2758     yes|no)
2759         with_ldap_support=$withval
2760         ;;
2761   esac ])
2763 AC_MSG_RESULT($with_ldap_support)
2765 SMBLDAP=""
2766 AC_SUBST(SMBLDAP)
2767 SMBLDAPUTIL=""
2768 AC_SUBST(SMBLDAPUTIL)
2769 if test x"$with_ldap_support" != x"no"; then
2771   ##################################################################
2772   # first test for ldap.h and lber.h
2773   # (ldap.h is required for this test)
2774   AC_CHECK_HEADERS(ldap.h lber.h)
2775   
2776   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2777         if test x"$with_ldap_support" = x"yes"; then
2778          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2779         else
2780          AC_MSG_WARN(ldap.h is needed for LDAP support)
2781         fi
2782         
2783         with_ldap_support=no
2784   fi
2787 if test x"$with_ldap_support" != x"no"; then
2788   ac_save_LIBS=$LIBS
2790   ##################################################################
2791   # we might need the lber lib on some systems. To avoid link errors
2792   # this test must be before the libldap test
2793   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2795   ########################################################
2796   # now see if we can find the ldap libs in standard paths
2797   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2799   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2800   
2801   ########################################################
2802   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2803   # Check found in pam_ldap 145.
2804   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2806   LIBS="$LIBS $LDAP_LIBS"
2807   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2808     AC_TRY_COMPILE([
2809         #include <lber.h>
2810         #include <ldap.h>], 
2811         [ldap_set_rebind_proc(0, 0, 0);], 
2812         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2813         [smb_ldap_cv_ldap_set_rebind_proc=2]
2814     ) 
2815   ])
2816   
2817   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2819   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2820   
2821   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2822     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2823     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
2824     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2825     default_shared_modules="$default_shared_modules";
2826     SMBLDAP="lib/smbldap.o"
2827     SMBLDAPUTIL="lib/smbldap_util.o"
2828     with_ldap_support=yes
2829     AC_MSG_CHECKING(whether LDAP support is used)
2830     AC_MSG_RESULT(yes)
2831   else
2832     if test x"$with_ldap_support" = x"yes"; then
2833         AC_MSG_ERROR(libldap is needed for LDAP support)
2834     else
2835         AC_MSG_WARN(libldap is needed for LDAP support)
2836     fi
2837     
2838     LDAP_LIBS=""
2839     with_ldap_support=no
2840   fi
2841   LIBS=$ac_save_LIBS
2845 #################################################
2846 # active directory support
2848 with_ads_support=auto
2849 AC_MSG_CHECKING([for Active Directory and krb5 support])
2851 AC_ARG_WITH(ads,
2852 [  --with-ads              Active Directory support (default auto)],
2853 [ case "$withval" in
2854     yes|no)
2855         with_ads_support="$withval"
2856         ;;
2857   esac ])
2859 AC_MSG_RESULT($with_ads_support)
2861 FOUND_KRB5=no
2862 KRB5_LIBS=""
2864 if test x"$with_ldap_support" != x"yes"; then
2865     if test x"$with_ads_support" = x"yes"; then
2866         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2867     elif test x"$with_ads_support" != x"no"; then
2868         AC_MSG_WARN(Active Directory Support requires LDAP support)
2869     fi
2870     with_ads_support=no
2873 if test x"$with_ads_support" != x"no"; then
2875   # Do no harm to the values of CFLAGS and LIBS while testing for
2876   # Kerberos support.
2878   if test x$FOUND_KRB5 = x"no"; then
2879     #################################################
2880     # check for location of Kerberos 5 install
2881     AC_MSG_CHECKING(for kerberos 5 install path)
2882     AC_ARG_WITH(krb5,
2883     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2884     [ case "$withval" in
2885       no)
2886         AC_MSG_RESULT(no krb5-path given)
2887         ;;
2888       yes)
2889         AC_MSG_RESULT(/usr)
2890         FOUND_KRB5=yes
2891         ;;
2892       *)
2893         AC_MSG_RESULT($withval)
2894         KRB5_CFLAGS="-I$withval/include"
2895         KRB5_CPPFLAGS="-I$withval/include"
2896         KRB5_LDFLAGS="-L$withval/lib"
2897         FOUND_KRB5=yes
2898         if test -x "$withval/bin/krb5-config"; then
2899                 KRB5CONFIG=$withval/bin/krb5-config
2900         fi
2901         ;;
2902       esac ],
2903       AC_MSG_RESULT(no krb5-path given)
2904     )
2905   fi
2907   #################################################
2908   # check for krb5-config from recent MIT and Heimdal kerberos 5
2909   AC_PATH_PROG(KRB5CONFIG, krb5-config)
2910   AC_MSG_CHECKING(for working krb5-config)
2911   if test -x "$KRB5CONFIG"; then
2912     ac_save_CFLAGS=$CFLAGS
2913     CFLAGS="";export CFLAGS
2914     ac_save_LDFLAGS=$LDFLAGS
2915     LDFLAGS="";export LDFLAGS
2916     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
2917     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
2918     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2919     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
2920     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2921     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2922     FOUND_KRB5=yes
2923     AC_MSG_RESULT(yes)
2924   else
2925     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2926   fi
2928   if test x$FOUND_KRB5 = x"no"; then
2929     #################################################
2930     # see if this box has the SuSE location for the heimdal krb implementation
2931     AC_MSG_CHECKING(for /usr/include/heimdal)
2932     if test -d /usr/include/heimdal; then
2933       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2934           KRB5_CFLAGS="-I/usr/include/heimdal"
2935           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2936           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2937           AC_MSG_RESULT(yes)
2938       else
2939           KRB5_CFLAGS="-I/usr/include/heimdal"
2940           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2941           AC_MSG_RESULT(yes)
2942       fi
2943     else
2944       AC_MSG_RESULT(no)
2945     fi
2946   fi
2948   if test x$FOUND_KRB5 = x"no"; then
2949     #################################################
2950     # see if this box has the RedHat location for kerberos
2951     AC_MSG_CHECKING(for /usr/kerberos)
2952     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2953       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2954       KRB5_CFLAGS="-I/usr/kerberos/include"
2955       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2956       AC_MSG_RESULT(yes)
2957     else
2958       AC_MSG_RESULT(no)
2959     fi
2960   fi
2962   ac_save_CFLAGS=$CFLAGS
2963   ac_save_CPPFLAGS=$CPPFLAGS
2964   ac_save_LDFLAGS=$LDFLAGS
2966   CFLAGS="$KRB5_CFLAGS $CFLAGS"
2967   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
2968   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
2970   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2972   # now check for krb5.h. Some systems have the libraries without the headers!
2973   # note that this check is done here to allow for different kerberos
2974   # include paths
2975   AC_CHECK_HEADERS(krb5.h)
2977   if test x"$ac_cv_header_krb5_h" = x"no"; then
2979     # Give a warning if AD support was not explicitly requested,
2980     # i.e with_ads_support = auto, otherwise die with an error.
2982     if test x"$with_ads_support" = x"yes"; then
2983       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2984     else
2985       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2986     fi
2988     # Turn off AD support and restore CFLAGS and LIBS variables
2990     with_ads_support="no"
2991     
2992     CFLAGS=$ac_save_CFLAGS
2993     CPPFLAGS=$ac_save_CPPFLAGS
2994     LDFLAGS=$ac_save_LDFLAGS
2995   fi
2998 # Now we have determined whether we really want ADS support
3000 if test x"$with_ads_support" != x"no"; then
3001   ac_save_LIBS=$LIBS
3003   # now check for gssapi headers.  This is also done here to allow for
3004   # different kerberos include paths
3005   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3007   ##################################################################
3008   # we might need the k5crypto and com_err libraries on some systems
3009   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3010   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3012   # Heimdal checks.
3013   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3014   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3015   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3017   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3018   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
3019                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3021   ########################################################
3022   # now see if we can find the krb5 libs in standard paths
3023   # or as specified above
3024   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3025   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3027   ########################################################
3028   # now see if we can find the gssapi libs in standard paths
3029   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3030             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3032   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3033   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3034   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3035   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3036   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3037   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3038   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3039   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3040   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3041   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3042   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3043   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3044   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3045   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3046   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3047   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3048   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3049   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3050   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3051   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3052   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3053   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3054   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3055   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3056   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3057   AC_CHECK_FUNC_EXT(decode_krb5_ap_req, $KRB5_LIBS)
3058   AC_CHECK_FUNC_EXT(krb5_free_ap_req, $KRB5_LIBS)
3059   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3060   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3061   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3062   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3063   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3065   LIBS="$KRB5_LIBS $LIBS"
3067   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3068     AC_TRY_COMPILE([
3069         #include <krb5.h>], 
3070         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 
3071         [smb_krb5_verify_checksum=7], 
3072         [smb_krb5_verify_checksum=6], 
3073     ) 
3074   ])
3075   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3077   AC_CACHE_CHECK([for checksum in krb5_checksum],
3078                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3079     AC_TRY_COMPILE([#include <krb5.h>],
3080       [krb5_checksum cksum; cksum.checksum.length = 0;],
3081       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3082       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3084   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3085     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3086                [Whether the krb5_checksum struct has a checksum property])
3087   fi
3089   AC_CACHE_CHECK([for etype in EncryptedData],
3090                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3091     AC_TRY_COMPILE([#include <krb5.h>],
3092       [EncryptedData edata; edata.etype = 0;],
3093       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3094       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3096   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3097     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3098                [Whether the EncryptedData struct has a etype property])
3099   fi
3101   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3102                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3103     AC_TRY_COMPILE([#include <krb5.h>],
3104       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3105       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3106       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3108   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3109     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3110                [Whether the krb5_ap_req struct has a ticket pointer])
3111   fi
3113   AC_CACHE_CHECK([for krb5_crypto type],
3114                 samba_cv_HAVE_KRB5_CRYPTO,[
3115     AC_TRY_COMPILE([#include <krb5.h>],
3116       [krb5_crypto crypto;],
3117       samba_cv_HAVE_KRB5_CRYPTO=yes,
3118       samba_cv_HAVE_KRB5_CRYPTO=no)])
3120   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3121     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3122                [Whether the type krb5_crypto exists])
3123   fi
3125   AC_CACHE_CHECK([for krb5_encrypt_block type],
3126                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3127     AC_TRY_COMPILE([#include <krb5.h>],
3128       [krb5_encrypt_block block;],
3129       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3130       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3132   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3133     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3134                [Whether the type krb5_encrypt_block exists])
3135   fi
3137   AC_CACHE_CHECK([for addrtype in krb5_address],
3138                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3139     AC_TRY_COMPILE([#include <krb5.h>],
3140       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3141       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3142       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3144   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3145     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3146                [Whether the krb5_address struct has a addrtype property])
3147   fi
3149   AC_CACHE_CHECK([for addr_type in krb5_address],
3150                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3151     AC_TRY_COMPILE([#include <krb5.h>],
3152       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3153       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3154       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3156   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3157     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3158               [Whether the krb5_address struct has a addr_type property])
3159   fi
3161   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3162                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3163                  [AC_TRY_COMPILE([#include <krb5.h>],
3164     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3165     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3167   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3168     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3169               [Whether the krb5_ticket struct has a enc_part2 property])
3170   fi
3172   AC_CACHE_CHECK([for keyblock in krb5_creds],
3173                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3174     AC_TRY_COMPILE([#include <krb5.h>],
3175       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3176       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3177       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3179   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3180     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3181               [Whether the krb5_creds struct has a keyblock property])
3182   fi
3184   AC_CACHE_CHECK([for session in krb5_creds],
3185                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3186     AC_TRY_COMPILE([#include <krb5.h>],
3187       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3188       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3189       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3191   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3192     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3193               [Whether the krb5_creds struct has a session property])
3194   fi
3196   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3197                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3198     AC_TRY_COMPILE([#include <krb5.h>],
3199       [krb5_keyblock key; key.keyvalue.data = NULL;],
3200       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3201       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3203   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3204     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3205               [Whether the krb5_keyblock struct has a keyvalue property])
3206   fi
3208   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3209                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3210     AC_TRY_COMPILE([#include <krb5.h>],
3211       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3212       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3213       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3214   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3215                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3216     AC_TRY_COMPILE([#include <krb5.h>],
3217       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3218       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3219       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3220 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3221 # w.r.t. arcfour and windows, so we must not enable it here
3222   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3223           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3224     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3225               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3226   fi
3228   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3229                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3230     AC_TRY_COMPILE([#include <krb5.h>],
3231       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3232       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3233       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3235   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3236     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3237               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3238   fi
3240   AC_CACHE_CHECK([for KV5M_KEYTAB],
3241                  samba_cv_HAVE_KV5M_KEYTAB,[
3242     AC_TRY_COMPILE([#include <krb5.h>],
3243       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3244       samba_cv_HAVE_KV5M_KEYTAB=yes,
3245       samba_cv_HAVE_KV5M_KEYTAB=no)])
3247   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3248       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3249              [Whether the KV5M_KEYTAB option is available])
3250   fi
3252   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3253                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3254     AC_TRY_COMPILE([#include <krb5.h>],
3255       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3256       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3257       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3259   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3260     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3261               [Whether KRB5_KU_OTHER_CKSUM is available])
3262   fi
3263   
3264   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3265                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3266     AC_TRY_COMPILE([#include <krb5.h>],
3267       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3268       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3269       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3271   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3272     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3273               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3274   fi
3276   AC_CACHE_CHECK([for the krb5_princ_component macro],
3277                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3278     AC_TRY_LINK([#include <krb5.h>],
3279       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3280       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3281       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3283   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3284     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3285                [Whether krb5_princ_component is available])
3286   fi
3288   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3289                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3290     AC_TRY_COMPILE([#include <krb5.h>],
3291       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3292       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3293       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3295   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3296     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3297               [Whether krb5_keytab_entry has key member])
3298   fi
3300   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3301                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3302     AC_TRY_COMPILE([#include <krb5.h>],
3303       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3304       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3305       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3307   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3308     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3309               [Whether krb5_keytab_entry has keyblock member])
3310   fi
3312   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3313     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3314     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3315     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3316     AC_MSG_RESULT(yes)
3317   else
3318     if test x"$with_ads_support" = x"yes"; then
3319         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3320     else
3321         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3322     fi
3323     KRB5_LIBS=""
3324     with_ads_support=no 
3325   fi
3327   AC_CACHE_CHECK([for WRFILE: keytab support],
3328                 samba_cv_HAVE_WRFILE_KEYTAB,[
3329     AC_TRY_RUN([
3330 #include<krb5.h>
3331   main()
3332   {
3333     krb5_context context;
3334     krb5_keytab keytab;
3336     krb5_init_context(&context);
3337     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3338   }],
3339   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3340   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3342   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3343       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3344                [Whether the WRFILE:-keytab is supported])
3345   fi
3347   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3348                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3349     AC_TRY_COMPILE([#include <krb5.h>],
3350     [
3351     krb5_context context;
3352     krb5_principal principal;
3353     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3354     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3355     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3357   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3358     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3359               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3360   fi
3362 LIBS="$ac_save_LIBS"
3365 ########################################################
3366 # Compile experimental passdb backends?
3367 # (pdb_xml, pdb_mysql, pdb_pgsql)
3368 AC_MSG_CHECKING(whether to build experimental passdb libraries)
3369 AC_ARG_WITH(expsam,
3370 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
3371 [                          Valid choices include (comma separated list): ]
3372 [                              xml, mysql & pgsql],
3373 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
3374   if test "z$expsam_pdb_modules" = "zyes"; then
3375     expsam_pdb_modules="xml mysql pgsql"
3376   fi
3377   AC_MSG_RESULT($expsam_pdb_modules)
3378   for i in $expsam_pdb_modules
3379   do 
3380     case "$i" in
3381     xml|all|yes)
3382       ## pdb_xml
3383           AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])])
3384       CFLAGS="$CFLAGS $XML_CFLAGS"
3385       ;;
3386     mysql|all|yes)
3387       ## pdb_mysql
3388           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
3389       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
3390       ;;
3391      pgsql|all|yes)
3392       ## pdb_pgsql
3393       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
3394       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
3395       ;;
3396     no)
3397       ;;
3398     *)
3399       echo "Unknown module name \"$i\"!  Exiting..."
3400       exit 1
3401       ;;
3402     esac
3403   done ],
3404   AC_MSG_RESULT(no)
3407 #################################################
3408 # check for automount support
3409 AC_MSG_CHECKING(whether to use automount)
3410 AC_ARG_WITH(automount,
3411 [  --with-automount        Include automount support (default=no)],
3412 [ case "$withval" in
3413   yes)
3414     AC_MSG_RESULT(yes)
3415     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3416     ;;
3417   *)
3418     AC_MSG_RESULT(no)
3419     ;;
3420   esac ],
3421   AC_MSG_RESULT(no)
3424 #################################################
3425 # check for smbmount support
3426 AC_MSG_CHECKING(whether to use smbmount)
3427 AC_ARG_WITH(smbmount,
3428 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3429 [ case "$withval" in
3430   yes)
3431         case "$host_os" in
3432         *linux*)
3433                 AC_MSG_RESULT(yes)
3434                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3435                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3436                 ;;
3437         *)
3438                 AC_MSG_ERROR(not on a linux system!)
3439                 ;;
3440         esac
3441     ;;
3442   *)
3443     AC_MSG_RESULT(no)
3444     ;;
3445   esac ],
3446   AC_MSG_RESULT(no)
3451 #################################################
3452 # check for a PAM clear-text auth, accounts, password and session support
3453 with_pam_for_crypt=no
3454 AC_MSG_CHECKING(whether to use PAM)
3455 AC_ARG_WITH(pam,
3456 [  --with-pam              Include PAM support (default=no)],
3457 [ case "$withval" in
3458   yes)
3459     AC_MSG_RESULT(yes)
3460     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3461        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3462           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3463              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3464           fi
3465        fi
3466     fi
3467     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3468     AUTH_LIBS="$AUTH_LIBS -lpam"
3469     with_pam_for_crypt=yes
3470     ;;
3471   *)
3472     AC_MSG_RESULT(no)
3473     ;;
3474   esac ],
3475   AC_MSG_RESULT(no)
3478 # we can't build a pam module if we don't have pam.
3479 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3481 #################################################
3482 # check for pam_smbpass support
3483 AC_MSG_CHECKING(whether to use pam_smbpass)
3484 AC_ARG_WITH(pam_smbpass,
3485 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3486 [ case "$withval" in
3487   yes)
3488     AC_MSG_RESULT(yes)
3490        # Conditions under which pam_smbpass should not be built.
3492        if test x$PICFLAGS = x; then
3493           AC_MSG_ERROR([No support for PIC code])
3494        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3495           AC_MSG_ERROR([No security/pam_appl.h found])
3496        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3497           AC_MSG_ERROR([No libpam found])
3498        else
3499           AUTH_LIBS="$AUTH_LIBS -lpam"
3500           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3501        fi
3502     ;;
3503   *)
3504     AC_MSG_RESULT(no)
3505     ;;
3506   esac ],
3507   AC_MSG_RESULT(no)
3511 ###############################################
3512 # test for where we get crypt() from
3513 AC_SEARCH_LIBS(crypt, [crypt],
3514   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3515   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3518 ## moved after the check for -lcrypt in order to
3519 ## ensure that the necessary libraries are included
3520 ## check checking for truncated salt.  Wrapped by the
3521 ## $with_pam_for_crypt variable as above   --jerry
3523 if test $with_pam_for_crypt = no; then
3524 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3525 crypt_LIBS="$LIBS"
3526 LIBS="$AUTH_LIBS $LIBS"
3527 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3528         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3529 LIBS="$crypt_LIBS"])
3530 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3531         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3536 ########################################################################################
3538 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3540 ########################################################################################
3542 #################################################
3543 # check for a LDAP password database configuration backwards compatibility
3544 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3545 AC_ARG_WITH(ldapsam,
3546 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3547 [ case "$withval" in
3548   yes)
3549     AC_MSG_RESULT(yes)
3550     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3551     ;;
3552   *)
3553     AC_MSG_RESULT(no)
3554     ;;
3555   esac ],
3556   AC_MSG_RESULT(no)
3559 ########################################################################################
3561 ## END OF TESTS FOR SAM BACKENDS.  
3563 ########################################################################################
3565 #################################################
3566 # check for a NISPLUS_HOME support 
3567 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3568 AC_ARG_WITH(nisplus-home,
3569 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3570 [ case "$withval" in
3571   yes)
3572     AC_MSG_RESULT(yes)
3573     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3574     ;;
3575   *)
3576     AC_MSG_RESULT(no)
3577     ;;
3578   esac ],
3579   AC_MSG_RESULT(no)
3582 #################################################
3583 # check for syslog logging
3584 AC_MSG_CHECKING(whether to use syslog logging)
3585 AC_ARG_WITH(syslog,
3586 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3587 [ case "$withval" in
3588   yes)
3589     AC_MSG_RESULT(yes)
3590     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3591     ;;
3592   *)
3593     AC_MSG_RESULT(no)
3594     ;;
3595   esac ],
3596   AC_MSG_RESULT(no)
3599 #################################################
3600 # check for a shared memory profiling support
3601 AC_MSG_CHECKING(whether to use profiling)
3602 AC_ARG_WITH(profiling-data,
3603 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3604 [ case "$withval" in
3605   yes)
3606     AC_MSG_RESULT(yes)
3607     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3608     ;;
3609   *)
3610     AC_MSG_RESULT(no)
3611     ;;
3612   esac ],
3613   AC_MSG_RESULT(no)
3617 #################################################
3618 # check for experimental disk-quotas support
3620 samba_cv_WITH_QUOTAS=auto
3621 samba_cv_TRY_QUOTAS=no
3622 samba_cv_RUN_QUOTA_TESTS=auto
3623 samba_cv_WITH_SYS_QUOTAS=auto
3624 samba_cv_TRY_SYS_QUOTAS=auto
3625 samba_cv_SYSQUOTA_FOUND=no
3627 AC_MSG_CHECKING(whether to try disk-quotas support)
3628 AC_ARG_WITH(quotas,
3629 [  --with-quotas           Include disk-quota support (default=no)],
3630 [ case "$withval" in
3631   yes)
3632     AC_MSG_RESULT(yes)
3633     samba_cv_WITH_QUOTAS=yes
3634     samba_cv_TRY_QUOTAS=yes
3635     samba_cv_RUN_QUOTA_TESTS=yes
3636     #set sys quotas to auto in this case
3637     samba_cv_TRY_SYS_QUOTAS=auto
3638     ;;
3639   auto)
3640     AC_MSG_RESULT(auto)
3641     samba_cv_WITH_QUOTAS=auto
3642     samba_cv_TRY_QUOTAS=auto
3643     samba_cv_RUN_QUOTA_TESTS=auto
3644     #set sys quotas to auto in this case
3645     samba_cv_TRY_SYS_QUOTAS=auto
3646     ;;
3647   no)
3648     AC_MSG_RESULT(no)
3649     samba_cv_WITH_QUOTAS=no
3650     samba_cv_TRY_QUOTAS=no
3651     samba_cv_RUN_QUOTA_TESTS=no
3652     ;;
3653   *)
3654     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3655     ;;
3656   esac ],
3657   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3660 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3661 AC_ARG_WITH(sys-quotas,
3662 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3663 [ case "$withval" in
3664   yes)
3665     AC_MSG_RESULT(yes)
3666     samba_cv_WITH_SYS_QUOTAS=yes
3667     samba_cv_TRY_SYS_QUOTAS=yes
3668     samba_cv_RUN_QUOTA_TESTS=yes
3669     ;;
3670   auto)
3671     AC_MSG_RESULT(auto)
3672     samba_cv_WITH_SYS_QUOTAS=auto
3673     samba_cv_TRY_SYS_QUOTAS=auto
3674     samba_cv_RUN_QUOTA_TESTS=auto
3675     ;;
3676   no)
3677     AC_MSG_RESULT(no)
3678     samba_cv_WITH_SYS_QUOTAS=no
3679     samba_cv_TRY_SYS_QUOTAS=no
3680     ;;
3681   *)
3682     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3683     ;;
3684   esac ],
3685   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3688 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3689 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3690   case "$host_os" in
3691         *linux*)
3692             AC_MSG_RESULT(yes)
3693             samba_cv_TRY_SYS_QUOTAS=yes
3694             samba_cv_RUN_QUOTA_TESTS=yes
3695             ;;
3696         *)
3697             AC_MSG_RESULT(no)
3698             samba_cv_TRY_SYS_QUOTAS=no
3699             ;;
3700   esac
3703 #############################################
3704 # only check for quota stuff if --with-quotas
3705 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3707 case "$host_os" in
3708         # on linux we didn't need to test we have builtin support
3709         *linux*)
3710             samba_cv_SYSQUOTA_FOUND=yes
3711             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3712             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3713             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
3714             AC_MSG_RESULT(yes)
3716             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3717             samba_cv_found_xfs_header=yes
3718             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
3719             AC_MSG_RESULT(yes)
3720             ;;
3721         *solaris*)
3722             # need to set this define when using static linking (BUG 1473)
3723             CPPFLAGS="$CPPFLAGS -DSUNOS5"
3724             ;;
3725         *)
3726             ;;
3727 esac
3729 # some broken header files need this
3730 AC_CHECK_HEADER(asm/types.h,[
3731             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3732             AC_ADD_INCLUDE(<asm/types.h>)
3733             ])
3735 # For quotas on Veritas VxFS filesystems
3736 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3738 # For sys/quota.h and linux/quota.h
3739 AC_CHECK_HEADERS(sys/quota.h)
3741 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3742 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3743 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3744 AC_TRY_COMPILE([
3745 #include "confdefs.h"
3746 #ifdef HAVE_SYS_TYPES_H
3747 #include <sys/types.h>
3748 #endif
3749 #ifdef HAVE_ASM_TYPES_H
3750 #include <asm/types.h>
3751 #endif
3752 #include <sys/quota.h>
3753 ],[int i = Q_XGETQUOTA;],
3754 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3755 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3756         samba_cv_found_xfs_header=yes
3760 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3761 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3762 AC_TRY_COMPILE([
3763 #include "confdefs.h"
3764 #ifdef HAVE_SYS_QUOTA_H
3765 #include <sys/quota.h>
3766 #endif
3768 struct dqblk D;
3769 D.dqb_fsoftlimit = 0;],
3770 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3771 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3772         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3775 ##################
3776 # look for a working quota system
3778 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3779 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3780 AC_TRY_RUN_STRICT([
3781 #define HAVE_QUOTACTL_4A 1
3782 #define AUTOCONF_TEST 1
3783 #include "confdefs.h"
3784 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3785            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3786 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3787     samba_cv_SYSQUOTA_FOUND=yes;
3788     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3789     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3793 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3794 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3795 AC_TRY_RUN_STRICT([
3796 #define HAVE_QUOTACTL_4B 1
3797 #define AUTOCONF_TEST 1
3798 #include "confdefs.h"
3799 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3800            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3801 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3802     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3803     samba_cv_SYSQUOTA_FOUND=yes;
3804     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3805     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3809 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3810 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3811 AC_TRY_RUN_STRICT([
3812 #define HAVE_QUOTACTL_3 1
3813 #define AUTOCONF_TEST 1
3814 #include "confdefs.h"
3815 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3816            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3817 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3818     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3819     samba_cv_SYSQUOTA_FOUND=yes;
3820     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3821     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3825 #################################################
3826 # check for mntent.h and struct mntent
3827 AC_CHECK_HEADERS(mntent.h)
3828 #################################################
3829 # check for setmntent,getmntent,endmntent
3830 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3832 #################################################
3833 # check for devnm.h and struct mntent
3834 AC_CHECK_HEADERS(devnm.h)
3835 #################################################
3836 # check for devnm
3837 AC_CHECK_FUNCS(devnm)
3839 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3840     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3841         # if --with-sys-quotas=yes then build it 
3842         # you have can use the get/set quota command smb.conf
3843         # options then
3844         samba_cv_SYSQUOTA_FOUND=auto
3845     fi
3846     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3847         # if --with-sys-quotas=yes then build it 
3848         # you have can use the get/set quota command smb.conf
3849         # options then
3850         samba_cv_TRY_SYS_QUOTAS=auto
3851     fi
3854 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3855 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3856 SAVE_CPPFLAGS="$CPPFLAGS"
3857 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3858 AC_TRY_COMPILE([
3859 #include "confdefs.h"
3860 #define NO_PROTO_H 1
3861 #define NO_CONFIG_H 1
3862 #define HAVE_SYS_QUOTAS 1
3863 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3864 #include "${srcdir-.}/lib/sysquotas.c"
3865 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3866 CPPFLAGS="$SAVE_CPPFLAGS"
3868 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3869 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3870     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3871         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3872         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3873         samba_cv_WE_USE_SYS_QUOTAS=yes
3874         AC_MSG_RESULT(yes)
3875     else
3876         AC_MSG_RESULT(no)
3877     fi
3881 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3882 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3883 SAVE_CPPFLAGS="$CPPFLAGS"
3884 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3885 AC_TRY_COMPILE([
3886 #include "confdefs.h"
3887 #define NO_PROTO_H 1
3888 #define NO_CONFIG_H 1
3889 #define HAVE_SYS_QUOTAS 1
3890 #define HAVE_XFS_QUOTAS 1
3891 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3892 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3893 CPPFLAGS="$SAVE_CPPFLAGS"
3895 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3896     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3897         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3898     fi
3902 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3903 SAVE_CPPFLAGS="$CPPFLAGS"
3904 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch -I${srcdir-.}/smbwrapper"
3905 AC_TRY_COMPILE([
3906 #include "confdefs.h"
3907 #define NO_PROTO_H 1
3908 #define NO_CONFIG_H 1
3909 #include "${srcdir-.}/smbd/quotas.c"
3910 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3911 CPPFLAGS="$SAVE_CPPFLAGS"
3913 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3914 AC_MSG_CHECKING(whether to use the old quota support)
3915     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3916       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3917         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3918         AC_MSG_RESULT(yes)
3919       else
3920         AC_MSG_RESULT(no)
3921       fi
3922     else
3923       AC_MSG_RESULT(no)
3924     fi
3927 ####################
3928 # End of quota check samba_cv_RUN_QUOTA_TESTS
3931 #################################################
3932 # check for experimental utmp accounting
3934 AC_MSG_CHECKING(whether to support utmp accounting)
3935 WITH_UTMP=yes
3936 AC_ARG_WITH(utmp,
3937 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3938 [ case "$withval" in
3939   no)
3940                 WITH_UTMP=no
3941                 ;;
3942   *)
3943                 WITH_UTMP=yes
3944                 ;;
3945   esac ],
3948 # utmp requires utmp.h
3949 # Note similar check earlier, when checking utmp details.
3951 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3952         utmp_no_reason=", no utmp.h on $host_os"
3953         WITH_UTMP=no
3956 # Display test results
3958 if test x"$WITH_UTMP" = x"yes"; then
3959         AC_MSG_RESULT(yes)
3960         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3961 else
3962         AC_MSG_RESULT(no$utmp_no_reason)
3965 #################################################
3966 # should we build libsmbclient?
3968 INSTALLCLIENTCMD_SH=:
3969 INSTALLCLIENTCMD_A=:
3971 if test $BLDSHARED = true; then
3972         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3974 if test $enable_static = yes; then
3975         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3978 INSTALLCLIENT=
3979 LIBSMBCLIENT_SHARED=
3980 LIBSMBCLIENT=
3981 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3982 AC_ARG_WITH(libsmbclient,
3983 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3984 [ case "$withval" in
3985   no) 
3986      AC_MSG_RESULT(no)
3987      ;;
3988   *)
3989      if test $BLDSHARED = true; then
3990         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3991         LIBSMBCLIENT=libsmbclient
3992         AC_MSG_RESULT(yes)
3993      else
3994         enable_static=yes
3995         AC_MSG_RESULT(no shared library support -- will supply static library)
3996      fi
3997      if test $enable_static = yes; then
3998         LIBSMBCLIENT=libsmbclient
3999      fi
4000      INSTALLCLIENT=installclientlib
4001      ;;
4002   esac ],
4004 # if unspecified, default is to built it iff possible.
4005   if test $BLDSHARED = true; then
4006      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4007      LIBSMBCLIENT=libsmbclient
4008      AC_MSG_RESULT(yes)
4009    else
4010      enable_static=yes
4011      AC_MSG_RESULT(no shared library support -- will supply static library)
4012    fi
4013    if test $enable_static = yes; then
4014      LIBSMBCLIENT=libsmbclient
4015   fi]
4016   INSTALLCLIENT=installclientlib
4019 INSTALLCLIENT=
4020 LIBSMBSHAREMODES_SHARED=
4021 LIBSMBSHAREMODES=
4022 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4023 AC_ARG_WITH(libsmbsharemodes,
4024 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4025 [ case "$withval" in
4026   no)
4027      AC_MSG_RESULT(no)
4028      ;;
4029   *)
4030      if test $BLDSHARED = true; then
4031         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4032         LIBSMBSHAREMODES=libsmbsharemodes
4033         AC_MSG_RESULT(yes)
4034      else
4035         enable_static=yes
4036         AC_MSG_RESULT(no shared library support -- will supply static library)
4037      fi
4038      if test $enable_static = yes; then
4039         LIBSMBSHAREMODES=libsmbsharemodes
4040      fi
4041      INSTALLCLIENT=installclientlib
4042      ;;
4043   esac ],
4045 # if unspecified, default is to built it iff possible.
4046   if test $BLDSHARED = true; then
4047      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4048      LIBSMBSHAREMODES=libsmbsharemodes
4049      AC_MSG_RESULT(yes)
4050    else
4051      enable_static=yes
4052      AC_MSG_RESULT(no shared library support -- will supply static library)
4053    fi
4054    if test $enable_static = yes; then
4055      LIBSMBSHAREMODES=libsmbsharemodes
4056   fi]
4057   INSTALLCLIENT=installclientlib
4060 #################################################
4061 # these tests are taken from the GNU fileutils package
4062 AC_CHECKING(how to get filesystem space usage)
4063 space=no
4065 # Test for statvfs64.
4066 if test $space = no; then
4067   # SVR4
4068   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4069   [AC_TRY_RUN([
4070 #if defined(HAVE_UNISTD_H)
4071 #include <unistd.h>
4072 #endif
4073 #include <sys/types.h>
4074 #include <sys/statvfs.h>
4075   main ()
4076   {
4077     struct statvfs64 fsd;
4078     exit (statvfs64 (".", &fsd));
4079   }],
4080   fu_cv_sys_stat_statvfs64=yes,
4081   fu_cv_sys_stat_statvfs64=no,
4082   fu_cv_sys_stat_statvfs64=cross)])
4083   if test $fu_cv_sys_stat_statvfs64 = yes; then
4084     space=yes
4085     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4086   fi
4089 # Perform only the link test since it seems there are no variants of the
4090 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4091 # because that got a false positive on SCO OSR5.  Adding the declaration
4092 # of a `struct statvfs' causes this test to fail (as it should) on such
4093 # systems.  That system is reported to work fine with STAT_STATFS4 which
4094 # is what it gets when this test fails.
4095 if test $space = no; then
4096   # SVR4
4097   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4098                  [AC_TRY_LINK([#include <sys/types.h>
4099 #include <sys/statvfs.h>],
4100                               [struct statvfs fsd; statvfs (0, &fsd);],
4101                               fu_cv_sys_stat_statvfs=yes,
4102                               fu_cv_sys_stat_statvfs=no)])
4103   if test $fu_cv_sys_stat_statvfs = yes; then
4104     space=yes
4105     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4106   fi
4109 if test $space = no; then
4110   # DEC Alpha running OSF/1
4111   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4112   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4113   [AC_TRY_RUN([
4114 #include <sys/param.h>
4115 #include <sys/types.h>
4116 #include <sys/mount.h>
4117   main ()
4118   {
4119     struct statfs fsd;
4120     fsd.f_fsize = 0;
4121     exit (statfs (".", &fsd, sizeof (struct statfs)));
4122   }],
4123   fu_cv_sys_stat_statfs3_osf1=yes,
4124   fu_cv_sys_stat_statfs3_osf1=no,
4125   fu_cv_sys_stat_statfs3_osf1=no)])
4126   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4127   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4128     space=yes
4129     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4130   fi
4133 if test $space = no; then
4134 # AIX
4135   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4136 member (AIX, 4.3BSD)])
4137   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4138   [AC_TRY_RUN([
4139 #ifdef HAVE_SYS_PARAM_H
4140 #include <sys/param.h>
4141 #endif
4142 #ifdef HAVE_SYS_MOUNT_H
4143 #include <sys/mount.h>
4144 #endif
4145 #ifdef HAVE_SYS_VFS_H
4146 #include <sys/vfs.h>
4147 #endif
4148   main ()
4149   {
4150   struct statfs fsd;
4151   fsd.f_bsize = 0;
4152   exit (statfs (".", &fsd));
4153   }],
4154   fu_cv_sys_stat_statfs2_bsize=yes,
4155   fu_cv_sys_stat_statfs2_bsize=no,
4156   fu_cv_sys_stat_statfs2_bsize=no)])
4157   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4158   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4159     space=yes
4160     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4161   fi
4164 if test $space = no; then
4165 # SVR3
4166   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4167   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4168   [AC_TRY_RUN([#include <sys/types.h>
4169 #include <sys/statfs.h>
4170   main ()
4171   {
4172   struct statfs fsd;
4173   exit (statfs (".", &fsd, sizeof fsd, 0));
4174   }],
4175     fu_cv_sys_stat_statfs4=yes,
4176     fu_cv_sys_stat_statfs4=no,
4177     fu_cv_sys_stat_statfs4=no)])
4178   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4179   if test $fu_cv_sys_stat_statfs4 = yes; then
4180     space=yes
4181     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4182   fi
4185 if test $space = no; then
4186 # 4.4BSD and NetBSD
4187   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4188 member (4.4BSD and NetBSD)])
4189   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4190   [AC_TRY_RUN([#include <sys/types.h>
4191 #ifdef HAVE_SYS_PARAM_H
4192 #include <sys/param.h>
4193 #endif
4194 #ifdef HAVE_SYS_MOUNT_H
4195 #include <sys/mount.h>
4196 #endif
4197   main ()
4198   {
4199   struct statfs fsd;
4200   fsd.f_fsize = 0;
4201   exit (statfs (".", &fsd));
4202   }],
4203   fu_cv_sys_stat_statfs2_fsize=yes,
4204   fu_cv_sys_stat_statfs2_fsize=no,
4205   fu_cv_sys_stat_statfs2_fsize=no)])
4206   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4207   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4208     space=yes
4209         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4210   fi
4213 if test $space = no; then
4214   # Ultrix
4215   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4216   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4217   [AC_TRY_RUN([#include <sys/types.h>
4218 #ifdef HAVE_SYS_PARAM_H
4219 #include <sys/param.h>
4220 #endif
4221 #ifdef HAVE_SYS_MOUNT_H
4222 #include <sys/mount.h>
4223 #endif
4224 #ifdef HAVE_SYS_FS_TYPES_H
4225 #include <sys/fs_types.h>
4226 #endif
4227   main ()
4228   {
4229   struct fs_data fsd;
4230   /* Ultrix's statfs returns 1 for success,
4231      0 for not mounted, -1 for failure.  */
4232   exit (statfs (".", &fsd) != 1);
4233   }],
4234   fu_cv_sys_stat_fs_data=yes,
4235   fu_cv_sys_stat_fs_data=no,
4236   fu_cv_sys_stat_fs_data=no)])
4237   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4238   if test $fu_cv_sys_stat_fs_data = yes; then
4239     space=yes
4240     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4241   fi
4245 # As a gating factor for large file support, in order to
4246 # use <4GB files we must have the following minimal support
4247 # available.
4248 # long long, and a 64 bit off_t or off64_t.
4249 # If we don't have all of these then disable large
4250 # file support.
4252 AC_MSG_CHECKING([if large file support can be enabled])
4253 AC_TRY_COMPILE([
4254 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4255 #include <sys/types.h>
4256 #else
4257 __COMPILE_ERROR_
4258 #endif
4260 [int i],
4261 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4262 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4263         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4265 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4267 AC_ARG_WITH(spinlocks, 
4268 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4269 if test "x$with_spinlocks" = "xyes"; then
4270     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4272     case "$host_cpu" in
4273         sparc)
4274             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4275             ;;
4277         i386|i486|i586|i686)
4278             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4279             ;;
4281         mips)
4282             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4283             ;;
4285         powerpc)
4286             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4287             ;;
4288     esac
4291 #################################################
4292 # check for ACL support
4294 AC_MSG_CHECKING(whether to support ACLs)
4295 AC_ARG_WITH(acl-support,
4296 [  --with-acl-support      Include ACL support (default=no)],
4297 [ case "$withval" in
4298   yes)
4300         case "$host_os" in
4301         *sysv5*)
4302                 AC_MSG_RESULT(Using UnixWare ACLs)
4303                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4304                 ;;
4305         *solaris*)
4306                 AC_MSG_RESULT(Using solaris ACLs)
4307                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4308                 LIBS="$LIBS -lsec"
4309                 ;;
4310         *hpux*)
4311                 AC_MSG_RESULT(Using HPUX ACLs)
4312                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4313                 ;;
4314         *irix*)
4315                 AC_MSG_RESULT(Using IRIX ACLs)
4316                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4317                 ;;
4318         *aix*)
4319                 AC_MSG_RESULT(Using AIX ACLs)
4320                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4321                 ;;
4322         *osf*)
4323                 AC_MSG_RESULT(Using Tru64 ACLs)
4324                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4325                 ACL_LIBS="$ACL_LIBS -lpacl"
4326                 ;;
4327         *freebsd[[5-9]]*)
4328                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4329                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4330                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4331                 ;;
4332         *linux*)
4333                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4334                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4335                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4336                 acl_LIBS=$LIBS
4337                 LIBS="$LIBS -lacl"
4338                 AC_TRY_LINK([#include <sys/types.h>
4339 #include <sys/acl.h>],
4340 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4341 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4342                 LIBS=$acl_LIBS])
4343                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4344                                 AC_MSG_RESULT(Using posix ACLs)
4345                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4346                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4347                                 acl_LIBS=$LIBS
4348                                 LIBS="$LIBS -lacl"
4349                                 AC_TRY_LINK([#include <sys/types.h>
4350 #include <sys/acl.h>],
4351 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4352 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4353                                 LIBS=$acl_LIBS])
4354                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4355                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4356                                 fi
4357                         fi
4358             ;;
4359          *)
4360                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4361                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4362                 acl_LIBS=$LIBS
4363                 LIBS="$LIBS -lacl"
4364                 AC_TRY_LINK([#include <sys/types.h>
4365 #include <sys/acl.h>],
4366 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4367 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4368                 LIBS=$acl_LIBS])
4369                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4370                                 AC_MSG_RESULT(Using posix ACLs)
4371                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4372                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4373                                 acl_LIBS=$LIBS
4374                                 LIBS="$LIBS -lacl"
4375                                 AC_TRY_LINK([#include <sys/types.h>
4376 #include <sys/acl.h>],
4377 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4378 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4379                                 LIBS=$acl_LIBS])
4380                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4381                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4382                                 fi
4383                         fi
4384             ;;
4385         esac
4386         ;;
4387   *)
4388     AC_MSG_RESULT(no)
4389     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4390     ;;
4391   esac ],
4392   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4393   AC_MSG_RESULT(no)
4396 #################################################
4397 # check for AIO support
4399 AC_MSG_CHECKING(whether to support asynchronous io)
4400 AC_ARG_WITH(aio-support,
4401 [  --with-aio-support      Include asynchronous io support (default=no)],
4402 [ case "$withval" in
4403   yes)
4405         AC_MSG_RESULT(yes)
4406         case "$host_os" in
4407         *)
4408                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$ACL_LIBS -lrt"])
4409                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4410                 aio_LIBS=$LIBS
4411                 LIBS="$LIBS -lrt"
4412                 AC_TRY_LINK([#include <sys/types.h>
4413 #include <aio.h>],
4414 [ struct aiocb a; return aio_read(&a);],
4415 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4416                 LIBS=$aio_LIBS])
4417                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4418                 aio_LIBS=$LIBS
4419                 LIBS="$LIBS -lrt"
4420                 AC_TRY_LINK([#include <sys/types.h>
4421 #include <aio.h>],
4422 [ struct aiocb64 a; return aio_read64(&a);],
4423 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4424                 LIBS=$aio_LIBS])
4425                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4426                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4427                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4428                         LIBS="$LIBS -lrt"
4429                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4430                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4431                         LIBS="$LIBS -lrt"
4432                 fi
4434                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4435                         AC_MSG_CHECKING(for aio_read)
4436                         AC_LINK_IFELSE([#include <aio.h>
4437 int main() { struct aiocb a; return aio_read(&a); }],
4438 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4439 [AC_MSG_RESULT(no)])
4441                         AC_MSG_CHECKING(for aio_write)
4442                         AC_LINK_IFELSE([#include <aio.h>
4443 int main() { struct aiocb a; return aio_write(&a); }],
4444 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4445 [AC_MSG_RESULT(no)])
4447                         AC_MSG_CHECKING(for aio_fsync)
4448                         AC_LINK_IFELSE([#include <aio.h>
4449 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4450 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4451 [AC_MSG_RESULT(no)])
4453                         AC_MSG_CHECKING(for aio_return)
4454                         AC_LINK_IFELSE([#include <aio.h>
4455 int main() { struct aiocb a; return aio_return(&a); }],
4456 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4457 [AC_MSG_RESULT(no)])
4459                         AC_MSG_CHECKING(for aio_error)
4460                         AC_LINK_IFELSE([#include <aio.h>
4461 int main() { struct aiocb a; return aio_error(&a); }],
4462 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4463 [AC_MSG_RESULT(no)])
4465                         AC_MSG_CHECKING(for aio_cancel)
4466                         AC_LINK_IFELSE([#include <aio.h>
4467 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4468 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4469 [AC_MSG_RESULT(no)])
4471                         AC_MSG_CHECKING(for aio_suspend)
4472                         AC_LINK_IFELSE([#include <aio.h>
4473 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
4474 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
4475 [AC_MSG_RESULT(no)])
4476                 fi
4478                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4479                         AC_MSG_CHECKING(for aio_read64)
4480                         AC_LINK_IFELSE([#include <aio.h>
4481 int main() { struct aiocb a; return aio_read64(&a); }],
4482 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
4483 [AC_MSG_RESULT(no)])
4485                         AC_MSG_CHECKING(for aio_write64)
4486                         AC_LINK_IFELSE([#include <aio.h>
4487 int main() { struct aiocb a; return aio_write64(&a); }],
4488 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
4489 [AC_MSG_RESULT(no)])
4491                         AC_MSG_CHECKING(for aio_fsync64)
4492                         AC_LINK_IFELSE([#include <aio.h>
4493 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
4494 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
4495 [AC_MSG_RESULT(no)])
4497                         AC_MSG_CHECKING(for aio_return64)
4498                         AC_LINK_IFELSE([#include <aio.h>
4499 int main() { struct aiocb a; return aio_return64(&a); }],
4500 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
4501 [AC_MSG_RESULT(no)])
4503                         AC_MSG_CHECKING(for aio_error64)
4504                         AC_LINK_IFELSE([#include <aio.h>
4505 int main() { struct aiocb a; return aio_error64(&a); }],
4506 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
4507 [AC_MSG_RESULT(no)])
4509                         AC_MSG_CHECKING(for aio_cancel64)
4510                         AC_LINK_IFELSE([#include <aio.h>
4511 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
4512 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
4513 [AC_MSG_RESULT(no)])
4515                         AC_MSG_CHECKING(for aio_suspend64)
4516                         AC_LINK_IFELSE([#include <aio.h>
4517 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
4518 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
4519 [AC_MSG_RESULT(no)])
4520                 fi
4521             ;;
4522         esac
4523         ;;
4524   *)
4525     AC_MSG_RESULT(no)
4526     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
4527     ;;
4528   esac ],
4529   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
4530   AC_MSG_RESULT(no)
4533 #################################################
4534 # check for sendfile support
4536 with_sendfile_support=yes
4537 AC_MSG_CHECKING(whether to check to support sendfile)
4538 AC_ARG_WITH(sendfile-support,
4539 [  --with-sendfile-support Check for sendfile support (default=yes)],
4540 [ case "$withval" in
4541   yes)
4543         AC_MSG_RESULT(yes);
4545         case "$host_os" in
4546         *linux*)
4547                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4548                 AC_TRY_LINK([#include <sys/sendfile.h>],
4550 int tofd, fromfd;
4551 off64_t offset;
4552 size_t total;
4553 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4555 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4557                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4558                 AC_TRY_LINK([#include <sys/sendfile.h>],
4560 int tofd, fromfd;
4561 off_t offset;
4562 size_t total;
4563 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4565 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4567 # Try and cope with broken Linux sendfile....
4568                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4569                 AC_TRY_LINK([\
4570 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4571 #undef _FILE_OFFSET_BITS
4572 #endif
4573 #include <sys/sendfile.h>],
4575 int tofd, fromfd;
4576 off_t offset;
4577 size_t total;
4578 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4580 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4582         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4583                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4584                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4585                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4586         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4587                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4588                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4589                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4590         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4591                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4592                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4593         else
4594                 AC_MSG_RESULT(no);
4595         fi
4597         ;;
4598         *freebsd* | *dragonfly* )
4599                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4600                 AC_TRY_LINK([\
4601 #include <sys/types.h>
4602 #include <unistd.h>
4603 #include <sys/socket.h>
4604 #include <sys/uio.h>],
4606         int fromfd, tofd, ret, total=0;
4607         off_t offset, nwritten;
4608         struct sf_hdtr hdr;
4609         struct iovec hdtrl;
4610         hdr.headers = &hdtrl;
4611         hdr.hdr_cnt = 1;
4612         hdr.trailers = NULL;
4613         hdr.trl_cnt = 0;
4614         hdtrl.iov_base = NULL;
4615         hdtrl.iov_len = 0;
4616         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4618 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4620         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4621                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4622                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4623                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4624         else
4625                 AC_MSG_RESULT(no);
4626         fi
4627         ;;
4629         *hpux*)
4630                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4631                 AC_TRY_LINK([\
4632 #include <sys/socket.h>
4633 #include <sys/uio.h>],
4635         int fromfd, tofd;
4636         size_t total=0;
4637         struct iovec hdtrl[2];
4638         ssize_t nwritten;
4639         off64_t offset;
4641         hdtrl[0].iov_base = 0;
4642         hdtrl[0].iov_len = 0;
4644         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4646 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4647         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4648                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4649                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4650                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4651         else
4652                 AC_MSG_RESULT(no);
4653         fi
4655                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4656                 AC_TRY_LINK([\
4657 #include <sys/socket.h>
4658 #include <sys/uio.h>],
4660         int fromfd, tofd;
4661         size_t total=0;
4662         struct iovec hdtrl[2];
4663         ssize_t nwritten;
4664         off_t offset;
4666         hdtrl[0].iov_base = 0;
4667         hdtrl[0].iov_len = 0;
4669         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4671 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4672         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4673                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4674                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4675                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4676         else
4677                 AC_MSG_RESULT(no);
4678         fi
4679         ;;
4681         *solaris*)
4682                 AC_CHECK_LIB(sendfile,sendfilev)
4683                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4684                 AC_TRY_LINK([\
4685 #include <sys/sendfile.h>],
4687         int sfvcnt;
4688         size_t xferred;
4689         struct sendfilevec vec[2];
4690         ssize_t nwritten;
4691         int tofd;
4693         sfvcnt = 2;
4695         vec[0].sfv_fd = SFV_FD_SELF;
4696         vec[0].sfv_flag = 0;
4697         vec[0].sfv_off = 0;
4698         vec[0].sfv_len = 0;
4700         vec[1].sfv_fd = 0;
4701         vec[1].sfv_flag = 0;
4702         vec[1].sfv_off = 0;
4703         vec[1].sfv_len = 0;
4704         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4706 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4708         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4709                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4710                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4711                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4712         else
4713                 AC_MSG_RESULT(no);
4714         fi
4716                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4717                 AC_TRY_LINK([\
4718 #include <sys/sendfile.h>],
4720         int sfvcnt;
4721         size_t xferred;
4722         struct sendfilevec vec[2];
4723         ssize_t nwritten;
4724         int tofd;
4726         sfvcnt = 2;
4728         vec[0].sfv_fd = SFV_FD_SELF;
4729         vec[0].sfv_flag = 0;
4730         vec[0].sfv_off = 0;
4731         vec[0].sfv_len = 0;
4733         vec[1].sfv_fd = 0;
4734         vec[1].sfv_flag = 0;
4735         vec[1].sfv_off = 0;
4736         vec[1].sfv_len = 0;
4737         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4739 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4741         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4742                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4743                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4744                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4745         else
4746                 AC_MSG_RESULT(no);
4747         fi
4748         ;;
4749         *aix*)
4750                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
4751                 AC_TRY_LINK([\
4752 #include <sys/socket.h>],
4754         int fromfd, tofd;
4755         size_t total=0;
4756         struct sf_parms hdtrl;
4757         ssize_t nwritten;
4758         off64_t offset;
4760         hdtrl.header_data = 0;
4761         hdtrl.header_length = 0;
4762         hdtrl.file_descriptor = fromfd;
4763         hdtrl.file_offset = 0;
4764         hdtrl.file_bytes = 0;
4765         hdtrl.trailer_data = 0;
4766         hdtrl.trailer_length = 0;
4768         nwritten = send_file(&tofd, &hdtrl, 0);
4770 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4771         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4772                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4773                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
4774                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4775         else
4776                 AC_MSG_RESULT(no);
4777         fi
4778         ;;
4779         *)
4780         ;;
4781         esac
4782         ;;
4783   *)
4784     AC_MSG_RESULT(no)
4785     ;;
4786   esac ],
4787   AC_MSG_RESULT(yes)
4791 #################################################
4792 # Check whether winbind is supported on this platform.  If so we need to
4793 # build and install client programs, sbin programs and shared libraries
4795 AC_MSG_CHECKING(whether to build winbind)
4797 # Initially, the value of $host_os decides whether winbind is supported
4799 HAVE_WINBIND=yes
4801 # Define the winbind shared library name and any specific linker flags
4802 # it needs to be built with.
4804 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4805 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4806 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4808 case "$host_os" in
4809         *linux*)
4810                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4811                 ;;
4812         *freebsd[[5-9]]*)
4813                 # FreeBSD winbind client is implemented as a wrapper around
4814                 # the Linux version.
4815                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4816                     nsswitch/winbind_nss_linux.o"
4817                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4818                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4819                 ;;
4820         *irix*)
4821                 # IRIX has differently named shared libraries
4822                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4823                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4824                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4825                 ;;
4826         *solaris*)
4827                 # Solaris winbind client is implemented as a wrapper around
4828                 # the Linux version.
4829                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4830                     nsswitch/winbind_nss_linux.o"
4831                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4832                 ;;
4833         *hpux11*)
4834                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4835                 ;;
4836         *aix*)
4837                 # AIX has even differently named shared libraries.  No
4838                 # WINS support has been implemented yet.
4839                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4840                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4841                 WINBIND_NSS="nsswitch/WINBIND"
4842                 WINBIND_WINS_NSS=""
4843                 ;;
4844         *)
4845                 HAVE_WINBIND=no
4846                 winbind_no_reason=", unsupported on $host_os"
4847                 ;;
4848 esac
4850 AC_SUBST(WINBIND_NSS)
4851 AC_SUBST(WINBIND_WINS_NSS)
4852 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4853 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4854 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4856 # Check the setting of --with-winbind
4858 AC_ARG_WITH(winbind,
4859 [  --with-winbind          Build winbind (default, if supported by OS)],
4861   case "$withval" in
4862         yes)
4863                 HAVE_WINBIND=yes
4864                 ;;
4865         no)
4866                 HAVE_WINBIND=no
4867                 winbind_reason=""
4868                 ;;
4869   esac ],
4872 # We need unix domain sockets for winbind
4874 if test x"$HAVE_WINBIND" = x"yes"; then
4875         if test x"$samba_cv_unixsocket" = x"no"; then
4876                 winbind_no_reason=", no unix domain socket support on $host_os"
4877                 HAVE_WINBIND=no
4878         fi
4881 # Display test results
4883 if test x"$HAVE_WINBIND" = x"yes"; then
4884         AC_MSG_RESULT(yes)
4885         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4887         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4888         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4889         if test $BLDSHARED = true; then
4890                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4892                 if test x"$with_pam" = x"yes"; then
4893                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4894                 fi
4895         fi
4896 else
4897         AC_MSG_RESULT(no$winbind_no_reason)
4900 # Solaris 10 does have new member in nss_XbyY_key
4901 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
4902                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
4903                 [#include <nss_dbdefs.h>])
4905 # Solaris has some extra fields in struct passwd that need to be
4906 # initialised otherwise nscd crashes.  
4908 AC_CHECK_MEMBER(struct passwd.pw_comment,
4909                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4910                 [#include <pwd.h>])
4912 AC_CHECK_MEMBER(struct passwd.pw_age,
4913                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4914                 [#include <pwd.h>])
4916 # AIX 4.3.x and 5.1 do not have as many members in
4917 # struct secmethod_table as AIX 5.2
4918 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
4919        [#include <usersec.h>])
4920 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
4921        [#include <usersec.h>])
4924 #################################################
4925 # Check to see if we should use the included popt 
4927 AC_ARG_WITH(included-popt,
4928 [  --with-included-popt    use bundled popt library, not from system],
4930   case "$withval" in
4931         yes)
4932                 INCLUDED_POPT=yes
4933                 ;;
4934         no)
4935                 INCLUDED_POPT=no
4936                 ;;
4937   esac ],
4939 if test x"$INCLUDED_POPT" != x"yes"; then
4940     AC_CHECK_LIB(popt, poptGetContext,
4941                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4944 AC_MSG_CHECKING(whether to use included popt)
4945 if test x"$INCLUDED_POPT" = x"yes"; then
4946     AC_MSG_RESULT(yes)
4947     BUILD_POPT='$(POPT_OBJS)'
4948         POPTLIBS='$(POPT_OBJS)'
4949     FLAGS1="-I$srcdir/popt"
4950 else
4951     AC_MSG_RESULT(no)
4952         BUILD_POPT=""
4953     POPTLIBS="-lpopt"
4955 AC_SUBST(BUILD_POPT)
4956 AC_SUBST(POPTLIBS)
4957 AC_SUBST(FLAGS1)
4959 #################################################
4960 # Check if the user wants Python
4962 # At the moment, you can use this to set which Python binary to link
4963 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4964 # though they can coexist in different directories.)  In the future
4965 # this might make the Python stuff be built by default.
4967 # Defaulting python breaks the clean target if python isn't installed
4969 PYTHON=
4971 AC_ARG_WITH(python,
4972 [  --with-python=PYTHONNAME  build Python libraries],
4973 [ case "${withval-python}" in
4974   yes)
4975         PYTHON=python
4976         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4977         ;;
4978   no)
4979         PYTHON=
4980         ;;
4981   *)
4982         PYTHON=${withval-python}
4983         ;;
4984   esac ])
4985 AC_SUBST(PYTHON)
4987 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
4989         eval MODULE_DEFAULT_$i=STATIC
4990 done
4992 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
4994         dnl Fall back to static if we cannot build shared libraries
4995         eval MODULE_DEFAULT_$i=STATIC
4997         if test $BLDSHARED = true; then
4998                 eval MODULE_DEFAULT_$i=SHARED
4999         fi
5000 done
5002 dnl Always built these modules static
5003 MODULE_pdb_guest=STATIC
5004 MODULE_rpc_spoolss=STATIC
5005 MODULE_rpc_srv=STATIC
5006 MODULE_idmap_tdb=STATIC
5008 AC_ARG_WITH(static-modules,
5009 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
5010 [ if test $withval; then
5011         for i in `echo $withval | sed -e 's/,/ /g'`
5012         do
5013                 eval MODULE_$i=STATIC
5014         done
5015 fi ])
5017 AC_ARG_WITH(shared-modules,
5018 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
5019 [ if test $withval; then
5020         for i in `echo $withval | sed -e 's/,/ /g'`
5021         do
5022                         eval MODULE_$i=SHARED
5023         done
5024 fi ])
5026 ###########################################################################
5027 ## contributed pdb_modules
5029 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
5030                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
5031 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
5032                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
5033 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
5034                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
5036 ## end of contributed pdb_modules
5037 ###########################################################################
5039 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
5040                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5041 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5042 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5043 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
5044 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5047 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5048 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5049 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5050 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5051 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
5052 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
5053 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5054 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5055 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
5056 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5057 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
5058 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5059 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
5060 SMB_SUBSYSTEM(RPC,smbd/server.o)
5062 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
5063 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
5064 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/idmap_rid.$SHLIBEXT", IDMAP)
5065 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/idmap_ad.$SHLIBEXT", IDMAP)
5066 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
5068 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5069 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5070 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5071 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5072 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5074 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
5075 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5076 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5077 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5078 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5079 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5080 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5081 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5082 SMB_SUBSYSTEM(AUTH,auth/auth.o)
5084 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
5085 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
5086 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
5087 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
5088 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
5089 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
5090 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
5091 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
5092 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
5093 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
5094 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
5095 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
5096 SMB_MODULE(vfs_catia, \$(VFS_AFSACL_OBJ), "bin/catia.$SHLIBEXT", VFS)
5097 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
5099 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5101 #################################################
5102 # do extra things if we are running insure
5104 if test "${ac_cv_prog_CC}" = "insure"; then
5105         CPPFLAGS="$CPPFLAGS -D__INSURE__"
5108 #################################################
5109 # Display summary of libraries detected
5111 AC_MSG_RESULT([Using libraries:])
5112 AC_MSG_RESULT([    LIBS = $LIBS])
5113 if test x"$with_ads_support" != x"no"; then
5114    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
5116 if test x"$with_ldap_support" != x"no"; then
5117    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
5119 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
5121 #################################################
5122 # final configure stuff
5124 AC_MSG_CHECKING([configure summary])
5125 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
5126            AC_MSG_RESULT(yes),
5127            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5128            AC_MSG_WARN([cannot run when cross-compiling]))
5130 builddir=`pwd`
5131 AC_SUBST(builddir)
5133 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5134 LIB_REMOVE_USR_LIB(LDFLAGS)
5135 LIB_REMOVE_USR_LIB(LIBS)
5137 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5138 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5139 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5141 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
5143 #################################################
5144 # Print very concise instructions on building/use
5145 if test "x$enable_dmalloc" = xyes
5146 then
5147         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5148         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])