r10226: here we go again. have to implement another pipe to get the MMC service...
[Samba.git] / source / configure.in
blobd7f6f2e565db6c788dd3a4ec3e275871fe2465a2
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 rpc_unixinfo 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_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437"
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 ############################################
867 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
868 AC_SEARCH_LIBS(dlopen, [dl])
869 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
871 ############################################
872 # check if the compiler can do immediate structures
873 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
874     AC_TRY_COMPILE([
875 #include <stdio.h>],
877    typedef struct {unsigned x;} FOOBAR;
878    #define X_FOOBAR(x) ((FOOBAR) { x })
879    #define FOO_ONE X_FOOBAR(1)
880    FOOBAR f = FOO_ONE;   
881    static struct {
882         FOOBAR y; 
883         } f2[] = {
884                 {FOO_ONE}
885         };   
887         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
888 if test x"$samba_cv_immediate_structures" = x"yes"; then
889    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
892 ############################################
893 # check if the compiler can do immediate structures
894 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
895     AC_TRY_LINK([
896 #include <stdio.h>],
898                 if (0) {
899                    this_function_does_not_exist();
900                 } else {
901                   return 1;
902                 }
905         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
906 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
907    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
910 ############################################
911 # check for unix domain sockets
912 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
913     AC_TRY_COMPILE([
914 #include <sys/types.h>
915 #include <stdlib.h>
916 #include <stddef.h>
917 #include <sys/socket.h>
918 #include <sys/un.h>],
920   struct sockaddr_un sunaddr; 
921   sunaddr.sun_family = AF_UNIX;
923         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
924 if test x"$samba_cv_unixsocket" = x"yes"; then
925    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
929 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
930     AC_TRY_COMPILE([
931 #include <sys/types.h>
932 #if STDC_HEADERS
933 #include <stdlib.h>
934 #include <stddef.h>
935 #endif
936 #include <sys/socket.h>],[socklen_t i = 0],
937         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
938 if test x"$samba_cv_socklen_t" = x"yes"; then
939    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
942 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
943     AC_TRY_COMPILE([
944 #include <sys/types.h>
945 #if STDC_HEADERS
946 #include <stdlib.h>
947 #include <stddef.h>
948 #endif
949 #include <signal.h>],[sig_atomic_t i = 0],
950         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
951 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
952    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
955 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
956     AC_TRY_COMPILE([
957 #include <sys/types.h>
958 #if STDC_HEADERS
959 #include <stdlib.h>
960 #include <stddef.h>
961 #endif
962 #if TIME_WITH_SYS_TIME
963 # include <sys/time.h>
964 # include <time.h>
965 #else
966 # if HAVE_SYS_TIME_H
967 #  include <sys/time.h>
968 # else
969 #  include <time.h>
970 # endif
971 #endif
972 #if HAVE_AIO_H
973 #include <aio.h>
974 #endif
975 ],[struct timespec ts;],
976         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
977 if test x"$samba_cv_struct_timespec" = x"yes"; then
978    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
981 # stupid headers have the functions but no declaration. grrrr.
982 AC_HAVE_DECL(errno, [#include <errno.h>])
983 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
984 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
985 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
986 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
987 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
988 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
990 # and glibc has setresuid under linux but the function does
991 # nothing until kernel 2.1.44! very dumb.
992 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
993     AC_TRY_RUN([#include <errno.h>
994 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
995         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
996 if test x"$samba_cv_have_setresuid" = x"yes"; then
997     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1000 # Do the same check for setresguid...
1002 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1003     AC_TRY_RUN([#include <unistd.h>
1004 #include <errno.h>
1005 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1006         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1007 if test x"$samba_cv_have_setresgid" = x"yes"; then
1008     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1011 AC_FUNC_MEMCMP
1013 ###############################################
1014 # Readline included by default unless explicitly asked not to
1015 test "${with_readline+set}" != "set" && with_readline=yes
1017 # test for where we get readline() from
1018 AC_MSG_CHECKING(whether to use readline)
1019 AC_ARG_WITH(readline,
1020 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1021 [  case "$with_readline" in
1022   yes)
1023     AC_MSG_RESULT(yes)
1025     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1026     AC_CHECK_HEADERS(readline/history.h)
1028     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1029       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1030        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1031       done
1032       AC_CHECK_LIB(readline, rl_callback_handler_install,
1033        [TERMLIBS="-lreadline $TERMLIBS"
1034        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1035        break], [TERMLIBS=], $TERMLIBS)])
1036     ;;
1037   no)
1038     AC_MSG_RESULT(no)
1039     ;;
1040   *)
1041     AC_MSG_RESULT(yes)
1043     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1044     # alternate readline path
1045     _ldflags=${LDFLAGS}
1046     _cppflags=${CPPFLAGS}
1048     # Add additional search path
1049     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1050     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1052     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1053     AC_CHECK_HEADERS(readline/history.h)
1055     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1056       for termlib in ncurses curses termcap terminfo termlib; do
1057        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1058       done
1059       AC_CHECK_LIB(readline, rl_callback_handler_install,
1060        [TERMLDFLAGS="-L$with_readline/lib"
1061        TERMCPPFLAGS="-I$with_readline/include"
1062        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1063        TERMLIBS="-lreadline $TERMLIBS"
1064        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1065        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1067     LDFLAGS=$_ldflags
1068     ;;
1069   esac],
1070   AC_MSG_RESULT(no)
1072 AC_SUBST(TERMLIBS)
1073 AC_SUBST(TERMLDFLAGS)
1075 # The readline API changed slightly from readline3 to readline4, so
1076 # code will generate warnings on one of them unless we have a few
1077 # special cases.
1078 AC_CHECK_LIB(readline, rl_completion_matches,
1079              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1080                         [Do we have rl_completion_matches?])],
1081              [],
1082              [$TERMLIBS])
1084 # The following test taken from the cvs sources
1085 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1086 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1087 # libsocket.so which has a bad implementation of gethostbyname (it
1088 # only looks in /etc/hosts), so we only look for -lsocket if we need
1089 # it.
1090 AC_CHECK_FUNCS(connect)
1091 if test x"$ac_cv_func_connect" = x"no"; then
1092     case "$LIBS" in
1093     *-lnsl*) ;;
1094     *) AC_CHECK_LIB(nsl_s, printf) ;;
1095     esac
1096     case "$LIBS" in
1097     *-lnsl*) ;;
1098     *) AC_CHECK_LIB(nsl, printf) ;;
1099     esac
1100     case "$LIBS" in
1101     *-lsocket*) ;;
1102     *) AC_CHECK_LIB(socket, connect) ;;
1103     esac
1104     case "$LIBS" in
1105     *-linet*) ;;
1106     *) AC_CHECK_LIB(inet, connect) ;;
1107     esac
1108     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1109     dnl has been cached.
1110     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1111        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1112         # ac_cv_func_connect=yes
1113         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1114         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1115     fi
1118 ###############################################
1119 # test for where we get yp_get_default_domain() from
1120 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1121 AC_CHECK_FUNCS(yp_get_default_domain)
1123 # Check if we have execl, if not we need to compile smbrun.
1124 AC_CHECK_FUNCS(execl)
1125 if test x"$ac_cv_func_execl" = x"no"; then
1126     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1129 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1130 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1131 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1132 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1133 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1134 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1135 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1136 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1137 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1138 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1139 AC_CHECK_FUNCS(syslog vsyslog timegm)
1140 AC_CHECK_FUNCS(setlocale nl_langinfo)
1141 AC_CHECK_FUNCS(nanosleep)
1142 # setbuffer, shmget, shm_open are needed for smbtorture
1143 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1144 AC_CHECK_HEADERS(libexc.h)
1145 AC_CHECK_LIB(exc, trace_back_stack)
1147 # syscall() is needed for smbwrapper.
1148 AC_CHECK_FUNCS(syscall)
1150 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1151 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1152 AC_CHECK_FUNCS(__getcwd _getcwd)
1153 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1154 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1155 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1156 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1157 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1158 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1159 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1160 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1161 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1162 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1163 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1164 AC_CHECK_FUNCS(prctl)
1166 AC_TRY_COMPILE([
1167 #ifdef HAVE_SYS_PRCTL_H
1168 #include <sys/prctl.h>
1169 #endif
1171 [int i; i = prtcl(0); ],
1172 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1177 case "$host_os" in
1178     *linux*)
1179        # glibc <= 2.3.2 has a broken getgrouplist
1180        AC_TRY_RUN([
1181 #include <unistd.h>
1182 #include <sys/utsname.h>
1183 main() {
1184        /* glibc up to 2.3 has a broken getgrouplist */
1185 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1186        int libc_major = __GLIBC__;
1187        int libc_minor = __GLIBC_MINOR__;
1189        if (libc_major < 2)
1190               exit(1);
1191        if ((libc_major == 2) && (libc_minor <= 3))
1192               exit(1);
1193 #endif
1194        exit(0);
1196 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1197        if test x"$linux_getgrouplist_ok" = x"yes"; then
1198           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1199        fi
1200        ;;
1201     *)
1202        AC_CHECK_FUNCS(getgrouplist)
1203        ;;
1204 esac
1207 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1210 if test x$ac_cv_func_stat64 = xno ; then
1211   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1212   AC_TRY_LINK([
1213 #if defined(HAVE_UNISTD_H)
1214 #include <unistd.h>
1215 #endif
1216 #include <sys/stat.h>
1217 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1218   AC_MSG_RESULT([$ac_cv_func_stat64])
1219   if test x$ac_cv_func_stat64 = xyes ; then
1220     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1221   fi
1224 if test x$ac_cv_func_lstat64 = xno ; then
1225   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1226   AC_TRY_LINK([
1227 #if defined(HAVE_UNISTD_H)
1228 #include <unistd.h>
1229 #endif
1230 #include <sys/stat.h>
1231 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1232   AC_MSG_RESULT([$ac_cv_func_lstat64])
1233   if test x$ac_cv_func_lstat64 = xyes ; then
1234     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1235   fi
1238 if test x$ac_cv_func_fstat64 = xno ; then
1239   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1240   AC_TRY_LINK([
1241 #if defined(HAVE_UNISTD_H)
1242 #include <unistd.h>
1243 #endif
1244 #include <sys/stat.h>
1245 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1246   AC_MSG_RESULT([$ac_cv_func_fstat64])
1247   if test x$ac_cv_func_fstat64 = xyes ; then
1248     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1249   fi
1252 #################################################
1253 # Check whether struct stat has timestamps with sub-second resolution.
1254 # At least IRIX and Solaris have these.
1256 # We check that 
1257 #       all of st_mtim, st_atim and st_ctim exist
1258 #       all of the members are in fact of type struct timespec
1260 # There is some conflicting standards weirdness about whether we should use
1261 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1262 # prefer struct timespec.
1264 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1265     [
1266         AC_TRY_COMPILE(
1267             [
1268 #if TIME_WITH_SYS_TIME
1269 # include <sys/time.h>
1270 # include <time.h>
1271 #else
1272 # if HAVE_SYS_TIME_H
1273 #  include <sys/time.h>
1274 # else
1275 #  include <time.h>
1276 # endif
1277 #endif
1278 #ifdef HAVE_SYS_STAT_H
1279 #include <sys/stat.h>
1280 #endif
1281             ],
1282             [
1283                 struct timespec t;
1284                 struct stat s = {0};
1285                 t.tv_sec = s.st_mtim.tv_sec;
1286                 t.tv_nsec = s.st_mtim.tv_nsec;
1287                 t.tv_sec = s.st_ctim.tv_sec;
1288                 t.tv_nsec = s.st_ctim.tv_nsec;
1289                 t.tv_sec = s.st_atim.tv_sec;
1290                 t.tv_nsec = s.st_atim.tv_nsec;
1291             ],
1292             samba_stat_hires=yes, samba_stat_hires=no)
1293     ])
1295 if test x"$samba_stat_hires" = x"yes" ; then
1296     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1297     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1298     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1299     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1300             [whether struct stat has sub-second timestamps])
1303 #####################################
1304 # we might need the resolv library on some systems
1305 AC_CHECK_LIB(resolv, dn_expand)
1308 # Check for the functions putprpwnam, set_auth_parameters,
1309 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1310 # Needed for OSF1 and HPUX.
1313 AC_LIBTESTFUNC(security, putprpwnam)
1314 AC_LIBTESTFUNC(sec, putprpwnam)
1316 AC_LIBTESTFUNC(security, set_auth_parameters)
1317 AC_LIBTESTFUNC(sec, set_auth_parameters)
1319 # UnixWare 7.x has its getspnam in -lgen
1320 AC_LIBTESTFUNC(gen, getspnam)
1322 AC_LIBTESTFUNC(security, getspnam)
1323 AC_LIBTESTFUNC(sec, getspnam)
1325 AC_LIBTESTFUNC(security, bigcrypt)
1326 AC_LIBTESTFUNC(sec, bigcrypt)
1328 AC_LIBTESTFUNC(security, getprpwnam)
1329 AC_LIBTESTFUNC(sec, getprpwnam)
1331 ############################################
1332 # Check if we have libattr
1333 AC_SEARCH_LIBS(getxattr, [attr])
1334 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1335 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1336 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1337 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1338 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1339 # Check if we have extattr
1340 case "$host_os" in
1341   *freebsd4* | *dragonfly* )
1342     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1343     ;;
1344   *)
1345     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1346     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1347     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1348     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1349     ;;
1350 esac
1352 # Assume non-shared by default and override below
1353 BLDSHARED="false"
1355 # these are the defaults, good for lots of systems
1356 HOST_OS="$host_os"
1357 LDSHFLAGS="-shared"
1358 SONAMEFLAG="#"
1359 SHLD="\${CC} \${CFLAGS}"
1360 PICFLAGS=""
1361 PICSUFFIX="po"
1362 SHLIBEXT="so"
1364 if test "$enable_shared" = "yes"; then
1365   # this bit needs to be modified for each OS that is suported by
1366   # smbwrapper. You need to specify how to create a shared library and
1367   # how to compile C code to produce PIC object files
1369   AC_MSG_CHECKING([ability to build shared libraries])
1371   # and these are for particular systems
1372   case "$host_os" in
1373                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1374                         BLDSHARED="true"
1375                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1376                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1377                         else
1378                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1379                         fi
1380                         DYNEXP="-Wl,--export-dynamic"
1381                         PICFLAGS="-fPIC"
1382                         SONAMEFLAG="-Wl,-soname="
1383                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1384                         ;;
1385                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1386                         BLDSHARED="true"
1387                         LDSHFLAGS="-G"
1388                         SONAMEFLAG="-h "
1389                         if test "${GCC}" = "yes"; then
1390                                 PICFLAGS="-fPIC"
1391                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1392                                         DYNEXP="-Wl,-E"
1393                                 fi
1394                         else
1395                                 PICFLAGS="-KPIC"
1396                                 ## ${CFLAGS} added for building 64-bit shared 
1397                                 ## libs using Sun's Compiler
1398                                 LDSHFLAGS="-G \${CFLAGS}"
1399                                 PICSUFFIX="po.o"
1400                         fi
1401                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1402                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1403                         ;;
1404                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1405                         BLDSHARED="true"
1406                         LDSHFLAGS="-G"
1407                         SONAMEFLAG="-Wl,-h,"
1408                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1409                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1410                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1411                         ;;
1412                 *netbsd* | *freebsd* | *dragonfly* )  
1413                         BLDSHARED="true"
1414                         LDSHFLAGS="-shared"
1415                         DYNEXP="-Wl,--export-dynamic"
1416                         SONAMEFLAG="-Wl,-soname,"
1417                         PICFLAGS="-fPIC -DPIC"
1418                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1419                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1420                         ;;
1421                 *openbsd*)  BLDSHARED="true"
1422                         LDSHFLAGS="-shared"
1423                         DYNEXP="-Wl,-Bdynamic"
1424                         SONAMEFLAG="-Wl,-soname,"
1425                         PICFLAGS="-fPIC"
1426                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1427                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1428                         ;;
1429                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1430                         case "$host_os" in
1431                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1432                         ;;
1433                         esac
1434                         BLDSHARED="true"
1435                         LDSHFLAGS="-set_version sgi1.0 -shared"
1436                         SONAMEFLAG="-soname "
1437                         SHLD="\${LD}"
1438                         if test "${GCC}" = "yes"; then
1439                                 PICFLAGS="-fPIC"
1440                         else 
1441                                 PICFLAGS="-KPIC"
1442                         fi
1443                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1444                         ;;
1445                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1446                         BLDSHARED="true"
1447                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1448                         DYNEXP="-Wl,-brtl,-bexpall"
1449                         PICFLAGS="-O2"
1450                         if test "${GCC}" != "yes"; then
1451                                 ## for funky AIX compiler using strncpy()
1452                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1453                         fi
1455                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1456                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1457                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1458                         ;;
1459                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1460                         # Use special PIC flags for the native HP-UX compiler.
1461                         if test $ac_cv_prog_cc_Ae = yes; then
1462                                 BLDSHARED="true"
1463                                 SHLD="cc"
1464                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1465                                 SONAMEFLAG="-Wl,+h "
1466                                 PICFLAGS="+z"
1467                         elif test "${GCC}" = "yes"; then
1468                                 PICFLAGS="-fPIC"
1469                         fi
1470                         if test "$host_cpu" = "ia64"; then
1471                                 SHLIBEXT="so"
1472                                 DYNEXP="-Wl,-E,+b /usr/local/lib/hpux32:/usr/lib/hpux32"
1473                         else
1474                                 SHLIBEXT="sl"
1475                                 DYNEXP="-Wl,-E,+b /usr/local/lib:/usr/lib"
1476                         fi
1477                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1478                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1479                         ;;
1480                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1481                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1482                         ;;
1483                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1484                         BLDSHARED="true"
1485                         LDSHFLAGS="-shared"
1486                         SONAMEFLAG="-Wl,-soname,"
1487                         PICFLAGS="-fPIC"
1488                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1489                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1490                         ;;
1491                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1492                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1493                         ;;
1494                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1495                         BLDSHARED="true"
1496                         LDSHFLAGS="-shared"
1497                         SONAMEFLAG="-Wl,-soname,"
1498                         PICFLAGS="-KPIC"
1499                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1500                         ;;
1501                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1502                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1503                         ;;
1504                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1505                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1506                         ;;
1507                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1508                         case "$host" in
1509                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1510                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1511                                         fi
1512                                         LDSHFLAGS="-G"
1513                                         DYNEXP="-Bexport"
1514                                 ;;
1515                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1516                         esac
1517                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1518                         ;;
1520                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1521                         if [ test "$GCC" != yes ]; then
1522                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1523                         fi
1524                         LDSHFLAGS="-G"
1525                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1526                         ;;
1527                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1528                         BLDSHARED="false"
1529                         LDSHFLAGS=""
1530                         ;;
1532                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1533                         BLDSHARED="true"
1534                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1535                         SHLIBEXT="dylib"
1536                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1537                         ;;
1539                 *)
1540                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1541                         ;;
1542   esac
1543   AC_SUBST(DYNEXP)
1544   AC_MSG_RESULT($BLDSHARED)
1545   AC_MSG_CHECKING([linker flags for shared libraries])
1546   AC_MSG_RESULT([$LDSHFLAGS])
1547   AC_MSG_CHECKING([compiler flags for position-independent code])
1548   AC_MSG_RESULT([$PICFLAGS])
1551 #######################################################
1552 # test whether building a shared library actually works
1553 if test $BLDSHARED = true; then
1554 AC_CACHE_CHECK([whether building shared libraries actually works], 
1555                [ac_cv_shlib_works],[
1556    # try building a trivial shared library
1557    ac_cv_shlib_works=no
1558    # The $SHLD and $LDSHFLAGS variables may contain references to other
1559    # variables so they need to be eval'ed.
1560    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1561         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1562    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1563         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1564    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1566 if test $ac_cv_shlib_works = no; then
1567    BLDSHARED=false
1571 ################
1573 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1574 AC_TRY_RUN([#include <stdio.h>
1575 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1576 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1577 if test x"$samba_cv_have_longlong" = x"yes"; then
1578     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1582 # Check if the compiler supports the LL prefix on long long integers.
1583 # AIX needs this.
1585 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1586     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1587         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1588 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1589    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1592   
1593 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1594 AC_TRY_RUN([#include <stdio.h>
1595 #include <sys/stat.h>
1596 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1597 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1598 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1599     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1602 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1603 AC_TRY_RUN([
1604 #if defined(HAVE_UNISTD_H)
1605 #include <unistd.h>
1606 #endif
1607 #include <stdio.h>
1608 #include <sys/stat.h>
1609 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1610 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1611 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1612     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1615 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1616 AC_TRY_RUN([#include <stdio.h>
1617 #include <sys/stat.h>
1618 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1619 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1620 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1621     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1624 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1625 AC_TRY_RUN([
1626 #if defined(HAVE_UNISTD_H)
1627 #include <unistd.h>
1628 #endif
1629 #include <stdio.h>
1630 #include <sys/stat.h>
1631 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1632 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1633 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1634     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1637 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1638 AC_TRY_RUN([
1639 #if defined(HAVE_UNISTD_H)
1640 #include <unistd.h>
1641 #endif
1642 #include <stdio.h>
1643 #include <sys/stat.h>
1644 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1645 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1646 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1647     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1650 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1651 AC_TRY_COMPILE([
1652 #if defined(HAVE_UNISTD_H)
1653 #include <unistd.h>
1654 #endif
1655 #include <sys/types.h>
1656 #include <dirent.h>],
1657 [DIR64 de;],
1658 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1659 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1660     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1663 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1664 AC_TRY_COMPILE([
1665 #if defined(HAVE_UNISTD_H)
1666 #include <unistd.h>
1667 #endif
1668 #include <sys/types.h>
1669 #include <dirent.h>],
1670 [struct dirent64 de;],
1671 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1672 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1673     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1676 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1677 AC_TRY_RUN([
1678 #if defined(HAVE_UNISTD_H)
1679 #include <unistd.h>
1680 #endif
1681 #include <sys/types.h>
1682 main() { dev_t dev; int i = major(dev); return 0; }],
1683 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1684 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1685     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1688 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1689 AC_TRY_RUN([
1690 #if defined(HAVE_UNISTD_H)
1691 #include <unistd.h>
1692 #endif
1693 #include <sys/types.h>
1694 main() { dev_t dev; int i = minor(dev); return 0; }],
1695 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1696 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1697     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1700 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1701 AC_TRY_RUN([
1702 #if defined(HAVE_UNISTD_H)
1703 #include <unistd.h>
1704 #endif
1705 #include <sys/types.h>
1706 main() { dev_t dev = makedev(1,2); return 0; }],
1707 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1708 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1709     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1712 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1713 AC_TRY_RUN([#include <stdio.h>
1714 main() { char c; c=250; exit((c > 0)?0:1); }],
1715 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1716 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1717     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1720 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1721 AC_TRY_COMPILE([#include <sys/types.h>
1722 #include <sys/socket.h>
1723 #include <netinet/in.h>],
1724 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1725 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1726 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1727     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1730 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1731 AC_TRY_COMPILE([#include <sys/types.h>
1732 #include <dirent.h>
1733 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1734 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1735 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1736     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1739 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1740 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1741 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1742 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1743     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1746 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1747 AC_TRY_RUN([
1748 #include <sys/time.h>
1749 #include <unistd.h>
1750 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1751            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1752 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1753     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1756 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1757 AC_TRY_LINK([#include <stdarg.h>
1758 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1759 samba_cv_HAVE_VA_COPY=yes,
1760 samba_cv_HAVE_VA_COPY=no)])
1761 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1762     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1763 else
1764     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1765     AC_TRY_LINK([#include <stdarg.h>
1766     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1767     samba_cv_HAVE___VA_COPY=yes,
1768     samba_cv_HAVE___VA_COPY=no)])
1769     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1770         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1771     fi
1774 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1775 AC_TRY_RUN([
1776 #include <sys/types.h>
1777 #include <stdarg.h>
1778 void foo(const char *format, ...) { 
1779        va_list ap;
1780        int len;
1781        char buf[5];
1783        va_start(ap, format);
1784        len = vsnprintf(buf, 0, format, ap);
1785        va_end(ap);
1786        if (len != 5) exit(1);
1788        va_start(ap, format);
1789        len = vsnprintf(0, 0, format, ap);
1790        va_end(ap);
1791        if (len != 5) exit(1);
1793        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1795        exit(0);
1797 main() { foo("hello"); }
1799 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1800 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1801     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1804 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1805 AC_TRY_RUN([#include <sys/types.h>
1806 #include <dirent.h>
1807 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1808 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1809 di->d_name[0] == 0) exit(0); exit(1);} ],
1810 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1811 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1812     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1815 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1816 AC_TRY_COMPILE([#include <sys/types.h>
1817 #include <utime.h>],
1818 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1819 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1820 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1821     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1824 ##############
1825 # Check utmp details, but only if our OS offers utmp.h
1826 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1827 dnl  utmp and utmpx come in many flavours
1828 dnl  We need to check for many of them
1829 dnl  But we don't need to do each and every one, because our code uses
1830 dnl  mostly just the utmp (not utmpx) fields.
1832 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1834 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1835 AC_TRY_COMPILE([#include <sys/types.h>
1836 #include <utmp.h>],
1837 [struct utmp ut;  ut.ut_name[0] = 'a';],
1838 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1839 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1840     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1841 fi 
1843 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1844 AC_TRY_COMPILE([#include <sys/types.h>
1845 #include <utmp.h>],
1846 [struct utmp ut;  ut.ut_user[0] = 'a';],
1847 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1848 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1849     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1850 fi 
1852 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1853 AC_TRY_COMPILE([#include <sys/types.h>
1854 #include <utmp.h>],
1855 [struct utmp ut;  ut.ut_id[0] = 'a';],
1856 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1857 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1858     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1859 fi 
1861 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1862 AC_TRY_COMPILE([#include <sys/types.h>
1863 #include <utmp.h>],
1864 [struct utmp ut;  ut.ut_host[0] = 'a';],
1865 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1866 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1867     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1868 fi 
1870 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1871 AC_TRY_COMPILE([#include <sys/types.h>
1872 #include <utmp.h>],
1873 [struct utmp ut;  time_t t; ut.ut_time = t;],
1874 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1875 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1876     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1877 fi 
1879 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1880 AC_TRY_COMPILE([#include <sys/types.h>
1881 #include <utmp.h>],
1882 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1883 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1884 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1885     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1886 fi 
1888 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1889 AC_TRY_COMPILE([#include <sys/types.h>
1890 #include <utmp.h>],
1891 [struct utmp ut;  ut.ut_type = 0;],
1892 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1893 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1894     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1895 fi 
1897 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1898 AC_TRY_COMPILE([#include <sys/types.h>
1899 #include <utmp.h>],
1900 [struct utmp ut;  ut.ut_pid = 0;],
1901 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1902 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1903     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1904 fi 
1906 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1907 AC_TRY_COMPILE([#include <sys/types.h>
1908 #include <utmp.h>],
1909 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1910 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1911 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1912     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1913 fi 
1915 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1916 AC_TRY_COMPILE([#include <sys/types.h>
1917 #include <utmp.h>],
1918 [struct utmp ut;  ut.ut_addr = 0;],
1919 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1920 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1921     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1922 fi 
1924 if test x$ac_cv_func_pututline = xyes ; then
1925   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1926   AC_TRY_COMPILE([#include <sys/types.h>
1927 #include <utmp.h>],
1928   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1929   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1930   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1931       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1932   fi
1935 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1936 AC_TRY_COMPILE([#include <sys/types.h>
1937 #include <utmpx.h>],
1938 [struct utmpx ux;  ux.ut_syslen = 0;],
1939 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1940 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1941     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1942 fi 
1945 # end utmp details
1948 ICONV_LOCATION=standard
1949 LOOK_DIRS="/usr /usr/local /sw /opt"
1950 AC_ARG_WITH(libiconv,
1951 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1953   if test "$withval" = "no" ; then
1954     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
1955   else
1956      if test "$withval" != "yes" ; then
1957         ICONV_PATH_SPEC=yes
1958         LOOK_DIRS="$withval"
1959      fi
1960   fi
1963 for i in $LOOK_DIRS ; do
1964     save_LIBS=$LIBS
1965     save_LDFLAGS=$LDFLAGS
1966     save_CPPFLAGS=$CPPFLAGS
1967     ICONV_FOUND="no"
1968     unset libext
1969     CPPFLAGS="$CPPFLAGS -I$i/include"
1970 dnl This is here to handle -withval stuff for --with-libiconv
1971 dnl Perhaps we should always add a -L
1973 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
1974 dnl installation paths. This gets a little tricky since we might have iconv
1975 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
1976 dnl succeed when the header is found. To counter this, make sure the 
1977 dnl library directory is there and check the ABI directory first (which
1978 dnl should be harmless on other systems.
1979 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
1980     for l in "lib32" "lib" "lib/hpux32"; do
1981         if test -d "$i/$l" ; then
1982                 LDFLAGS="$save_LDFLAGS -L$i/$l"
1983         LIBS=
1984         export LDFLAGS LIBS CPPFLAGS
1985 dnl Try to find iconv(3)
1986                 jm_ICONV($i/$l)
1987                 if test x"$ICONV_FOUND" = "xyes" ; then
1988             libext="$l"
1989             break;
1990         fi
1991         fi
1992     done
1994     if test x"$ICONV_FOUND" = "xyes" ; then
1995         LDFLAGS=$save_LDFLAGS
1996         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1997         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1998         LIBS="$save_LIBS"
1999         ICONV_LOCATION=$i
2000         export LDFLAGS LIBS CPPFLAGS
2001 dnl Now, check for a working iconv ... we want to do it here because
2002 dnl there might be a working iconv further down the list of LOOK_DIRS
2004         ############
2005         # check for iconv in libc
2006         ic_save_LIBS="$LIBS"
2007         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2008            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2009         fi
2010         if test x"$jm_cv_lib_iconv" != x; then
2011            LIBS="$LIBS -l$jm_cv_lib_iconv"
2012         fi
2013 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2014         default_dos_charset=no
2015         default_display_charset=no
2016         default_unix_charset=no
2018         # check for default dos charset name
2019         for j in CP850 IBM850 ; do
2020             rjs_CHARSET($j)
2021             if test x"$ICONV_CHARSET" = x"$j"; then
2022                 default_dos_charset="\"$j\""
2023                 break
2024             fi
2025         done
2026         # check for default display charset name
2027         for j in ASCII 646 ; do
2028             rjs_CHARSET($j)
2029             if test x"$ICONV_CHARSET" = x"$j"; then
2030                 default_display_charset="\"$j\""
2031                 break
2032             fi
2033         done
2034         # check for default unix charset name
2035         for j in UTF-8 UTF8 ; do
2036             rjs_CHARSET($j)
2037             if test x"$ICONV_CHARSET" = x"$j"; then
2038                 default_unix_charset="\"$j\""
2039                 break
2040             fi
2041         done
2042         
2043         if test "$default_dos_charset" != "no" -a \
2044                 "$default_dos_charset" != "cross" -a \
2045                 "$default_display_charset" != "no" -a \ 
2046                 "$default_display_charset" != "cross" -a \
2047                 "$default_unix_charset" != "no" -a \
2048                 "$default_unix_charset" != "cross"
2049         then
2050                 samba_cv_HAVE_NATIVE_ICONV=yes
2051         else if test "$default_dos_charset" = "cross" -o \
2052                      "$default_display_charset" = "cross" -o \
2053                      "$default_unix_charset" = "cross"
2054         then
2055                 samba_cv_HAVE_NATIVE_ICONV=cross
2056         else
2057                 samba_cv_HAVE_NATIVE_ICONV=no
2058         fi
2059         fi
2060 dnl ])
2062         LIBS="$ic_save_LIBS"
2063         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2064            CPPFLAGS=$save_CPPFLAGS
2065            LDFLAGS=$save_LDFLAGS
2066            LIBS=$save_LIBS
2067            if test x"$jm_cv_lib_iconv" != x; then
2068               LIBS="$LIBS -l$jm_cv_lib_iconv"
2069            fi
2070            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2071            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2072            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2073            export CPPFLAGS
2074            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2075            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2076            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2077            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2078            break
2079         fi
2080 dnl We didn't find a working iconv, so keep going
2081     fi
2082 dnl We only need to clean these up here for the next pass through the loop
2083     CPPFLAGS=$save_CPPFLAGS
2084     LDFLAGS=$save_LDFLAGS
2085     LIBS=$save_LIBS
2086     export LDFLAGS LIBS CPPFLAGS
2087 done
2088 unset libext
2091 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2092     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2093     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2094    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2095    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2096    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2100 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2101 AC_TRY_RUN([
2102 #include <sys/types.h>
2103 #include <fcntl.h>
2104 #ifndef F_GETLEASE
2105 #define F_GETLEASE      1025
2106 #endif
2107 main() {
2108        int fd = open("/dev/null", O_RDONLY);
2109        return fcntl(fd, F_GETLEASE, 0) == -1;
2112 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2113 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2114     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2117 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2118 AC_TRY_RUN([
2119 #include <sys/types.h>
2120 #include <fcntl.h>
2121 #include <signal.h>
2122 #ifndef F_NOTIFY
2123 #define F_NOTIFY 1026
2124 #endif
2125 main() {
2126         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2129 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2130 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2131     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2134 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2135 AC_TRY_RUN([
2136 #include <sys/types.h>
2137 #include <fcntl.h>
2138 #include <signal.h>
2139 #include <sys/file.h>
2140 #ifndef LOCK_MAND
2141 #define LOCK_MAND       32
2142 #define LOCK_READ       64
2143 #endif
2144 main() {
2145         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2148 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2149 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2150     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2156 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2157 AC_TRY_COMPILE([#include <sys/types.h>
2158 #include <fcntl.h>],
2159 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2160 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2161 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2162     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2165 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
2166 AC_TRY_RUN([#include <sys/types.h>
2167 #include <sys/capability.h>
2168 main() {
2169  cap_t cap;
2170  if ((cap = cap_get_proc()) == NULL)
2171    exit(1);
2172  cap->cap_effective |= CAP_NETWORK_MGT;
2173  cap->cap_inheritable |= CAP_NETWORK_MGT;
2174  cap_set_proc(cap);
2175  exit(0);
2178 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
2179 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
2180     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
2184 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2185 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2188 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2189 AC_TRY_COMPILE([#include <sys/types.h>
2190 #if defined(HAVE_RPC_RPC_H)
2191 #include <rpc/rpc.h>
2192 #endif],
2193 [int16 testvar;],
2194 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2195 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2196     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2199 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_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 [uint16 testvar;],
2205 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2206 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2207     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2210 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_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 [int32 testvar;],
2216 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2217 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2218     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2221 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_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 [uint32 testvar;],
2227 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2228 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2229     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2233 dnl Some systems (SCO) have a problem including
2234 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2235 dnl as a #define in <prot.h> and as part of an enum
2236 dnl in <rpc/rpc.h>.
2239 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2240 AC_TRY_COMPILE([#include <sys/types.h>
2241 #ifdef HAVE_SYS_SECURITY_H
2242 #include <sys/security.h>
2243 #include <prot.h>
2244 #endif  /* HAVE_SYS_SECURITY_H */
2245 #if defined(HAVE_RPC_RPC_H)
2246 #include <rpc/rpc.h>
2247 #endif],
2248 [int testvar;],
2249 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2250 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2251     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2254 AC_MSG_CHECKING([for test routines])
2255 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2256            AC_MSG_RESULT(yes),
2257            AC_MSG_ERROR([cant find test code. Aborting config]),
2258            AC_MSG_WARN([cannot run when cross-compiling]))
2260 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2261 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2262            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2263 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2264     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2267 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2268 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2269            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2270            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2271            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2272 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2273 then
2274     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2277 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2278 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2279            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2280 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2281     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2284 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2285 SAVE_CPPFLAGS="$CPPFLAGS"
2286 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2287 AC_TRY_COMPILE([
2288 #define REPLACE_GETPASS 1
2289 #define NO_PROTO_H 1
2290 #define NO_CONFIG_H 1
2291 #define main dont_declare_main
2292 #include "${srcdir-.}/lib/getsmbpass.c"
2293 #undef main
2294 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2295 CPPFLAGS="$SAVE_CPPFLAGS"
2297 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2298         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2301 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2302 AC_TRY_RUN([
2303 #include <stdio.h>
2304 #include <sys/types.h>
2305 #include <netinet/in.h>
2306 #ifdef HAVE_ARPA_INET_H
2307 #include <arpa/inet.h>
2308 #endif
2309 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2310 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2311     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2312 exit(1);}],
2313            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2314 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2315     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2318 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2319 AC_TRY_RUN([#include <stdlib.h>
2320 #include <sys/types.h>
2321 #include <sys/stat.h>
2322 #include <unistd.h>
2323 main() { 
2324   struct stat st;
2325   char tpl[20]="/tmp/test.XXXXXX"; 
2326   int fd = mkstemp(tpl); 
2327   if (fd == -1) exit(1);
2328   unlink(tpl);
2329   if (fstat(fd, &st) != 0) exit(1);
2330   if ((st.st_mode & 0777) != 0600) exit(1);
2331   exit(0);
2333 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2334 samba_cv_HAVE_SECURE_MKSTEMP=no,
2335 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2336 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2337     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2340 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2341 AC_TRY_RUN([#include <unistd.h>
2342 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2343 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2344 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2345     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2348 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2349 AC_TRY_RUN([#include <unistd.h>
2350 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2351 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2352 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2353     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2356 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2357 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2358            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2359 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2360     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2361 else
2362     AC_MSG_WARN(running as non-root will disable some tests)
2365 ##################
2366 # look for a method of finding the list of network interfaces
2367 iface=no;
2368 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2369 AC_TRY_RUN([
2370 #define HAVE_IFACE_AIX 1
2371 #define AUTOCONF_TEST 1
2372 #include "confdefs.h"
2373 #include "${srcdir-.}/lib/interfaces.c"],
2374            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2375 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2376     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2379 if test $iface = no; then
2380 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2381 AC_TRY_RUN([
2382 #define HAVE_IFACE_IFCONF 1
2383 #define AUTOCONF_TEST 1
2384 #include "confdefs.h"
2385 #include "${srcdir-.}/lib/interfaces.c"],
2386            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2387 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2388     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2392 if test $iface = no; then
2393 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2394 AC_TRY_RUN([
2395 #define HAVE_IFACE_IFREQ 1
2396 #define AUTOCONF_TEST 1
2397 #include "confdefs.h"
2398 #include "${srcdir-.}/lib/interfaces.c"],
2399            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2400 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2401     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2406 ################################################
2407 # look for a method of setting the effective uid
2408 seteuid=no;
2409 if test $seteuid = no; then
2410 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2411 AC_TRY_RUN([
2412 #define AUTOCONF_TEST 1
2413 #define USE_SETRESUID 1
2414 #include "confdefs.h"
2415 #include "${srcdir-.}/lib/util_sec.c"],
2416            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2417 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2418     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2423 if test $seteuid = no; then
2424 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2425 AC_TRY_RUN([
2426 #define AUTOCONF_TEST 1
2427 #define USE_SETREUID 1
2428 #include "confdefs.h"
2429 #include "${srcdir-.}/lib/util_sec.c"],
2430            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2431 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2432     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2436 if test $seteuid = no; then
2437 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2438 AC_TRY_RUN([
2439 #define AUTOCONF_TEST 1
2440 #define USE_SETEUID 1
2441 #include "confdefs.h"
2442 #include "${srcdir-.}/lib/util_sec.c"],
2443            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2444 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2445     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2449 if test $seteuid = no; then
2450 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2451 AC_TRY_RUN([
2452 #define AUTOCONF_TEST 1
2453 #define USE_SETUIDX 1
2454 #include "confdefs.h"
2455 #include "${srcdir-.}/lib/util_sec.c"],
2456            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2457 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2458     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2463 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2464 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2465            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2466 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2467     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2470 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2471 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2472            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2473 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2474     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2477 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2478 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2479            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2480 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2481     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2483 else
2486 dnl Don't check for 64 bit fcntl locking if we know that the
2487 dnl glibc2.1 broken check has succeeded.
2488 dnl 
2490   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2491   AC_TRY_RUN([
2492 #if defined(HAVE_UNISTD_H)
2493 #include <unistd.h>
2494 #endif
2495 #include <stdio.h>
2496 #include <stdlib.h>
2498 #ifdef HAVE_FCNTL_H
2499 #include <fcntl.h>
2500 #endif
2502 #ifdef HAVE_SYS_FCNTL_H
2503 #include <sys/fcntl.h>
2504 #endif
2505 main() { struct flock64 fl64;
2506 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2507 exit(0);
2508 #else
2509 exit(1);
2510 #endif
2512        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2514   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2515       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2516   fi
2519 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2520 AC_TRY_COMPILE([#include <sys/types.h>
2521 #include <sys/stat.h>
2522 #include <unistd.h>],
2523 [struct stat st;  st.st_blocks = 0;],
2524 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2525 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2526     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2527 fi 
2529 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2530 AC_TRY_COMPILE([#include <sys/types.h>
2531 #include <sys/stat.h>
2532 #include <unistd.h>],
2533 [struct stat st;  st.st_blksize = 0;],
2534 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2535 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2536     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2539 case "$host_os" in
2540 *linux*)
2541 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2542 AC_TRY_COMPILE([
2543 #ifdef HAVE_SYS_VFS_H
2544 #include <sys/vfs.h>
2545 #endif
2546 #ifdef HAVE_SYS_CAPABILITY_H
2547 #include <sys/capability.h>
2548 #endif
2549 ],[int i;],
2550    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2551 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2552    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2555 esac
2557 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2558 AC_TRY_COMPILE([
2559 #include <sys/types.h>
2560 #include <sys/acl.h>
2561 #if defined(HAVE_RPCSVC_NIS_H)
2562 #include <rpcsvc/nis.h>
2563 #endif],
2564 [int i;],
2565 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2566 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2567         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2570 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2571 AC_TRY_RUN([
2572 #include <stdio.h>
2573 #include <limits.h>
2574 main() {
2575         char *newpath = realpath("/tmp", NULL);
2576         exit ((newpath != NULL) ? 0 : 1);
2579 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2580 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2581     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2584 #################################################
2585 # check for smbwrapper support
2586 AC_MSG_CHECKING(whether to use smbwrapper)
2587 AC_ARG_WITH(smbwrapper,
2588 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2589 [ case "$withval" in
2590   yes)
2591     AC_MSG_RESULT(yes)
2592     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2593         WRAPPROG="bin/smbsh\$(EXEEXT)"
2594         WRAP="bin/smbwrapper.$SHLIBEXT"
2595         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
2596         WRAP_INC="-I\$(srcdir)/smbwrapper"
2598 # Conditions under which smbwrapper should not be built.
2600         if test x$PICFLAGS = x; then
2601            echo No support for PIC code - disabling smbwrapper and smbsh
2602            WRAPPROG=""
2603            WRAP=""
2604            WRAP_OBJS=""
2605            WRAP_INC=""
2606         elif test x$ac_cv_func_syscall = xno; then
2607            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2608            WRAPPROG=""
2609            WRAP=""
2610            WRAP_OBJS=""
2611            WRAP_INC=""
2612         fi
2613         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2614         SMBWRAPPER="$WRAPPROG $WRAP"
2615         SMBWRAP_OBJS="$WRAP_OBJS"
2616         SMBWRAP_INC="$WRAP_INC"
2617     ;;
2618   *)
2619     AC_MSG_RESULT(no)
2620     ;;
2621   esac ],
2622   AC_MSG_RESULT(no)
2625 #################################################
2626 # check for AFS clear-text auth support
2627 samba_cv_WITH_AFS=no
2628 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2629 AC_ARG_WITH(afs,
2630 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2631 [ case "$withval" in
2632   yes|auto)
2633     AC_MSG_RESULT($withval)
2634     samba_cv_WITH_AFS=$withval
2635     ;;
2636   *)
2637     AC_MSG_RESULT(no)
2638     ;;
2639   esac ],
2640   AC_MSG_RESULT(no)
2643 ####################################################
2644 # check for Linux-specific AFS fake-kaserver support
2645 samba_cv_WITH_FAKE_KASERVER=no
2646 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2647 AC_ARG_WITH(fake-kaserver,
2648 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2649 [ case "$withval" in
2650   yes|auto)
2651     AC_MSG_RESULT($withval)
2652     samba_cv_WITH_FAKE_KASERVER=$withval
2653     ;;
2654   *)
2655     AC_MSG_RESULT(no)
2656     ;;
2657   esac ],
2658   AC_MSG_RESULT(no)
2661 #################################################
2662 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2663 if test x"$samba_cv_WITH_AFS" != x"no" ||
2664    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2666     # see if this box has the afs-headers in /usr/include/afs
2667     AC_MSG_CHECKING(for /usr/include/afs)
2668     if test -d /usr/include/afs; then
2669           CFLAGS="$CFLAGS -I/usr/include/afs"
2670           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2671           AC_MSG_RESULT(yes)
2672     else
2673       AC_MSG_RESULT(no)
2674     fi
2675    
2676     # check for afs.h
2677     have_afs_headers=no
2678     AC_CHECK_HEADERS(afs.h afs/afs.h)
2679     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2680         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2681            test x"$samba_cv_WITH_AFS" = x"auto"; then
2682                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2683         else
2684                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2685         fi
2686     else
2687         have_afs_headers=yes
2688     fi
2691 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2692     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2695 #################################################
2696 # check whether to compile AFS/NT ACL mapping module
2697 samba_cv_WITH_VFS_AFSACL=no
2698 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2699 AC_ARG_WITH(vfs-afsacl,
2700 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2701 [ case "$withval" in
2702   yes|auto)
2703     AC_MSG_RESULT($withval)
2704     samba_cv_WITH_VFS_AFSACL=yes
2705     ;;
2706   *)
2707     AC_MSG_RESULT(no)
2708     ;;
2709   esac ],
2710   AC_MSG_RESULT(no)
2713 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2714    default_shared_modules="$default_shared_modules vfs_afsacl"
2716         
2717 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2718     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2721 #################################################
2722 # check for the DFS clear-text auth system
2723 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2724 AC_ARG_WITH(dfs,
2725 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2726 [ case "$withval" in
2727   yes)
2728     AC_MSG_RESULT(yes)
2729     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2730     ;;
2731   *)
2732     AC_MSG_RESULT(no)
2733     ;;
2734   esac ],
2735   AC_MSG_RESULT(no)
2738 ########################################################
2739 # Compile with LDAP support?
2741 with_ldap_support=auto
2742 AC_MSG_CHECKING([for LDAP support])
2744 AC_ARG_WITH(ldap,
2745 [  --with-ldap             LDAP support (default yes)],
2746 [ case "$withval" in
2747     yes|no)
2748         with_ldap_support=$withval
2749         ;;
2750   esac ])
2752 AC_MSG_RESULT($with_ldap_support)
2754 SMBLDAP=""
2755 AC_SUBST(SMBLDAP)
2756 SMBLDAPUTIL=""
2757 AC_SUBST(SMBLDAPUTIL)
2758 if test x"$with_ldap_support" != x"no"; then
2760   ##################################################################
2761   # first test for ldap.h and lber.h
2762   # (ldap.h is required for this test)
2763   AC_CHECK_HEADERS(ldap.h lber.h)
2764   
2765   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2766         if test x"$with_ldap_support" = x"yes"; then
2767          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2768         else
2769          AC_MSG_WARN(ldap.h is needed for LDAP support)
2770         fi
2771         
2772         with_ldap_support=no
2773   fi
2776 if test x"$with_ldap_support" != x"no"; then
2777   ac_save_LIBS=$LIBS
2779   ##################################################################
2780   # we might need the lber lib on some systems. To avoid link errors
2781   # this test must be before the libldap test
2782   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2784   ########################################################
2785   # now see if we can find the ldap libs in standard paths
2786   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2788   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2789   
2790   ########################################################
2791   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2792   # Check found in pam_ldap 145.
2793   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2795   LIBS="$LIBS $LDAP_LIBS"
2796   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2797     AC_TRY_COMPILE([
2798         #include <lber.h>
2799         #include <ldap.h>], 
2800         [ldap_set_rebind_proc(0, 0, 0);], 
2801         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2802         [smb_ldap_cv_ldap_set_rebind_proc=2]
2803     ) 
2804   ])
2805   
2806   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2808   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2809   
2810   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2811     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2812     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2813     default_shared_modules="$default_shared_modules config_ldap";
2814     SMBLDAP="lib/smbldap.o"
2815     SMBLDAPUTIL="lib/smbldap_util.o"
2816     with_ldap_support=yes
2817     AC_MSG_CHECKING(whether LDAP support is used)
2818     AC_MSG_RESULT(yes)
2819   else
2820     if test x"$with_ldap_support" = x"yes"; then
2821         AC_MSG_ERROR(libldap is needed for LDAP support)
2822     else
2823         AC_MSG_WARN(libldap is needed for LDAP support)
2824     fi
2825     
2826     LDAP_LIBS=""
2827     with_ldap_support=no
2828   fi
2829   LIBS=$ac_save_LIBS
2833 #################################################
2834 # active directory support
2836 with_ads_support=auto
2837 AC_MSG_CHECKING([for Active Directory and krb5 support])
2839 AC_ARG_WITH(ads,
2840 [  --with-ads              Active Directory support (default auto)],
2841 [ case "$withval" in
2842     yes|no)
2843         with_ads_support="$withval"
2844         ;;
2845   esac ])
2847 AC_MSG_RESULT($with_ads_support)
2849 FOUND_KRB5=no
2850 KRB5_LIBS=""
2852 if test x"$with_ldap_support" != x"yes"; then
2853     if test x"$with_ads_support" = x"yes"; then
2854         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2855     elif test x"$with_ads_support" != x"no"; then
2856         AC_MSG_WARN(Active Directory Support requires LDAP support)
2857     fi
2858     with_ads_support=no
2861 if test x"$with_ads_support" != x"no"; then
2863   # Do no harm to the values of CFLAGS and LIBS while testing for
2864   # Kerberos support.
2866   if test x$FOUND_KRB5 = x"no"; then
2867     #################################################
2868     # check for location of Kerberos 5 install
2869     AC_MSG_CHECKING(for kerberos 5 install path)
2870     AC_ARG_WITH(krb5,
2871     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2872     [ case "$withval" in
2873       no)
2874         AC_MSG_RESULT(no krb5-path given)
2875         ;;
2876       yes)
2877         AC_MSG_RESULT(/usr)
2878         FOUND_KRB5=yes
2879         ;;
2880       *)
2881         AC_MSG_RESULT($withval)
2882         KRB5_CFLAGS="-I$withval/include"
2883         KRB5_CPPFLAGS="-I$withval/include"
2884         KRB5_LDFLAGS="-L$withval/lib"
2885         FOUND_KRB5=yes
2886         if test -x "$withval/bin/krb5-config"; then
2887                 KRB5CONFIG=$withval/bin/krb5-config
2888         fi
2889         ;;
2890       esac ],
2891       AC_MSG_RESULT(no krb5-path given)
2892     )
2893   fi
2895   #################################################
2896   # check for krb5-config from recent MIT and Heimdal kerberos 5
2897   AC_PATH_PROG(KRB5CONFIG, krb5-config)
2898   AC_MSG_CHECKING(for working krb5-config)
2899   if test -x "$KRB5CONFIG"; then
2900     ac_save_CFLAGS=$CFLAGS
2901     CFLAGS="";export CFLAGS
2902     ac_save_LDFLAGS=$LDFLAGS
2903     LDFLAGS="";export LDFLAGS
2904     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
2905     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
2906     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2907     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
2908     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2909     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2910     FOUND_KRB5=yes
2911     AC_MSG_RESULT(yes)
2912   else
2913     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2914   fi
2916   if test x$FOUND_KRB5 = x"no"; then
2917     #################################################
2918     # see if this box has the SuSE location for the heimdal krb implementation
2919     AC_MSG_CHECKING(for /usr/include/heimdal)
2920     if test -d /usr/include/heimdal; then
2921       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2922           KRB5_CFLAGS="-I/usr/include/heimdal"
2923           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2924           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2925           AC_MSG_RESULT(yes)
2926       else
2927           KRB5_CFLAGS="-I/usr/include/heimdal"
2928           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2929           AC_MSG_RESULT(yes)
2930       fi
2931     else
2932       AC_MSG_RESULT(no)
2933     fi
2934   fi
2936   if test x$FOUND_KRB5 = x"no"; then
2937     #################################################
2938     # see if this box has the RedHat location for kerberos
2939     AC_MSG_CHECKING(for /usr/kerberos)
2940     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2941       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2942       KRB5_CFLAGS="-I/usr/kerberos/include"
2943       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2944       AC_MSG_RESULT(yes)
2945     else
2946       AC_MSG_RESULT(no)
2947     fi
2948   fi
2950   ac_save_CFLAGS=$CFLAGS
2951   ac_save_CPPFLAGS=$CPPFLAGS
2952   ac_save_LDFLAGS=$LDFLAGS
2954   CFLAGS="$KRB5_CFLAGS $CFLAGS"
2955   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
2956   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
2958   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2960   # now check for krb5.h. Some systems have the libraries without the headers!
2961   # note that this check is done here to allow for different kerberos
2962   # include paths
2963   AC_CHECK_HEADERS(krb5.h)
2965   if test x"$ac_cv_header_krb5_h" = x"no"; then
2967     # Give a warning if AD support was not explicitly requested,
2968     # i.e with_ads_support = auto, otherwise die with an error.
2970     if test x"$with_ads_support" = x"yes"; then
2971       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2972     else
2973       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2974     fi
2976     # Turn off AD support and restore CFLAGS and LIBS variables
2978     with_ads_support="no"
2979     
2980     CFLAGS=$ac_save_CFLAGS
2981     CPPFLAGS=$ac_save_CPPFLAGS
2982     LDFLAGS=$ac_save_LDFLAGS
2983   fi
2986 # Now we have determined whether we really want ADS support
2988 if test x"$with_ads_support" != x"no"; then
2989   ac_save_LIBS=$LIBS
2991   # now check for gssapi headers.  This is also done here to allow for
2992   # different kerberos include paths
2993   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2995   ##################################################################
2996   # we might need the k5crypto and com_err libraries on some systems
2997   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2998   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3000   # Heimdal checks.
3001   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3002   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3003   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3005   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3006   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
3007                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3009   ########################################################
3010   # now see if we can find the krb5 libs in standard paths
3011   # or as specified above
3012   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3013   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3015   ########################################################
3016   # now see if we can find the gssapi libs in standard paths
3017   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3018             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3020   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3021   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3022   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3023   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3024   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3025   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3026   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3027   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3028   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3029   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3030   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3031   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3032   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3033   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3034   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3035   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3036   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3037   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3038   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3039   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3040   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3041   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3043   LIBS="$KRB5_LIBS $LIBS"
3044   
3045   AC_CACHE_CHECK([for krb5_encrypt_block type],
3046                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3047     AC_TRY_COMPILE([#include <krb5.h>],
3048       [krb5_encrypt_block block;],
3049       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3050       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3052   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3053     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3054                [Whether the type krb5_encrypt_block exists])
3055   fi
3057   AC_CACHE_CHECK([for addrtype in krb5_address],
3058                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3059     AC_TRY_COMPILE([#include <krb5.h>],
3060       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3061       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3062       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3064   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3065     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3066                [Whether the krb5_address struct has a addrtype property])
3067   fi
3069   AC_CACHE_CHECK([for addr_type in krb5_address],
3070                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3071     AC_TRY_COMPILE([#include <krb5.h>],
3072       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3073       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3074       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3076   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3077     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3078               [Whether the krb5_address struct has a addr_type property])
3079   fi
3081   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3082                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3083                  [AC_TRY_COMPILE([#include <krb5.h>],
3084     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3085     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3087   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3088     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3089               [Whether the krb5_ticket struct has a enc_part2 property])
3090   fi
3092   AC_CACHE_CHECK([for keyblock in krb5_creds],
3093                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3094     AC_TRY_COMPILE([#include <krb5.h>],
3095       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3096       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3097       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3099   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3100     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3101               [Whether the krb5_creds struct has a keyblock property])
3102   fi
3104   AC_CACHE_CHECK([for session in krb5_creds],
3105                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3106     AC_TRY_COMPILE([#include <krb5.h>],
3107       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3108       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3109       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3111   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3112     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3113               [Whether the krb5_creds struct has a session property])
3114   fi
3116   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3117                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3118     AC_TRY_COMPILE([#include <krb5.h>],
3119       [krb5_keyblock key; key.keyvalue.data = NULL;],
3120       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3121       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3123   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3124     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3125               [Whether the krb5_keyblock struct has a keyvalue property])
3126   fi
3128   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3129                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3130     AC_TRY_COMPILE([#include <krb5.h>],
3131       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3132       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3133       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3134   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3135                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3136     AC_TRY_COMPILE([#include <krb5.h>],
3137       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3138       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3139       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3140 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3141 # w.r.t. arcfour and windows, so we must not enable it here
3142   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3143           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3144     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3145               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3146   fi
3148   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3149                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3150     AC_TRY_COMPILE([#include <krb5.h>],
3151       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3152       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3153       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3155   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3156     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3157               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3158   fi
3160   AC_CACHE_CHECK([for KV5M_KEYTAB],
3161                  samba_cv_HAVE_KV5M_KEYTAB,[
3162     AC_TRY_COMPILE([#include <krb5.h>],
3163       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3164       samba_cv_HAVE_KV5M_KEYTAB=yes,
3165       samba_cv_HAVE_KV5M_KEYTAB=no)])
3167   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3168       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3169              [Whether the KV5M_KEYTAB option is available])
3170   fi
3172   AC_CACHE_CHECK([for the krb5_princ_component macro],
3173                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3174     AC_TRY_LINK([#include <krb5.h>],
3175       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3176       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3177       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3179   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3180     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3181                [Whether krb5_princ_component is available])
3182   fi
3184   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3185                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3186     AC_TRY_COMPILE([#include <krb5.h>],
3187       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3188       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3189       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3191   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3192     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3193               [Whether krb5_keytab_entry has key member])
3194   fi
3196   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3197                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3198     AC_TRY_COMPILE([#include <krb5.h>],
3199       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3200       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3201       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3203   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3204     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3205               [Whether krb5_keytab_entry has keyblock member])
3206   fi
3208   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3209     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3210     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3211     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3212     AC_MSG_RESULT(yes)
3213   else
3214     if test x"$with_ads_support" = x"yes"; then
3215         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3216     else
3217         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3218     fi
3219     KRB5_LIBS=""
3220     with_ads_support=no 
3221   fi
3223   AC_CACHE_CHECK([for WRFILE: keytab support],
3224                 samba_cv_HAVE_WRFILE_KEYTAB,[
3225     AC_TRY_RUN([
3226 #include<krb5.h>
3227   main()
3228   {
3229     krb5_context context;
3230     krb5_keytab keytab;
3232     krb5_init_context(&context);
3233     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3234   }],
3235   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3236   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3238   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3239       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3240                [Whether the WRFILE:-keytab is supported])
3241   fi
3243   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3244                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3245     AC_TRY_COMPILE([#include <krb5.h>],
3246     [
3247     krb5_context context;
3248     krb5_principal principal;
3249     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3250     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3251     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3253   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3254     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3255               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3256   fi
3258 LIBS="$ac_save_LIBS"
3261 ########################################################
3262 # Compile experimental passdb backends?
3263 # (pdb_xml, pdb_mysql, pdb_pgsql)
3264 AC_MSG_CHECKING(whether to build experimental passdb libraries)
3265 AC_ARG_WITH(expsam,
3266 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
3267 [                          Valid choices include (comma separated list): ]
3268 [                              xml, mysql & pgsql],
3269 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
3270   if test "z$expsam_pdb_modules" = "zyes"; then
3271     expsam_pdb_modules="xml mysql pgsql"
3272   fi
3273   AC_MSG_RESULT($expsam_pdb_modules)
3274   for i in $expsam_pdb_modules
3275   do 
3276     case "$i" in
3277     xml|all|yes)
3278       ## pdb_xml
3279           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])])
3280       CFLAGS="$CFLAGS $XML_CFLAGS"
3281       ;;
3282     mysql|all|yes)
3283       ## pdb_mysql
3284           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
3285       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
3286       ;;
3287      pgsql|all|yes)
3288       ## pdb_pgsql
3289       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
3290       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
3291       ;;
3292     no)
3293       ;;
3294     *)
3295       echo "Unknown module name \"$i\"!  Exiting..."
3296       exit 1
3297       ;;
3298     esac
3299   done ],
3300   AC_MSG_RESULT(no)
3303 #################################################
3304 # check for automount support
3305 AC_MSG_CHECKING(whether to use automount)
3306 AC_ARG_WITH(automount,
3307 [  --with-automount        Include automount support (default=no)],
3308 [ case "$withval" in
3309   yes)
3310     AC_MSG_RESULT(yes)
3311     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3312     ;;
3313   *)
3314     AC_MSG_RESULT(no)
3315     ;;
3316   esac ],
3317   AC_MSG_RESULT(no)
3320 #################################################
3321 # check for smbmount support
3322 AC_MSG_CHECKING(whether to use smbmount)
3323 AC_ARG_WITH(smbmount,
3324 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3325 [ case "$withval" in
3326   yes)
3327         case "$host_os" in
3328         *linux*)
3329                 AC_MSG_RESULT(yes)
3330                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3331                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3332                 ;;
3333         *)
3334                 AC_MSG_ERROR(not on a linux system!)
3335                 ;;
3336         esac
3337     ;;
3338   *)
3339     AC_MSG_RESULT(no)
3340     ;;
3341   esac ],
3342   AC_MSG_RESULT(no)
3347 #################################################
3348 # check for a PAM clear-text auth, accounts, password and session support
3349 with_pam_for_crypt=no
3350 AC_MSG_CHECKING(whether to use PAM)
3351 AC_ARG_WITH(pam,
3352 [  --with-pam              Include PAM support (default=no)],
3353 [ case "$withval" in
3354   yes)
3355     AC_MSG_RESULT(yes)
3356     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3357        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3358           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3359              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3360           fi
3361        fi
3362     fi
3363     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3364     AUTH_LIBS="$AUTH_LIBS -lpam"
3365     with_pam_for_crypt=yes
3366     ;;
3367   *)
3368     AC_MSG_RESULT(no)
3369     ;;
3370   esac ],
3371   AC_MSG_RESULT(no)
3374 # we can't build a pam module if we don't have pam.
3375 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3377 #################################################
3378 # check for pam_smbpass support
3379 AC_MSG_CHECKING(whether to use pam_smbpass)
3380 AC_ARG_WITH(pam_smbpass,
3381 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3382 [ case "$withval" in
3383   yes)
3384     AC_MSG_RESULT(yes)
3386        # Conditions under which pam_smbpass should not be built.
3388        if test x$PICFLAGS = x; then
3389           AC_MSG_ERROR([No support for PIC code])
3390        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3391           AC_MSG_ERROR([No security/pam_appl.h found])
3392        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3393           AC_MSG_ERROR([No libpam found])
3394        else
3395           AUTH_LIBS="$AUTH_LIBS -lpam"
3396           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3397        fi
3398     ;;
3399   *)
3400     AC_MSG_RESULT(no)
3401     ;;
3402   esac ],
3403   AC_MSG_RESULT(no)
3407 ###############################################
3408 # test for where we get crypt() from
3409 AC_SEARCH_LIBS(crypt, [crypt],
3410   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3411   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3414 ## moved after the check for -lcrypt in order to
3415 ## ensure that the necessary libraries are included
3416 ## check checking for truncated salt.  Wrapped by the
3417 ## $with_pam_for_crypt variable as above   --jerry
3419 if test $with_pam_for_crypt = no; then
3420 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3421 crypt_LIBS="$LIBS"
3422 LIBS="$AUTH_LIBS $LIBS"
3423 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3424         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3425 LIBS="$crypt_LIBS"])
3426 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3427         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3432 ########################################################################################
3434 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3436 ########################################################################################
3438 #################################################
3439 # check for a LDAP password database configuration backwards compatibility
3440 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3441 AC_ARG_WITH(ldapsam,
3442 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3443 [ case "$withval" in
3444   yes)
3445     AC_MSG_RESULT(yes)
3446     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3447     ;;
3448   *)
3449     AC_MSG_RESULT(no)
3450     ;;
3451   esac ],
3452   AC_MSG_RESULT(no)
3455 ########################################################################################
3457 ## END OF TESTS FOR SAM BACKENDS.  
3459 ########################################################################################
3461 #################################################
3462 # check for a NISPLUS_HOME support 
3463 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3464 AC_ARG_WITH(nisplus-home,
3465 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3466 [ case "$withval" in
3467   yes)
3468     AC_MSG_RESULT(yes)
3469     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3470     ;;
3471   *)
3472     AC_MSG_RESULT(no)
3473     ;;
3474   esac ],
3475   AC_MSG_RESULT(no)
3478 #################################################
3479 # check for syslog logging
3480 AC_MSG_CHECKING(whether to use syslog logging)
3481 AC_ARG_WITH(syslog,
3482 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3483 [ case "$withval" in
3484   yes)
3485     AC_MSG_RESULT(yes)
3486     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3487     ;;
3488   *)
3489     AC_MSG_RESULT(no)
3490     ;;
3491   esac ],
3492   AC_MSG_RESULT(no)
3495 #################################################
3496 # check for a shared memory profiling support
3497 AC_MSG_CHECKING(whether to use profiling)
3498 AC_ARG_WITH(profiling-data,
3499 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3500 [ case "$withval" in
3501   yes)
3502     AC_MSG_RESULT(yes)
3503     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3504     ;;
3505   *)
3506     AC_MSG_RESULT(no)
3507     ;;
3508   esac ],
3509   AC_MSG_RESULT(no)
3513 #################################################
3514 # check for experimental disk-quotas support
3516 samba_cv_WITH_QUOTAS=auto
3517 samba_cv_TRY_QUOTAS=no
3518 samba_cv_RUN_QUOTA_TESTS=auto
3519 samba_cv_WITH_SYS_QUOTAS=auto
3520 samba_cv_TRY_SYS_QUOTAS=auto
3521 samba_cv_SYSQUOTA_FOUND=no
3523 AC_MSG_CHECKING(whether to try disk-quotas support)
3524 AC_ARG_WITH(quotas,
3525 [  --with-quotas           Include disk-quota support (default=no)],
3526 [ case "$withval" in
3527   yes)
3528     AC_MSG_RESULT(yes)
3529     samba_cv_WITH_QUOTAS=yes
3530     samba_cv_TRY_QUOTAS=yes
3531     samba_cv_RUN_QUOTA_TESTS=yes
3532     #set sys quotas to auto in this case
3533     samba_cv_TRY_SYS_QUOTAS=auto
3534     ;;
3535   auto)
3536     AC_MSG_RESULT(auto)
3537     samba_cv_WITH_QUOTAS=auto
3538     samba_cv_TRY_QUOTAS=auto
3539     samba_cv_RUN_QUOTA_TESTS=auto
3540     #set sys quotas to auto in this case
3541     samba_cv_TRY_SYS_QUOTAS=auto
3542     ;;
3543   no)
3544     AC_MSG_RESULT(no)
3545     samba_cv_WITH_QUOTAS=no
3546     samba_cv_TRY_QUOTAS=no
3547     samba_cv_RUN_QUOTA_TESTS=no
3548     ;;
3549   *)
3550     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3551     ;;
3552   esac ],
3553   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3556 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3557 AC_ARG_WITH(sys-quotas,
3558 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3559 [ case "$withval" in
3560   yes)
3561     AC_MSG_RESULT(yes)
3562     samba_cv_WITH_SYS_QUOTAS=yes
3563     samba_cv_TRY_SYS_QUOTAS=yes
3564     samba_cv_RUN_QUOTA_TESTS=yes
3565     ;;
3566   auto)
3567     AC_MSG_RESULT(auto)
3568     samba_cv_WITH_SYS_QUOTAS=auto
3569     samba_cv_TRY_SYS_QUOTAS=auto
3570     samba_cv_RUN_QUOTA_TESTS=auto
3571     ;;
3572   no)
3573     AC_MSG_RESULT(no)
3574     samba_cv_WITH_SYS_QUOTAS=no
3575     samba_cv_TRY_SYS_QUOTAS=no
3576     ;;
3577   *)
3578     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3579     ;;
3580   esac ],
3581   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3584 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
3585 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3586   case "$host_os" in
3587         *linux*)
3588             AC_MSG_RESULT(yes)
3589             samba_cv_TRY_SYS_QUOTAS=yes
3590             samba_cv_RUN_QUOTA_TESTS=yes
3591             ;;
3592         *)
3593             AC_MSG_RESULT(no)
3594             samba_cv_TRY_SYS_QUOTAS=no
3595             ;;
3596   esac
3599 #############################################
3600 # only check for quota stuff if --with-quotas
3601 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3603 case "$host_os" in
3604         # on linux we didn't need to test we have builtin support
3605         *linux*)
3606             samba_cv_SYSQUOTA_FOUND=yes
3607             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3608             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3609             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
3610             AC_MSG_RESULT(yes)
3612             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3613             samba_cv_found_xfs_header=yes
3614             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
3615             AC_MSG_RESULT(yes)
3616             ;;
3617         *)
3618             ;;
3619 esac
3621 # some broken header files need this
3622 AC_CHECK_HEADER(asm/types.h,[
3623             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3624             AC_ADD_INCLUDE(<asm/types.h>)
3625             ])
3627 # For quotas on Veritas VxFS filesystems
3628 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3630 # For sys/quota.h and linux/quota.h
3631 AC_CHECK_HEADERS(sys/quota.h)
3633 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3634 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3635 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3636 AC_TRY_COMPILE([
3637 #include "confdefs.h"
3638 #ifdef HAVE_SYS_TYPES_H
3639 #include <sys/types.h>
3640 #endif
3641 #ifdef HAVE_ASM_TYPES_H
3642 #include <asm/types.h>
3643 #endif
3644 #include <sys/quota.h>
3645 ],[int i = Q_XGETQUOTA;],
3646 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3647 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3648         samba_cv_found_xfs_header=yes
3652 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3653 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3654 AC_TRY_COMPILE([
3655 #include "confdefs.h"
3656 #ifdef HAVE_SYS_QUOTA_H
3657 #include <sys/quota.h>
3658 #endif
3660 struct dqblk D;
3661 D.dqb_fsoftlimit = 0;],
3662 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3663 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3664         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3667 ##################
3668 # look for a working quota system
3670 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3671 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3672 AC_TRY_RUN_STRICT([
3673 #define HAVE_QUOTACTL_4A 1
3674 #define AUTOCONF_TEST 1
3675 #include "confdefs.h"
3676 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3677            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3678 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3679     samba_cv_SYSQUOTA_FOUND=yes;
3680     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3681     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3685 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3686 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3687 AC_TRY_RUN_STRICT([
3688 #define HAVE_QUOTACTL_4B 1
3689 #define AUTOCONF_TEST 1
3690 #include "confdefs.h"
3691 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3692            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3693 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3694     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3695     samba_cv_SYSQUOTA_FOUND=yes;
3696     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3697     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3701 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3702 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3703 AC_TRY_RUN_STRICT([
3704 #define HAVE_QUOTACTL_3 1
3705 #define AUTOCONF_TEST 1
3706 #include "confdefs.h"
3707 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3708            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3709 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3710     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3711     samba_cv_SYSQUOTA_FOUND=yes;
3712     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3713     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3717 #################################################
3718 # check for mntent.h and struct mntent
3719 AC_CHECK_HEADERS(mntent.h)
3720 #################################################
3721 # check for setmntent,getmntent,endmntent
3722 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3724 #################################################
3725 # check for devnm.h and struct mntent
3726 AC_CHECK_HEADERS(devnm.h)
3727 #################################################
3728 # check for devnm
3729 AC_CHECK_FUNCS(devnm)
3731 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3732     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3733         # if --with-sys-quotas=yes then build it 
3734         # you have can use the get/set quota command smb.conf
3735         # options then
3736         samba_cv_SYSQUOTA_FOUND=auto
3737     fi
3738     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3739         # if --with-sys-quotas=yes then build it 
3740         # you have can use the get/set quota command smb.conf
3741         # options then
3742         samba_cv_TRY_SYS_QUOTAS=auto
3743     fi
3746 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3747 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3748 SAVE_CPPFLAGS="$CPPFLAGS"
3749 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3750 AC_TRY_COMPILE([
3751 #include "confdefs.h"
3752 #define NO_PROTO_H 1
3753 #define NO_CONFIG_H 1
3754 #define HAVE_SYS_QUOTAS 1
3755 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3756 #include "${srcdir-.}/lib/sysquotas.c"
3757 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3758 CPPFLAGS="$SAVE_CPPFLAGS"
3760 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3761 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3762     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3763         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3764         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3765         samba_cv_WE_USE_SYS_QUOTAS=yes
3766         AC_MSG_RESULT(yes)
3767     else
3768         AC_MSG_RESULT(no)
3769     fi
3773 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3774 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3775 SAVE_CPPFLAGS="$CPPFLAGS"
3776 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3777 AC_TRY_COMPILE([
3778 #include "confdefs.h"
3779 #define NO_PROTO_H 1
3780 #define NO_CONFIG_H 1
3781 #define HAVE_SYS_QUOTAS 1
3782 #define HAVE_XFS_QUOTAS 1
3783 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3784 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3785 CPPFLAGS="$SAVE_CPPFLAGS"
3787 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3788     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3789         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3790     fi
3794 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3795 SAVE_CPPFLAGS="$CPPFLAGS"
3796 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3797 AC_TRY_COMPILE([
3798 #include "confdefs.h"
3799 #define NO_PROTO_H 1
3800 #define NO_CONFIG_H 1
3801 #include "${srcdir-.}/smbd/quotas.c"
3802 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3803 CPPFLAGS="$SAVE_CPPFLAGS"
3805 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3806 AC_MSG_CHECKING(whether to use the old quota support)
3807     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3808       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3809         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3810         AC_MSG_RESULT(yes)
3811       else
3812         AC_MSG_RESULT(no)
3813       fi
3814     else
3815       AC_MSG_RESULT(no)
3816     fi
3819 ####################
3820 # End of quota check samba_cv_RUN_QUOTA_TESTS
3823 #################################################
3824 # check for experimental utmp accounting
3826 AC_MSG_CHECKING(whether to support utmp accounting)
3827 WITH_UTMP=yes
3828 AC_ARG_WITH(utmp,
3829 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3830 [ case "$withval" in
3831   no)
3832                 WITH_UTMP=no
3833                 ;;
3834   *)
3835                 WITH_UTMP=yes
3836                 ;;
3837   esac ],
3840 # utmp requires utmp.h
3841 # Note similar check earlier, when checking utmp details.
3843 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3844         utmp_no_reason=", no utmp.h on $host_os"
3845         WITH_UTMP=no
3848 # Display test results
3850 if test x"$WITH_UTMP" = x"yes"; then
3851         AC_MSG_RESULT(yes)
3852         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3853 else
3854         AC_MSG_RESULT(no$utmp_no_reason)
3857 #################################################
3858 # should we build libsmbclient?
3860 INSTALLCLIENTCMD_SH=:
3861 INSTALLCLIENTCMD_A=:
3862 INSTALLCLIENT=
3863 LIBSMBCLIENT_SHARED=
3864 LIBSMBCLIENT=
3865 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3866 AC_ARG_WITH(libsmbclient,
3867 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3868 [ case "$withval" in
3869   no) 
3870      AC_MSG_RESULT(no)
3871      ;;
3872   *)
3873      if test $BLDSHARED = true; then
3874         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3875         ## build the static version of libsmbclient as well
3876         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3877         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3878         LIBSMBCLIENT=libsmbclient
3879         AC_MSG_RESULT(yes)
3880      else
3881         enable_static=yes
3882         AC_MSG_RESULT(no shared library support -- will supply static library)
3883      fi
3884      if test $enable_static = yes; then
3885         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3886         LIBSMBCLIENT=libsmbclient
3887      fi
3888      INSTALLCLIENT=installclientlib
3889      ;;
3890   esac ],
3892 # if unspecified, default is to built it iff possible.
3893   if test $BLDSHARED = true; then
3894      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3895      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3896      LIBSMBCLIENT=libsmbclient
3897      AC_MSG_RESULT(yes)
3898    else
3899      enable_static=yes
3900      AC_MSG_RESULT(no shared library support -- will supply static library)
3901    fi
3902    if test $enable_static = yes; then
3903      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3904      LIBSMBCLIENT=libsmbclient
3905   fi]
3906   INSTALLCLIENT=installclientlib
3909 INSTALLCLIENTCMD_SH=:
3910 INSTALLCLIENTCMD_A=:
3911 INSTALLCLIENT=
3912 LIBSMBSHAREMODES_SHARED=
3913 LIBSMBSHAREMODES=
3914 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
3915 AC_ARG_WITH(libsmbsharemodes,
3916 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
3917 [ case "$withval" in
3918   no)
3919      AC_MSG_RESULT(no)
3920      ;;
3921   *)
3922      if test $BLDSHARED = true; then
3923         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3924         ## build the static version of libsmbsharemodes as well
3925         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3926         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
3927         LIBSMBSHAREMODES=libsmbsharemodes
3928         AC_MSG_RESULT(yes)
3929      else
3930         enable_static=yes
3931         AC_MSG_RESULT(no shared library support -- will supply static library)
3932      fi
3933      if test $enable_static = yes; then
3934         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3935         LIBSMBSHAREMODES=libsmbsharemodes
3936      fi
3937      INSTALLCLIENT=installclientlib
3938      ;;
3939   esac ],
3941 # if unspecified, default is to built it iff possible.
3942   if test $BLDSHARED = true; then
3943      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3944      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
3945      LIBSMBSHAREMODES=libsmbsharemodes
3946      AC_MSG_RESULT(yes)
3947    else
3948      enable_static=yes
3949      AC_MSG_RESULT(no shared library support -- will supply static library)
3950    fi
3951    if test $enable_static = yes; then
3952      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3953      LIBSMBSHAREMODES=libsmbsharemodes
3954   fi]
3955   INSTALLCLIENT=installclientlib
3958 #################################################
3959 # these tests are taken from the GNU fileutils package
3960 AC_CHECKING(how to get filesystem space usage)
3961 space=no
3963 # Test for statvfs64.
3964 if test $space = no; then
3965   # SVR4
3966   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3967   [AC_TRY_RUN([
3968 #if defined(HAVE_UNISTD_H)
3969 #include <unistd.h>
3970 #endif
3971 #include <sys/types.h>
3972 #include <sys/statvfs.h>
3973   main ()
3974   {
3975     struct statvfs64 fsd;
3976     exit (statvfs64 (".", &fsd));
3977   }],
3978   fu_cv_sys_stat_statvfs64=yes,
3979   fu_cv_sys_stat_statvfs64=no,
3980   fu_cv_sys_stat_statvfs64=cross)])
3981   if test $fu_cv_sys_stat_statvfs64 = yes; then
3982     space=yes
3983     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3984   fi
3987 # Perform only the link test since it seems there are no variants of the
3988 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3989 # because that got a false positive on SCO OSR5.  Adding the declaration
3990 # of a `struct statvfs' causes this test to fail (as it should) on such
3991 # systems.  That system is reported to work fine with STAT_STATFS4 which
3992 # is what it gets when this test fails.
3993 if test $space = no; then
3994   # SVR4
3995   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3996                  [AC_TRY_LINK([#include <sys/types.h>
3997 #include <sys/statvfs.h>],
3998                               [struct statvfs fsd; statvfs (0, &fsd);],
3999                               fu_cv_sys_stat_statvfs=yes,
4000                               fu_cv_sys_stat_statvfs=no)])
4001   if test $fu_cv_sys_stat_statvfs = yes; then
4002     space=yes
4003     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4004   fi
4007 if test $space = no; then
4008   # DEC Alpha running OSF/1
4009   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4010   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4011   [AC_TRY_RUN([
4012 #include <sys/param.h>
4013 #include <sys/types.h>
4014 #include <sys/mount.h>
4015   main ()
4016   {
4017     struct statfs fsd;
4018     fsd.f_fsize = 0;
4019     exit (statfs (".", &fsd, sizeof (struct statfs)));
4020   }],
4021   fu_cv_sys_stat_statfs3_osf1=yes,
4022   fu_cv_sys_stat_statfs3_osf1=no,
4023   fu_cv_sys_stat_statfs3_osf1=no)])
4024   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4025   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4026     space=yes
4027     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4028   fi
4031 if test $space = no; then
4032 # AIX
4033   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4034 member (AIX, 4.3BSD)])
4035   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4036   [AC_TRY_RUN([
4037 #ifdef HAVE_SYS_PARAM_H
4038 #include <sys/param.h>
4039 #endif
4040 #ifdef HAVE_SYS_MOUNT_H
4041 #include <sys/mount.h>
4042 #endif
4043 #ifdef HAVE_SYS_VFS_H
4044 #include <sys/vfs.h>
4045 #endif
4046   main ()
4047   {
4048   struct statfs fsd;
4049   fsd.f_bsize = 0;
4050   exit (statfs (".", &fsd));
4051   }],
4052   fu_cv_sys_stat_statfs2_bsize=yes,
4053   fu_cv_sys_stat_statfs2_bsize=no,
4054   fu_cv_sys_stat_statfs2_bsize=no)])
4055   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4056   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4057     space=yes
4058     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4059   fi
4062 if test $space = no; then
4063 # SVR3
4064   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4065   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4066   [AC_TRY_RUN([#include <sys/types.h>
4067 #include <sys/statfs.h>
4068   main ()
4069   {
4070   struct statfs fsd;
4071   exit (statfs (".", &fsd, sizeof fsd, 0));
4072   }],
4073     fu_cv_sys_stat_statfs4=yes,
4074     fu_cv_sys_stat_statfs4=no,
4075     fu_cv_sys_stat_statfs4=no)])
4076   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4077   if test $fu_cv_sys_stat_statfs4 = yes; then
4078     space=yes
4079     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4080   fi
4083 if test $space = no; then
4084 # 4.4BSD and NetBSD
4085   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4086 member (4.4BSD and NetBSD)])
4087   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4088   [AC_TRY_RUN([#include <sys/types.h>
4089 #ifdef HAVE_SYS_PARAM_H
4090 #include <sys/param.h>
4091 #endif
4092 #ifdef HAVE_SYS_MOUNT_H
4093 #include <sys/mount.h>
4094 #endif
4095   main ()
4096   {
4097   struct statfs fsd;
4098   fsd.f_fsize = 0;
4099   exit (statfs (".", &fsd));
4100   }],
4101   fu_cv_sys_stat_statfs2_fsize=yes,
4102   fu_cv_sys_stat_statfs2_fsize=no,
4103   fu_cv_sys_stat_statfs2_fsize=no)])
4104   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4105   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4106     space=yes
4107         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4108   fi
4111 if test $space = no; then
4112   # Ultrix
4113   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4114   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4115   [AC_TRY_RUN([#include <sys/types.h>
4116 #ifdef HAVE_SYS_PARAM_H
4117 #include <sys/param.h>
4118 #endif
4119 #ifdef HAVE_SYS_MOUNT_H
4120 #include <sys/mount.h>
4121 #endif
4122 #ifdef HAVE_SYS_FS_TYPES_H
4123 #include <sys/fs_types.h>
4124 #endif
4125   main ()
4126   {
4127   struct fs_data fsd;
4128   /* Ultrix's statfs returns 1 for success,
4129      0 for not mounted, -1 for failure.  */
4130   exit (statfs (".", &fsd) != 1);
4131   }],
4132   fu_cv_sys_stat_fs_data=yes,
4133   fu_cv_sys_stat_fs_data=no,
4134   fu_cv_sys_stat_fs_data=no)])
4135   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4136   if test $fu_cv_sys_stat_fs_data = yes; then
4137     space=yes
4138     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4139   fi
4143 # As a gating factor for large file support, in order to
4144 # use <4GB files we must have the following minimal support
4145 # available.
4146 # long long, and a 64 bit off_t or off64_t.
4147 # If we don't have all of these then disable large
4148 # file support.
4150 AC_MSG_CHECKING([if large file support can be enabled])
4151 AC_TRY_COMPILE([
4152 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4153 #include <sys/types.h>
4154 #else
4155 __COMPILE_ERROR_
4156 #endif
4158 [int i],
4159 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4160 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4161         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4163 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4165 AC_ARG_WITH(spinlocks, 
4166 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4167 if test "x$with_spinlocks" = "xyes"; then
4168     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4170     case "$host_cpu" in
4171         sparc)
4172             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4173             ;;
4175         i386|i486|i586|i686)
4176             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4177             ;;
4179         mips)
4180             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4181             ;;
4183         powerpc)
4184             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4185             ;;
4186     esac
4189 #################################################
4190 # check for ACL support
4192 AC_MSG_CHECKING(whether to support ACLs)
4193 AC_ARG_WITH(acl-support,
4194 [  --with-acl-support      Include ACL support (default=no)],
4195 [ case "$withval" in
4196   yes)
4198         case "$host_os" in
4199         *sysv5*)
4200                 AC_MSG_RESULT(Using UnixWare ACLs)
4201                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4202                 ;;
4203         *solaris*)
4204                 AC_MSG_RESULT(Using solaris ACLs)
4205                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4206                 ;;
4207         *hpux*)
4208                 AC_MSG_RESULT(Using HPUX ACLs)
4209                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4210                 ;;
4211         *irix*)
4212                 AC_MSG_RESULT(Using IRIX ACLs)
4213                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4214                 ;;
4215         *aix*)
4216                 AC_MSG_RESULT(Using AIX ACLs)
4217                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4218                 ;;
4219         *osf*)
4220                 AC_MSG_RESULT(Using Tru64 ACLs)
4221                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4222                 ACL_LIBS="$ACL_LIBS -lpacl"
4223                 ;;
4224         *freebsd[[5-9]]*)
4225                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4226                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4227                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4228                 ;;
4229         *linux*)
4230                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4231                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4232                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4233                 acl_LIBS=$LIBS
4234                 LIBS="$LIBS -lacl"
4235                 AC_TRY_LINK([#include <sys/types.h>
4236 #include <sys/acl.h>],
4237 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4238 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4239                 LIBS=$acl_LIBS])
4240                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4241                                 AC_MSG_RESULT(Using posix ACLs)
4242                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4243                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4244                                 acl_LIBS=$LIBS
4245                                 LIBS="$LIBS -lacl"
4246                                 AC_TRY_LINK([#include <sys/types.h>
4247 #include <sys/acl.h>],
4248 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4249 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4250                                 LIBS=$acl_LIBS])
4251                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4252                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4253                                 fi
4254                         fi
4255             ;;
4256          *)
4257                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4258                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4259                 acl_LIBS=$LIBS
4260                 LIBS="$LIBS -lacl"
4261                 AC_TRY_LINK([#include <sys/types.h>
4262 #include <sys/acl.h>],
4263 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4264 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4265                 LIBS=$acl_LIBS])
4266                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4267                                 AC_MSG_RESULT(Using posix ACLs)
4268                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4269                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4270                                 acl_LIBS=$LIBS
4271                                 LIBS="$LIBS -lacl"
4272                                 AC_TRY_LINK([#include <sys/types.h>
4273 #include <sys/acl.h>],
4274 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4275 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4276                                 LIBS=$acl_LIBS])
4277                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4278                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4279                                 fi
4280                         fi
4281             ;;
4282         esac
4283         ;;
4284   *)
4285     AC_MSG_RESULT(no)
4286     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4287     ;;
4288   esac ],
4289   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4290   AC_MSG_RESULT(no)
4293 #################################################
4294 # check for AIO support
4296 AC_MSG_CHECKING(whether to support asynchronous io)
4297 AC_ARG_WITH(aio-support,
4298 [  --with-aio-support      Include asynchronous io support (default=no)],
4299 [ case "$withval" in
4300   yes)
4302         AC_MSG_RESULT(yes)
4303         case "$host_os" in
4304         *)
4305                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$ACL_LIBS -lrt"])
4306                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4307                 aio_LIBS=$LIBS
4308                 LIBS="$LIBS -lrt"
4309                 AC_TRY_LINK([#include <sys/types.h>
4310 #include <aio.h>],
4311 [ struct aiocb a; return aio_read(&a);],
4312 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4313                 LIBS=$aio_LIBS])
4314                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4315                 aio_LIBS=$LIBS
4316                 LIBS="$LIBS -lrt"
4317                 AC_TRY_LINK([#include <sys/types.h>
4318 #include <aio.h>],
4319 [ struct aiocb64 a; return aio_read64(&a);],
4320 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4321                 LIBS=$aio_LIBS])
4322                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4323                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4324                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4325                         LIBS="$LIBS -lrt"
4326                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4327                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4328                         LIBS="$LIBS -lrt"
4329                 fi
4331                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4332                         AC_MSG_CHECKING(for aio_read)
4333                         AC_LINK_IFELSE([#include <aio.h>
4334 int main() { struct aiocb a; return aio_read(&a); }],
4335 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4336 [AC_MSG_RESULT(no)])
4338                         AC_MSG_CHECKING(for aio_write)
4339                         AC_LINK_IFELSE([#include <aio.h>
4340 int main() { struct aiocb a; return aio_write(&a); }],
4341 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4342 [AC_MSG_RESULT(no)])
4344                         AC_MSG_CHECKING(for aio_fsync)
4345                         AC_LINK_IFELSE([#include <aio.h>
4346 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4347 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4348 [AC_MSG_RESULT(no)])
4350                         AC_MSG_CHECKING(for aio_return)
4351                         AC_LINK_IFELSE([#include <aio.h>
4352 int main() { struct aiocb a; return aio_return(&a); }],
4353 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4354 [AC_MSG_RESULT(no)])
4356                         AC_MSG_CHECKING(for aio_error)
4357                         AC_LINK_IFELSE([#include <aio.h>
4358 int main() { struct aiocb a; return aio_error(&a); }],
4359 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4360 [AC_MSG_RESULT(no)])
4362                         AC_MSG_CHECKING(for aio_cancel)
4363                         AC_LINK_IFELSE([#include <aio.h>
4364 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4365 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4366 [AC_MSG_RESULT(no)])
4368                         AC_MSG_CHECKING(for aio_suspend)
4369                         AC_LINK_IFELSE([#include <aio.h>
4370 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
4371 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
4372 [AC_MSG_RESULT(no)])
4373                 fi
4375                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4376                         AC_MSG_CHECKING(for aio_read64)
4377                         AC_LINK_IFELSE([#include <aio.h>
4378 int main() { struct aiocb a; return aio_read64(&a); }],
4379 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
4380 [AC_MSG_RESULT(no)])
4382                         AC_MSG_CHECKING(for aio_write64)
4383                         AC_LINK_IFELSE([#include <aio.h>
4384 int main() { struct aiocb a; return aio_write64(&a); }],
4385 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
4386 [AC_MSG_RESULT(no)])
4388                         AC_MSG_CHECKING(for aio_fsync64)
4389                         AC_LINK_IFELSE([#include <aio.h>
4390 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
4391 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
4392 [AC_MSG_RESULT(no)])
4394                         AC_MSG_CHECKING(for aio_return64)
4395                         AC_LINK_IFELSE([#include <aio.h>
4396 int main() { struct aiocb a; return aio_return64(&a); }],
4397 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
4398 [AC_MSG_RESULT(no)])
4400                         AC_MSG_CHECKING(for aio_error64)
4401                         AC_LINK_IFELSE([#include <aio.h>
4402 int main() { struct aiocb a; return aio_error64(&a); }],
4403 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
4404 [AC_MSG_RESULT(no)])
4406                         AC_MSG_CHECKING(for aio_cancel64)
4407                         AC_LINK_IFELSE([#include <aio.h>
4408 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
4409 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
4410 [AC_MSG_RESULT(no)])
4412                         AC_MSG_CHECKING(for aio_suspend64)
4413                         AC_LINK_IFELSE([#include <aio.h>
4414 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
4415 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
4416 [AC_MSG_RESULT(no)])
4417                 fi
4418             ;;
4419         esac
4420         ;;
4421   *)
4422     AC_MSG_RESULT(no)
4423     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
4424     ;;
4425   esac ],
4426   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
4427   AC_MSG_RESULT(no)
4430 #################################################
4431 # check for sendfile support
4433 with_sendfile_support=yes
4434 AC_MSG_CHECKING(whether to check to support sendfile)
4435 AC_ARG_WITH(sendfile-support,
4436 [  --with-sendfile-support Check for sendfile support (default=yes)],
4437 [ case "$withval" in
4438   yes)
4440         AC_MSG_RESULT(yes);
4442         case "$host_os" in
4443         *linux*)
4444                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4445                 AC_TRY_LINK([#include <sys/sendfile.h>],
4447 int tofd, fromfd;
4448 off64_t offset;
4449 size_t total;
4450 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4452 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4454                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4455                 AC_TRY_LINK([#include <sys/sendfile.h>],
4457 int tofd, fromfd;
4458 off_t offset;
4459 size_t total;
4460 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4462 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4464 # Try and cope with broken Linux sendfile....
4465                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4466                 AC_TRY_LINK([\
4467 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4468 #undef _FILE_OFFSET_BITS
4469 #endif
4470 #include <sys/sendfile.h>],
4472 int tofd, fromfd;
4473 off_t offset;
4474 size_t total;
4475 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4477 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4479         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4480                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4481                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4482                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4483         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4484                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4485                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4486                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4487         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4488                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4489                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4490         else
4491                 AC_MSG_RESULT(no);
4492         fi
4494         ;;
4495         *freebsd* | *dragonfly* )
4496                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4497                 AC_TRY_LINK([\
4498 #include <sys/types.h>
4499 #include <unistd.h>
4500 #include <sys/socket.h>
4501 #include <sys/uio.h>],
4503         int fromfd, tofd, ret, total=0;
4504         off_t offset, nwritten;
4505         struct sf_hdtr hdr;
4506         struct iovec hdtrl;
4507         hdr.headers = &hdtrl;
4508         hdr.hdr_cnt = 1;
4509         hdr.trailers = NULL;
4510         hdr.trl_cnt = 0;
4511         hdtrl.iov_base = NULL;
4512         hdtrl.iov_len = 0;
4513         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4515 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4517         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4518                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4519                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4520                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4521         else
4522                 AC_MSG_RESULT(no);
4523         fi
4524         ;;
4526         *hpux*)
4527                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4528                 AC_TRY_LINK([\
4529 #include <sys/socket.h>
4530 #include <sys/uio.h>],
4532         int fromfd, tofd;
4533         size_t total=0;
4534         struct iovec hdtrl[2];
4535         ssize_t nwritten;
4536         off64_t offset;
4538         hdtrl[0].iov_base = 0;
4539         hdtrl[0].iov_len = 0;
4541         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4543 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4544         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4545                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4546                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4547                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4548         else
4549                 AC_MSG_RESULT(no);
4550         fi
4552                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4553                 AC_TRY_LINK([\
4554 #include <sys/socket.h>
4555 #include <sys/uio.h>],
4557         int fromfd, tofd;
4558         size_t total=0;
4559         struct iovec hdtrl[2];
4560         ssize_t nwritten;
4561         off_t offset;
4563         hdtrl[0].iov_base = 0;
4564         hdtrl[0].iov_len = 0;
4566         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4568 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4569         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4570                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4571                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4572                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4573         else
4574                 AC_MSG_RESULT(no);
4575         fi
4576         ;;
4578         *solaris*)
4579                 AC_CHECK_LIB(sendfile,sendfilev)
4580                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4581                 AC_TRY_LINK([\
4582 #include <sys/sendfile.h>],
4584         int sfvcnt;
4585         size_t xferred;
4586         struct sendfilevec vec[2];
4587         ssize_t nwritten;
4588         int tofd;
4590         sfvcnt = 2;
4592         vec[0].sfv_fd = SFV_FD_SELF;
4593         vec[0].sfv_flag = 0;
4594         vec[0].sfv_off = 0;
4595         vec[0].sfv_len = 0;
4597         vec[1].sfv_fd = 0;
4598         vec[1].sfv_flag = 0;
4599         vec[1].sfv_off = 0;
4600         vec[1].sfv_len = 0;
4601         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4603 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4605         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4606                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4607                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4608                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4609         else
4610                 AC_MSG_RESULT(no);
4611         fi
4613                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4614                 AC_TRY_LINK([\
4615 #include <sys/sendfile.h>],
4617         int sfvcnt;
4618         size_t xferred;
4619         struct sendfilevec vec[2];
4620         ssize_t nwritten;
4621         int tofd;
4623         sfvcnt = 2;
4625         vec[0].sfv_fd = SFV_FD_SELF;
4626         vec[0].sfv_flag = 0;
4627         vec[0].sfv_off = 0;
4628         vec[0].sfv_len = 0;
4630         vec[1].sfv_fd = 0;
4631         vec[1].sfv_flag = 0;
4632         vec[1].sfv_off = 0;
4633         vec[1].sfv_len = 0;
4634         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4636 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4638         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4639                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4640                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4641                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4642         else
4643                 AC_MSG_RESULT(no);
4644         fi
4645         ;;
4646         *aix*)
4647                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
4648                 AC_TRY_LINK([\
4649 #include <sys/socket.h>],
4651         int fromfd, tofd;
4652         size_t total=0;
4653         struct sf_parms hdtrl;
4654         ssize_t nwritten;
4655         off64_t offset;
4657         hdtrl.header_data = 0;
4658         hdtrl.header_length = 0;
4659         hdtrl.file_descriptor = fromfd;
4660         hdtrl.file_offset = 0;
4661         hdtrl.file_bytes = 0;
4662         hdtrl.trailer_data = 0;
4663         hdtrl.trailer_length = 0;
4665         nwritten = send_file(&tofd, &hdtrl, 0);
4667 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4668         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4669                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4670                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
4671                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4672         else
4673                 AC_MSG_RESULT(no);
4674         fi
4675         ;;
4676         *)
4677         ;;
4678         esac
4679         ;;
4680   *)
4681     AC_MSG_RESULT(no)
4682     ;;
4683   esac ],
4684   AC_MSG_RESULT(yes)
4688 #################################################
4689 # Check whether winbind is supported on this platform.  If so we need to
4690 # build and install client programs, sbin programs and shared libraries
4692 AC_MSG_CHECKING(whether to build winbind)
4694 # Initially, the value of $host_os decides whether winbind is supported
4696 HAVE_WINBIND=yes
4698 # Define the winbind shared library name and any specific linker flags
4699 # it needs to be built with.
4701 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4702 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4703 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4705 case "$host_os" in
4706         *linux*)
4707                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4708                 ;;
4709         *freebsd[[5-9]]*)
4710                 # FreeBSD winbind client is implemented as a wrapper around
4711                 # the Linux version.
4712                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4713                     nsswitch/winbind_nss_linux.o"
4714                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4715                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4716                 ;;
4717         *irix*)
4718                 # IRIX has differently named shared libraries
4719                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4720                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4721                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4722                 ;;
4723         *solaris*)
4724                 # Solaris winbind client is implemented as a wrapper around
4725                 # the Linux version.
4726                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4727                     nsswitch/winbind_nss_linux.o"
4728                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4729                 ;;
4730         *hpux11*)
4731                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4732                 ;;
4733         *aix*)
4734                 # AIX has even differently named shared libraries.  No
4735                 # WINS support has been implemented yet.
4736                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4737                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4738                 WINBIND_NSS="nsswitch/WINBIND"
4739                 WINBIND_WINS_NSS=""
4740                 ;;
4741         *)
4742                 HAVE_WINBIND=no
4743                 winbind_no_reason=", unsupported on $host_os"
4744                 ;;
4745 esac
4747 AC_SUBST(WINBIND_NSS)
4748 AC_SUBST(WINBIND_WINS_NSS)
4749 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4750 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4751 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4753 # Check the setting of --with-winbind
4755 AC_ARG_WITH(winbind,
4756 [  --with-winbind          Build winbind (default, if supported by OS)],
4758   case "$withval" in
4759         yes)
4760                 HAVE_WINBIND=yes
4761                 ;;
4762         no)
4763                 HAVE_WINBIND=no
4764                 winbind_reason=""
4765                 ;;
4766   esac ],
4769 # We need unix domain sockets for winbind
4771 if test x"$HAVE_WINBIND" = x"yes"; then
4772         if test x"$samba_cv_unixsocket" = x"no"; then
4773                 winbind_no_reason=", no unix domain socket support on $host_os"
4774                 HAVE_WINBIND=no
4775         fi
4778 # Display test results
4780 if test x"$HAVE_WINBIND" = x"yes"; then
4781         AC_MSG_RESULT(yes)
4782         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4784         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4785         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4786         if test $BLDSHARED = true; then
4787                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4789                 if test x"$with_pam" = x"yes"; then
4790                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4791                 fi
4792         fi
4793 else
4794         AC_MSG_RESULT(no$winbind_no_reason)
4797 # Solaris 10 does have new member in nss_XbyY_key
4798 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
4799                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
4800                 [#include <nss_dbdefs.h>])
4802 # Solaris has some extra fields in struct passwd that need to be
4803 # initialised otherwise nscd crashes.  
4805 AC_CHECK_MEMBER(struct passwd.pw_comment,
4806                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4807                 [#include <pwd.h>])
4809 AC_CHECK_MEMBER(struct passwd.pw_age,
4810                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4811                 [#include <pwd.h>])
4813 # AIX 4.3.x and 5.1 do not have as many members in
4814 # struct secmethod_table as AIX 5.2
4815 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
4816        [#include <usersec.h>])
4817 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
4818        [#include <usersec.h>])
4821 #################################################
4822 # Check to see if we should use the included popt 
4824 AC_ARG_WITH(included-popt,
4825 [  --with-included-popt    use bundled popt library, not from system],
4827   case "$withval" in
4828         yes)
4829                 INCLUDED_POPT=yes
4830                 ;;
4831         no)
4832                 INCLUDED_POPT=no
4833                 ;;
4834   esac ],
4836 if test x"$INCLUDED_POPT" != x"yes"; then
4837     AC_CHECK_LIB(popt, poptGetContext,
4838                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4841 AC_MSG_CHECKING(whether to use included popt)
4842 if test x"$INCLUDED_POPT" = x"yes"; then
4843     AC_MSG_RESULT(yes)
4844     BUILD_POPT='$(POPT_OBJS)'
4845         POPTLIBS='$(POPT_OBJS)'
4846     FLAGS1="-I$srcdir/popt"
4847 else
4848     AC_MSG_RESULT(no)
4849         BUILD_POPT=""
4850     POPTLIBS="-lpopt"
4852 AC_SUBST(BUILD_POPT)
4853 AC_SUBST(POPTLIBS)
4854 AC_SUBST(FLAGS1)
4856 #################################################
4857 # Check if the user wants Python
4859 # At the moment, you can use this to set which Python binary to link
4860 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4861 # though they can coexist in different directories.)  In the future
4862 # this might make the Python stuff be built by default.
4864 # Defaulting python breaks the clean target if python isn't installed
4866 PYTHON=
4868 AC_ARG_WITH(python,
4869 [  --with-python=PYTHONNAME  build Python libraries],
4870 [ case "${withval-python}" in
4871   yes)
4872         PYTHON=python
4873         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4874         ;;
4875   no)
4876         PYTHON=
4877         ;;
4878   *)
4879         PYTHON=${withval-python}
4880         ;;
4881   esac ])
4882 AC_SUBST(PYTHON)
4884 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4886         eval MODULE_DEFAULT_$i=STATIC
4887 done
4889 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4891         dnl Fall back to static if we cannot build shared libraries
4892         eval MODULE_DEFAULT_$i=STATIC
4894         if test $BLDSHARED = true; then
4895                 eval MODULE_DEFAULT_$i=SHARED
4896         fi
4897 done
4899 dnl Always built these modules static
4900 MODULE_pdb_guest=STATIC
4901 MODULE_rpc_spoolss=STATIC
4902 MODULE_rpc_srv=STATIC
4903 MODULE_idmap_tdb=STATIC
4905 AC_ARG_WITH(static-modules,
4906 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4907 [ if test $withval; then
4908         for i in `echo $withval | sed -e's/,/ /g'`
4909         do
4910                 eval MODULE_$i=STATIC
4911         done
4912 fi ])
4914 AC_ARG_WITH(shared-modules,
4915 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4916 [ if test $withval; then
4917         for i in `echo $withval | sed -e's/,/ /g'`
4918         do
4919                         eval MODULE_$i=SHARED
4920         done
4921 fi ])
4923 ###########################################################################
4924 ## contributed pdb_modules
4926 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4927                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4928 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4929                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4930 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4931                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4933 ## end of contributed pdb_modules
4934 ###########################################################################
4936 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4937                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4938 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4939 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4940 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4941 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4944 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4945 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4946 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4947 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4948 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
4949 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
4950 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4951 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4952 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4953 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4954 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
4955 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4956 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4957 SMB_MODULE(rpc_unixinfo, \$(RPC_UNIXINFO_OBJ), "bin/librpc_unixinfo.$SHLIBEXT", RPC)
4958 SMB_SUBSYSTEM(RPC,smbd/server.o)
4960 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4961 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4962 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/idmap_rid.$SHLIBEXT", IDMAP)
4963 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/idmap_ad.$SHLIBEXT", IDMAP)
4964 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4966 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4967 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4968 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4969 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4970 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4972 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4973 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4974 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4975 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4976 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4977 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4978 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4979 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4981 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4982 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4983 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4984 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
4985 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4986 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4987 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4988 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4989 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4990 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4991 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4992 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
4993 SMB_MODULE(vfs_catia, \$(VFS_AFSACL_OBJ), "bin/catia.$SHLIBEXT", VFS)
4994 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4996 SMB_MODULE(config_ldap, param/config_ldap.o, "bin/config_ldap.$SHLIBEXT", CONFIG, [ CONFIG_LIBS="$CONFIG_LIBS $LDAP_LIBS" "$SMBLDAP" ])
4997 SMB_SUBSYSTEM(CONFIG, param/modconf.o)
4999 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5001 #################################################
5002 # do extra things if we are running insure
5004 if test "${ac_cv_prog_CC}" = "insure"; then
5005         CPPFLAGS="$CPPFLAGS -D__INSURE__"
5008 #################################################
5009 # Display summary of libraries detected
5011 AC_MSG_RESULT([Using libraries:])
5012 AC_MSG_RESULT([    LIBS = $LIBS])
5013 if test x"$with_ads_support" != x"no"; then
5014    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
5016 if test x"$with_ldap_support" != x"no"; then
5017    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
5019 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
5021 #################################################
5022 # final configure stuff
5024 AC_MSG_CHECKING([configure summary])
5025 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
5026            AC_MSG_RESULT(yes),
5027            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5028            AC_MSG_WARN([cannot run when cross-compiling]))
5030 builddir=`pwd`
5031 AC_SUBST(builddir)
5033 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5034 LIB_REMOVE_USR_LIB(LDFLAGS)
5035 LIB_REMOVE_USR_LIB(LIBS)
5037 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5038 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5039 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5041 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
5043 #################################################
5044 # Print very concise instructions on building/use
5045 if test "x$enable_dmalloc" = xyes
5046 then
5047         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5048         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])