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