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