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