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