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