s3:build: fix typo in definition of --enable-external-libtdb
[Samba.git] / source3 / configure.in
blob2e47cf2e64925b17eb5c16ddb5f5c8c7f37de0dd
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/autoconf/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
23 m4_include(pkg.m4)
25 AC_LIBREPLACE_CC_CHECKS
26 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
28 m4_include(../lib/tevent/libtevent.m4)
30 LIBTEVENT_OBJ0=""
31 for obj in ${TEVENT_OBJ}; do
32         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
33 done
34 AC_SUBST(LIBTEVENT_OBJ0)
35 LIBS="${LIBS} ${TEVENT_LIBS}"
37 SAMBA_CPPFLAGS="-Iinclude/autoconf -Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
43 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
45 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
46 if test "x${srcdir-.}" != "x."; then
47         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
50 dnl Unique-to-Samba variables we'll be playing with.
51 AC_SUBST(SAMBA_CPPFLAGS)
52 AC_SUBST(SHELL)
53 AC_SUBST(LDSHFLAGS)
54 AC_SUBST(SONAMEFLAG)
55 AC_SUBST(SHLD)
56 AC_SUBST(MODULE_EXPORTS)
57 AC_SUBST(DSO_EXPORTS)
58 AC_SUBST(HOST_OS)
59 AC_SUBST(PICFLAG)
60 AC_SUBST(PIE_CFLAGS)
61 AC_SUBST(PIE_LDFLAGS)
62 AC_SUBST(RELRO_LDFLAGS)
63 AC_SUBST(SHLIBEXT)
64 AC_SUBST(INSTALLLIBCMD_SH)
65 AC_SUBST(INSTALLLIBCMD_A)
66 AC_SUBST(UNINSTALLLIBCMD_SH)
67 AC_SUBST(UNINSTALLLIBCMD_A)
69 AC_SUBST(INSTALL_LIBWBCLIENT)
70 AC_SUBST(UNINSTALL_LIBWBCLIENT)
71 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
72 AC_SUBST(LIBWBCLIENT_SHARED)
73 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
74 AC_SUBST(LIBWBCLIENT_STATIC)
75 AC_SUBST(LIBWBCLIENT_SOVER)
76 AC_SUBST(LIBWBCLIENT_FULLVER)
77 AC_SUBST(LIBWBCLIENT)
78 AC_SUBST(LIBWBCLIENT_LIBS)
80 AC_SUBST(LIBSAMBAUTIL_SHARED)
82 AC_SUBST(PRINT_LIBS)
83 AC_SUBST(AUTH_LIBS)
84 AC_SUBST(ACL_LIBS)
85 AC_SUBST(PASSDB_LIBS)
86 AC_SUBST(IDMAP_LIBS)
87 AC_SUBST(KRB5_LIBS)
88 AC_SUBST(UUID_LIBS)
89 AC_SUBST(LDAP_LIBS)
90 AC_SUBST(GPEXT_LIBS)
91 AC_SUBST(PAM_MODULES)
92 AC_SUBST(INSTALL_PAM_MODULES)
93 AC_SUBST(UNINSTALL_PAM_MODULES)
94 AC_SUBST(NSS_MODULES)
95 AC_SUBST(EXTRA_BIN_PROGS)
96 AC_SUBST(CIFSMOUNT_PROGS)
97 AC_SUBST(INSTALL_CIFSMOUNT)
98 AC_SUBST(UNINSTALL_CIFSMOUNT)
99 AC_SUBST(CIFSUMOUNT_PROGS)
100 AC_SUBST(INSTALL_CIFSUMOUNT)
101 AC_SUBST(UNINSTALL_CIFSUMOUNT)
102 AC_SUBST(CIFSUPCALL_PROGS)
103 AC_SUBST(INSTALL_CIFSUPCALL)
104 AC_SUBST(UNINSTALL_CIFSUPCALL)
105 AC_SUBST(EXTRA_SBIN_PROGS)
106 AC_SUBST(EXTRA_ALL_TARGETS)
107 AC_SUBST(CONFIG_LIBS)
108 AC_SUBST(NSCD_LIBS)
110 # compile with optimization and without debugging by default, but
111 # allow people to set their own preference.
112 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
113 # if it has no value.  This prevent *very* large debug binaries from occurring
114 # by default.
115 if test "x$debug" = "xyes" ; then
116         CFLAGS="${CFLAGS} -g"
118 if test "x$CFLAGS" = x; then
119   CFLAGS="-O"
122 m4_include(../lib/socket_wrapper/config.m4)
123 m4_include(../lib/nss_wrapper/config.m4)
125 m4_include(m4/swat.m4)
127 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
129 # Probe the gcc version for extra CFLAGS. We always stash these in
130 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
131 # Makefile edit, avoiding the need to re-run configure.
132 if test x"$ac_cv_prog_gcc" = x"yes" ; then
133         DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
134         # Add -Wdeclaration-after-statement if compiler supports it
135         AC_CACHE_CHECK(
136           [that the C compiler understands -Wdeclaration-after-statement],
137           samba_cv_HAVE_Wdeclaration_after_statement, [
138           AC_TRY_RUN_STRICT([
139             int main(void)
140             {
141                 return 0;
142             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
143             samba_cv_HAVE_Wdeclaration_after_statement=yes,
144             samba_cv_HAVE_Wdeclaration_after_statement=no,
145             samba_cv_HAVE_Wdeclaration_after_statement=cross)
146        ])
148         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
149             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
150         fi
152         #-Werror-implicit-function-declaration
153         AC_CACHE_CHECK(
154           [that the C compiler understands -Werror-implicit-function-declaration],
155           samba_cv_HAVE_Werror_implicit_function_declaration, [
156           AC_TRY_RUN_STRICT([
157             int main(void)
158             {
159                 return 0;
160             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
161             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
162             samba_cv_HAVE_Werror_implicit_function_declaration=no,
163             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
164        ])
165        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
166             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
167        fi
169         # krb5developer is like developer, except we don't get
170         # -Wstrict-prototypes.
171        if test x"$krb5_developer" != x"$yes" ; then
172             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
173        fi
175        if test x"$picky_developer" = x"yes"; then
176             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
177        fi
180 #################################################
181 # check for a shared memory profiling support
182 AC_MSG_CHECKING(whether to use profiling)
183 AC_ARG_WITH(profiling-data,
184 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
185 [ case "$withval" in
186   yes)
187     AC_MSG_RESULT(yes)
188     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
189     samba_cv_WITH_PROFILE=yes
190     ;;
191   *)
192     AC_MSG_RESULT(no)
193     samba_cv_WITH_PROFILE=no
194     ;;
195   esac ],
196   AC_MSG_RESULT(no)
199 dnl Checks for programs.
200 AC_ARG_ENABLE(smbtorture4,
201         [AS_HELP_STRING([--enable-smbtorture4], [Enable building smbtorture4 (default=auto)])])
203 if test x$enable_smbtorture4 != xno; then
204         smbtorture4_possible=yes
205 else
206         smbtorture4_possible=no
209 AC_PROG_INSTALL
210 AC_PROG_AWK
211 # Check for GNU make
212 m4_include(../m4/check_make.m4)
213 AC_SAMBA_GNU_MAKE([true], [true])
215 # Check for perl
216 m4_include(../m4/check_perl.m4)
217 AC_SAMBA_PERL([true], [smbtorture4_possible=no])
219 # Check for python
220 m4_include(../m4/check_python.m4)
221 AC_SAMBA_PYTHON_DEVEL([true], [smbtorture4_possible=no])
223 AC_CHECK_TOOL(AR, ar)
225 dnl Check if we (actually our C compiler!) use GNU ld
226 AC_PROG_LD_GNU
228 dnl Certain versions of GNU ld the default is not to have the
229 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
230 dnl warnings when building modules.
231 if test "$ac_cv_prog_gnu_ld" = "yes"; then
232         ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>&1 < /dev/null | grep "GNU ld"`
233         AC_MSG_CHECKING(GNU ld release date)
234         changequote(,)dnl
235         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'`
236         changequote([,])dnl
237         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
238         if test -n "$ac_cv_gnu_ld_date"; then
239         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
240                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
241         fi
242         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
243                 ac_cv_gnu_ld_version_script=yes
244         fi
245         else
246            AC_MSG_CHECKING(GNU ld release version)
247            changequote(,)dnl
248            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | awk '{print $NF}' | sed -n 's,\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
249            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
250            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
251            changequote([,])dnl
252            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
253            AC_MSG_CHECKING(GNU ld release version major)
254            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
255            AC_MSG_CHECKING(GNU ld release version minor)
256            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
257            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
258              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
259            fi
260            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
261              ac_cv_gnu_ld_version_script=yes
262            fi
263         fi
266 dnl look for executable suffix
267 AC_EXEEXT
269 dnl Check if C compiler understands -c and -o at the same time
270 AC_PROG_CC_C_O
271 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
272       BROKEN_CC=
273 else
274       BROKEN_CC=#
276 AC_SUBST(BROKEN_CC)
278 dnl Check if the C compiler understands -Werror (GNU)
279 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
280  AC_TRY_RUN_STRICT([
281   int main(void)
282   {
283         return 0;
284   }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
285   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
286 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
287    Werror_FLAGS="-Werror"
288 else
289 dnl Check if the C compiler understands -w2
290 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
291  AC_TRY_RUN_STRICT([
292   int main(void)
293   {
294         return 0;
295   }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
296   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
297 if test x"$samba_cv_HAVE_w2" = x"yes"; then
298    Werror_FLAGS="-w2"
299 else
300 dnl Check if the C compiler understands -errwarn (Sun)
301 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
302   AC_TRY_RUN_STRICT([
303    int main(void)
304    {
305         return 0;
306    }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
307    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
308 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
309    Werror_FLAGS="-errwarn=%all"
310 else
311 dnl Check if the C compiler understands -qhalt (IBM)
312 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
313   AC_TRY_RUN_STRICT([
314    int main(void)
315    {
316         return 0;
317    }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
318    samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
319 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
320    Werror_FLAGS="-qhalt=w"
326 ############################################
327 # check if the compiler can handle negative enum values
328 # and don't truncate the values to INT_MAX
329 # a runtime test is needed here
330 AC_SUBST(PIDL_ARGS)
331 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
332     AC_TRY_RUN(
334         #include <stdio.h>
335         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
336         int main(void) {
337                 enum negative_values v1 = NEGATIVE_VALUE;
338                 unsigned v2 = NEGATIVE_VALUE;
340                 if (v1 != 0xFFFFFFFF) {
341                         printf("%u != 0xFFFFFFFF\n", v1);
342                         return 1;
343                 }
344                 if (v2 != 0xFFFFFFFF) {
345                         printf("%u != 0xFFFFFFFF\n", v2);
346                         return 1;
347                 }
349                 return 0;
350         }
352         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv_CC_NEGATIVE_ENUM_VALUES=no)])
353 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
354         AC_MSG_WARN([using --uint-enums for pidl])
355         PIDL_ARGS="$PIDL_ARGS --uint-enums"
358 dnl Figure out the flags to support named structure initializers
360 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
362 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
363 AC_MSG_CHECKING(uname -s)
364 AC_MSG_RESULT(${UNAME_S})
366 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
367 AC_MSG_CHECKING(uname -r)
368 AC_MSG_RESULT(${UNAME_R})
370 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
371 AC_MSG_CHECKING(uname -m)
372 AC_MSG_RESULT(${UNAME_M})
374 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
375 AC_MSG_CHECKING(uname -p)
376 AC_MSG_RESULT(${UNAME_P})
378 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
379 AC_MSG_CHECKING(uname -i)
380 AC_MSG_RESULT(${UNAME_I})
382 dnl Add #include for broken IRIX header files
383   case "$host_os" in
384         *irix6*)
385                 #TODO add to libreplace
386                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
387                         dnl Fix sensible defaults for MIPSPro compilers. The
388                         dnl error numbers are valid for the 7.3 compilers,
389                         dnl hopefully also valid for the 7.4 series.
390                         dnl
391                         dnl Bugzilla 3801. Force an error on warning 1035
392                         dnl so we don't incorrectly detect stdint.h. This
393                         dnl warning is emitted for #error directives.
394                         CFLAGS="$CFLAGS -diag_error 1035"
395                         dnl 1209: Controlling expression is constant
396                         dnl 1174: Function foo declared but never referenced
397                         dnl 3201: Parameter foo was never referenced
398                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
399                 fi
400         ;;
401 esac
403 DYNEXP=
404 AC_SUBST(DYNEXP)
405 LDSHFLAGS_Z_DEFS=
406 AC_SUBST(LDSHFLAGS_Z_DEFS)
407 LDSHFLAGS_Z_NODEFS=
408 AC_SUBST(LDSHFLAGS_Z_NODEFS)
410 dnl Add modules that have to be built by default here
411 dnl These have to be built static:
412 default_static_modules=""
413 default_static_modules="$default_static_modules pdb_smbpasswd"
414 default_static_modules="$default_static_modules pdb_tdbsam"
415 default_static_modules="$default_static_modules pdb_wbc_sam"
416 default_static_modules="$default_static_modules rpc_lsarpc"
417 default_static_modules="$default_static_modules rpc_samr"
418 default_static_modules="$default_static_modules rpc_winreg"
419 default_static_modules="$default_static_modules rpc_initshutdown"
420 default_static_modules="$default_static_modules rpc_dssetup"
421 default_static_modules="$default_static_modules rpc_wkssvc"
422 default_static_modules="$default_static_modules rpc_svcctl"
423 default_static_modules="$default_static_modules rpc_ntsvcs"
424 default_static_modules="$default_static_modules rpc_netlogon"
425 default_static_modules="$default_static_modules rpc_netdfs"
426 default_static_modules="$default_static_modules rpc_srvsvc"
427 default_static_modules="$default_static_modules rpc_spoolss"
428 default_static_modules="$default_static_modules rpc_eventlog"
429 default_static_modules="$default_static_modules auth_sam"
430 default_static_modules="$default_static_modules auth_unix"
431 default_static_modules="$default_static_modules auth_winbind"
432 default_static_modules="$default_static_modules auth_wbc"
433 default_static_modules="$default_static_modules auth_server"
434 default_static_modules="$default_static_modules auth_domain"
435 default_static_modules="$default_static_modules auth_builtin"
436 default_static_modules="$default_static_modules vfs_default"
437 default_static_modules="$default_static_modules nss_info_template"
439 dnl These are preferably build shared, and static if dlopen() is not available
440 default_shared_modules=""
441 default_shared_modules="$default_shared_modules vfs_recycle"
442 default_shared_modules="$default_shared_modules vfs_audit"
443 default_shared_modules="$default_shared_modules vfs_extd_audit"
444 default_shared_modules="$default_shared_modules vfs_full_audit"
445 default_shared_modules="$default_shared_modules vfs_netatalk"
446 default_shared_modules="$default_shared_modules vfs_fake_perms"
447 default_shared_modules="$default_shared_modules vfs_default_quota"
448 default_shared_modules="$default_shared_modules vfs_readonly"
449 default_shared_modules="$default_shared_modules vfs_cap"
450 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
451 default_shared_modules="$default_shared_modules vfs_shadow_copy"
452 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
453 default_shared_modules="$default_shared_modules charset_CP850"
454 default_shared_modules="$default_shared_modules charset_CP437"
455 default_shared_modules="$default_shared_modules auth_script"
456 default_shared_modules="$default_shared_modules vfs_readahead"
457 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
458 default_shared_modules="$default_shared_modules vfs_streams_xattr"
459 default_shared_modules="$default_shared_modules vfs_streams_depot"
460 default_shared_modules="$default_shared_modules vfs_acl_xattr"
461 default_shared_modules="$default_shared_modules vfs_acl_tdb"
462 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
463 default_shared_modules="$default_shared_modules vfs_preopen"
464 default_shared_modules="$default_shared_modules vfs_catia"
465 default_shared_modules="$default_shared_modules vfs_scannedonly"
466 default_shared_modules="$default_shared_modules vfs_crossrename"
467 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
468 default_shared_modules="$default_shared_modules vfs_time_audit"
469 default_shared_modules="$default_shared_modules idmap_autorid"
471 if test "x$developer" = xyes; then
472    default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
473    default_static_modules="$default_static_modules auth_netlogond"
474    default_shared_modules="$default_shared_modules charset_weird perfcount_test"
478 # Config CPPFLAG settings for strange OS's that must be set
479 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
480 # case statement; its first reference must be unconditional.
482 case "$host_os" in
483     *hpux*)
485 # Defines needed for HPUX support.
486 # HPUX has bigcrypt but (sometimes?) doesn't use it for
487 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
489       case `uname -r` in
490                 *9*|*10*|*11)
491                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
492                 ;;
493       esac
494       ;;
497 # CRAY Unicos has broken const handling
498        *unicos*)
499           AC_MSG_RESULT([disabling const])
500           CPPFLAGS="$CPPFLAGS -Dconst="
501           ;;
502         
504 # AIX4.x doesn't even admit to having large
505 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
507     *aix4*)
508           AC_MSG_RESULT([enabling large file support])
509       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
510           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
511       ;;
513 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
514 # to the existance of large files..
515 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
516 # recommendations on large file support, however it makes the
517 # compile work using gcc 2.7 and 2.8, whereas using the Sun
518 # recommendation makes the compile fail on gcc2.7. JRA.
520 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
522         *solaris*)
523                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
524                 case `uname -r` in
525                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
526                                 AC_MSG_RESULT([no large file support])
527                                 ;;
528                         5.*)
529                         LDFLAGS="$LDFLAGS -lthread"
530                         CPPFLAGS="$CPPFLAGS -D_REENTRANT"
531                         AC_MSG_RESULT([enabling large file support])
532                         if test "$ac_cv_prog_gcc" = yes; then
533                                 ${CC-cc} -v >conftest.c 2>&1
534                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
535                                 rm -fr conftest.c
536                                 case "$ac_cv_gcc_compiler_version_number" in
537                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
538                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
539                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
540                                                 ;;
541                                         *)
542                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
543                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
544                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
545                                                 ;;
546                                 esac
547                         else
548                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
549                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
550                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
551                         fi
552                         ;;
553                 esac
554                 ;;
556 # IRIX uses SYSV printing.  Make sure to set that here
558         *irix*)
559                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
560                 ;;
561         *freebsd*|*dragonfly*)
562                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
563                 ;;
565 # VOS may need to have POSIX support and System V compatibility enabled.
567     *vos*)
568     case "$CPPFLAGS" in
569           *-D_POSIX_C_SOURCE*)
570                 ;;
571           *)
572                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
573                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
574                 ;;
575     esac
576     case "$CPPFLAGS" in
577           *-D_SYSV*|*-D_SVID_SOURCE*)
578                 ;;
579           *)
580                 CPPFLAGS="$CPPFLAGS -D_SYSV"
581                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
582     esac
583     ;;
585 # Tests needed for SINIX large file support.
587     *sysv4*)
588       if test $host = mips-sni-sysv4 ; then
589         AC_MSG_CHECKING([for LFS support])
590         old_CPPFLAGS="$CPPFLAGS"
591         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
592         AC_TRY_RUN([
593 #include <unistd.h>
594 main () {
595 #if _LFS64_LARGEFILE == 1
596 exit(0);
597 #else
598 exit(1);
599 #endif
600 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
601         CPPFLAGS="$old_CPPFLAGS"
602         if test x$SINIX_LFS_SUPPORT = xyes ; then
603           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
604                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
605           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
606           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
607           LIBS="`getconf LFS64_LIBS` $LIBS"
608         fi
609       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
610       fi
611     ;;
613 # Systems with LFS support.
615     gnu* | k*bsd*-gnu | kopensolaris*-gnu)
616         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
617         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
618         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
619         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
620         ;;
622 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
624     *linux*)
625         AC_MSG_CHECKING([for LFS support])
626         old_CPPFLAGS="$CPPFLAGS"
627         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
628        AC_TRY_RUN([
629 #include <unistd.h>
630 #include <sys/utsname.h>
631 #include <string.h>
632 #include <stdlib.h>
633 main() {
634 #if _LFS64_LARGEFILE == 1
635        struct utsname uts;
636        char *release;
637        int major, minor;
639        /* Ensure this is glibc 2.2 or higher */
640 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
641        int libc_major = __GLIBC__;
642        int libc_minor = __GLIBC_MINOR__;
644        if (libc_major < 2)
645               exit(1);
646        if (libc_minor < 2)
647               exit(1);
648 #endif
650        /* Ensure this is kernel 2.4 or higher */
652        uname(&uts);
653        release = strdup(uts.release);
654        major = atoi(strsep(&release, "."));
655        minor = atoi(strsep(&release, "."));
657        if (major > 2 || (major == 2 && minor > 3))
658                exit(0);
659        exit(1);
660 #else
661        exit(1);
662 #endif
664 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
665         CPPFLAGS="$old_CPPFLAGS"
666         if test x$LINUX_LFS_SUPPORT = xyes ; then
667                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
668                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
669                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
670                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
671         fi
672         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
673         ;;
676 # MacOS X is the *only* system that uses compose character in utf8. This
677 # is so horribly broken....
679     *darwin*)
680         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
682 # Add a system specific charset module.
683         default_shared_modules="$default_shared_modules charset_macosxfs"
685         ;;
686     *hurd*)
687         AC_MSG_CHECKING([for LFS support])
688         old_CPPFLAGS="$CPPFLAGS"
689         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
690         AC_TRY_RUN([
691 #include <unistd.h>
692 main () {
693 #if _LFS64_LARGEFILE == 1
694 exit(0);
695 #else
696 exit(1);
697 #endif
698 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
699         CPPFLAGS="$old_CPPFLAGS"
700         if test x$GLIBC_LFS_SUPPORT = xyes ; then
701           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
702                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
703           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
704         fi
705       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
706     ;;
707     *qnx*)
708         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
709         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
710         ;;
712 esac
714 SAVE_CPPFLAGS="${CPPFLAGS}"
715 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
717 AC_LIBREPLACE_BROKEN_CHECKS
718 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
719 AC_LIBREPLACE_NETWORK_CHECKS
721 CPPFLAGS="${SAVE_CPPFLAGS}"
723 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
725 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
726 AC_SUBST(LIBREPLACE_OBJS)
728 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
729 AC_SUBST(LIBREPLACE_LIBS)
732 # add -ldl to the global LIBS
733 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
734 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
737 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
738 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
739 AC_CHECK_HEADERS(limits.h float.h libintl.h)
740 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
741 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h)
742 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
743 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
744 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
745 AC_CHECK_HEADERS(sys/sysmacros.h)
746 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
747 AC_CHECK_HEADERS(langinfo.h locale.h)
748 AC_CHECK_HEADERS(xfs/libxfs.h)
749 AC_CHECK_HEADERS(netgroup.h)
750 AC_CHECK_HEADERS(linux/falloc.h)
752 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
753 #if HAVE_RPC_RPC_H
754 #include <rpc/rpc.h>
755 #endif
758 ## These fail to compile on IRIX so just check for their presence
759 AC_CHECK_HEADERS(sys/mode.h,,,)
761 # Look for Darwin headers
762 old_CPPFLAGS="$CPPFLAGS"
763 CPPFLAGS="-Iinclude $CPPFLAGS"
764 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
765 CPPFLAGS="$old_CPPFLAGS"
767 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
768 # subdirectory of headers.
769 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
771 if test x"$enable_developer" = x"yes" ; then
772    if test x"$ac_cv_header_valgrind_h" = xyes -o \
773            x"$ac_cv_header_valgrind_valgrind_h" = xyes ; then
774       AC_DEFINE(VALGRIND,1,[Whether we have valgrind headers])
775    fi
779 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
780 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
782 case "$host_os" in
783     *hpux*)
784                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
785                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
786                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
787                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
788                 fi
789         ;;
790 esac
791 AC_CHECK_HEADERS(shadow.h)
792 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
793 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
795 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
796 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
798 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
800 # For experimental utmp support (lastlog on some BSD-like systems)
801 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
803 AC_CHECK_SIZEOF(int,cross)
804 AC_CHECK_SIZEOF(long,cross)
805 AC_CHECK_SIZEOF(long long,cross)
806 AC_CHECK_SIZEOF(short,cross)
808 AC_C_CONST
809 AC_C_INLINE
810 AC_C_BIGENDIAN
811 AC_C_CHAR_UNSIGNED
813 AC_TYPE_SIGNAL
814 AC_TYPE_UID_T
815 AC_TYPE_MODE_T
816 AC_TYPE_OFF_T
817 AC_TYPE_SIZE_T
818 AC_TYPE_PID_T
819 AC_STRUCT_ST_RDEV
820 AC_DIRENT_D_OFF
821 AC_CHECK_TYPE(ssize_t, int)
822 AC_CHECK_TYPE(wchar_t, unsigned short)
824 ############################################
825 # for cups support we need libcups, and a handful of header files
827 AC_ARG_ENABLE(cups,
828 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
830 if test x$enable_cups != xno; then
831         AC_PATH_PROG(CUPS_CONFIG, cups-config)
833         if test "x$CUPS_CONFIG" != x; then
835                 ac_save_LDFLAGS=$LDFLAGS
836                 ac_save_PRINT_LIBS=$PRINT_LIBS
837                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
839                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
840                         x"$ac_cv_header_cups_language_h" = xyes; then
841                         # try linking with -lcups alone first. That should work unless libcups is
842                         # underlinked. With cups-config --libs we pull in unwanted and unneeded
843                         # dendencies including thread libraries - use cups-config only if really
844                         # required. 
845                         AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
846                                 [PRINT_LIBS="$ac_save_PRINT_LIBS -lcups"],
847                                 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
848                                  PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
850                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
851                         samba_cv_HAVE_CUPS=yes
852                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
853                 else
854                         AC_MSG_WARN([cups-config around but cups-devel not installed])
855                         CFLAGS=$ac_save_CFLAGS
856                         LDFLAGS=$ac_save_LDFLAGS
857                         PRINT_LIBS=$ac_save_PRINT_LIBS
858                 fi
860         elif test x"$enable_cups" = x"yes"; then
861                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
862         fi
865 AC_ARG_ENABLE(iprint,
866 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
868 if test x$enable_iprint != xno; then
869         if test x"$samba_cv_HAVE_CUPS" = xyes; then
870                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
871         elif test x"$enable_iprint" = x"yes"; then
872                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
873         fi
876 ############################################
877 # check if the compiler will optimize out function calls
878 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
879     AC_TRY_LINK([
880 #include <stdio.h>],
882                 if (0) {
883                    this_function_does_not_exist();
884                 } else {
885                   return 1;
886                 }
889         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
890 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
891    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
894 #############################################
895 # check for fd passing struct via msg_control
896 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
897     AC_TRY_COMPILE([
898 #include <sys/types.h>
899 #include <stdlib.h>
900 #include <stddef.h>
901 #include <sys/socket.h>
902 #include <sys/un.h>],
904         struct msghdr msg;
905         union {
906               struct cmsghdr cm;
907               char control[CMSG_SPACE(sizeof(int))];
908         } control_un;
909         msg.msg_control = control_un.control;
910         msg.msg_controllen = sizeof(control_un.control);
912         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
913 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
914    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
915              [If we can use msg_control for passing file descriptors])
918 #############################################
919 # check for fd passing struct via msg_acctrights
920 AC_CACHE_CHECK([for fd passing via msg_acctrights],
921                 samba_cv_msghdr_msg_acctrights, [
922     AC_TRY_COMPILE([
923 #include <sys/types.h>
924 #include <stdlib.h>
925 #include <stddef.h>
926 #include <sys/socket.h>
927 #include <sys/un.h>],
929         struct msghdr msg;
930         int fd;
931         msg.msg_acctrights = (caddr_t) &fd;
932         msg.msg_acctrightslen = sizeof(fd);
934         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
935 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
936    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
937              [If we can use msg_acctrights for passing file descriptors])
940 AC_CHECK_FUNCS(dirfd)
941 if test x"$ac_cv_func_dirfd" = x"yes"; then
942         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
945 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
946     AC_TRY_COMPILE([
947 #include <sys/types.h>
948 #if STDC_HEADERS
949 #include <stdlib.h>
950 #include <stddef.h>
951 #endif
952 #include <signal.h>],[struct sigevent s;],
953         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
954 if test x"$samba_cv_struct_sigevent" = x"yes"; then
955    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
956    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
957         [#include <signal.h>])
960 # and glibc has setresuid under linux but the function does
961 # nothing until kernel 2.1.44! very dumb.
962 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
963     AC_TRY_RUN([#include <errno.h>
964 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
965         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
966 if test x"$samba_cv_have_setresuid" = x"yes"; then
967     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
970 # Do the same check for setresguid...
972 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
973     AC_TRY_RUN([#include <unistd.h>
974 #include <errno.h>
975 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
976         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
977 if test x"$samba_cv_have_setresgid" = x"yes"; then
978     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
981 AC_FUNC_MEMCMP
983 ###############################################
984 # Readline included by default unless explicitly asked not to
985 test "${with_readline+set}" != "set" && with_readline=yes
987 # test for where we get readline() from
988 AC_MSG_CHECKING(whether to use readline)
989 AC_ARG_WITH(readline,
990 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
991 [  case "$with_readline" in
992   yes)
993     AC_MSG_RESULT(yes)
995     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
996     AC_CHECK_HEADERS(readline/history.h)
998     AC_CHECK_HEADERS(readline.h readline/readline.h,[
999       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1000        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1001       done
1002       AC_CHECK_LIB(readline, rl_callback_handler_install,
1003        [TERMLIBS="-lreadline $TERMLIBS"
1004        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1005        break], [TERMLIBS=], $TERMLIBS)])
1006     ;;
1007   no)
1008     AC_MSG_RESULT(no)
1009     ;;
1010   *)
1011     AC_MSG_RESULT(yes)
1013     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1014     # alternate readline path
1015     _ldflags=${LDFLAGS}
1016     _cppflags=${CPPFLAGS}
1018     # Add additional search path
1019     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1020     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1022     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1023     AC_CHECK_HEADERS(readline/history.h)
1025     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1026       for termlib in ncurses curses termcap terminfo termlib; do
1027        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1028       done
1029       AC_CHECK_LIB(readline, rl_callback_handler_install,
1030        [TERMLDFLAGS="-L$with_readline/lib"
1031        TERMCPPFLAGS="-I$with_readline/include"
1032        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1033        TERMLIBS="-lreadline $TERMLIBS"
1034        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1035        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1037     LDFLAGS=$_ldflags
1038     ;;
1039   esac],
1040   AC_MSG_RESULT(no)
1042 AC_SUBST(TERMLIBS)
1043 AC_SUBST(TERMLDFLAGS)
1045 # The readline API changed slightly from readline3 to readline4, so
1046 # code will generate warnings on one of them unless we have a few
1047 # special cases.
1048 AC_CHECK_LIB(readline, rl_completion_matches,
1049              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1050                         [Do we have rl_completion_matches?])],
1051              [],
1052              [$TERMLIBS])
1054 # not all readline libs have rl_event_hook or history_list
1055 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1056 AC_CHECK_LIB(readline, history_list,
1057              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1058              [],
1059              [$TERMLIBS])
1061 ###############################################
1062 # test for where we get yp_get_default_domain() from
1063 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1064 AC_CHECK_FUNCS(yp_get_default_domain)
1066 # Check if we have execl, if not we need to compile smbrun.
1067 AC_CHECK_FUNCS(execl)
1068 if test x"$ac_cv_func_execl" = x"no"; then
1069     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1072 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1073 AC_CHECK_FUNCS(strtol)
1074 AC_CHECK_FUNCS(strchr chflags)
1075 AC_CHECK_FUNCS(getrlimit fsync setpgid)
1076 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
1077 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1078 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1079 AC_CHECK_FUNCS(initgroups select rdchk getgrnam getgrent pathconf)
1080 AC_CHECK_FUNCS(getgrset)
1081 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1082 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1083 AC_CHECK_FUNCS(fallocate fallocate64)
1084 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1085 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1086 AC_CHECK_FUNCS(fdopendir fdopendir64)
1087 AC_CHECK_FUNCS(getpwent_r)
1088 AC_CHECK_FUNCS(getdents64)
1089 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1090 AC_CHECK_FUNCS(syslog vsyslog timegm)
1091 AC_CHECK_FUNCS(setlocale nl_langinfo)
1092 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1093 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1094 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1095 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1096 AC_CHECK_HEADERS(sys/mman.h)
1097 # setbuffer, shmget, shm_open are needed for smbtorture
1098 AC_CHECK_FUNCS(shmget shm_open)
1099 AC_CHECK_FUNCS(gettext dgettext)
1100 AC_CHECK_FUNCS(bindtextdomain textdomain)
1101 AC_CHECK_FUNCS(strupr)
1103 # Find a method of generating a stack trace
1104 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1105 # libexecinfo provides backtrace_symbols on FreeBSD
1106 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1107 AC_CHECK_FUNCS(backtrace_symbols)
1108 AC_CHECK_LIB(exc, trace_back_stack)
1110 # check for sysctlbyname for BSD systems
1111 AC_CHECK_FUNCS(sysctlbyname)
1113 #################################################
1114 # Check to see if core dump directory is defined in linux
1115 # with /proc/sys/kernel/core_pattern
1117 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
1118         AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
1119         [Whether Linux kernel uses core_pattern for core files]),
1120          [])
1122 #############################
1123 # check if building with gpfs
1124 AC_CHECK_HEADERS(gpfs_gpl.h)
1125 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1126     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1127     default_shared_modules="$default_shared_modules vfs_gpfs"
1128     default_shared_modules="$default_shared_modules vfs_gpfs_hsm_notify"
1131 #############################################
1132 # check if building on Isilon OneFS
1133 printf "%s" "checking for Isilon OneFS... "
1134 save_LIBS="$LIBS"
1135 LIBS="$LIBS -lisi_version"
1136 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1137           [get_isilon_copyright()],
1138           samba_cv_HAVE_ONEFS=yes,
1139           samba_cv_HAVE_ONEFS=no)
1140 echo $samba_cv_HAVE_ONEFS
1141 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1142     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1143     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1144     default_static_modules="$default_static_modules"
1145     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1146     # Need to also add general libs for oplocks support
1147     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1149 AC_SUBST(ONEFS_LIBS)
1150 LIBS="$save_LIBS"
1152 # Note that all the libunwind symbols in the API are defined to internal
1153 # platform-specific version, so we must include libunwind.h before checking
1154 # any of them.
1155 AC_MSG_CHECKING([for libunwind])
1156 save_LIBS=$LIBS
1158 UNWIND_ARCH="unknown"
1159 if test x"$UNAME_I" != x"unknown"; then
1160         UNWIND_ARCH="$UNAME_I"
1161 elif test x"$UNAME_M" != x"unknown"; then
1162         UNWIND_ARCH="$UNAME_M"
1163 elif test x"$UNAME_P" != x"unknown"; then
1164         UNWIND_ARCH="$UNAME_P"
1167 case "$UNWIND_ARCH" in
1168         unknown)
1169                 # This probably won't link without
1170                 # the platform-specific libunwind.
1171                 LIBS="$LIBS -lunwind"
1172                 ;;
1173         i386|i586|i686)
1174                 # Add the platform-specific libunwind module.
1175                 LIBS="$LIBS -lunwind -lunwind-x86"
1176                 ;;
1177         *)
1178                 # Add the platform-specific libunwind module.
1179                 # based on uname -i, uname -m or uname -p
1180                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1181                 ;;
1182 esac
1184 AC_TRY_LINK(
1185     [
1186 #ifdef HAVE_LIBUNWIND_H
1187 #include <libunwind.h>
1188 #endif
1189     ],
1190     [
1191         unw_context_t ctx; unw_cursor_t cur;
1192         char buf[256]; unw_word_t off;
1193         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1194         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1195     ],
1196     [
1197         AC_MSG_RESULT(yes)
1198         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1200         # If we have libunwind, test whether we also have libunwind-ptrace
1201         # which would let us unwind arbitrary processes.
1202         save_LIBS=$LIBS
1203         AC_CHECK_HEADERS(libunwind-ptrace.h)
1204         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1205             [
1206                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1207                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1208                     [Whether libunwind-ptrace.a is available.])
1209             ],
1210             [ LIBUNWIND_PTRACE="" ])
1212         LIBS=$save_LIBS
1213     ],
1214     [
1215         AC_MSG_RESULT(no)
1216         LIBS=$save_LIBS
1217     ])
1219 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1220 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1221     AC_CHECK_HEADERS(sys/ptrace.h)
1222     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1223     AC_TRY_LINK(
1224             [
1225 #if HAVE_SYS_TYPES_H
1226 #include <sys/types.h>
1227 #endif
1228 #if HAVE_SYS_PTRACE_H
1229 #include <sys/ptrace.h>
1230 #endif
1231             ],
1232             [
1233                 pid_t me = (pid_t)-1;
1234                 ptrace(PTRACE_ATTACH, me, 0, 0);
1235                 ptrace(PTRACE_DETACH, me, 0, 0);
1236                 return 0;
1237             ],
1238             [
1239                 AC_MSG_RESULT(yes)
1240                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1241                     [Whether the Linux ptrace(2) interface is available.])
1242             ],
1243             [
1244                 AC_MSG_RESULT(no)
1245                 LIBUNWIND_PTRACE=""
1246             ])
1249 AC_SUBST(LIBUNWIND_PTRACE)
1251 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1252 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1253 AC_CHECK_FUNCS(__getcwd _getcwd)
1254 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1255 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1256 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1257 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1258 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1259 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1260 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1261 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1262 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1263 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1264 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1265 AC_CHECK_FUNCS(prctl)
1267 AC_TRY_COMPILE([
1268 #ifdef HAVE_SYS_PRCTL_H
1269 #include <sys/prctl.h>
1270 #endif
1272 [int i; i = prtcl(0); ],
1273 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1278 case "$host_os" in
1279     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1280        # glibc <= 2.3.2 has a broken getgrouplist
1281        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1282 #include <unistd.h>
1283 #include <sys/utsname.h>
1284 main() {
1285        /* glibc up to 2.3 has a broken getgrouplist */
1286 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1287        int libc_major = __GLIBC__;
1288        int libc_minor = __GLIBC_MINOR__;
1290        if (libc_major < 2)
1291               exit(1);
1292        if ((libc_major == 2) && (libc_minor <= 3))
1293               exit(1);
1294 #endif
1295        exit(0);
1297 ], [samba_cv_linux_getgrouplist_ok=yes],
1298    [samba_cv_linux_getgrouplist_ok=no],
1299    [samba_cv_linux_getgrouplist_ok=cross])])
1300        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1301           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1302        fi
1303        ;;
1304     *)
1305        AC_CHECK_FUNCS(getgrouplist)
1306        ;;
1307 esac
1310 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1313 if test x$ac_cv_func_stat64 = xno ; then
1314   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1315   AC_TRY_LINK([
1316 #if defined(HAVE_UNISTD_H)
1317 #include <unistd.h>
1318 #endif
1319 #include <sys/stat.h>
1320 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1321   AC_MSG_RESULT([$ac_cv_func_stat64])
1322   if test x$ac_cv_func_stat64 = xyes ; then
1323     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1324   fi
1327 if test x$ac_cv_func_lstat64 = xno ; then
1328   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1329   AC_TRY_LINK([
1330 #if defined(HAVE_UNISTD_H)
1331 #include <unistd.h>
1332 #endif
1333 #include <sys/stat.h>
1334 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1335   AC_MSG_RESULT([$ac_cv_func_lstat64])
1336   if test x$ac_cv_func_lstat64 = xyes ; then
1337     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1338   fi
1341 if test x$ac_cv_func_fstat64 = xno ; then
1342   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1343   AC_TRY_LINK([
1344 #if defined(HAVE_UNISTD_H)
1345 #include <unistd.h>
1346 #endif
1347 #include <sys/stat.h>
1348 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1349   AC_MSG_RESULT([$ac_cv_func_fstat64])
1350   if test x$ac_cv_func_fstat64 = xyes ; then
1351     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1352   fi
1355 #################################################
1356 # Check whether struct stat has timestamps with sub-second resolution.
1359 samba_cv_stat_hires=no
1360 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1361         [samba_cv_stat_hires=yes])
1362 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1363         [samba_cv_stat_hires=yes])
1364 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1365         [samba_cv_stat_hires=yes])
1366 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1367         [samba_cv_stat_hires=yes])
1368 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1369         [samba_cv_stat_hires=yes])
1371 if test x"$samba_cv_stat_hires" = x"yes" ; then
1372     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1373             [whether struct stat has sub-second timestamps])
1376 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1377 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1378 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1381 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1382     [
1383         AC_TRY_COMPILE(
1384             [#include <sys/stat.h>],
1385             [
1386                 int a = UF_DOS_ARCHIVE;
1387                 int h = UF_DOS_HIDDEN;
1388                 int r = UF_DOS_RO;
1389                 int s = UF_DOS_SYSTEM;
1390                 int i = UF_DOS_NOINDEX;
1391                 int f = UF_DOS_FLAGS;
1392             ],
1393             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1394     ])
1396 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1397     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1400 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1401                samba_cv_function_attribute_destructor,
1402                [
1403                  AC_COMPILE_IFELSE(
1404                         [
1405                                 __attribute__((destructor))
1406                                 static void cleanup(void) { }
1407                         ],
1408                         samba_cv_function_attribute_destructor=yes)
1409                 ])
1411 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1412    AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1413              [whether we can compile with __attribute__((destructor))])
1416 #####################################
1417 # needed for SRV lookups
1418 AC_CHECK_LIB(resolv, dn_expand)
1419 AC_CHECK_LIB(resolv, _dn_expand)
1420 AC_CHECK_LIB(resolv, __dn_expand)
1422 AC_TRY_COMPILE([#include <resolv.h>],
1423                [struct __res_state s; res_ninit(&s);],
1424                ac_cv_have_res_ninit=yes,ac_cv_have_res_ninit=no)
1426 if test x"$ac_cv_have_res_ninit" = x"yes"; then
1427         AC_DEFINE(HAVE_RES_NINIT, 1, [Whether we have res_ninit])
1431 # Check for the functions putprpwnam, set_auth_parameters,
1432 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1433 # Needed for OSF1 and HPUX.
1436 AC_LIBTESTFUNC(security, putprpwnam)
1437 AC_LIBTESTFUNC(sec, putprpwnam)
1439 AC_LIBTESTFUNC(security, set_auth_parameters)
1440 AC_LIBTESTFUNC(sec, set_auth_parameters)
1442 # UnixWare 7.x has its getspnam in -lgen
1443 AC_LIBTESTFUNC(gen, getspnam)
1445 AC_LIBTESTFUNC(security, getspnam)
1446 AC_LIBTESTFUNC(sec, getspnam)
1448 AC_LIBTESTFUNC(security, bigcrypt)
1449 AC_LIBTESTFUNC(sec, bigcrypt)
1451 AC_LIBTESTFUNC(security, getprpwnam)
1452 AC_LIBTESTFUNC(sec, getprpwnam)
1454 AC_CHECK_FUNCS(strsignal)
1456 ############################################
1457 # Check for EA implementations
1458 case "$host_os" in
1459   *osf*)
1460         AC_SEARCH_LIBS(getproplist, [proplist])
1461         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1462         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1463         AC_CHECK_FUNCS(sizeof_proplist_entry)
1464   ;;
1465   *freebsd4* | *dragonfly* )
1466         AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1467   ;;
1468   *solaris*)
1469         AC_CHECK_FUNCS(attropen)
1470   ;;
1471   *)
1472         AC_SEARCH_LIBS(getxattr, [attr])
1473         AC_CHECK_FUNCS(getxattr,[
1474                 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1475                 ])
1476         AC_CHECK_FUNCS(getea,[
1477                 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1478                 ])
1479         AC_CHECK_FUNCS(attr_get,[
1480                 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1481                 ])
1482         AC_CHECK_FUNCS(extattr_delete_file,[
1483                 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_link extattr_get_fd extattr_get_file extattr_get_link extattr_list_fd extattr_list_file extattr_list_link extattr_set_fd extattr_set_file extattr_set_link)
1484                 ])
1485   ;;
1486 esac
1488 ########################################################
1489 # Do xattr functions take additional options like on Darwin?
1490 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1491         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1492                 old_LIBS=$LIBS
1493                 LIBS="$LIBS $ACL_LIBS"
1494                 AC_TRY_COMPILE([
1495                         #include <sys/types.h>
1496                         #if HAVE_ATTR_XATTR_H
1497                         #include <attr/xattr.h>
1498                         #elif HAVE_SYS_XATTR_H
1499                         #include <sys/xattr.h>
1500                         #endif
1501                 ],[
1502                         getxattr(0, 0, 0, 0, 0, 0);
1503                 ],
1504                 [smb_attr_cv_xattr_add_opt=yes],
1505                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1506         ])
1507         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1508                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1509         fi
1512 AC_DISABLE_STATIC
1513 AC_ENABLE_SHARED
1515 # Set defaults
1516 PIE_CFLAGS=""
1517 PIE_LDFLAGS=""
1518 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1520 if test "x$enable_pie" != xno
1521 then
1522         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1523         [
1524                 cat > conftest.c <<EOF
1525 int foo;
1526 int main () { return 0;}
1528                 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1529                 then
1530                         samba_cv_fpie=yes
1531                 else
1532                         samba_cv_fpie=no
1533                 fi
1534                 rm -f conftest*
1535         ])
1536         if test x"${samba_cv_fpie}" = x"yes"
1537         then
1538                 PIE_CFLAGS="-fPIE"
1539                 PIE_LDFLAGS="-pie"
1540         fi
1543 # Set defaults
1544 RELRO_LDFLAGS=""
1545 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1547 if test "x$enable_relro" != xno
1548 then
1549         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1550         [
1551                 cat > conftest.c <<EOF
1552 int foo;
1553 main () { return 0;}
1555                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1556                 then
1557                         samba_cv_relro=yes
1558                 else
1559                         samba_cv_relro=no
1560                 fi
1561                 rm -f conftest*
1562         ])
1563         if test x"${samba_cv_relro}" = x"yes"
1564         then
1565                 RELRO_LDFLAGS="-Wl,-z,relro"
1566         fi
1569 # Set defaults
1570 SYMSEXT="syms"
1571 AC_SUBST(SYMSEXT)
1573 # Assume non-shared by default and override below
1574 BLDSHARED="false"
1576 # these are the defaults, good for lots of systems
1577 HOST_OS="$host_os"
1578 LDSHFLAGS="-shared"
1579 MODULE_EXPORTS=""
1580 SONAMEFLAG="#"
1581 SHLD="\${CC} \${CFLAGS}"
1582 PICFLAG="${PIE_CFLAGS}"
1583 SHLIBEXT="so"
1584 DSO_EXPORTS=""
1586 # this bit needs to be modified for each OS that supports share libs
1587 # You need to specify how to create a shared library and
1588   # how to compile C code to produce PIC object files
1590   AC_MSG_CHECKING([ability to build shared libraries])
1592   # and these are for particular systems
1593   case "$host_os" in
1594                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1595                         case "$host_os" in
1596                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1597                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1598                         esac
1599                         BLDSHARED="true"
1600                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1601                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1602                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1603                         fi
1604                         DYNEXP="-Wl,--export-dynamic"
1605                         PICFLAG="-fPIC"
1606                         SONAMEFLAG="-Wl,-soname="
1607                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1608                         ;;
1609                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1610                         BLDSHARED="true"
1611                         if test "${GCC}" = "yes"; then
1612                                 PICFLAG="-fPIC"
1613                                 SONAMEFLAG="-Wl,-soname="
1614                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1615                                         DYNEXP="-Wl,-E"
1616                                 fi
1617                                 LDSHFLAGS="-shared"
1618                         else
1619                                 PICFLAG="-KPIC"
1620                                 LDSHFLAGS="-G"
1621                         fi
1622                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1623                                 SONAMEFLAG="-Wl,-soname="
1624                         else
1625                                 SONAMEFLAG="-Wl,-h,"
1626                         fi
1627                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1628                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1629                         ;;
1630                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1631                         BLDSHARED="true"
1632                         LDSHFLAGS="-G"
1633                         SONAMEFLAG="-Wl,-h,"
1634                         PICFLAG="-KPIC"   # Is this correct for SunOS
1635                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1636                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1637                         ;;
1638                 *netbsd* | *freebsd* | *dragonfly* )
1639                         BLDSHARED="true"
1640                         LDSHFLAGS="-shared"
1641                         DYNEXP="-Wl,--export-dynamic"
1642                         SONAMEFLAG="-Wl,-soname,"
1643                         PICFLAG="-fPIC -DPIC"
1644                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1645                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1646                         ;;
1647                 *openbsd*)  BLDSHARED="true"
1648                         LDSHFLAGS="-shared"
1649                         DYNEXP="-Wl,-Bdynamic"
1650                         SONAMEFLAG="-Wl,-soname,"
1651                         PICFLAG="-fPIC"
1652                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1653                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1654                         ;;
1655                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1656                         case "$host_os" in
1657                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1658                         ;;
1659                         esac
1660                         BLDSHARED="true"
1661                         LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1662                         SONAMEFLAG="-Wl,-soname,"
1663                         if test "${GCC}" = "yes"; then
1664                                 PICFLAG="-fPIC"
1665                         else
1666                                 PICFLAG="-KPIC"
1667                         fi
1668                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1669                         ;;
1670                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1671                         BLDSHARED="true"
1672                         # use expfull to export underscored symbols
1673                         # add rtl to remove /lib/crt0.o warning
1674                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1675                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1676                         PICFLAG="-O2"
1677                         # as AIX code is always position independent...
1678                         # .po will just create compile warnings, use po.o:
1679                         if test "${GCC}" != "yes"; then
1680                                 ## for funky AIX compiler using strncpy()
1681                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1682                         fi
1684                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1685                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1686                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1687                         ;;
1688                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1689                         # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1690                         #       64bit build using HP's cc with CFLAGS="+DD64"
1691                         # hppa: 64bit build unsupported by gcc
1692                         #       64bit build using HP's cc with CFLAGS="+DA2.0w"
1693                         # HP-UX 11.00 ld needs PHSS_33034
1694                         BLDSHARED="true"
1695                         if test "${GCC}" = "yes"; then
1696                                 PICFLAG="-fPIC"
1697                                 LDSHFLAGS="-shared"
1698                         else
1699                                 PICFLAG="+z"
1700                                 LDSHFLAGS="-b"
1701                                 # "Uses depth-first symbol resolution"
1702                                 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1703                                 if test "$host_cpu" != "ia64"; then
1704                                         # "don't store literals in read-only memory" (?):
1705                                         PICFLAG="$PICFLAG +ESnolit"
1706                                 fi
1707                         fi
1708                         if test "$host_cpu" = "ia64"; then
1709                                 SHLIBEXT="so"
1710                                 # TODO: does the linker find the right 32/64 bit version of the libs? :
1711                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1712                         else
1713                                 SHLIBEXT="sl"
1714                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1715                         fi
1716                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1717                                 SONAMEFLAG="-Wl,-soname="
1718                         else
1719                                 SONAMEFLAG="-Wl,+h,"
1720                         fi
1721                         # PIE/PIC flags at link time are required on HP-UX because
1722                         # linking requires a temporary source file, which is being
1723                         # compiled with the indicated flags - which need to contain
1724                         # PIC flags when we don't support PIE flags:
1725                         if test "$PIE_LDFLAGS" = "" ; then
1726                                 PIE_LDFLAGS=\${PICFLAG}
1727                         fi
1728                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1729                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1730                         ;;
1731                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1732                         BLDSHARED="true"
1733                         LDSHFLAGS="-shared"
1734                         SONAMEFLAG="-Wl,-soname,"
1735                         if test "${GCC}" = "yes"; then
1736                                 PICFLAG="-fPIC"
1737                         fi
1738                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1739                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1740                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1741                                 saved_ldflags="$LDFLAGS"
1742                                 AC_MSG_CHECKING([if $flags works])
1743                                 LDFLAGS="$flags $saved_ldflags"
1744                                 AC_TRY_LINK([],[],
1745                                         [AC_MSG_RESULT([yes])
1746                                         LDSHFLAGS_Z_NODEFS=$flags],
1747                                         AC_MSG_RESULT([no]))
1748                                 LDFLAGS="$saved_ldflags"
1749                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1750                         done
1751                         ;;
1752                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1753                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1754                         ;;
1755                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1756                         BLDSHARED="true"
1757                         LDSHFLAGS="-shared"
1758                         SONAMEFLAG="-Wl,-soname,"
1759                         PICFLAG="-KPIC"
1760                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1761                         ;;
1762                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1763                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1764                         ;;
1765                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1766                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1767                         ;;
1768                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1769                         case "$host" in
1770                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1771                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1772                                         fi
1773                                         LDSHFLAGS="-G"
1774                                         DYNEXP="-Bexport"
1775                                 ;;
1776                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1777                         esac
1778                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1779                         ;;
1781                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1782                         if [ test "$GCC" != yes ]; then
1783                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1784                         fi
1785                         LDSHFLAGS="-G"
1786                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1787                         ;;
1788                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1789                         BLDSHARED="false"
1790                         LDSHFLAGS=""
1791                         ;;
1793                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1794                         BLDSHARED="true"
1795                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1796                         CFLAGS="$CFLAGS -fno-common"
1797                         SHLD="\${CC}"
1798                         SHLIBEXT="dylib"
1799                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1800                         SHLIBEXT="dylib"
1801                         # Since gcc doesn't fail on unrecognised options, the
1802                         # PIE test incorrectly succeeds. Darwin gcc does not
1803                         # actually support the PIE stuff.
1804                         PIE_LDFLAGS=
1805                         PIE_CFLAGS=
1806                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1807                         ;;
1809                 *)
1810                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1811                         ;;
1812   esac
1814 if test "$enable_shared" != "yes"; then
1815         BLDSHARED=false
1818 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1819         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1822 if test x"$BLDSHARED" = x"true" ; then
1823         LDFLAGS="$LDFLAGS -L./bin"
1826 AC_MSG_RESULT($BLDSHARED)
1828 if test x"$enable_developer" = x"yes" ; then
1829         default_as_needed=auto
1830 else
1831         default_as_needed=no
1833 AC_ARG_ENABLE(as-needed,
1834         AS_HELP_STRING([--enable-as-needed],
1835         [Turn on as-needed support if available (default=no)]),
1836         [enable_as_needed=$enableval],
1837         [enable_as_needed=$default_as_needed])
1838 if test "x$enable_as_needed" != xno; then
1839     saved_before_as_needed_ldflags="$LDFLAGS"
1840     for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1841         saved_ldflags="$LDFLAGS"
1842         AC_MSG_CHECKING([if $flags works])
1843         LDFLAGS="$flags $saved_ldflags"
1844         AC_TRY_LINK([],[],
1845                 [AC_MSG_RESULT([yes])
1846                 LD_AS_NEEDED_FLAG=$flags
1847                 ld_as_needed_flag_found=yes],
1848                 AC_MSG_RESULT([no]))
1849         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1850         test x"$ld_as_needed_flag_found" = xyes && break
1851     done
1854 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1855 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1856         AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1857 cat > conftest_shb.c <<END
1858 void b() {}
1860 cat > conftest_sha.c <<END
1861 extern void b();
1862 void a() {
1863         b();
1866 cat > conftest.c <<END
1867 extern void a();
1868 int main() {
1869         a();
1870         return 0;
1874         rm -fr conftest
1875         AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1876         AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1877         TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1878         AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1879         AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1880         AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1881         if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1882         then
1883                 AC_MSG_RESULT([no])
1884         else
1885                 ld_as_needed_flag_found=no
1886                 LDFLAGS="$saved_before_as_needed_ldflags"
1887                 AC_MSG_RESULT([yes])
1888         fi
1889         rm conftest* libconftest*
1892 # check if we have to disable LD_AS_NEEDED_FLAG:
1893 # On some systems for a veriety of reasons linking with
1894 # -Wl,--as-needed -lreadline -lncurses fails
1895 # we have to retest, if these combination is detected before.
1896 # Bugzilla #7209
1898 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1899         if test x$ld_as_needed_flag_found = xyes ; then
1900                 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1901                 # try if check no fails
1902                 save_LIBS=$LIBS
1903                 LIBS="$LIBS $TERMLIBS"
1904                 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1905                 LIBS="$save_LIBS"
1906         fi
1911 # for historical reasons almost all linkers don't complain about unresolved
1912 # symbols in shared libs. Except for the internal samba modules we want to get
1913 # errors when we produce a shared lib with unresolved symbols. On some
1914 # platforms unresolved symbols might be intended, so we might have to add
1915 # platform specific exceptions here.
1917 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1918         saved_ldflags="$LDFLAGS"
1919         AC_MSG_CHECKING([if $flags works])
1920         LDFLAGS="$flags $saved_ldflags"
1921         AC_TRY_LINK([],[],
1922         [AC_MSG_RESULT([yes])
1923         LDSHFLAGS_Z_DEFS=$flags
1924         ldshflags_z_defs_found=yes],
1925         AC_MSG_RESULT([no]))
1926         LDFLAGS=$saved_ldflags
1927         test x"$ldshflags_z_defs_found" = xyes && break
1928 done
1930 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1931 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1932 AC_MSG_CHECKING([LDFLAGS])
1933 AC_MSG_RESULT([$LDFLAGS])
1934 AC_MSG_CHECKING([DYNEXP])
1935 AC_MSG_RESULT([$DYNEXP])
1937 #######################################################
1938 # test whether building a shared library actually works
1939 if test $BLDSHARED = true; then
1941 AC_MSG_CHECKING([SHLD])
1942 AC_MSG_RESULT([$SHLD])
1943 AC_MSG_CHECKING([LDSHFLAGS])
1944 AC_MSG_RESULT([$LDSHFLAGS])
1946 AC_MSG_CHECKING([SHLIBEXT])
1947 AC_MSG_RESULT([$SHLIBEXT])
1948 AC_MSG_CHECKING([SONAMEFLAG])
1949 AC_MSG_RESULT([$SONAMEFLAG])
1951 AC_MSG_CHECKING([PICFLAG])
1952 AC_MSG_RESULT([$PICFLAG])
1954 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1955 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1957 AC_CACHE_CHECK([whether building shared libraries actually works],
1958                [ac_cv_shlib_works],[
1959    # try building a trivial shared library
1960    ac_cv_shlib_works=no
1961    # The $SHLD and $LDSHFLAGS variables may contain references to other
1962    # variables so they need to be eval'ed.
1963    if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1964    then
1965      TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1966      TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1967      if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1968      then
1969        ac_cv_shlib_works=yes
1970      fi
1971    fi
1972    rm -f "shlib.$SHLIBEXT" shlib.o
1975 if test $ac_cv_shlib_works = no; then
1976    BLDSHARED=false
1980 if test x"$BLDSHARED" != x"true"; then
1981         LDSHFLAGS="shared-libraries-disabled"
1982         SONAMEFLAG="shared-libraries-disabled"
1983         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1984         SHLD="shared-libraries-disabled"
1985         PICFLAG="${PIE_CFLAGS}"
1986         SHLIBEXT="shared_libraries_disabled"
1987         smbtorture4_possible=no
1990 AC_MSG_CHECKING([used PICFLAG])
1991 AC_MSG_RESULT([$PICFLAG])
1993 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1997 ###########################################################
1999 # Configuration of subsystems / libraries
2001 ###########################################################
2003 INSTALLLIBCMD_SH=:
2004 INSTALLLIBCMD_A=:
2005 UNINSTALLLIBCMD_SH=:
2006 UNINSTALLLIBCMD_A=:
2008 if test $BLDSHARED = true; then
2009         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
2010         UNINSTALLLIBCMD_SH="rm -f"
2012 if test $enable_static = yes; then
2013         INSTALLLIBCMD_A="\$(INSTALLCMD)"
2014         UNINSTALLLIBCMD_A="rm -f"
2017 #################################################
2018 # --disable-shared-libs
2019 # can be used to disable the internal use of shared libs altogether
2020 # (this only has an effect when building shared libs is enabled)
2022 USESHARED=false
2023 AC_SUBST(USESHARED)
2025 AC_MSG_CHECKING(whether to use shared libraries internally)
2026 AC_ARG_ENABLE([shared-libs],
2027         AS_HELP_STRING([--enable-shared-libs],
2028                 [Use shared libraries internally (default=yes)]),
2029         [enable_shared_libs=$enableval],
2030         [enable_shared_libs=yes])
2032 if test x"$enable_shared_libs" != x"no" ; then
2033         USESHARED=$BLDSHARED
2036 AC_MSG_RESULT([$USESHARED])
2038 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
2039         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
2042 #################################################
2043 # --with-static-libs=LIBS:
2044 #   link (internal) libs dynamically or statically?
2046 # If a subsystem is built as a library then this controls whether they are
2047 # linked into Samba targets statically or dynamically:
2049 # * If we build the shared library at all, we link dynamically by default.
2051 # * We only link statically if we don't build shared or if the library
2052 #   appears in the --with-static-libs configure option.
2054 # Example:
2055 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
2056 #   of linking the dynamic variant with -ltalloc.
2058 # NOTE: This option only affects libraries that we do not only build
2059 # but that samba also links against as libraries (as opposed to linking
2060 # the plain object files. - This has to be configured in Makefile.in.
2061 # So in particular it does not harm to give invalid or unknown names here.
2064 AC_ARG_WITH([static-libs],
2065         [AS_HELP_STRING([--with-static-libs=LIBS],
2066                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
2067         [AS_IF([test $withval],
2068                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
2069                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
2070                         eval LINK_$lib=STATIC
2071                 done], [])],
2072         [])
2075 # WORKAROUND:
2076 #   until we have organized other internal subsystems (as util, registry
2077 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
2078 #   dynamically to samba programs.
2080 LINK_LIBNETAPI=STATIC
2082 LINK_LIBSMBCLIENT=STATIC
2085 #  The library versions are hardcoded here
2086 #  and filled into the LIBFOO_SOVER variable.
2088 #  TODO: for talloc and tdb (at least), these should
2089 #  be extracted from their respective source directories
2091 AC_ARG_ENABLE(external_libtalloc,
2092         [AS_HELP_STRING([--enable-external-libtalloc],
2093                 [Enable external talloc [default=auto]])],
2094         [ enable_external_libtalloc=$enableval ],
2095         [ enable_external_libtalloc=auto ])
2097 if test "x$enable_external_libtalloc" != xno
2098 then
2099         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
2100                 [ enable_external_libtalloc=yes ],
2101                 [ if test x$enable_external_libtalloc = xyes; then
2102                         AC_MSG_ERROR([Unable to find libtalloc])
2103                   else
2104                         enable_external_libtalloc=no
2105                   fi
2106                 ])
2109 if test "x$enable_external_libtalloc" = xno
2110 then
2111         m4_include(../lib/talloc/libtalloc.m4)
2112         LINK_LIBTALLOC=STATIC
2113         SMB_LIBRARY(talloc, 2)
2114         LIBTALLOC_OBJ0=""
2115         for obj in ${TALLOC_OBJ}; do
2116                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
2117         done
2118         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
2119         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
2120         AC_SUBST(LIBTALLOC_OBJ0)
2122         TALLOCTORT="bin/talloctort\$(EXEEXT)"
2123         AC_SUBST(TALLOCTORT)
2127 AC_ARG_ENABLE(external_libtdb,
2128         [AS_HELP_STRING([--enable-external-libtdb],
2129                 [Enable external tdb [default=auto]])],
2130                 [ enable_external_libtdb=$enableval ],
2131                 [ enable_external_libtdb=auto ])
2133 if test "x$enable_external_libtdb" != xno
2134 then
2135         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.6,
2136                 [ enable_external_libtdb=yes ],
2137                 [
2138                 if test x$enable_external_libtdb = xyes; then
2139                         AC_MSG_ERROR([Unable to find libtdb])
2140                 else
2141                         enable_external_libtdb=no
2142                 fi
2143                 ])
2146 AC_SUBST(LIBTDB_OBJ0)
2147 if test "x$enable_external_libtdb" = xno
2148 then
2149         m4_include(../lib/tdb/libtdb.m4)
2150         LINK_LIBTDB=STATIC
2151         SMB_LIBRARY(tdb, 1)
2152         LIBTDB_OBJ0=""
2153         LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
2154         for obj in ${TDB_OBJ}; do
2155                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2156         done
2157         AC_SUBST(LIBTDB_OBJ0)
2158         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2159         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2161         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2162         AC_SUBST(TDBBACKUP)
2163         TDBDUMP="bin/tdbdump\$(EXEEXT)"
2164         AC_SUBST(TDBDUMP)
2165         TDBRESTORE="bin/tdbrestore\$(EXEEXT)"
2166         AC_SUBST(TDBRESTORE)
2167         TDBTOOL="bin/tdbtool\$(EXEEXT)"
2168         AC_SUBST(TDBTOOL)
2169         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2170         AC_SUBST(TDBTORTURE)
2171         ac_cv_have_tdb_err_nesting=yes
2172 else
2173         AC_TRY_COMPILE([#include <tdb.h>],
2174                        [enum TDB_ERROR err = TDB_ERR_NESTING],
2175                        ac_cv_have_tdb_err_nesting=yes,
2176                        ac_cv_have_tdb_err_nesting=no)
2179 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2180    AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2183 SMB_LIBRARY(netapi, 0)
2184 SMB_LIBRARY(smbclient, 0)
2185 SMB_LIBRARY(smbsharemodes, 0)
2186 SMB_LIBRARY(addns, 0, [], no, [undefined API])
2190 ################
2192 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2193 AC_TRY_RUN([#include <stdio.h>
2194 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2195 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2196 if test x"$samba_cv_have_longlong" = x"yes"; then
2197     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2198     AC_CHECK_TYPE(intptr_t, unsigned long long)
2199 else
2200     AC_CHECK_TYPE(intptr_t, unsigned long)
2204 # Check if the compiler supports the LL prefix on long long integers.
2205 # AIX needs this.
2207 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2208     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2209         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2210 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2211    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2215 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2216 AC_TRY_RUN([#include <time.h>
2217 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2218 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2219 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2220     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2223 AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
2224 AC_TRY_RUN([#include <time.h>
2225 main() {
2226         struct tm *tm;
2227         if (sizeof(time_t) == 8) {
2228                 time_t max_time = 0x7fffffffffffffffll;
2229                 tm = gmtime(&max_time);
2230                 /* This should fail with 32-bit tm_year. */
2231                 if (tm == NULL) {
2232                         /* Max time_t that works with 32-bit int tm_year in struct tm. */
2233                         max_time = 67768036191676799ll;
2234                         tm = gmtime(&max_time);
2235                         if (tm) {
2236                                 exit(0);
2237                         }
2238                 }
2239         }
2240         exit(1);
2242 samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
2243 if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
2244     AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
2248 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2249 AC_TRY_RUN([#include <stdio.h>
2250 #include <sys/stat.h>
2251 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2252 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2253 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2254     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2257 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2258 AC_TRY_RUN([
2259 #if defined(HAVE_UNISTD_H)
2260 #include <unistd.h>
2261 #endif
2262 #include <stdio.h>
2263 #include <sys/stat.h>
2264 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2265 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2266 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2267     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2270 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2271 AC_TRY_RUN([
2272 #if defined(HAVE_UNISTD_H)
2273 #include <unistd.h>
2274 #endif
2275 #include <stdio.h>
2276 #include <sys/stat.h>
2277 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2278 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2279 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2280     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2283 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2284 AC_TRY_RUN([
2285 #if defined(HAVE_UNISTD_H)
2286 #include <unistd.h>
2287 #endif
2288 #include <stdio.h>
2289 #include <sys/stat.h>
2290 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2291 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2292 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2293     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2296 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2297 AC_TRY_RUN([
2298 #if defined(HAVE_UNISTD_H)
2299 #include <unistd.h>
2300 #endif
2301 #include <stdio.h>
2302 #include <sys/stat.h>
2303 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2304 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2305 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2306     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2309 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2310 AC_TRY_RUN([
2311 #if defined(HAVE_UNISTD_H)
2312 #include <unistd.h>
2313 #endif
2314 #include <stdio.h>
2315 #include <sys/stat.h>
2316 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2317 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2318 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2319     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2322 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2323 AC_TRY_COMPILE([
2324 #if defined(HAVE_UNISTD_H)
2325 #include <unistd.h>
2326 #endif
2327 #include <sys/types.h>
2328 #include <dirent.h>],
2329 [DIR64 de;],
2330 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2331 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2332     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2335 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2336 AC_TRY_COMPILE([
2337 #if defined(HAVE_UNISTD_H)
2338 #include <unistd.h>
2339 #endif
2340 #include <sys/types.h>
2341 #include <dirent.h>],
2342 [struct dirent64 de;],
2343 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2344 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2345     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2348 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2349 AC_TRY_RUN([
2350 #if defined(HAVE_UNISTD_H)
2351 #include <unistd.h>
2352 #endif
2353 #include <sys/types.h>
2354 main() { dev_t dev; int i = major(dev); return 0; }],
2355 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2356 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2357     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2360 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2361 AC_TRY_RUN([
2362 #if defined(HAVE_UNISTD_H)
2363 #include <unistd.h>
2364 #endif
2365 #include <sys/types.h>
2366 main() { dev_t dev; int i = minor(dev); return 0; }],
2367 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2368 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2369     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2372 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2373 AC_TRY_RUN([
2374 #if defined(HAVE_UNISTD_H)
2375 #include <unistd.h>
2376 #endif
2377 #include <sys/types.h>
2378 main() { dev_t dev = makedev(1,2); return 0; }],
2379 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2380 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2381     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2384 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2385 AC_TRY_RUN([#include <stdio.h>
2386 main() { char c; c=250; exit((c > 0)?0:1); }],
2387 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2388 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2389     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2392 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2393 AC_TRY_COMPILE([#include <sys/types.h>
2394 #include <dirent.h>
2395 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2396 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2397 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2398     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2401 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2402 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2403 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2404 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2405     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2408 if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then
2409         LIBS="$LIBS -lrt"
2412 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2413 AC_TRY_RUN([#include <sys/types.h>
2414 #include <dirent.h>
2415 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2416 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2417 di->d_name[0] == 0) exit(0); exit(1);} ],
2418 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2419 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2420     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2423 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2424 AC_TRY_COMPILE([#include <sys/types.h>
2425 #include <utime.h>],
2426 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2427 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2428 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2429     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2432 ##############
2433 # Check utmp details, but only if our OS offers utmp.h
2434 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2435 dnl  utmp and utmpx come in many flavours
2436 dnl  We need to check for many of them
2437 dnl  But we don't need to do each and every one, because our code uses
2438 dnl  mostly just the utmp (not utmpx) fields.
2440 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2442 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2443 AC_TRY_COMPILE([#include <sys/types.h>
2444 #include <utmp.h>],
2445 [struct utmp ut;  ut.ut_name[0] = 'a';],
2446 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2447 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2448     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2451 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2452 AC_TRY_COMPILE([#include <sys/types.h>
2453 #include <utmp.h>],
2454 [struct utmp ut;  ut.ut_user[0] = 'a';],
2455 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2456 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2457     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2460 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2461 AC_TRY_COMPILE([#include <sys/types.h>
2462 #include <utmp.h>],
2463 [struct utmp ut;  ut.ut_id[0] = 'a';],
2464 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2465 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2466     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2469 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2470 AC_TRY_COMPILE([#include <sys/types.h>
2471 #include <utmp.h>],
2472 [struct utmp ut;  ut.ut_host[0] = 'a';],
2473 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2474 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2475     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2478 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2479 AC_TRY_COMPILE([#include <sys/types.h>
2480 #include <utmp.h>],
2481 [struct utmp ut;  time_t t; ut.ut_time = t;],
2482 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2483 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2484     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2487 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2488 AC_TRY_COMPILE([#include <sys/types.h>
2489 #include <utmp.h>],
2490 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2491 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2492 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2493     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2496 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2497 AC_TRY_COMPILE([#include <sys/types.h>
2498 #include <utmp.h>],
2499 [struct utmp ut;  ut.ut_type = 0;],
2500 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2501 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2502     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2505 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2506 AC_TRY_COMPILE([#include <sys/types.h>
2507 #include <utmp.h>],
2508 [struct utmp ut;  ut.ut_pid = 0;],
2509 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2510 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2511     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2514 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2515 AC_TRY_COMPILE([#include <sys/types.h>
2516 #include <utmp.h>],
2517 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2518 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2519 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2520     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2523 dnl Look for the IPv6 varient by preference. Many systems have both.
2524 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2525 AC_TRY_COMPILE([#include <sys/types.h>
2526 #include <utmp.h>],
2527 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2528 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2529 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2530     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2533 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2534 AC_TRY_COMPILE([#include <sys/types.h>
2535 #include <utmp.h>],
2536 [struct utmp ut;  ut.ut_addr = 0;],
2537 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2538 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2539     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2542 if test x$ac_cv_func_pututline = xyes ; then
2543   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2544   AC_TRY_COMPILE([#include <sys/types.h>
2545 #include <utmp.h>],
2546   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2547   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2548   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2549       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2550   fi
2553 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2554 AC_TRY_COMPILE([#include <sys/types.h>
2555 #include <utmpx.h>],
2556 [struct utmpx ux;  ux.ut_syslen = 0;],
2557 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2558 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2559     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2563 # end utmp details
2565 AC_CACHE_CHECK([for linux fallocate],samba_cv_HAVE_LINUX_FALLOCATE,[
2566 AC_TRY_COMPILE([
2567 #if defined(HAVE_UNISTD_H)
2568 #include <unistd.h>
2569 #endif
2570 #include <sys/types.h>
2571 #define _GNU_SOURCE
2572 #include <fcntl.h>
2573 #if defined(HAVE_LINUX_FALLOC_H)
2574 #include <linux/falloc.h>
2575 #endif],
2576 [int ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2577 samba_cv_HAVE_LINUX_FALLOCATE=yes,samba_cv_HAVE_LINUX_FALLOCATE=no)])
2578 if test x"$samba_cv_HAVE_LINUX_FALLOCATE" = x"yes" && test x"$ac_cv_func_fallocate" = x"yes"; then
2579     AC_DEFINE(HAVE_LINUX_FALLOCATE,1,[Whether the Linux 'fallocate' function is available])
2582 AC_CACHE_CHECK([for linux fallocate64],samba_cv_HAVE_LINUX_FALLOCATE64,[
2583 AC_TRY_COMPILE([
2584 #if defined(HAVE_UNISTD_H)
2585 #include <unistd.h>
2586 #endif
2587 #include <sys/types.h>
2588 #define _GNU_SOURCE
2589 #include <fcntl.h>
2590 #if defined(HAVE_LINUX_FALLOC_H)
2591 #include <linux/falloc.h>
2592 #endif],
2593 [int ret = fallocate64(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2594 samba_cv_HAVE_LINUX_FALLOCATE64=yes,samba_cv_HAVE_LINUX_FALLOCATE64=no)])
2595 if test x"$samba_cv_HAVE_LINUX_FALLOCATE64" = x"yes" && test x"$ac_cv_func_fallocate64" = x"yes"; then
2596     AC_DEFINE(HAVE_LINUX_FALLOCATE64,1,[Whether the Linux 'fallocate64' function is available])
2599 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2600 AC_ARG_WITH(libiconv,
2601 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2603   if test "$withval" = "no" ; then
2604     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2605   else
2606      if test "$withval" != "yes" ; then
2607         ICONV_PATH_SPEC=yes
2608         ICONV_LOOK_DIRS="$withval"
2609      fi
2610   fi
2613 for i in $ICONV_LOOK_DIRS ; do
2615     save_LIBS="$LIBS"
2616     save_LDFLAGS="$LDFLAGS"
2617     save_CPPFLAGS="$CPPFLAGS"
2619     iconv_current_LIBS=""
2620     iconv_current_LDFLAGS=""
2621     iconv_current_CPPFLAGS=""
2623     ICONV_FOUND="no"
2624     unset libext
2626     #  This is here to handle -withval stuff for --with-libiconv
2627     #  Perhaps we should always add a -L
2628     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2630     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2631     # installation paths. This gets a little tricky since we might have iconv
2632     # in both libiconv and in libc. In this case the jm_ICONV test will always
2633     # succeed when the header is found. To counter this, make sure the
2634     # library directory is there and check the ABI directory first (which
2635     # should be harmless on other systems, but causes tons of linker warnings on
2636     # 64bit Ubuntu systems).
2637     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2638     # installed, I've decided to fix the linker warnings.
2639     # -- Kai
2640     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2641     for l in "lib" "lib32" "lib/hpux32"; do
2642         if test -d "$i/$l" ; then
2643                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2644                 LIBS=
2645                 export LDFLAGS LIBS CPPFLAGS
2646                 # Try to find iconv(3)
2647                 jm_ICONV($i/$l)
2648                 if test x"$ICONV_FOUND" = "xyes" ; then
2649                     libext="$l"
2650                     break
2651                 fi
2652         fi
2653     done
2655     if test x"$ICONV_FOUND" = "xyes" ; then
2656         iconv_current_LDFLAGS="-L$i/$libext"
2657         iconv_current_CPPFLAGS="-I$i/include"
2659         if test x"$jm_cv_lib_iconv" != x; then
2660             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2661         else
2662             # We found iconv in libc.
2663             iconv_current_LIBS=""
2664         fi
2666     fi
2668     if test x"$ICONV_FOUND" = "xyes" ; then
2670         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2671         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2672         LIBS="$save_LIBS $iconv_current_LIBS"
2673         export LDFLAGS LIBS CPPFLAGS
2675         default_dos_charset=no
2676         default_display_charset=no
2677         default_unix_charset=no
2679         # check for default dos charset name
2680         for j in CP850 IBM850 ; do
2681             rjs_CHARSET($j)
2682             default_dos_charset="$ICONV_CHARSET"
2683             if test x"$default_dos_charset" = x"$j"; then
2684                 break
2685             fi
2686         done
2688         # check for default display charset name
2689         for j in ASCII 646 ; do
2690             rjs_CHARSET($j)
2691             default_display_charset="$ICONV_CHARSET"
2692             if test x"$default_display_charset" = x"$j"; then
2693                 break
2694             fi
2695         done
2697         # check for default unix charset name
2698         for j in UTF-8 UTF8 ; do
2699             rjs_CHARSET($j)
2700             default_unix_charset="$ICONV_CHARSET"
2701             if test x"$default_unix_charset" = x"$j"; then
2702                 break
2703             fi
2704         done
2706         if test "$default_dos_charset" != "no" -a \
2707                 "$default_dos_charset" != "cross" -a \
2708                 "$default_display_charset" != "no" -a \
2709                 "$default_display_charset" != "cross" -a \
2710                 "$default_unix_charset" != "no" -a \
2711                 "$default_unix_charset" != "cross"
2712         then
2713                 samba_cv_HAVE_NATIVE_ICONV=yes
2714         else
2715             if test "$default_dos_charset" = "cross" -o \
2716                      "$default_display_charset" = "cross" -o \
2717                      "$default_unix_charset" = "cross"
2718             then
2719                     samba_cv_HAVE_NATIVE_ICONV=cross
2720             else
2721                     samba_cv_HAVE_NATIVE_ICONV=no
2722             fi
2723         fi
2725         # At this point, we have a libiconv candidate. We know that
2726         # we have the right headers and libraries, but we don't know
2727         # whether it does the conversions we want. We can't test this
2728         # because we are cross-compiling. This is not necessarily a big
2729         # deal, since we can't guarantee that the results we get now will
2730         # match the results we get at runtime anyway.
2731         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2732             default_dos_charset="CP850"
2733             default_display_charset="ASCII"
2734             default_unix_charset="UTF-8"
2735             samba_cv_HAVE_NATIVE_ICONV=yes
2736             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2737             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2738         fi
2740         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2742             CPPFLAGS=$save_CPPFLAGS
2743             LDFLAGS=$save_LDFLAGS
2744             LIBS=$save_LIBS
2746             if test x"$iconv_current_LIBS" != x; then
2747                 LIBS="$LIBS $iconv_current_LIBS"
2748             fi
2750             # Add the flags we need to CPPFLAGS and LDFLAGS
2751             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2752             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2754             # Turn the #defines into string literals
2755             default_dos_charset="\"$default_dos_charset\""
2756             default_display_charset="\"$default_display_charset\""
2757             default_unix_charset="\"$default_unix_charset\""
2759             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2760             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2761             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2762             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2764            break
2765         fi
2767     # We didn't find a working iconv, so keep going
2768     fi
2770     #  We only need to clean these up here for the next pass through the loop
2771     CPPFLAGS=$save_CPPFLAGS
2772     LDFLAGS=$save_LDFLAGS
2773     LIBS=$save_LIBS
2774     export LDFLAGS LIBS CPPFLAGS
2775 done
2776 unset libext
2779 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2780     AC_MSG_WARN([Sufficient support for iconv function was not found.
2781     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2782    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2783    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2784    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2788 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2789 AC_TRY_RUN([
2790 #include <sys/types.h>
2791 #include <fcntl.h>
2792 #ifndef F_GETLEASE
2793 #define F_GETLEASE      1025
2794 #endif
2795 main() {
2796        int fd = open("/dev/null", O_RDONLY);
2797        return fcntl(fd, F_GETLEASE, 0) == -1;
2800 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2801 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2802     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2805 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2806 AC_TRY_RUN([
2807 #include <sys/types.h>
2808 #include <fcntl.h>
2809 #include <signal.h>
2810 #ifndef F_NOTIFY
2811 #define F_NOTIFY 1026
2812 #endif
2813 main() {
2814         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2817 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2818 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2819     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2822 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2823 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2824 AC_CHECK_FUNCS(inotify_init)
2825 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2827 samba_cv_HAVE_INOTIFY=yes,
2828 samba_cv_HAVE_INOTIFY=no,
2829 samba_cv_HAVE_INOTIFY=cross)
2831 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2832     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2835 #################################################
2836 # Check if FAM notifications are available. For FAM info, see
2837 #       http://oss.sgi.com/projects/fam/
2838 #       http://savannah.nongnu.org/projects/fam/
2839 AC_ARG_ENABLE(fam,
2840 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2842 if test x$enable_fam != xno; then
2843     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2844     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2845         # On IRIX, libfam requires libC, but other FAM implementations
2846         # might not need it.
2847         AC_CHECK_LIB(fam, FAMOpen2,
2848             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2849             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2850             [samba_cv_HAVE_LIBFAM=no])
2852         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2853             samba_fam_xtra=-lC
2854             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2855                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2856                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2857                 [samba_cv_HAVE_LIBFAM=no])
2858             unset samba_fam_xtra
2859         fi
2860     fi
2861     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2862         default_shared_modules="$default_shared_modules vfs_notify_fam"
2863         AC_TRY_COMPILE([#include <fam.h>],
2864                     [enum FAMCodes code = FAMChanged;],
2865                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2866                         [Whether fam.h contains a typedef for enum FAMCodes]),
2867                     [])
2868     fi
2870     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2871         AC_CHECK_LIB(fam, FAMNoExists,
2872             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2873     fi
2875     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2876         AC_MSG_ERROR(FAM support requested but FAM library not available )
2877     fi
2880 AC_SUBST(SMB_FAM_LIBS)
2882 #################################################
2883 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2886 with_dmapi_support=auto
2887 AC_MSG_CHECKING(whether to use DMAPI support)
2888 AC_ARG_WITH(dmapi,
2889 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2890 [ case "$withval" in
2891   yes|no)
2892     with_dmapi_support=$withval
2893     ;;
2894   esac ]
2896 AC_MSG_RESULT([$with_dmapi_support])
2898 if test x"$with_dmapi_support" != xno ; then
2899         SMB_CHECK_DMAPI([], [
2900                 AC_MSG_NOTICE(DMAPI support not present)
2901                 if test x"$with_dmapi_support" = xyes ; then
2902                         AC_MSG_ERROR(no DMAPI support found but requested!)
2903                 fi
2904                 ]
2905         )
2908 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2909 # Theoretically it should work with AIX JFS2 too but this needs testing
2910 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2911     default_shared_modules="$default_shared_modules vfs_tsmsm"
2914 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2915 AC_TRY_RUN([
2916 #include <sys/types.h>
2917 #include <fcntl.h>
2918 #include <signal.h>
2919 #include <sys/file.h>
2920 #ifndef LOCK_MAND
2921 #define LOCK_MAND       32
2922 #define LOCK_READ       64
2923 #endif
2924 main() {
2925         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2928 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2929 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2930     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2934 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2935 AC_TRY_COMPILE([#include <sys/types.h>
2936 #include <fcntl.h>],
2937 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2938 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2939 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2940     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2943 #################################################
2944 # Check for POSIX capability support
2946 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2947     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2948     [], [])
2950 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2952     ac_save_LIBS=$LIBS
2953     AC_LIBTESTFUNC(cap, cap_get_proc)
2955     AC_CACHE_CHECK([for POSIX capabilities],
2956             samba_cv_HAVE_POSIX_CAPABILITIES,
2957             [
2958                 AC_TRY_RUN([
2959 #include <sys/types.h>
2960 #include <sys/capability.h>
2961 main() {
2962  cap_t cap;
2963  cap_value_t vals[1];
2964  if (!(cap = cap_get_proc()))
2965    exit(1);
2966  vals[0] = CAP_CHOWN;
2967  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2968  cap_set_proc(cap);
2969  exit(0);
2971                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2972                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2973                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2974             ])
2976 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2977     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2978             [Whether POSIX capabilities are available])
2979 else
2980     LIBS=$ac_save_LIBS
2986 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2987 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2990 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2991 AC_TRY_COMPILE([#include <sys/types.h>
2992 #if defined(HAVE_RPC_RPC_H)
2993 #include <rpc/rpc.h>
2994 #endif],
2995 [int16 testvar;],
2996 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2997 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2998     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
3001 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
3002 AC_TRY_COMPILE([#include <sys/types.h>
3003 #if defined(HAVE_RPC_RPC_H)
3004 #include <rpc/rpc.h>
3005 #endif],
3006 [uint16 testvar;],
3007 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
3008 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
3009     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
3012 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
3013 AC_TRY_COMPILE([#include <sys/types.h>
3014 #if defined(HAVE_RPC_RPC_H)
3015 #include <rpc/rpc.h>
3016 #endif],
3017 [int32 testvar;],
3018 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
3019 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
3020     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
3023 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
3024 AC_TRY_COMPILE([#include <sys/types.h>
3025 #if defined(HAVE_RPC_RPC_H)
3026 #include <rpc/rpc.h>
3027 #endif],
3028 [uint32 testvar;],
3029 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
3030 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
3031     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
3035 dnl Some systems (SCO) have a problem including
3036 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
3037 dnl as a #define in <prot.h> and as part of an enum
3038 dnl in <rpc/rpc.h>.
3041 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
3042 AC_TRY_COMPILE([#include <sys/types.h>
3043 #ifdef HAVE_SYS_SECURITY_H
3044 #include <sys/security.h>
3045 #include <prot.h>
3046 #endif  /* HAVE_SYS_SECURITY_H */
3047 #if defined(HAVE_RPC_RPC_H)
3048 #include <rpc/rpc.h>
3049 #endif],
3050 [int testvar;],
3051 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
3052 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
3053     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
3056 AC_MSG_CHECKING([for test routines])
3057 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
3058            AC_MSG_RESULT(yes),
3059            AC_MSG_ERROR([cant find test code. Aborting config]),
3060            AC_MSG_WARN([cannot run when cross-compiling]))
3062 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
3063 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
3064            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
3065 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
3066     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
3069 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
3070 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
3071            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
3072 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
3073     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
3076 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
3077 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
3078 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
3079 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
3080 AC_CHECK_FUNCS(getpagesize)
3082 ################################################
3083 # look for a method of setting the effective uid
3084 seteuid=no;
3086 if test $seteuid = no; then
3087 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3088 AC_TRY_RUN([
3089 #define AUTOCONF_TEST 1
3090 #define USE_SETREUID 1
3091 #include "confdefs.h"
3092 #include "${srcdir-.}/lib/util_sec.c"],
3093            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3094 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3095     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3099 # we check for setresuid second as it conflicts with AIO on Linux. 
3100 # see http://samba.org/~tridge/junkcode/aio_uid.c
3101 if test $seteuid = no; then
3102 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3103 AC_TRY_RUN([
3104 #define AUTOCONF_TEST 1
3105 #define USE_SETRESUID 1
3106 #include "confdefs.h"
3107 #include "${srcdir-.}/lib/util_sec.c"],
3108            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3109 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3110     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3114 if test $seteuid = no; then
3115 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3116 AC_TRY_RUN([
3117 #define AUTOCONF_TEST 1
3118 #define USE_SETEUID 1
3119 #include "confdefs.h"
3120 #include "${srcdir-.}/lib/util_sec.c"],
3121            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3122 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3123     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3127 if test $seteuid = no; then
3128 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3129 AC_TRY_RUN([
3130 #define AUTOCONF_TEST 1
3131 #define USE_SETUIDX 1
3132 #include "confdefs.h"
3133 #include "${srcdir-.}/lib/util_sec.c"],
3134            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3135 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3136     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3140 AC_CACHE_CHECK([for the Darwin initgroups system call],
3141         samba_cv_DARWIN_INITGROUPS,
3142         AC_TRY_LINK([
3143 #include <sys/syscall.h>
3144 #include <unistd.h>
3145         ],
3146         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3147         samba_cv_DARWIN_INITGROUPS=yes,
3148         samba_cv_DARWIN_INITGROUPS=no)
3151 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3152     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3153         [Whether to use the Darwin-specific initgroups system call])
3156 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3157 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
3158            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3159 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3160     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3163 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3164 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
3165            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3166 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3167     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3169 else
3172 dnl Don't check for 64 bit fcntl locking if we know that the
3173 dnl glibc2.1 broken check has succeeded.
3176   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3177   AC_TRY_RUN([
3178 #if defined(HAVE_UNISTD_H)
3179 #include <unistd.h>
3180 #endif
3181 #include <stdio.h>
3182 #include <stdlib.h>
3184 #ifdef HAVE_FCNTL_H
3185 #include <fcntl.h>
3186 #endif
3188 #ifdef HAVE_SYS_FCNTL_H
3189 #include <sys/fcntl.h>
3190 #endif
3191 main() { struct flock64 fl64;
3192 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3193 exit(0);
3194 #else
3195 exit(1);
3196 #endif
3198        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3200   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3201       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3202   fi
3205 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3206 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3207 AC_TRY_COMPILE([
3208   #define _XOPEN_SOURCE 600
3209   #include <stdlib.h>
3210   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3211     probably broken posix_fallocate
3212   #endif
3213 ], [
3214 ], 
3215 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3216 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3217         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3221 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3222 AC_TRY_COMPILE([#include <sys/types.h>
3223 #include <sys/stat.h>
3224 #include <unistd.h>],
3225 [struct stat st;  st.st_blocks = 0;],
3226 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3227 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3228     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3231 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3233 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3234 AC_TRY_COMPILE([#include <sys/types.h>
3235 #include <sys/stat.h>
3236 #include <unistd.h>],
3237 [struct stat st;  st.st_blksize = 0;],
3238 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3239 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3240     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3243 AC_CACHE_CHECK([for st_flags in struct stat],
3244         samba_cv_HAVE_STAT_ST_FLAGS,
3245         [
3246             AC_TRY_COMPILE([#include <sys/types.h>
3247 #include <sys/stat.h>
3248 #include <unistd.h>],
3249             [struct stat st;  st.st_flags = 0;],
3250             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3251             samba_cv_HAVE_STAT_ST_FLAGS=no,
3252             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3253         ])
3255 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3256     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3257                 [Whether the stat struct has a st_flags member])
3260 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3261 AC_TRY_COMPILE([
3262 #include <sys/types.h>
3263 #include <sys/acl.h>
3264 #if defined(HAVE_RPCSVC_NIS_H)
3265 #include <rpcsvc/nis.h>
3266 #endif],
3267 [int i;],
3268 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3269 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3270         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3273 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3274 AC_TRY_RUN([
3275 #include <stdio.h>
3276 #include <limits.h>
3277 #include <signal.h>
3279 void exit_on_core(int ignored) {
3280         exit(1);
3283 main() {
3284         char *newpath;
3285         signal(SIGSEGV, exit_on_core);
3286         newpath = realpath("/tmp", NULL);
3287         exit((newpath != NULL) ? 0 : 1);
3290 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3291 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3292     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3295 #################################################
3296 # check for AFS clear-text auth support
3297 samba_cv_WITH_AFS=no
3298 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3299 AC_ARG_WITH(afs,
3300 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3301 [ case "$withval" in
3302   yes|auto)
3303     AC_MSG_RESULT($withval)
3304     samba_cv_WITH_AFS=$withval
3305     ;;
3306   *)
3307     AC_MSG_RESULT(no)
3308     ;;
3309   esac ],
3310   AC_MSG_RESULT(no)
3313 ####################################################
3314 # check for Linux-specific AFS fake-kaserver support
3315 samba_cv_WITH_FAKE_KASERVER=no
3316 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3317 AC_ARG_WITH(fake-kaserver,
3318 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3319 [ case "$withval" in
3320   yes|auto)
3321     AC_MSG_RESULT($withval)
3322     samba_cv_WITH_FAKE_KASERVER=$withval
3323     ;;
3324   *)
3325     AC_MSG_RESULT(no)
3326     ;;
3327   esac ],
3328   AC_MSG_RESULT(no)
3331 #################################################
3332 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3333 if test x"$samba_cv_WITH_AFS" != x"no" ||
3334    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3336     # see if this box has the OpenSSL DES libraries
3337     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3339     # see if this box has the afs-headers in /usr/include/afs
3340     AC_MSG_CHECKING(for /usr/include/afs)
3341     if test -d /usr/include/afs; then
3342           AC_MSG_RESULT(yes)
3343     else
3344       AC_MSG_RESULT(no)
3345     fi
3347     # check for afs.h
3348     have_afs_headers=no
3349     AC_CHECK_HEADERS(afs.h afs/afs.h)
3350     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3351         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3352            test x"$samba_cv_WITH_AFS" = x"auto"; then
3353                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3354         else
3355                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3356         fi
3357     else
3358         have_afs_headers=yes
3359     fi
3362 FAKE_KASERVER_OBJ=""
3363 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3364     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3365     FAKE_KASERVER_OBJ="utils/net_afs.o"
3367 AC_SUBST(FAKE_KASERVER_OBJ)
3369 #################################################
3370 # check whether to compile AFS/NT ACL mapping module
3371 samba_cv_WITH_VFS_AFSACL=no
3372 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3373 AC_ARG_WITH(vfs-afsacl,
3374 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3375 [ case "$withval" in
3376   yes|auto)
3377     AC_MSG_RESULT($withval)
3378     samba_cv_WITH_VFS_AFSACL=yes
3379     ;;
3380   *)
3381     AC_MSG_RESULT(no)
3382     ;;
3383   esac ],
3384   AC_MSG_RESULT(no)
3387 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3388    default_shared_modules="$default_shared_modules vfs_afsacl"
3390         
3391 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3392     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3395 #################################################
3396 # check for the DFS clear-text auth system
3397 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3398 AC_ARG_WITH(dfs,
3399 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3400 [ case "$withval" in
3401   yes)
3402     AC_MSG_RESULT(yes)
3403     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3404     ;;
3405   *)
3406     AC_MSG_RESULT(no)
3407     ;;
3408   esac ],
3409   AC_MSG_RESULT(no)
3412 ########################################################
3413 # Compile with LDAP support?
3415 with_ldap_support=auto
3416 AC_MSG_CHECKING([for LDAP support])
3418 AC_ARG_WITH(ldap,
3419 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3420 [ case "$withval" in
3421     yes|no)
3422         with_ldap_support=$withval
3423         ;;
3424   esac ])
3426 AC_MSG_RESULT($with_ldap_support)
3428 SMBLDAP=""
3429 AC_SUBST(SMBLDAP)
3430 SMBLDAPUTIL=""
3431 AC_SUBST(SMBLDAPUTIL)
3433 if test x"$with_ldap_support" != x"no"; then
3435   ##################################################################
3436   # first test for ldap.h and lber.h
3437   # (ldap.h is required for this test)
3438   AC_CHECK_HEADERS(ldap.h lber.h)
3440   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3441         if test x"$with_ldap_support" = x"yes"; then
3442          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3443         else
3444          AC_MSG_WARN(ldap.h is needed for LDAP support)
3445         fi
3446         
3447         with_ldap_support=no
3448   fi
3450   ##################################################################
3451   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3452   # unsigned int in include/includes.h
3453   case $host_os in
3454         *hpux*)
3455          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3456          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3457         with_ldap_support=yes
3458         ;;
3459         *)
3460         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3461         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3462                 if test x"$with_ldap_support" = x"yes"; then
3463                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3464                 else
3465                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3466                 fi
3467                 with_ldap_support=no
3468         fi
3469         ;;
3470   esac
3473 if test x"$with_ldap_support" != x"no"; then
3474   ac_save_LIBS=$LIBS
3476   ##################################################################
3477   # we might need the lber lib on some systems. To avoid link errors
3478   # this test must be before the libldap test
3479   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3481   ########################################################
3482   # If ber_sockbuf_add_io() is available we can add
3483   # SASL wrapping hooks
3484   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3486   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3487                  AC_TRY_COMPILE([#include <ldap.h>],
3488                                 [int val = LDAP_OPT_SOCKBUF;],
3489                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3490                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3492   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3493           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3494         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3495   fi
3497   #######################################################
3498   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3499   # ldap logging and print it out in the samba logs
3500   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3501                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3502                  [AC_TRY_COMPILE([#include <lber.h>],
3503                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3504                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3505                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3507   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3508         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3509                   [Support for LDAP/LBER logging interception])
3510   fi
3512   ########################################################
3513   # now see if we can find the ldap libs in standard paths
3514   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3516   ########################################################
3517   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3518   # Check found in pam_ldap 145.
3519   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3521   LIBS="$LIBS $LDAP_LIBS"
3522   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3523     AC_TRY_COMPILE([
3524         #include <lber.h>
3525         #include <ldap.h>],
3526         [ldap_set_rebind_proc(0, 0, 0);],
3527         [smb_ldap_cv_ldap_set_rebind_proc=3],
3528         [smb_ldap_cv_ldap_set_rebind_proc=2]
3529     )
3530   ])
3532   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3534   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3536   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3537     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3538     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3539     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3540     default_shared_modules="$default_shared_modules";
3541     SMBLDAP="lib/smbldap.o"
3542     SMBLDAPUTIL="lib/smbldap_util.o"
3543     with_ldap_support=yes
3544     AC_MSG_CHECKING(whether LDAP support is used)
3545     AC_MSG_RESULT(yes)
3546   else
3547     if test x"$with_ldap_support" = x"yes"; then
3548         AC_MSG_ERROR(libldap is needed for LDAP support)
3549     else
3550         AC_MSG_WARN(libldap is needed for LDAP support)
3551     fi
3553     LDAP_LIBS=""
3554     with_ldap_support=no
3555   fi
3556   LIBS=$ac_save_LIBS
3560 #################################################
3561 # active directory support
3563 with_ads_support=auto
3564 AC_MSG_CHECKING([for Active Directory and krb5 support])
3566 AC_ARG_WITH(ads,
3567 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3568 [ case "$withval" in
3569     yes|no)
3570         with_ads_support="$withval"
3571         ;;
3572   esac ])
3574 AC_MSG_RESULT($with_ads_support)
3576 FOUND_KRB5=no
3577 KRB5_LIBS=""
3579 if test x"$with_ldap_support" != x"yes"; then
3581     if test x"$with_ads_support" = x"yes"; then
3582         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3583     elif test x"$with_ads_support" = x"auto"; then
3584         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3585         with_ads_support=no
3586     fi
3588 else
3590     # Check to see whether there is enough LDAP functionality to be able
3591     # to build AD support.
3593 # HPUX and Solaris only has ldap_init; ok, we take care of this in smbldap.c
3594 case "$host_os" in
3595         *hpux* | *solaris*)
3596     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3598     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3599         if test x"$with_ads_support" = x"yes"; then
3600             AC_MSG_ERROR(Active Directory support on HPUX or Solaris requires ldap_init)
3601         elif test x"$with_ads_support" = x"auto"; then
3602             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX or Solaris))
3603             with_ads_support=no
3604         fi
3605     fi
3606     ;;
3607         *)
3608     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3610     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3611         if test x"$with_ads_support" = x"yes"; then
3612             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3613         elif test x"$with_ads_support" = x"auto"; then
3614             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3615             with_ads_support=no
3616         fi
3617     fi
3618     ;;
3619 esac
3622     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3624     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3625         if test x"$with_ads_support" = x"yes"; then
3626             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3627         elif test x"$with_ads_support" = x"auto"; then
3628             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3629             with_ads_support=no
3630         fi
3631     fi
3635 if test x"$with_ads_support" != x"no"; then
3637   # Do no harm to the values of CFLAGS and LIBS while testing for
3638   # Kerberos support.
3640   if test x$FOUND_KRB5 = x"no"; then
3641     #################################################
3642     # check for location of Kerberos 5 install
3643     AC_MSG_CHECKING(for kerberos 5 install path)
3644     AC_ARG_WITH(krb5,
3645     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3646     [ case "$withval" in
3647       no)
3648         AC_MSG_RESULT(no krb5-path given)
3649         ;;
3650       yes)
3651         AC_MSG_RESULT(/usr)
3652         ;;
3653       *)
3654         AC_MSG_RESULT($withval)
3655         KRB5_CFLAGS="-I$withval/include"
3656         KRB5_CPPFLAGS="-I$withval/include"
3657         KRB5_LDFLAGS="-L$withval/lib"
3658         FOUND_KRB5=yes
3659         if test -x "$withval/bin/krb5-config"; then
3660                 KRB5CONFIG=$withval/bin/krb5-config
3661         fi
3662         ;;
3663       esac ],
3664       AC_MSG_RESULT(no krb5-path given)
3665     )
3666   fi
3668   #################################################
3669   # check for krb5-config from recent MIT and Heimdal kerberos 5
3670   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3671   AC_MSG_CHECKING(for working krb5-config)
3672   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3673     ac_save_CFLAGS=$CFLAGS
3674     CFLAGS="";export CFLAGS
3675     ac_save_LDFLAGS=$LDFLAGS
3676     LDFLAGS="";export LDFLAGS
3677     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3678     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3679     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3680     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3681     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3682     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3683     FOUND_KRB5=yes
3684     AC_MSG_RESULT(yes)
3685   else
3686     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3687   fi
3689   if test x$FOUND_KRB5 = x"no"; then
3690     #################################################
3691     # see if this box has the SuSE location for the heimdal krb implementation
3692     AC_MSG_CHECKING(for /usr/include/heimdal)
3693     if test -d /usr/include/heimdal; then
3694       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3695           KRB5_CFLAGS="-I/usr/include/heimdal"
3696           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3697           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3698           FOUND_KRB5=yes
3699           AC_MSG_RESULT(yes)
3700       else
3701           KRB5_CFLAGS="-I/usr/include/heimdal"
3702           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3703           FOUND_KRB5=yes
3704           AC_MSG_RESULT(yes)
3705       fi
3706     else
3707       AC_MSG_RESULT(no)
3708     fi
3709   fi
3711   if test x$FOUND_KRB5 = x"no"; then
3712     #################################################
3713     # see if this box has the RedHat location for kerberos
3714     AC_MSG_CHECKING(for /usr/kerberos)
3715     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3716       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3717       KRB5_CFLAGS="-I/usr/kerberos/include"
3718       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3719       FOUND_KRB5=yes
3720       AC_MSG_RESULT(yes)
3721     else
3722       AC_MSG_RESULT(no)
3723     fi
3724   fi
3726   if test x$FOUND_KRB5 = x"no"; then
3727     #################################################
3728     # see if this box has the OpenBSD location for heimdal krb5
3729     AC_MSG_CHECKING(for /usr/include/kerberosV)
3730     if test -d /usr/include/kerberosV; then
3731       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3732       KRB5_LIBS="-lcrypto"
3733       FOUND_KRB5=yes
3734       AC_MSG_RESULT(yes)
3735     else
3736       AC_MSG_RESULT(no)
3737     fi
3738   fi
3740   if test x$FOUND_KRB5 = x"no"; then
3741     #################################################
3742     # see if this box has Solaris MIT kerberos implementation
3743     AC_MSG_CHECKING(for Solaris MIT kerberos)
3744     if test -x "$KRB5CONFIG" && $KRB5CONFIG --version | grep -s Solaris | grep -s MIT > /dev/null ; then
3745        FOUND_KRB5=yes
3746        KRB5_LIBS="-lgss -lkrb5"
3747        KRB5_CFLAGS="`$KRB5CONFIG --cflags`"
3748        KRB5_CPPFLAGS="`$KRB5CONFIG --cflags`"
3749        AC_MSG_RESULT(yes)
3750     else
3751       AC_MSG_RESULT(no)
3752     fi
3753   fi
3755   ac_save_CFLAGS=$CFLAGS
3756   ac_save_CPPFLAGS=$CPPFLAGS
3757   ac_save_LDFLAGS=$LDFLAGS
3759   # remove needless evil rpath stuff as early as possible:
3760   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3761   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3762   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3763   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3764   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3766   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3768   # now check for krb5.h. Some systems have the libraries without the headers!
3769   # note that this check is done here to allow for different kerberos
3770   # include paths
3771   AC_CHECK_HEADERS(krb5.h)
3773   if test x"$ac_cv_header_krb5_h" = x"no"; then
3775     # Give a warning if AD support was not explicitly requested,
3776     # i.e with_ads_support = auto, otherwise die with an error.
3778     if test x"$with_ads_support" = x"yes"; then
3779       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3780     else
3781       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3782     fi
3784     # Turn off AD support and restore CFLAGS and LIBS variables
3786     with_ads_support="no"
3788     CFLAGS=$ac_save_CFLAGS
3789     CPPFLAGS=$ac_save_CPPFLAGS
3790     LDFLAGS=$ac_save_LDFLAGS
3791   fi
3793   # check for new heimdal KRB5_DEPRECATED handling
3795   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3796                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3797     AC_TRY_COMPILE(
3798       [#define KRB5_DEPRECATED 1
3799       #include <krb5.h>],
3800       [],
3801       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3802       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3804   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3805     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3806                [Whether to use deprecated krb5 interfaces])
3807   fi
3810 # Now we have determined whether we really want ADS support
3811 use_ads=no
3812 if test x"$with_ads_support" != x"no"; then
3813   use_ads=yes
3814   have_gssapi=no
3815   ac_save_LIBS=$LIBS
3817   # now check for gssapi headers.  This is also done here to allow for
3818   # different kerberos include paths
3819   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h gssapi/gssapi_krb5.h com_err.h)
3821   ##################################################################
3822   # we might need the k5crypto and com_err libraries on some systems
3823   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3824   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3826   # Heimdal checks.
3827   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3828   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3829   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3831   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3832   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3834   ########################################################
3835   # now see if we can find the krb5 libs in standard paths
3836   # or as specified above
3837   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3838   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3840   ########################################################
3841   # now see if we can find the gssapi libs in standard paths
3842   if test x"$have_gssapi" != x"yes"; then
3843      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3844      AC_CHECK_LIB_EXT(gss, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3845      AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3846   fi
3848   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3849   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3850   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3851   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3852   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3853   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3854   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3855   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3856   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3857   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3858   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3859   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3860   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3861   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3862   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3863   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3864   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3865   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3866   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3867   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3868   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3869   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3870   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3871   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3872   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3873   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3874   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3875   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3876   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3877   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3878   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3879   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3880   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3881   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3882   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3883   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3884   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3885   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3886   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3887   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3888   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3889   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3890   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3891   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3892   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3893   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3894   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3895   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3896   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3897   AC_CHECK_FUNC_EXT(gss_krb5_import_cred, $KRB5_LIBS)
3898   AC_CHECK_FUNC_EXT(gss_get_name_attribute, $KRB5_LIBS)
3899   AC_CHECK_FUNC_EXT(gss_mech_krb5, $KRB5_LIBS)
3900   AC_CHECK_FUNC_EXT(gss_oid_equal, $KRB5_LIBS)
3901   AC_CHECK_FUNC_EXT(gss_inquire_sec_context_by_oid, $KRB5_LIBS)
3903   # MIT krb5 1.8 does not expose this call (yet)
3904   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3906   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3907   # but does have the symbol
3908   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3910   LIBS="$KRB5_LIBS $LIBS"
3912   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3913         smb_krb5_cv_ticket_has_keyinfo,
3914         [
3915             AC_TRY_COMPILE(
3916             [
3917                 #include <krb5.h>
3918             ],
3919             [
3920                 krb5_ticket ticket;
3921                 krb5_kvno kvno;
3922                 krb5_enctype enctype;
3924                 enctype = ticket.enc_part.enctype;
3925                 kvno = ticket.enc_part.kvno;
3926             ],
3927             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3928             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3929         ])
3931   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3932         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3933             [Whether the krb5_ticket structure contains the kvno and enctype])
3934   fi
3936   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3937           smb_krb5_cv_creds_opt_free_context,
3938           [
3939                 AC_TRY_COMPILE([
3940                     #include <krb5.h>],
3941                     [
3942                         krb5_context ctx;
3943                         krb5_get_init_creds_opt *opt = NULL;
3944                         krb5_get_init_creds_opt_free(ctx, opt);
3945                     ],
3946                     [smb_krb5_cv_creds_opt_free_context=yes],
3947                     [smb_krb5_cv_creds_opt_free_context=no]
3948                 )
3949           ])
3951   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3952         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3953             [Whether krb5_get_init_creds_opt_free takes a context argument])
3954   fi
3956   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3957     AC_TRY_COMPILE([
3958         #include <krb5.h>],
3959         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3960         [smb_krb5_cv_verify_checksum=7],
3961         [smb_krb5_cv_verify_checksum=6],
3962     )
3963   ])
3964   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3966   AC_CACHE_CHECK([for checksum in krb5_checksum],
3967                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3968     AC_TRY_COMPILE([#include <krb5.h>],
3969       [krb5_checksum cksum; cksum.checksum.length = 0;],
3970       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3971       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3973   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3974     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3975                [Whether the krb5_checksum struct has a checksum property])
3976   fi
3978   AC_CACHE_CHECK([for etype in EncryptedData],
3979                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3980     AC_TRY_COMPILE([#include <krb5.h>],
3981       [EncryptedData edata; edata.etype = 0;],
3982       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3983       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3985   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3986     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3987                [Whether the EncryptedData struct has a etype property])
3988   fi
3990   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3991                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3992     AC_TRY_COMPILE([#include <krb5.h>],
3993       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3994       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3995       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3997   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3998     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3999                [Whether the krb5_ap_req struct has a ticket pointer])
4000   fi
4002   AC_CACHE_CHECK([for e_data pointer in krb5_error],
4003                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
4004     AC_TRY_COMPILE([#include <krb5.h>],
4005       [krb5_error err; err.e_data = NULL;],
4006       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
4007       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
4009   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
4010     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
4011                [Whether the krb5_error struct has a e_data pointer])
4012   fi
4014   AC_CACHE_CHECK([for krb5_crypto type],
4015                 samba_cv_HAVE_KRB5_CRYPTO,[
4016     AC_TRY_COMPILE([#include <krb5.h>],
4017       [krb5_crypto crypto;],
4018       samba_cv_HAVE_KRB5_CRYPTO=yes,
4019       samba_cv_HAVE_KRB5_CRYPTO=no)])
4021   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
4022     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
4023                [Whether the type krb5_crypto exists])
4024   fi
4026   AC_CACHE_CHECK([for krb5_encrypt_block type],
4027                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
4028     AC_TRY_COMPILE([#include <krb5.h>],
4029       [krb5_encrypt_block block;],
4030       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
4031       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
4033   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
4034     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
4035                [Whether the type krb5_encrypt_block exists])
4036   fi
4038   AC_CACHE_CHECK([for addrtype in krb5_address],
4039                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
4040     AC_TRY_COMPILE([#include <krb5.h>],
4041       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
4042       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
4043       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
4045   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
4046     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
4047                [Whether the krb5_address struct has a addrtype property])
4048   fi
4050   AC_CACHE_CHECK([for addr_type in krb5_address],
4051                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
4052     AC_TRY_COMPILE([#include <krb5.h>],
4053       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
4054       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
4055       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
4057   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
4058     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
4059               [Whether the krb5_address struct has a addr_type property])
4060   fi
4062   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
4063                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
4064                  [AC_TRY_COMPILE([#include <krb5.h>],
4065     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4066     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4068   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4069     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4070               [Whether the krb5_ticket struct has a enc_part2 property])
4071   fi
4073   AC_CACHE_CHECK([for keyblock in krb5_creds],
4074                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4075     AC_TRY_COMPILE([#include <krb5.h>],
4076       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4077       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4078       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4080   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4081     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4082               [Whether the krb5_creds struct has a keyblock property])
4083   fi
4085   AC_CACHE_CHECK([for session in krb5_creds],
4086                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4087     AC_TRY_COMPILE([#include <krb5.h>],
4088       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4089       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4090       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4092   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4093     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4094               [Whether the krb5_creds struct has a session property])
4095   fi
4097   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4098                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4099     AC_TRY_COMPILE([#include <krb5.h>],
4100       [krb5_keyblock key; key.keyvalue.data = NULL;],
4101       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4102       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4104   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4105     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4106               [Whether the krb5_keyblock struct has a keyvalue property])
4107   fi
4109   found_arcfour_hmac=no
4110   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4111                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4112     AC_TRY_COMPILE([#include <krb5.h>],
4113       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4114       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4115       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4116   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4117                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4118     AC_TRY_COMPILE([#include <krb5.h>],
4119       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4120       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4121       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4122 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4123 # w.r.t. arcfour and windows, so we must not enable it here
4124   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4125           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4126     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4127               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
4128     found_arcfour_hmac=yes
4129   fi
4130   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
4131                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
4132     AC_TRY_COMPILE([#include <krb5.h>],
4133       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
4134       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
4135       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
4136   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
4137     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
4138               [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
4139     found_arcfour_hmac=yes
4140   fi
4142   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4143                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4144     AC_TRY_COMPILE([#include <krb5.h>],
4145       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4146       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4147       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4149   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4150     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4151               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4152   fi
4154   AC_CACHE_CHECK([for KV5M_KEYTAB],
4155                  samba_cv_HAVE_KV5M_KEYTAB,[
4156     AC_TRY_COMPILE([#include <krb5.h>],
4157       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4158       samba_cv_HAVE_KV5M_KEYTAB=yes,
4159       samba_cv_HAVE_KV5M_KEYTAB=no)])
4161   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4162       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4163              [Whether the KV5M_KEYTAB option is available])
4164   fi
4166   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4167                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4168     AC_TRY_COMPILE([#include <krb5.h>],
4169       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4170       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4171       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4173   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4174     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4175               [Whether KRB5_KU_OTHER_CKSUM is available])
4176   fi
4178   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4179                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4180     AC_TRY_COMPILE([#include <krb5.h>],
4181       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4182       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4183       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4185   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4186     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4187               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4188   fi
4190   AC_CACHE_CHECK([for the krb5_princ_component macro],
4191                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4192     AC_TRY_LINK([#include <krb5.h>],
4193       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4194       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4195       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4197   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4198     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4199                [Whether krb5_princ_component is available])
4200   fi
4202   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4203                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4204     AC_TRY_COMPILE([#include <krb5.h>],
4205       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4206       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4207       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4209   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4210     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4211               [Whether krb5_keytab_entry has key member])
4212   fi
4214   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4215                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4216     AC_TRY_COMPILE([#include <krb5.h>],
4217       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4218       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4219       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4221   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4222     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4223               [Whether krb5_keytab_entry has keyblock member])
4224   fi
4226   AC_CACHE_CHECK([for magic in krb5_address],
4227                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4228     AC_TRY_COMPILE([#include <krb5.h>],
4229       [krb5_address addr; addr.magic = 0;],
4230       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4231       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4233   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4234     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4235               [Whether the krb5_address struct has a magic property])
4236   fi
4238   AC_CACHE_CHECK([for WRFILE: keytab support],
4239                 samba_cv_HAVE_WRFILE_KEYTAB,[
4240     AC_TRY_RUN([
4241 #include<krb5.h>
4242   main()
4243   {
4244     krb5_context context;
4245     krb5_keytab keytab;
4247     krb5_init_context(&context);
4248     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4249   }],
4250   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4251   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4253   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4254       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4255                [Whether the WRFILE:-keytab is supported])
4256   fi
4258   AC_CACHE_CHECK([for krb5_realm type],
4259                 samba_cv_HAVE_KRB5_REALM_TYPE,[
4260     AC_TRY_COMPILE([#include <krb5.h>],
4261       [krb5_realm realm;],
4262       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4263       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4265   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4266     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4267                [Whether the type krb5_realm exists])
4268   fi
4270   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4271                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4272     AC_TRY_COMPILE([#include <krb5.h>],
4273     [
4274     krb5_context context;
4275     krb5_principal principal;
4276     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4277     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4278     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4280   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4281     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4282               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4283   fi
4285   AC_CACHE_CHECK([for krb5_addresses type],
4286                 samba_cv_HAVE_KRB5_ADDRESSES,[
4287     AC_TRY_COMPILE([#include <krb5.h>],
4288       [krb5_addresses addr;],
4289       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4290       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4292   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4293     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4294                [Whether the type krb5_addresses type exists])
4295   fi
4297   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4298                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4299     AC_TRY_COMPILE([#include <krb5.h>],
4300     [
4301     krb5_mk_error(0,0,0);],
4302     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4303     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4305   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4306     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4307               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4308   fi
4310   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4311     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4312         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4313         AC_TRY_RUN_STRICT([
4314                 #include <stdlib.h>
4315                 #include <krb5.h>
4316                 int main(void) {
4317                         krb5_context context = NULL;
4318                         char *str = NULL;
4319                         krb5_enctype_to_string(context, 1, &str);
4320                         if (str) free (str); 
4321                         return 0;
4322                 }
4323                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4324                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4325                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4327     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4328       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4329                 [whether krb5_enctype_to_string takes krb5_context argument])
4330     fi
4332     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4333         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4334         AC_TRY_RUN_STRICT([
4335                 #include <krb5.h>
4336                 int main(void) {
4337                         char buf[256];
4338                         krb5_enctype_to_string(1, buf, 256);
4339                         return 0;
4340                 }
4341                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4342                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4343                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4345     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4346       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4347                 [whether krb5_enctype_to_string takes size_t argument])
4348     fi
4349   fi
4351   AC_CACHE_CHECK([for krb5_principal_get_realm],
4352                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4353     AC_TRY_LINK([#include <krb5.h>],
4354       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4355       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4356       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4358   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4359     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4360                [Whether the function krb5_principal_get_realm is defined])
4361   fi
4363   AC_CACHE_CHECK([for krb5_princ_realm],
4364                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4365     AC_TRY_LINK([#include <krb5.h>],
4366       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4367       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4368       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4370   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4371     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4372                [Whether the macro krb5_princ_realm is defined])
4373   fi
4375   #
4376   #
4377   # Now the decisions whether we can support krb5
4378   #
4379   # NOTE: all tests should be done before this block!
4380   #
4381   #
4382   if test x"$found_arcfour_hmac" != x"yes"; then
4383     AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4384     use_ads=no
4385   fi
4387   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4388     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4389     use_ads=no
4390   fi
4392   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4393           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4394   then
4395     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4396     use_ads=no
4397   fi
4399   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4400           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4401   then
4402     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4403     use_ads=no
4404   fi
4406   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4407           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4408   then
4409     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4410     use_ads=no
4411   fi
4413   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4414           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4415   then
4416     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4417     use_ads=no
4418   fi
4420   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4422       # We only need the following functions if we can't get the enctype
4423       # and kvno out of the ticket directly (ie. on Heimdal).
4425       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4426       then
4427         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4428         use_ads=no
4429       fi
4431       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4432       then
4433         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4434         use_ads=no
4435       fi
4437   fi
4439   if test x"$use_ads" = x"yes"; then
4440     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4441     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4442     if test x"$have_gssapi" = x"yes"; then
4443       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4444     fi
4445   else
4446     if test x"$with_ads_support" = x"yes"; then
4447         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4448     else
4449         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4450     fi
4451     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4452     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4453     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4454     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4455     KRB5_LIBS=""
4456     with_ads_support=no
4457   fi
4458   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4459   AC_MSG_RESULT([$use_ads])
4461 LIBS="$ac_save_LIBS"
4464 if test x"$use_ads" != xyes; then
4465         smbtorture4_possible=no
4468 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4469 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4472 ########################################################
4473 # Compile with DNS Updates support?
4475 with_dnsupdate_support=auto
4476 AC_MSG_CHECKING([whether to enable DNS Updates support])
4478 AC_ARG_WITH(dnsupdate,
4479 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4480 [ case "$withval" in
4481     yes|no)
4482         with_dnsupdate_support=$withval
4483         ;;
4484   esac ])
4486 AC_MSG_RESULT($with_dnsupdate_support)
4488 if test x"$with_dnsupdate_support" != x"no"; then
4490   ################################################################
4491   # first test for AD / GSSAPI support being enabled
4492         if test x"$have_gssapi" != xyes ; then
4493                 if test x"$with_dnsupdate_support" = x"yes" ; then
4494                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4495                 else
4496                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4497                         with_dnsupdate_support=no
4498                 fi
4499         fi
4500   ##################################################################
4501   # then test for uuid.h (necessary to generate unique DNS keynames
4502   # (uuid.h is required for this test)
4503         AC_CHECK_HEADERS(uuid/uuid.h)
4505         
4506         if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4507                 if test x"$with_dnsupdate_support" = x"yes"; then
4508                         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4509                 else
4510                         AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4511                 fi
4512                 with_dnsupdate_support=no
4513         fi
4516 if test x"$with_dnsupdate_support" != x"no"; then
4518   ########################################################
4519   # Now see if we can find the uuid libs in standard paths
4520   # On some systems, the uuid API is in libc, so we have to
4521   # be careful not to insert a spurious -luuid.
4523   UUID_LIBS=""
4524   AC_LIBTESTFUNC(uuid, uuid_generate,
4525           [
4526             case " $LIBS " in
4527                 *\ -luuid\ *)
4528                 UUID_LIBS="-luuid"
4529                 SMB_REMOVE_LIB(uuid)
4530                 ;;
4531             esac
4533             with_dnsupdate_support=yes
4534             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4535         ],
4536         [
4537             if test x"$with_dnsupdate_support" = x"yes"; then
4538                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4539             else
4540                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4541             fi
4542             with_dnsupdate_support=no
4543         ])
4545   # finally print out the result:
4546 AC_MSG_CHECKING(whether DNS Updates support is used)
4547 AC_MSG_RESULT([$with_dnsupdate_support])
4550 #################################################
4551 # check for automount support
4552 AC_MSG_CHECKING(whether to use automount)
4553 AC_ARG_WITH(automount,
4554 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4555 [ case "$withval" in
4556   yes)
4557     AC_MSG_RESULT(yes)
4558     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4559     ;;
4560   *)
4561     AC_MSG_RESULT(no)
4562     ;;
4563   esac ],
4564   AC_MSG_RESULT(no)
4567 #################################################
4568 # Check for a PAM clear-text auth, accounts, password
4569 # and session support. Most PAM implementations keep their
4570 # headers in /usr/include/security. Darwin keeps its in
4571 # /usr/include/pam.
4573 with_pam_for_crypt=no
4574 try_pam=auto
4575 AC_MSG_CHECKING(whether to try PAM support)
4576 AC_ARG_WITH(pam,
4577 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4578 [ case "$withval" in
4579   yes|no|auto)
4580     try_pam=$withval
4581     ;;
4582   esac
4584 AC_MSG_RESULT([$try_pam])
4586 use_pam=no
4587 create_pam_modules=no
4588 if test x"${try_pam}" != x"no";then
4589         use_pam=yes
4590         create_pam_modules=yes
4592         # Most systems have PAM headers in /usr/include/security, but Darwin
4593         # has them in /usr/include/pam.
4594         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4595         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4596                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4597                 if test x"${try_pam}" = x"yes";then
4598                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4599                 fi
4600                 use_pam=no
4601                 create_pam_modules=no
4602         fi
4604         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4605         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4606                 if test x"${try_pam}" = x"yes";then
4607                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4608                 fi
4609                 use_pam=no
4610                 create_pam_modules=no
4611         fi
4613         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4614                 #if HAVE_SECURITY_PAM_APPL_H
4615                 #include <security/pam_appl.h>
4616                 #endif
4617                 #if HAVE_PAM_PAM_APPL_H
4618                 #include <pam/pam_appl.h>
4619                 #endif
4620         ]])
4621         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4622                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4623                 if test x"${try_pam}" = x"yes";then
4624                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4625        fi
4626                 create_pam_modules=no
4627     fi
4629         if test x"$use_pam" = x"yes"; then
4630     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4631                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4632                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4633     with_pam_for_crypt=yes
4635                 if test x"$create_pam_modules" = x"yes"; then
4636                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4637                         # this checks are optional,
4638                         # we don't care about the results here
4639                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4640                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4641                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4642                 else
4643                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4644                 fi
4645         fi
4646         AC_MSG_CHECKING(whether to use PAM support)
4647         AC_MSG_RESULT([$use_pam])
4649         AC_MSG_CHECKING(whether to have PAM MODULES support)
4650         AC_MSG_RESULT([$create_pam_modules])
4652         AC_TRY_COMPILE([
4653                 #if defined(HAVE_SECURITY_PAM_APPL_H)
4654                 #include <security/pam_appl.h>
4655                 #elif defined(HAVE_PAM_PAM_APPL_H)
4656                 #include <pam/pam_appl.h>
4657                 #endif],[
4658                 pam_set_item(0, PAM_RHOST, 0);
4659                 ],
4660                 AC_DEFINE(HAVE_PAM_RHOST, 1,
4661                           [Define to 1 if PAM_RHOST is available]),[])
4663         AC_TRY_COMPILE([
4664                 #if defined(HAVE_SECURITY_PAM_APPL_H)
4665                 #include <security/pam_appl.h>
4666                 #elif defined(HAVE_PAM_PAM_APPL_H)
4667                 #include <pam/pam_appl.h>
4668                 #endif],[
4669                 pam_set_item(0, PAM_TTY, 0);
4670                 ],
4671                 AC_DEFINE(HAVE_PAM_TTY, 1,
4672                           [Define to 1 if PAM_TTY is available]),[])
4674 fi # try_pam != no
4676 #################################################
4677 # check for PAM_RADIO_TYPE
4678 AC_TRY_COMPILE([
4679 #if (!defined(LINUX))
4681 #define PAM_EXTERN extern
4682 #if defined(HAVE_SECURITY_PAM_APPL_H)
4683 #include <security/pam_appl.h>
4684 #elif defined(HAVE_PAM_PAM_APPL_H)
4685 #include <pam/pam_appl.h>
4686 #endif
4688 #endif
4690 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4691 #include <security/pam_modules.h>
4692 #elif defined(HAVE_PAM_PAM_MODULES_H)
4693 #include <pam/pam_modules.h>
4694 #endif
4696 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4697 #include <security/_pam_macros.h>
4698 #elif defined(HAVE_PAM__PAM_MACROS_H)
4699 #include <pam/_pam_macros.h>
4700 #endif
4702 #ifdef HAVE_SECURITY_PAM_EXT_H
4703 #include <security/pam_ext.h>
4704 #endif
4706 [int i; i = PAM_RADIO_TYPE; ],
4707 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4709 #################################################
4710 # check for pam_smbpass support
4711 PAM_MODULES=""
4712 INSTALL_PAM_MODULES=""
4713 UNINSTALL_PAM_MODULES=""
4715 try_pam_smbpass=auto
4716 AC_MSG_CHECKING(whether to use pam_smbpass)
4717 AC_ARG_WITH(pam_smbpass,
4718 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4719 [ case "$withval" in
4720   yes|no|auto)
4721     try_pam_smbpass=$withval
4722   ;;
4723   *)
4724     AC_MSG_ERROR([valid options are yes,no,auto])
4725   ;;
4726   esac
4729 if test x"${try_pam_smbpass}" = xno ; then
4730         use_pam_smbpass=no
4731 else
4732         use_pam_smbpass=yes
4733         # Conditions under which pam_smbpass can't be built.
4734         if test x"$BLDSHARED" != xtrue ; then
4735                 if test x"${try_pam_smbpass}" = xyes ; then
4736                         AC_MSG_ERROR([No support for shared modules])
4737                 fi
4738                 use_pam_smbpass=no
4739         elif test x"$create_pam_modules" != xyes ; then
4740                 if test x"${try_pam_smbpass}" = xyes ; then
4741                         AC_MSG_ERROR([No support for PAM MODULES])
4742                 fi
4743                 use_pam_smbpass=no
4744         fi
4746         if test x"${use_pam_smbpass}" = xyes ; then 
4747                 PAM_MODULES="pam_smbpass"
4748                 INSTALL_PAM_MODULES="installpammodules"
4749                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4750         fi
4752 AC_MSG_RESULT([$use_pam_smbpass])
4756 ## moved after the check for -lcrypt in order to
4757 ## ensure that the necessary libraries are included
4758 ## check checking for truncated salt.  Wrapped by the
4759 ## $with_pam_for_crypt variable as above   --jerry
4761 if test $with_pam_for_crypt = no; then
4762 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4763 crypt_LIBS="$LIBS"
4764 LIBS="$AUTH_LIBS $LIBS"
4765 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4766         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4767 LIBS="$crypt_LIBS"])
4768 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4769         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4773 #################################################
4774 # check for a NISPLUS_HOME support
4775 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4776 AC_ARG_WITH(nisplus-home,
4777 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4778 [ case "$withval" in
4779   yes)
4780     AC_MSG_RESULT(yes)
4781     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4782     ;;
4783   *)
4784     AC_MSG_RESULT(no)
4785     ;;
4786   esac ],
4787   AC_MSG_RESULT(no)
4790 #################################################
4791 # check for syslog logging
4792 AC_MSG_CHECKING(whether to use syslog logging)
4793 AC_ARG_WITH(syslog,
4794 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4795 [ case "$withval" in
4796   yes)
4797     AC_MSG_RESULT(yes)
4798     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4799     ;;
4800   *)
4801     AC_MSG_RESULT(no)
4802     ;;
4803   esac ],
4804   AC_MSG_RESULT(no)
4807 #################################################
4808 # check for custom syslog facility
4809 AC_MSG_CHECKING(whether to use a custom syslog facility)
4810 AC_ARG_WITH(syslog-facility,
4811 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4813   if test "$withval" = "no" ; then
4814     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4815   else
4816      if test "$withval" != "yes" ; then
4817         syslog_facility="$withval"
4818         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4819      fi
4820   fi
4823 #################################################
4824 # check for experimental disk-quotas support
4826 samba_cv_WITH_QUOTAS=auto
4827 samba_cv_TRY_QUOTAS=no
4828 samba_cv_RUN_QUOTA_TESTS=auto
4829 samba_cv_WITH_SYS_QUOTAS=auto
4830 samba_cv_TRY_SYS_QUOTAS=auto
4831 samba_cv_SYSQUOTA_FOUND=no
4833 AC_MSG_CHECKING(whether to try disk-quotas support)
4834 AC_ARG_WITH(quotas,
4835 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4836 [ case "$withval" in
4837   yes)
4838     AC_MSG_RESULT(yes)
4839     samba_cv_WITH_QUOTAS=yes
4840     samba_cv_TRY_QUOTAS=yes
4841     samba_cv_RUN_QUOTA_TESTS=yes
4842     #set sys quotas to auto in this case
4843     samba_cv_TRY_SYS_QUOTAS=auto
4844     ;;
4845   auto)
4846     AC_MSG_RESULT(auto)
4847     samba_cv_WITH_QUOTAS=auto
4848     samba_cv_TRY_QUOTAS=auto
4849     samba_cv_RUN_QUOTA_TESTS=auto
4850     #set sys quotas to auto in this case
4851     samba_cv_TRY_SYS_QUOTAS=auto
4852     ;;
4853   no)
4854     AC_MSG_RESULT(no)
4855     samba_cv_WITH_QUOTAS=no
4856     samba_cv_TRY_QUOTAS=no
4857     samba_cv_RUN_QUOTA_TESTS=no
4858     ;;
4859   *)
4860     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4861     ;;
4862   esac ],
4863   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4866 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4867 AC_ARG_WITH(sys-quotas,
4868 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4869 [ case "$withval" in
4870   yes)
4871     AC_MSG_RESULT(yes)
4872     samba_cv_WITH_SYS_QUOTAS=yes
4873     samba_cv_TRY_SYS_QUOTAS=yes
4874     samba_cv_RUN_QUOTA_TESTS=yes
4875     ;;
4876   auto)
4877     AC_MSG_RESULT(auto)
4878     samba_cv_WITH_SYS_QUOTAS=auto
4879     samba_cv_TRY_SYS_QUOTAS=auto
4880     samba_cv_RUN_QUOTA_TESTS=auto
4881     ;;
4882   no)
4883     AC_MSG_RESULT(no)
4884     samba_cv_WITH_SYS_QUOTAS=no
4885     samba_cv_TRY_SYS_QUOTAS=no
4886     ;;
4887   *)
4888     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4889     ;;
4890   esac ],
4891   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4894 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4895 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4896   case "$host_os" in
4897         *linux*)
4898             AC_MSG_RESULT(yes)
4899             samba_cv_TRY_SYS_QUOTAS=yes
4900             samba_cv_RUN_QUOTA_TESTS=yes
4901             ;;
4902         *)
4903             AC_MSG_RESULT(no)
4904             samba_cv_TRY_SYS_QUOTAS=no
4905             ;;
4906   esac
4909 #############################################
4910 # only check for quota stuff if --with-quotas
4911 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4913 case "$host_os" in
4914         # on linux we didn't need to test we have builtin support
4915         *linux*)
4916             samba_cv_SYSQUOTA_FOUND=yes
4917             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4918             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4919             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4920             AC_MSG_RESULT(yes)
4922             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4923             samba_cv_found_xfs_header=yes
4924             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4925             AC_MSG_RESULT(yes)
4926             ;;
4927         *solaris*)
4928             # need to set this define when using static linking (BUG 1473)
4929             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4930             ;;
4931         *)
4932             ;;
4933 esac
4935 # some broken header files need this
4936 AC_CHECK_HEADER(asm/types.h,[
4937             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4938             AC_ADD_INCLUDE(<asm/types.h>)
4939             ])
4941 # For quotas on Veritas VxFS filesystems
4942 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4944 # For quotas on Linux XFS filesystems
4945 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4947 # For sys/quota.h and linux/quota.h
4948 AC_CHECK_HEADERS(sys/quota.h)
4950 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4951 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4952 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4953 AC_TRY_COMPILE([
4954 #include "confdefs.h"
4955 #ifdef HAVE_SYS_TYPES_H
4956 #include <sys/types.h>
4957 #endif
4958 #ifdef HAVE_ASM_TYPES_H
4959 #include <asm/types.h>
4960 #endif
4961 #include <sys/quota.h>
4962 ],[int i = Q_XGETQUOTA;],
4963 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4964 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4965         samba_cv_found_xfs_header=yes
4969 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4970 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4971 AC_TRY_COMPILE([
4972 #include "confdefs.h"
4973 #ifdef HAVE_SYS_QUOTA_H
4974 #include <sys/quota.h>
4975 #endif
4977 struct dqblk D;
4978 D.dqb_fsoftlimit = 0;],
4979 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4980 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4981         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4984 ##################
4985 # look for a working quota system
4987 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4988 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4989 AC_TRY_RUN_STRICT([
4990 #define HAVE_QUOTACTL_4A 1
4991 #define AUTOCONF_TEST 1
4992 #include "confdefs.h"
4993 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4994            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4995 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4996     samba_cv_SYSQUOTA_FOUND=yes;
4997     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4998     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
5002 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5003 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
5004 AC_TRY_RUN_STRICT([
5005 #define HAVE_QUOTACTL_4B 1
5006 #define AUTOCONF_TEST 1
5007 #include "confdefs.h"
5008 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
5009            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
5010 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
5011     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
5012     samba_cv_SYSQUOTA_FOUND=yes;
5013     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
5014     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
5018 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5019 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
5020 AC_TRY_RUN_STRICT([
5021 #define HAVE_QUOTACTL_3 1
5022 #define AUTOCONF_TEST 1
5023 #include "confdefs.h"
5024 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
5025            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
5026 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
5027     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
5028     samba_cv_SYSQUOTA_FOUND=yes;
5029     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
5030     samba_cv_sysquotas_file="lib/sysquotas_3.c"
5034 #################################################
5035 # check for mntent.h and struct mntent
5036 AC_CHECK_HEADERS(mntent.h)
5037 #################################################
5038 # check for setmntent,getmntent,endmntent
5039 AC_CHECK_FUNCS(setmntent getmntent endmntent)
5041 #################################################
5042 # check for devnm.h and struct mntent
5043 AC_CHECK_HEADERS(devnm.h)
5044 #################################################
5045 # check for devnm
5046 AC_CHECK_FUNCS(devnm)
5048 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
5049     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5050         # if --with-sys-quotas=yes then build it
5051         # you have can use the get/set quota command smb.conf
5052         # options then
5053         samba_cv_SYSQUOTA_FOUND=auto
5054     fi
5055     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
5056         # if --with-sys-quotas=yes then build it
5057         # you have can use the get/set quota command smb.conf
5058         # options then
5059         samba_cv_TRY_SYS_QUOTAS=auto
5060     fi
5063 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5064 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
5065 SAVE_CPPFLAGS="$CPPFLAGS"
5066 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5067 AC_TRY_COMPILE([
5068 #include "confdefs.h"
5069 #define NO_PROTO_H 1
5070 #define NO_CONFIG_H 1
5071 #define HAVE_SYS_QUOTAS 1
5072 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
5073 #include "${srcdir-.}/lib/sysquotas.c"
5074 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
5075 CPPFLAGS="$SAVE_CPPFLAGS"
5077 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
5078 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
5079     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
5080         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5081         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
5082         samba_cv_WE_USE_SYS_QUOTAS=yes
5083         AC_MSG_RESULT(yes)
5084     else
5085         AC_MSG_RESULT(no)
5086     fi
5090 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5091 AC_CACHE_CHECK([whether the sys_quota interface works with NFS],samba_cv_SYSQUOTA_WORKS_NFS,[
5092 SAVE_CPPFLAGS="$CPPFLAGS"
5093 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5094 AC_TRY_COMPILE([
5095 #include "confdefs.h"
5096 #define NO_PROTO_H 1
5097 #define NO_CONFIG_H 1
5098 #define HAVE_SYS_QUOTAS 1
5099 #define HAVE_NFS_QUOTAS 1
5100 #include "${srcdir-.}/lib/sysquotas_nfs.c"
5101 ],[],samba_cv_SYSQUOTA_WORKS_NFS=yes,samba_cv_SYSQUOTA_WORKS_NFS=no)
5102 CPPFLAGS="$SAVE_CPPFLAGS"
5104 if test x"$samba_cv_SYSQUOTA_WORKS_NFS" = x"yes"; then
5105     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5106         AC_DEFINE(HAVE_NFS_QUOTAS,1,[Whether nfs quota support is available])
5107     fi
5111 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5112 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5113 SAVE_CPPFLAGS="$CPPFLAGS"
5114 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5115 AC_TRY_COMPILE([
5116 #include "confdefs.h"
5117 #define NO_PROTO_H 1
5118 #define NO_CONFIG_H 1
5119 #define HAVE_SYS_QUOTAS 1
5120 #define HAVE_XFS_QUOTAS 1
5121 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5122 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5123 CPPFLAGS="$SAVE_CPPFLAGS"
5125 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5126     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5127         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5128     fi
5132 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5133 SAVE_CPPFLAGS="$CPPFLAGS"
5134 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5135 AC_TRY_COMPILE([
5136 #include "confdefs.h"
5137 #define NO_PROTO_H 1
5138 #define NO_CONFIG_H 1
5139 #include "${srcdir-.}/smbd/quotas.c"
5140 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5141 CPPFLAGS="$SAVE_CPPFLAGS"
5143 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5144 AC_MSG_CHECKING(whether to use the old quota support)
5145     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5146       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5147         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5148         AC_MSG_RESULT(yes)
5149       else
5150         AC_MSG_RESULT(no)
5151       fi
5152     else
5153       AC_MSG_RESULT(no)
5154     fi
5157 ####################
5158 # End of quota check samba_cv_RUN_QUOTA_TESTS
5161 #################################################
5162 # check for experimental utmp accounting
5164 AC_MSG_CHECKING(whether to support utmp accounting)
5165 WITH_UTMP=yes
5166 AC_ARG_WITH(utmp,
5167 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
5168 [ case "$withval" in
5169   no)
5170                 WITH_UTMP=no
5171                 ;;
5172   *)
5173                 WITH_UTMP=yes
5174                 ;;
5175   esac ],
5178 # utmp requires utmp.h
5179 # Note similar check earlier, when checking utmp details.
5181 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5182         utmp_no_reason=", no utmp.h on $host_os"
5183         WITH_UTMP=no
5186 # Display test results
5188 if test x"$WITH_UTMP" = x"yes"; then
5189         AC_MSG_RESULT(yes)
5190         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5191 else
5192         AC_MSG_RESULT(no$utmp_no_reason)
5196 #################################################
5197 # these tests are taken from the GNU fileutils package
5198 AC_CHECKING(how to get filesystem space usage)
5199 space=no
5201 # Test for statvfs64.
5202 if test $space = no; then
5203   # SVR4
5204   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5205   [AC_TRY_RUN([
5206 #if defined(HAVE_UNISTD_H)
5207 #include <unistd.h>
5208 #endif
5209 #include <sys/types.h>
5210 #include <sys/statvfs.h>
5211   main ()
5212   {
5213     struct statvfs64 fsd;
5214     exit (statvfs64 (".", &fsd));
5215   }],
5216   fu_cv_sys_stat_statvfs64=yes,
5217   fu_cv_sys_stat_statvfs64=no,
5218   fu_cv_sys_stat_statvfs64=cross)])
5219   if test $fu_cv_sys_stat_statvfs64 = yes; then
5220     space=yes
5221     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5222   fi
5225 # Perform only the link test since it seems there are no variants of the
5226 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
5227 # because that got a false positive on SCO OSR5.  Adding the declaration
5228 # of a `struct statvfs' causes this test to fail (as it should) on such
5229 # systems.  That system is reported to work fine with STAT_STATFS4 which
5230 # is what it gets when this test fails.
5231 if test $space = no; then
5232   # SVR4
5233   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5234                  [AC_TRY_LINK([#include <sys/types.h>
5235 #include <sys/statvfs.h>],
5236                               [struct statvfs fsd; statvfs (0, &fsd);],
5237                               fu_cv_sys_stat_statvfs=yes,
5238                               fu_cv_sys_stat_statvfs=no)])
5239   if test $fu_cv_sys_stat_statvfs = yes; then
5240     space=yes
5241     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5242   fi
5245 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5246 # This is not the case on ancient Linux systems.
5248 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5249     AC_TRY_COMPILE([#include <sys/types.h>
5250 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5251         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5252 if test x"$samba_cv_fsid_int" = x"yes"; then
5253     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5256 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5257 # systems use f_bsize.
5258 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5259     AC_TRY_COMPILE([#include <sys/types.h>
5260 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5261         samba_cv_frsize=yes,samba_cv_frsize=no)])
5262 if test x"$samba_cv_frsize" = x"yes"; then
5263     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5266 # Some systems use f_flag in struct statvfs while others use f_flags
5267 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5268     AC_TRY_COMPILE([#include <sys/types.h>
5269 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5270         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5271 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5272     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5275 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5276     AC_TRY_COMPILE([#include <sys/types.h>
5277 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5278         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5279 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5280     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5283 if test $space = no; then
5284   # DEC Alpha running OSF/1
5285   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5286   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5287   [AC_TRY_RUN([
5288 #include <sys/param.h>
5289 #include <sys/types.h>
5290 #include <sys/mount.h>
5291   main ()
5292   {
5293     struct statfs fsd;
5294     fsd.f_fsize = 0;
5295     exit (statfs (".", &fsd, sizeof (struct statfs)));
5296   }],
5297   fu_cv_sys_stat_statfs3_osf1=yes,
5298   fu_cv_sys_stat_statfs3_osf1=no,
5299   fu_cv_sys_stat_statfs3_osf1=no)])
5300   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5301   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5302     space=yes
5303     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5304   fi
5307 if test $space = no; then
5308 # AIX
5309   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5310 member (AIX, 4.3BSD)])
5311   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5312   [AC_TRY_RUN([
5313 #ifdef HAVE_SYS_PARAM_H
5314 #include <sys/param.h>
5315 #endif
5316 #ifdef HAVE_SYS_MOUNT_H
5317 #include <sys/mount.h>
5318 #endif
5319 #ifdef HAVE_SYS_VFS_H
5320 #include <sys/vfs.h>
5321 #endif
5322   main ()
5323   {
5324   struct statfs fsd;
5325   fsd.f_bsize = 0;
5326   exit (statfs (".", &fsd));
5327   }],
5328   fu_cv_sys_stat_statfs2_bsize=yes,
5329   fu_cv_sys_stat_statfs2_bsize=no,
5330   fu_cv_sys_stat_statfs2_bsize=no)])
5331   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5332   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5333     space=yes
5334     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5335   fi
5338 if test $space = no; then
5339 # SVR3
5340   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5341   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5342   [AC_TRY_RUN([#include <sys/types.h>
5343 #include <sys/statfs.h>
5344   main ()
5345   {
5346   struct statfs fsd;
5347   exit (statfs (".", &fsd, sizeof fsd, 0));
5348   }],
5349     fu_cv_sys_stat_statfs4=yes,
5350     fu_cv_sys_stat_statfs4=no,
5351     fu_cv_sys_stat_statfs4=no)])
5352   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5353   if test $fu_cv_sys_stat_statfs4 = yes; then
5354     space=yes
5355     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5356   fi
5359 if test $space = no; then
5360 # 4.4BSD and NetBSD
5361   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5362 member (4.4BSD and NetBSD)])
5363   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5364   [AC_TRY_RUN([#include <sys/types.h>
5365 #ifdef HAVE_SYS_PARAM_H
5366 #include <sys/param.h>
5367 #endif
5368 #ifdef HAVE_SYS_MOUNT_H
5369 #include <sys/mount.h>
5370 #endif
5371   main ()
5372   {
5373   struct statfs fsd;
5374   fsd.f_fsize = 0;
5375   exit (statfs (".", &fsd));
5376   }],
5377   fu_cv_sys_stat_statfs2_fsize=yes,
5378   fu_cv_sys_stat_statfs2_fsize=no,
5379   fu_cv_sys_stat_statfs2_fsize=no)])
5380   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5381   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5382     space=yes
5383         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5384   fi
5387 if test $space = no; then
5388   # Ultrix
5389   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5390   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5391   [AC_TRY_RUN([#include <sys/types.h>
5392 #ifdef HAVE_SYS_PARAM_H
5393 #include <sys/param.h>
5394 #endif
5395 #ifdef HAVE_SYS_MOUNT_H
5396 #include <sys/mount.h>
5397 #endif
5398 #ifdef HAVE_SYS_FS_TYPES_H
5399 #include <sys/fs_types.h>
5400 #endif
5401   main ()
5402   {
5403   struct fs_data fsd;
5404   /* Ultrix's statfs returns 1 for success,
5405      0 for not mounted, -1 for failure.  */
5406   exit (statfs (".", &fsd) != 1);
5407   }],
5408   fu_cv_sys_stat_fs_data=yes,
5409   fu_cv_sys_stat_fs_data=no,
5410   fu_cv_sys_stat_fs_data=no)])
5411   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5412   if test $fu_cv_sys_stat_fs_data = yes; then
5413     space=yes
5414     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5415   fi
5419 # As a gating factor for large file support, in order to
5420 # use <4GB files we must have the following minimal support
5421 # available.
5422 # long long, and a 64 bit off_t or off64_t.
5423 # If we don't have all of these then disable large
5424 # file support.
5426 AC_MSG_CHECKING([if large file support can be enabled])
5427 AC_TRY_COMPILE([
5428 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5429 #include <sys/types.h>
5430 #else
5431 __COMPILE_ERROR_
5432 #endif
5434 [int i],
5435 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5436 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5437         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5439 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5442 #################################################
5443 # check for cluster extensions
5445 AC_MSG_CHECKING(cluster support)
5446 AC_ARG_WITH(cluster-support,
5447 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5449 if test x"$with_cluster_support" = x ; then
5450         with_cluster_support="auto"
5453 AC_MSG_RESULT($with_cluster_support)
5455 AC_ARG_WITH(ctdb,
5456 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5457 [ case "$withval" in
5458   yes|no)
5459     AC_MSG_WARN([--with-ctdb called without argument])
5460     ;;
5461   *)
5462     CTDB_CPPFLAGS="-I$withval/include"
5463     ;;
5464   esac])
5466 AC_ARG_ENABLE(old-ctdb,
5467         [AS_HELP_STRING([--enable-old-ctdb],
5468                 [Enable build against (too) old ctdb version (default=no)])],,
5469                 [enable_old_ctdb=no])
5472 if test "$with_cluster_support" != "no" ; then
5474 AC_MSG_NOTICE(checking whether cluster support is available)
5476 have_cluster_support="yes"
5477 ctdb_broken="no"
5479 SAVED_CPPFLAGS="$CPPFLAGS"
5480 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5482 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5483 #include "confdefs.h"
5484 #define NO_CONFIG_H
5485 #include "replace.h"
5486 #include "system/wait.h"
5487 #include "system/network.h"
5488 #define private #error __USED_RESERVED_WORD_private__
5489 #include <talloc.h>
5490 #include <tdb.h>
5491 #include <ctdb.h>
5494 if test "x$have_cluster_support" = "xyes" -a \
5495         "x$ac_cv_header_ctdb_h" != "xyes"
5496 then
5497         have_cluster_support=no
5498         ctdb_broken="ctdb.h is required for cluster support"
5501 if test "x$have_cluster_support" = "xyes" -a \
5502         "x$ac_cv_header_ctdb_h" != "xyes"
5503 then
5504         have_cluster_support=no
5505         ctdb_broken="ctdb_private.h is required for cluster support"
5509 if test "x$have_cluster_support" = "xyes" ; then
5510         AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5511         #include "confdefs.h"
5512         #define NO_CONFIG_H
5513         #include "replace.h"
5514         #include "system/wait.h"
5515         #include "system/network.h"
5516         #include <talloc.h>
5517         #include <tdb.h>
5518         #include <ctdb.h>
5519         #include <ctdb_private.h>
5520         ])
5521         if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" != x"yes"; then
5522                 ctdb_broken="ctdb transaction support missing or too old"
5523                 have_cluster_support=no
5524         fi
5527 if test "x$have_cluster_support" = "xyes" ; then
5528         AC_HAVE_DECL(CTDB_CONTROL_SCHEDULE_FOR_DELETION,[
5529         #include "confdefs.h"
5530         #define NO_CONFIG_H
5531         #include "replace.h"
5532         #include "system/wait.h"
5533         #include "system/network.h"
5534         #include <talloc.h>
5535         #include <tdb.h>
5536         #include <ctdb.h>
5537         #include <ctdb_private.h>
5538         ])
5539         if test x"$ac_cv_have_CTDB_CONTROL_SCHEDULE_FOR_DELETION_decl" != x"yes"
5540         then
5541                 if test "x$enable_old_ctdb" = "xyes" ; then
5542                         AC_MSG_WARN([ignoring missing SCHEDULE_FOR_DELETION (--enable-old-ctdb)])
5543                 else
5544                         ctdb_broken="support for SCHEDULE_FOR_DELETION control missing"
5545                         have_cluster_support=no
5546                 fi
5547         fi
5550 if test "x$have_cluster_support" = "xyes" ; then
5551         # In ctdb 1.0.57, ctdb_control_tcp was temporarily renamed
5552         # to ctdb_tcp_client.
5553         AC_CHECK_TYPE(struct ctdb_tcp_client,[
5554                 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5555         ],,[
5556         #include "confdefs.h"
5557         #define NO_CONFIG_H
5558         #include "replace.h"
5559         #include "system/wait.h"
5560         #include "system/network.h"
5561         #include <talloc.h>
5562         #include <tdb.h>
5563         #include <ctdb.h>
5564         #include <ctdb_private.h>
5565         ])
5568 if test "x$have_cluster_support" = "xyes" ; then
5569         AC_CHECK_TYPE(struct ctdb_control_tcp,[
5570                 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5571         ],[
5572                 ctdb_broken="missing struct ctdb_control_tcp"
5573                 have_cluster_support=no
5574         ],[
5575         #include "confdefs.h"
5576         #define NO_CONFIG_H
5577         #include "replace.h"
5578         #include "system/wait.h"
5579         #include "system/network.h"
5580         #include <talloc.h>
5581         #include <tdb.h>
5582         #include <ctdb.h>
5583         #include <ctdb_private.h>
5584         ])
5587 # test for optional ipv6 support in ctdb:
5588 if test "x$have_cluster_support" = "xyes" ; then
5589         AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5590                 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5591         ],,[
5592         #include "confdefs.h"
5593         #define NO_CONFIG_H
5594         #include "replace.h"
5595         #include "system/wait.h"
5596         #include "system/network.h"
5597         #include <talloc.h>
5598         #include <tdb.h>
5599         #include <ctdb.h>
5600         #include <ctdb_private.h>
5601         ])
5604 CPPFLAGS="$SAVED_CPPFLAGS"
5606 fi # (if test "$with_cluster_support" != "no")
5608 if test x"$have_cluster_support" = "xno" ; then
5609         case "$with_cluster_support" in
5610         yes)
5611                 AC_MSG_ERROR(["cluster support not available: $ctdb_broken"])
5612                 ;;
5613         auto)
5614                 AC_MSG_WARN(["cluster support not available: $ctdb_broken"])
5615                 ;;
5616         esac
5617         with_cluster_support=no
5620 if test "x$with_cluster_support" != "xno"; then
5621     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5622     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5623     AC_MSG_NOTICE(Building with cluster support)
5624 else
5625     AC_MSG_NOTICE(Building without cluster support)
5629 #################################################
5630 # check for rtnetlink
5632 AC_CHECK_HEADERS([linux/netlink.h],
5633   AC_CHECK_HEADERS([linux/rtnetlink.h],[],[],
5634                    [#include <bits/sockaddr.h>
5635                     #include <linux/netlink.h>]),
5636   [],[#include <bits/sockaddr.h>])
5638 #################################################
5639 # check for ACL support
5641 AC_MSG_CHECKING(whether to support ACLs)
5642 AC_ARG_WITH(acl-support,
5643 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5644 [ case "$withval" in
5645         yes|no)
5646                 with_acl_support="$withval"
5647                 ;;
5648   esac ])
5650 if test x"$with_acl_support" = x ; then
5651         with_acl_support="auto"
5654 AC_MSG_RESULT($with_acl_support)
5656 if test x"$with_acl_support" = x"no"; then
5657         AC_MSG_RESULT(Disabling ACL support)
5658         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5659 else
5660         AC_MSG_NOTICE(checking whether ACL support is available:)
5661         case "$host_os" in
5662         *sysv5*)
5663                 AC_MSG_NOTICE(Using UnixWare ACLs)
5664                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5665                 default_static_modules="$default_static_modules vfs_solarisacl"
5666                 ;;
5667         *solaris*)
5668                 AC_MSG_NOTICE(Using solaris ACLs)
5669                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5670                 ACL_LIBS="$ACL_LIBS -lsec"
5671                 default_static_modules="$default_static_modules vfs_solarisacl"
5672                 ;;
5673         *hpux*)
5674                 AC_MSG_NOTICE(Using HPUX ACLs)
5675                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5676                 default_static_modules="$default_static_modules vfs_hpuxacl"
5677                 ;;
5678         *irix*)
5679                 AC_MSG_NOTICE(Using IRIX ACLs)
5680                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5681                 default_static_modules="$default_static_modules vfs_irixacl"
5682                 ;;
5683         *aix*)
5684                 AC_MSG_NOTICE(Using AIX ACLs)
5685                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5686                 default_static_modules="$default_static_modules vfs_aixacl"
5687                 ;;
5688         *osf*)
5689                 AC_MSG_NOTICE(Using Tru64 ACLs)
5690                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5691                 ACL_LIBS="$ACL_LIBS -lpacl"
5692                 default_static_modules="$default_static_modules vfs_tru64acl"
5693                 ;;
5694         *darwin*)
5695                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5696                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5697                 ;;
5698         *)
5699                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5700                 case "$host_os" in
5701                 *linux*)
5702                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5703                         ;;
5704                 esac
5705                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5706                         acl_LIBS=$LIBS
5707                         LIBS="$LIBS $ACL_LIBS"
5708                         AC_TRY_LINK([
5709                                 #include <sys/types.h>
5710                                 #include <sys/acl.h>
5711                         ],[
5712                                 acl_t acl;
5713                                 int entry_id;
5714                                 acl_entry_t *entry_p;
5715                                 return acl_get_entry(acl, entry_id, entry_p);
5716                         ],
5717                         [samba_cv_HAVE_POSIX_ACLS=yes],
5718                         [samba_cv_HAVE_POSIX_ACLS=no])
5719                         LIBS=$acl_LIBS
5720                 ])
5721                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5722                         AC_MSG_NOTICE(Using posix ACLs)
5723                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5724                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5725                                 acl_LIBS=$LIBS
5726                                 LIBS="$LIBS $ACL_LIBS"
5727                                 AC_TRY_LINK([
5728                                         #include <sys/types.h>
5729                                         #include <sys/acl.h>
5730                                 ],[
5731                                         acl_permset_t permset_d;
5732                                         acl_perm_t perm;
5733                                         return acl_get_perm_np(permset_d, perm);
5734                                 ],
5735                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5736                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5737                                 LIBS=$acl_LIBS
5738                         ])
5739                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5740                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5741                         fi
5742                         default_static_modules="$default_static_modules vfs_posixacl"
5743                 else
5744                         AC_MSG_NOTICE(ACL support is not avaliable)
5745                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5746                 fi
5747                 ;;
5748         esac
5749 fi # with_acl_support
5751 #################################################
5752 # check if we have FreeBSD sunacl
5753 case "$host_os" in
5754 *freebsd*)
5755     AC_CHECK_HEADER(sunacl.h)
5756     if test x"$ac_cv_header_sunacl_h" = xyes ; then
5757        AC_DEFINE(HAVE_FREEBSD_SUNACL_H,1,[Whether we have FreeBSD sunacl around])
5758        ZFSACL_LIBS=-lsunacl
5759        AC_SUBST(ZFSACL_LIBS)
5760        default_shared_modules="$default_shared_modules vfs_zfsacl"
5761     fi
5762     ;;
5763 esac
5765 #################################################
5766 # check for AIO support
5768 AC_MSG_CHECKING(whether to support asynchronous io)
5769 AC_ARG_WITH(aio-support,
5770 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5771 [ case "$withval" in
5772   yes)
5774         AC_MSG_RESULT(yes)
5775         case "$host_os" in
5776         *)
5777                 AIO_LIBS=$LIBS
5778                 no_rt_LIBS=$LIBS
5779                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5780                 LIBS=$no_rt_LIBS
5781                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5782                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5783                 aio_LIBS=$LIBS
5784                 LIBS=$AIO_LIBS
5785                 AC_TRY_LINK([#include <sys/types.h>
5786 #include <aio.h>],
5787 [ struct aiocb a; return aio_read(&a);],
5788 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5789                 LIBS=$aio_LIBS])
5790                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5791                 aio_LIBS=$LIBS
5792                 LIBS=$AIO_LIBS
5793                 AC_TRY_LINK([#include <sys/types.h>
5794 #include <aio.h>],
5795 [ struct aiocb64 a; return aio_read64(&a);],
5796 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5797                 LIBS=$aio_LIBS])
5798                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5799                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5800                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5801                         LIBS=$AIO_LIBS
5802                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5803                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5804                         LIBS=$AIO_LIBS
5805                 fi
5807                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5808                         AC_MSG_CHECKING(for aio_read)
5809                         AC_LINK_IFELSE([#include <aio.h>
5810 int main() { struct aiocb a; return aio_read(&a); }],
5811 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5812 [AC_MSG_RESULT(no)])
5814                         AC_MSG_CHECKING(for aio_write)
5815                         AC_LINK_IFELSE([#include <aio.h>
5816 int main() { struct aiocb a; return aio_write(&a); }],
5817 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5818 [AC_MSG_RESULT(no)])
5820                         AC_MSG_CHECKING(for aio_fsync)
5821                         AC_LINK_IFELSE([#include <aio.h>
5822 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5823 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5824 [AC_MSG_RESULT(no)])
5826                         AC_MSG_CHECKING(for aio_return)
5827                         AC_LINK_IFELSE([#include <aio.h>
5828 int main() { struct aiocb a; return aio_return(&a); }],
5829 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5830 [AC_MSG_RESULT(no)])
5832                         AC_MSG_CHECKING(for aio_error)
5833                         AC_LINK_IFELSE([#include <aio.h>
5834 int main() { struct aiocb a; return aio_error(&a); }],
5835 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5836 [AC_MSG_RESULT(no)])
5838                         AC_MSG_CHECKING(for aio_cancel)
5839                         AC_LINK_IFELSE([#include <aio.h>
5840 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5841 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5842 [AC_MSG_RESULT(no)])
5844                         AC_MSG_CHECKING(for aio_suspend)
5845                         AC_LINK_IFELSE([#include <aio.h>
5846 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5847 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5848 [AC_MSG_RESULT(no)])
5849                 fi
5851                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5852                         AC_MSG_CHECKING(for aio_read64)
5853                         AC_LINK_IFELSE([#include <aio.h>
5854 int main() { struct aiocb a; return aio_read64(&a); }],
5855 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5856 [AC_MSG_RESULT(no)])
5858                         AC_MSG_CHECKING(for aio_write64)
5859                         AC_LINK_IFELSE([#include <aio.h>
5860 int main() { struct aiocb a; return aio_write64(&a); }],
5861 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5862 [AC_MSG_RESULT(no)])
5864                         AC_MSG_CHECKING(for aio_fsync64)
5865                         AC_LINK_IFELSE([#include <aio.h>
5866 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5867 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5868 [AC_MSG_RESULT(no)])
5870                         AC_MSG_CHECKING(for aio_return64)
5871                         AC_LINK_IFELSE([#include <aio.h>
5872 int main() { struct aiocb a; return aio_return64(&a); }],
5873 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5874 [AC_MSG_RESULT(no)])
5876                         AC_MSG_CHECKING(for aio_error64)
5877                         AC_LINK_IFELSE([#include <aio.h>
5878 int main() { struct aiocb a; return aio_error64(&a); }],
5879 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5880 [AC_MSG_RESULT(no)])
5882                         AC_MSG_CHECKING(for aio_cancel64)
5883                         AC_LINK_IFELSE([#include <aio.h>
5884 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5885 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5886 [AC_MSG_RESULT(no)])
5888                         AC_MSG_CHECKING(for aio_suspend64)
5889                         AC_LINK_IFELSE([#include <aio.h>
5890 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5891 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5892 [AC_MSG_RESULT(no)])
5893                 fi
5894             ;;
5895         esac
5896         ;;
5897   *)
5898     AC_MSG_RESULT(no)
5899     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5900     ;;
5901   esac ],
5902   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5903   AC_MSG_RESULT(no)
5906 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5907         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5908                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5909                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5910         fi
5913 #################################################
5914 # check for sendfile support
5916 with_sendfile_support=yes
5917 AC_MSG_CHECKING(whether to check to support sendfile)
5918 AC_ARG_WITH(sendfile-support,
5919 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5920 [ case "$withval" in
5921   yes)
5923         AC_MSG_RESULT(yes);
5925         case "$host_os" in
5926         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5927                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5928                 AC_TRY_LINK([#include <sys/sendfile.h>],
5930 int tofd, fromfd;
5931 off64_t offset;
5932 size_t total;
5933 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5935 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5937                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5938                 AC_TRY_LINK([#include <sys/sendfile.h>],
5940 int tofd, fromfd;
5941 off_t offset;
5942 size_t total;
5943 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5945 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5947 # Try and cope with broken Linux sendfile....
5948                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5949                 AC_TRY_LINK([\
5950 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5951 #undef _FILE_OFFSET_BITS
5952 #endif
5953 #include <sys/sendfile.h>],
5955 int tofd, fromfd;
5956 off_t offset;
5957 size_t total;
5958 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5960 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5962         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5963                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5964                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5965                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5966         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5967                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5968                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5969                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5970         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5971                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5972                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5973         else
5974                 AC_MSG_RESULT(no);
5975         fi
5977         ;;
5978         *freebsd* | *dragonfly* )
5979                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5980                 AC_TRY_LINK([\
5981 #include <sys/types.h>
5982 #include <unistd.h>
5983 #include <sys/socket.h>
5984 #include <sys/uio.h>],
5986         int fromfd, tofd, ret, total=0;
5987         off_t offset, nwritten;
5988         struct sf_hdtr hdr;
5989         struct iovec hdtrl;
5990         hdr.headers = &hdtrl;
5991         hdr.hdr_cnt = 1;
5992         hdr.trailers = NULL;
5993         hdr.trl_cnt = 0;
5994         hdtrl.iov_base = NULL;
5995         hdtrl.iov_len = 0;
5996         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5998 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6000         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6001                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
6002                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
6003                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6004         else
6005                 AC_MSG_RESULT(no);
6006         fi
6007         ;;
6009         *hpux*)
6010                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
6011                 AC_TRY_LINK([\
6012 #include <sys/socket.h>
6013 #include <sys/uio.h>],
6015         int fromfd, tofd;
6016         size_t total=0;
6017         struct iovec hdtrl[2];
6018         ssize_t nwritten;
6019         off64_t offset;
6021         hdtrl[0].iov_base = 0;
6022         hdtrl[0].iov_len = 0;
6024         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
6026 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
6027         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
6028                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
6029                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
6030                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6031         else
6032                 AC_MSG_RESULT(no);
6033         fi
6035                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
6036                 AC_TRY_LINK([\
6037 #include <sys/socket.h>
6038 #include <sys/uio.h>],
6040         int fromfd, tofd;
6041         size_t total=0;
6042         struct iovec hdtrl[2];
6043         ssize_t nwritten;
6044         off_t offset;
6046         hdtrl[0].iov_base = 0;
6047         hdtrl[0].iov_len = 0;
6049         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
6051 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6052         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6053                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6054                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
6055                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6056         else
6057                 AC_MSG_RESULT(no);
6058         fi
6059         ;;
6061         *solaris*)
6062                 AC_CHECK_LIB(sendfile,sendfilev)
6063                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
6064                 AC_TRY_LINK([\
6065 #include <sys/sendfile.h>],
6067         int sfvcnt;
6068         size_t xferred;
6069         struct sendfilevec vec[2];
6070         ssize_t nwritten;
6071         int tofd;
6073         sfvcnt = 2;
6075         vec[0].sfv_fd = SFV_FD_SELF;
6076         vec[0].sfv_flag = 0;
6077         vec[0].sfv_off = 0;
6078         vec[0].sfv_len = 0;
6080         vec[1].sfv_fd = 0;
6081         vec[1].sfv_flag = 0;
6082         vec[1].sfv_off = 0;
6083         vec[1].sfv_len = 0;
6084         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
6086 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
6088         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
6089                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
6090                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
6091                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6092         else
6093                 AC_MSG_RESULT(no);
6094         fi
6096                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
6097                 AC_TRY_LINK([\
6098 #include <sys/sendfile.h>],
6100         int sfvcnt;
6101         size_t xferred;
6102         struct sendfilevec vec[2];
6103         ssize_t nwritten;
6104         int tofd;
6106         sfvcnt = 2;
6108         vec[0].sfv_fd = SFV_FD_SELF;
6109         vec[0].sfv_flag = 0;
6110         vec[0].sfv_off = 0;
6111         vec[0].sfv_len = 0;
6113         vec[1].sfv_fd = 0;
6114         vec[1].sfv_flag = 0;
6115         vec[1].sfv_off = 0;
6116         vec[1].sfv_len = 0;
6117         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
6119 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
6121         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
6122                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
6123                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
6124                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6125         else
6126                 AC_MSG_RESULT(no);
6127         fi
6128         ;;
6129         *aix*)
6130                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
6131                 AC_TRY_LINK([\
6132 #include <sys/socket.h>],
6134         int fromfd, tofd;
6135         size_t total=0;
6136         struct sf_parms hdtrl;
6137         ssize_t nwritten;
6138         off64_t offset;
6140         hdtrl.header_data = 0;
6141         hdtrl.header_length = 0;
6142         hdtrl.file_descriptor = fromfd;
6143         hdtrl.file_offset = 0;
6144         hdtrl.file_bytes = 0;
6145         hdtrl.trailer_data = 0;
6146         hdtrl.trailer_length = 0;
6148         nwritten = send_file(&tofd, &hdtrl, 0);
6150 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6151         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6152                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6153                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
6154                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6155         else
6156                 AC_MSG_RESULT(no);
6157         fi
6158         ;;
6159         *)
6160         ;;
6161         esac
6162         ;;
6163   *)
6164     AC_MSG_RESULT(no)
6165     ;;
6166   esac ],
6167   AC_MSG_RESULT(yes)
6170 ############################################
6171 # See if we have the Linux readahead syscall.
6173 AC_CACHE_CHECK([for Linux readahead],
6174                 samba_cv_HAVE_LINUX_READAHEAD,[
6175     AC_TRY_LINK([
6176 #if defined(HAVE_UNISTD_H)
6177 #include <unistd.h>
6178 #endif
6179 #include <fcntl.h>],
6180     [ssize_t err = readahead(0,0,0x80000);],
6181     samba_cv_HAVE_LINUX_READAHEAD=yes,
6182     samba_cv_HAVE_LINUX_READAHEAD=no)])
6184 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6185   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6186              [Whether Linux readahead is available])
6189 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6191 ############################################
6192 # See if we have the posix_fadvise syscall.
6194 AC_CACHE_CHECK([for posix_fadvise],
6195                 samba_cv_HAVE_POSIX_FADVISE,[
6196     AC_TRY_LINK([
6197 #if defined(HAVE_UNISTD_H)
6198 #include <unistd.h>
6199 #endif
6200 #include <fcntl.h>],
6201     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6202     samba_cv_HAVE_POSIX_FADVISE=yes,
6203     samba_cv_HAVE_POSIX_FADVISE=no)])
6205 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6206   AC_DEFINE(HAVE_POSIX_FADVISE,1,
6207              [Whether posix_fadvise is available])
6210 ############################################
6211 # See if we have the Linux splice syscall.
6213 case "$host_os" in
6214 *linux*)
6215 AC_CACHE_CHECK([for Linux splice],
6216                 samba_cv_HAVE_LINUX_SPLICE,[
6217     AC_TRY_LINK([
6218 #if defined(HAVE_UNISTD_H)
6219 #include <unistd.h>
6220 #endif
6221 #include <fcntl.h>],
6222     [long ret = splice(0,0,1,0,400,0);],
6223     samba_cv_HAVE_LINUX_SPLICE=yes,
6224     samba_cv_HAVE_LINUX_SPLICE=no)])
6227 samba_cv_HAVE_LINUX_SPLICE=no
6229 esac
6231 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
6232   AC_DEFINE(HAVE_LINUX_SPLICE,1,
6233              [Whether Linux splice is available])
6236 AC_HAVE_DECL(splice, [#include <fcntl.h>])
6238 ############################################
6239 # See if we have the a broken readlink syscall.
6241 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
6242 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
6243         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
6245 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
6246         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
6249 #################################################
6250 # Check whether winbind is supported on this platform.  If so we need to
6251 # build and install client programs, sbin programs and shared libraries
6253 AC_MSG_CHECKING(whether to build winbind)
6255 # Initially, the value of $host_os decides whether winbind is supported
6257 HAVE_WINBIND=yes
6258 HAVE_WBCLIENT=no
6260 # Define external wbclient library to link against.  This disables winbind.
6261 # We define this here so --with-winbind can override it.
6262 AC_ARG_WITH(wbclient,
6263 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
6265   case "$withval" in
6266         no)
6267                 HAVE_WBCLIENT=no
6268                 ;;
6269         yes)
6270                 HAVE_WBCLIENT=yes
6271                 HAVE_WINBIND=no
6272                 ;;
6273         *)
6274                 HAVE_WBCLIENT=yes
6275                 HAVE_WINBIND=no
6276                 WBCLIENT_INCLUDES="-I$withval/include"
6277                 WBCLIENT_LDFLAGS="-L$withval/lib"
6278                 ;;
6279   esac ],
6282 AC_SUBST(WBCLIENT_INCLUDES)
6283 AC_SUBST(WBCLIENT_LDFLAGS)
6284 AC_SUBST(WBCLIENT_LIBS)
6287 # Define the winbind shared library name and any specific linker flags
6288 # it needs to be built with.
6290 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
6291 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
6292 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6293 NSSSONAMEVERSIONSUFFIX=""
6295 case "$host_os" in
6296         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
6297                 NSSSONAMEVERSIONSUFFIX=".2"
6298                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
6299                 ;;
6300         *freebsd[[5-9]]*)
6301                 # FreeBSD winbind client is implemented as a wrapper around
6302                 # the Linux version.
6303                 NSSSONAMEVERSIONSUFFIX=".1"
6304                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
6305                     ../nsswitch/winbind_nss_linux.o"
6306                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6307                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6308                 ;;
6310         *netbsd*[[3-9]]*)
6311                 # NetBSD winbind client is implemented as a wrapper
6312                 # around the Linux version. It needs getpwent_r() to
6313                 # indicate libc's use of the correct nsdispatch API.
6314                 #
6315                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6316                         WINBIND_NSS_EXTRA_OBJS="\
6317                             ../nsswitch/winbind_nss_netbsd.o \
6318                             ../nsswitch/winbind_nss_linux.o"
6319                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6320                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6321                 else
6322                         HAVE_WINBIND=no
6323                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6324                 fi
6325                 ;;
6326         *irix*)
6327                 # IRIX has differently named shared libraries
6328                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6329                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6330                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6331                 ;;
6332         *solaris*)
6333                 # Solaris winbind client is implemented as a wrapper around
6334                 # the Linux version.
6335                 NSSSONAMEVERSIONSUFFIX=".1"
6336                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6337                     ../nsswitch/winbind_nss_linux.o"
6338                 ;;
6339         *hpux11*)
6340                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6341                 ;;
6342         *aix*)
6343                 # AIX has even differently named shared libraries.  No
6344                 # WINS support has been implemented yet.
6345                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6346                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6347                 WINBIND_NSS="../nsswitch/WINBIND"
6348                 WINBIND_WINS_NSS=""
6349                 ;;
6350         *)
6351                 HAVE_WINBIND=no
6352                 winbind_no_reason=", unsupported on $host_os"
6353                 ;;
6354 esac
6356 # Check the setting of --with-winbind
6358 AC_ARG_WITH(winbind,
6359 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6361   case "$withval" in
6362         yes)
6363                 HAVE_WINBIND=yes
6364                 HAVE_WBCLIENT=no
6365                 ;;
6366         no)
6367                 HAVE_WINBIND=no
6368                 winbind_reason=""
6369                 ;;
6370   esac ],
6373 # We need unix domain sockets for winbind
6375 if test x"$HAVE_WINBIND" = x"yes"; then
6376         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6377                 winbind_no_reason=", no unix domain socket support on $host_os"
6378                 HAVE_WINBIND=no
6379         fi
6382 # Display test results
6384 if test x"$HAVE_WINBIND" = x"no"; then
6385         WINBIND_NSS=""
6386         WINBIND_WINS_NSS=""
6388 if test x"$HAVE_WBCLIENT" = x"yes"; then
6389         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6390                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6391         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6392         AC_MSG_RESULT(yes)
6393         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6394         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6395 else
6396         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6397                 BUILD_LIBWBCLIENT_SHARED=no
6398         else
6399                 BUILD_LIBWBCLIENT_SHARED=yes
6400         fi
6402         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6403         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6404         LIBWBCLIENT_SOVER=0
6405         LIBWBCLIENT_FULLVER=0
6406         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6407                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6408                 ## Only worry about libwbclient if we have shared
6409                 # library support
6410                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6411                 LIBWBCLIENT=libwbclient
6412                 INSTALL_LIBWBCLIENT=installlibwbclient
6413                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6414                 LIBWBCLIENT_LIBS="-lwbclient"
6415         else
6416                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6417                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6418         fi
6421 if test x"$HAVE_WINBIND" = x"yes"; then
6422         AC_MSG_RESULT(yes)
6423         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6425         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6426         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6427         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6428                 PAM_MODULES="$PAM_MODULES pam_winbind"
6429                 INSTALL_PAM_MODULES="installpammodules"
6430                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6431         fi
6433         # we use winbind, check for krb5 locate_plugin support:
6434         AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
6435                 [[#ifdef HAVE_KRB5_H
6436                  #include <krb5.h>
6437                  #endif
6438         ]])
6439         if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
6440                 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
6441                 if test x"$BLDSHARED" = x"true" ; then
6442                         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
6443                 fi
6444         fi
6445         # end of krb5 locate_plugin check
6446 else
6447         AC_MSG_RESULT(no$winbind_no_reason)
6450 AC_SUBST(WINBIND_NSS)
6451 AC_SUBST(WINBIND_WINS_NSS)
6452 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6453 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6454 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6456 AC_SUBST(WINBIND_KRB5_LOCATOR)
6458 # Solaris 10 does have new member in nss_XbyY_key
6459 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6460                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6461                 [#include <nss_dbdefs.h>])
6463 # Solaris has some extra fields in struct passwd that need to be
6464 # initialised otherwise nscd crashes.
6466 AC_CHECK_MEMBER(struct passwd.pw_comment,
6467                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6468                 [#include <pwd.h>])
6470 AC_CHECK_MEMBER(struct passwd.pw_age,
6471                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6472                 [#include <pwd.h>])
6474 # AIX 4.3.x and 5.1 do not have as many members in
6475 # struct secmethod_table as AIX 5.2
6476 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6477        [#include <usersec.h>])
6478 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6479        [#include <usersec.h>])
6481 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6482 AC_TRY_COMPILE([#include <sys/types.h>
6483 #include <sys/socket.h>],
6484 [struct ucred cred;
6485  socklen_t cred_len;
6486  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6488 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6489 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6490     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6493 AC_CACHE_CHECK([for getpeereid],samba_cv_HAVE_GETPEEREID,[
6494 AC_TRY_LINK([#include <sys/types.h>
6495 #include <unistd.h>],
6496 [uid_t uid; gid_t gid; int ret;
6497  ret = getpeereid(0, &uid, &gid);
6499 samba_cv_HAVE_GETPEEREID=yes,samba_cv_HAVE_GETPEEREID=no)])
6500 if test x"$samba_cv_HAVE_GETPEEREID" = xyes; then
6501    AC_DEFINE(HAVE_GETPEEREID,1,
6502              [Whether we have getpeereid to get socket credentials])
6506 #################################################
6507 # Check to see if we should use the included popt
6509 AC_ARG_WITH(included-popt,
6510 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6512   case "$withval" in
6513         yes)
6514                 INCLUDED_POPT=yes
6515                 ;;
6516         no)
6517                 INCLUDED_POPT=no
6518                 ;;
6519   esac ],
6521 if test x"$INCLUDED_POPT" != x"yes"; then
6522     AC_CHECK_LIB(popt, poptGetContext,
6523                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6526 AC_MSG_CHECKING(whether to use included popt)
6527 if test x"$INCLUDED_POPT" = x"yes"; then
6528     AC_MSG_RESULT(yes)
6529     BUILD_POPT='$(POPT_OBJ)'
6530     POPTLIBS='$(POPT_OBJ)'
6531     FLAGS1="-I\$(srcdir)/../lib/popt"
6532 else
6533     AC_MSG_RESULT(no)
6534         BUILD_POPT=""
6535     POPTLIBS="-lpopt"
6537 AC_SUBST(BUILD_POPT)
6538 AC_SUBST(POPTLIBS)
6539 AC_SUBST(FLAGS1)
6541 #################################################
6542 # Check if user wants DNS service discovery support
6544 AC_ARG_ENABLE(dnssd,
6545 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6547 AC_SUBST(DNSSD_LIBS)
6548 if test x"$enable_dnssd" = x"yes"; then
6549     have_dnssd_support=yes
6551     AC_CHECK_HEADERS(dns_sd.h)
6552     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6553         have_dnssd_support=no
6554     fi
6556     # On Darwin the DNSSD API is in libc, but on other platforms it's
6557     # probably in -ldns_sd
6558     AC_CHECK_FUNCS(DNSServiceRegister)
6559     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6560     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6561             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6562         have_dnssd_support=no
6563     fi
6565     if test x"$have_dnssd_support" = x"yes"; then
6566         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6567                 [Whether to enable DNS service discovery support])
6568     else
6569         if test x"$enable_dnssd" = x"yes"; then
6570             AC_MSG_ERROR(DNS service discovery support not available)
6571         fi
6572     fi
6576 #################################################
6577 # Check if user wants avahi support
6579 AC_ARG_ENABLE(avahi,
6580 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6582 if test x"$enable_avahi" != x"no"; then
6583     have_avahi_support=yes
6585     AC_CHECK_HEADERS(avahi-common/watch.h)
6586     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6587         have_avahi_support=no
6588     fi
6590     AC_CHECK_HEADERS(avahi-client/client.h)
6591     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6592         have_avahi_support=no
6593     fi
6595     save_LIBS="$LIBS"
6596     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6597     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6598     LIBS="$save_LIBS"
6600     if test x"$have_avahi_client_new" != x"yes" -o \
6601        x"$have_avahi_strerror" != x"yes" ; then
6602         have_avahi_support=no
6603     fi
6605     if test x"$have_avahi_support" = x"yes"; then
6606         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6607         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6608                 [Whether to enable avahi support])
6609         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6610     else
6611         if test x"$enable_avahi" = x"yes"; then
6612             AC_MSG_ERROR(avahi support not available)
6613         fi
6614     fi
6618 #################################################
6619 # Set pthread stuff
6621 PTHREAD_CFLAGS=error
6622 PTHREAD_LDFLAGS=error
6624 # If it's error, then the user didn't 
6625 # define it.
6626 if test "x$PTHREAD_LDFLAGS" = xerror; then
6627   AC_CHECK_LIB(pthread, pthread_attr_init, [
6628              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6629              PTHREAD_LDFLAGS="-lpthread" ])
6632 if test "x$PTHREAD_LDFLAGS" = xerror; then
6633   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6634              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6635              PTHREAD_LDFLAGS="-lpthreads" ])
6638 if test "x$PTHREAD_LDFLAGS" = xerror; then
6639    AC_CHECK_LIB(c_r, pthread_attr_init, [
6640                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6641                 PTHREAD_LDFLAGS="-pthread" ])
6644 if test "x$PTHREAD_LDFLAGS" = xerror; then
6645    AC_CHECK_FUNC(pthread_attr_init, [
6646                  PTHREAD_CFLAGS="-D_REENTRANT"
6647                  PTHREAD_LDFLAGS="-lpthread" ])
6650 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6651 # pthread_attr_init. On pthread_mutex_lock it works there...
6652 if test "x$PTHREAD_LDFLAGS" = xerror; then
6653    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6654                 PTHREAD_CFLAGS="-D_REENTRANT"
6655                 PTHREAD_LDFLAGS="-lpthread" ])
6658 AC_SUBST(PTHREAD_CFLAGS)
6659 AC_SUBST(PTHREAD_LDFLAGS)
6661 samba_cv_HAVE_PTHREAD=no
6662 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6663         samba_cv_HAVE_PTHREAD=yes
6664         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6665         ac_save_CFLAGS=$CFLAGS
6666         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6667         ac_save_LDFLAGS=$LDFLAGS
6668         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6669         AC_CHECK_HEADERS(pthread.h)
6670         CFLAGS=$ac_save_CFLAGS
6671         LDFLAGS=$ac_save_LDFLAGS
6672         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6675 #################################################
6676 # Check if user wants pthreadpool support
6678 AC_ARG_ENABLE(pthreadpool,
6679 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6681 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6682         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6685 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6686     LIBS="$LIBS $PTHREAD_LDFLAGS"
6687     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6688     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6689     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool.o")
6690     PTHREADPOOLTEST="bin/pthreadpooltest\$(EXEEXT)"
6691     AC_SUBST(PTHREADPOOLTEST)
6694 #################################################
6695 # Check to see if we should use the included iniparser
6697 AC_ARG_WITH(included-iniparser,
6698 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6700   case "$withval" in
6701         yes)
6702                 INCLUDED_INIPARSER=yes
6703                 ;;
6704         no)
6705                 INCLUDED_INIPARSER=no
6706                 ;;
6707   esac ],
6709 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6710     AC_CHECK_LIB(iniparser, iniparser_load,
6711                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6714 AC_MSG_CHECKING(whether to use included iniparser)
6715 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6716     AC_MSG_RESULT(yes)
6717     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6718         INIPARSERLIBS=""
6719     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6720 else
6721     AC_MSG_RESULT(no)
6722         BUILD_INIPARSER=""
6723     INIPARSERLIBS="-liniparser"
6725 AC_SUBST(BUILD_INIPARSER)
6726 AC_SUBST(INIPARSERLIBS)
6727 AC_SUBST(FLAGS1)
6729 ###################################################
6730 # Check for different/missing (set|get|end)netgrent prototypes
6731 CFLAGS_SAVE=$CFLAGS
6732 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
6733         CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6735 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6736     AC_TRY_COMPILE([#include<netdb.h>
6737                     #ifdef HAVE_NETGROUP_H
6738                     #include<netgroup.h>
6739                     #endif],[setnetgrent("foo")],
6740                     samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6741 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6742     AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6744 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6745     AC_TRY_COMPILE([#include<netdb.h>
6746                     #ifdef HAVE_NETGROUP_H
6747                     #include<netgroup.h>
6748                     #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6749                     samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6750 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6751     AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6753 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6754     AC_TRY_COMPILE([#include<netdb.h>
6755                     #ifdef HAVE_NETGROUP_H
6756                     #include<netgroup.h>
6757                     #endif],[endnetgrent()],
6758                     samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6759 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6760     AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6763 CFLAGS=$CFLAGS_SAVE
6765 # Checks for the vfs_fileid module
6766 # Start
6767 AC_CHECK_FUNC(getmntent)
6769 AC_CHECK_HEADERS(sys/statfs.h)
6771 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6772 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6773              AC_TRY_RUN([
6774                 #include <sys/types.h>
6775                 #include <sys/statfs.h>
6776                 int main(void)
6777                 {
6778                         struct statfs fsd;
6779                         fsid_t fsid = fsd.f_fsid;
6780                         return statfs (".", &fsd);
6781                 }],
6782                 vfsfileid_cv_statfs=yes,
6783                 vfsfileid_cv_statfs=no,
6784                 vfsfileid_cv_statfs=cross)
6786 AC_MSG_RESULT($vfsfileid_cv_statfs)
6788 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6789         x"$vfsfileid_cv_statfs" = x"yes"; then
6790         default_shared_modules="$default_shared_modules vfs_fileid"
6792 # End
6793 # Checks for the vfs_fileid module
6796 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6798         eval MODULE_DEFAULT_$i=STATIC
6799 done
6801 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6803         dnl Fall back to static if we cannot build shared libraries
6804         eval MODULE_DEFAULT_$i=STATIC
6806         if test $BLDSHARED = true; then
6807                 eval MODULE_DEFAULT_$i=SHARED
6808         fi
6809 done
6811 dnl Always build these modules static
6812 MODULE_rpc_spoolss=STATIC
6813 MODULE_rpc_srvsvc=STATIC
6814 MODULE_idmap_tdb=STATIC
6815 MODULE_idmap_passdb=STATIC
6816 MODULE_idmap_nss=STATIC
6818 MODULE_nss_info_template=STATIC
6820 AC_ARG_WITH(static-modules,
6821 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6822 [ if test $withval; then
6823         for i in `echo $withval | sed -e 's/,/ /g'`
6824         do
6825                 eval MODULE_$i=STATIC
6826         done
6827 fi ])
6829 AC_ARG_WITH(shared-modules,
6830 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6831 [ if test $withval; then
6832         for i in `echo $withval | sed -e 's/,/ /g'`
6833         do
6834                         eval MODULE_$i=SHARED
6835         done
6836 fi ])
6838 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6839                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6840         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6841         AC_SUBST(SMBD_FAM_LIBS)
6844 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o,
6845                    "bin/ldapsam.$SHLIBEXT", PDB,
6846                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6847 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6848 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6849 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6850 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6851 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6853 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6854 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6855 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6856 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6857 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6858 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6859 SMB_MODULE(idmap_autorid, winbindd/idmap_autorid.o, "bin/autorid.$SHLIBEXT", IDMAP)
6860 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6861 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6862 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6863 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6865 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6866 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6868 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6869 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6870 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6871 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6872 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6874 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6875 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6876 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6877 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6878 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6879 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6880 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6881 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6882 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6883 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6885 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6886 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6887 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6888 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6889 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6890 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6891 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6892 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6893 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6894 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6895 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6896 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6897 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6898 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6899 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6900 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6901 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6902 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6903 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6904 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6905 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6906 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6907 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6908 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6909 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6910 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6911 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6912 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6913 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6914 SMB_MODULE(vfs_gpfs_hsm_notify, \$(VFS_GPFS_PREFETCH_OBJ), "bin/gpfs_hsm_notify.$SHLIBEXT", VFS)
6915 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6916 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6917 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6918 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6919 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6920 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6921 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6922 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6923 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6924 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6925 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6926 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6927 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6928 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6929 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6930 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6931 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6932 SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
6934 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6936 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6937 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6938 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6940 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6941 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6942 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6943 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6945 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6947 #################################################
6948 # do extra things if we are running insure
6950 if test "${ac_cv_prog_CC}" = "insure"; then
6951         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6954 #################################################
6955 # If run from the build farm, enable NASTY hacks
6956 #################################################
6957 AC_MSG_CHECKING(whether to enable build farm hacks)
6958 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6959         AC_MSG_RESULT(yes)
6960         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6961 else
6962         AC_MSG_RESULT(no)
6965 #################################################
6966 # check for bad librt/libpthread interactions
6968 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6969     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6970     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6971     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6973 SMB_IF_RTSIGNAL_BUG(
6974         [
6975             # Have RT_SIGNAL bug, need to check whether the problem will
6976             # affect anything we have configured.
6978             rt_do_error=no
6979             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6980                 if test x"$rt_signal_lease_ok" = x"no" ; then
6981                     rt_do_error=yes
6982                 fi
6983             fi
6985             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6986                 if test x"$rt_signal_notify_ok" = x"no" ; then
6987                     rt_do_error=yes
6988                 fi
6989             fi
6991             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6992                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6993                 if test x"$rt_signal_aio_ok" = x"no" ; then
6994                     rt_do_error=yes
6995                 fi
6996             fi
6998             if test x"$rt_do_error" = x"yes" ; then
6999                 SMB_IS_LIBPTHREAD_LINKED(
7000                     [
7001                         cat<<MSG
7003 *** On this platforms, linking Samba against pthreads causes problems
7004 *** with the oplock and change notification mechanisms. You may be
7005 *** using pthreads as a side-effect of using the --with-aio-support
7006 *** or --with-profiling-data options. Please remove these and try again.
7009                     ],
7010                     [
7011                         cat<<MSG
7013 *** On this platform, the oplock and change notification mechanisms do not
7014 *** appear to work. Please report this problem to samba-technical@samba.org
7015 *** and attach the config.log file from this directory.
7018                     ])
7019                 AC_MSG_ERROR(unable to use realtime signals on this platform)
7020             fi
7021         ],
7022         [
7023             # no RT_SIGNAL bug, we are golden
7024             SMB_IS_LIBPTHREAD_LINKED(
7025                 [
7026                     AC_MSG_WARN(using libpthreads - this may degrade performance)
7027                 ])
7029         ],
7030         [
7031             # cross compiling, I hope you know what you are doing
7032             true
7033         ])
7037 m4_include(../lib/zlib/zlib.m4)
7039 if test x$smbtorture4_possible = xyes; then
7040         saved_USESHARED="$USESHARED"
7041         USESHARED="false"
7042         smbtorture4_path="bin/smbtorture4"
7043         smbtorture4_option="-t bin/smbtorture4"
7044         AC_SUBST(smbtorture4_path)
7045         AC_SUBST(smbtorture4_option)
7046         USESHARED="$saved_USESHARED"
7047         SMBTORTURE4="bin/smbtorture4"
7048         AC_SUBST(SMBTORTURE4)
7051 AC_SUBST(ZLIB_LIBS)
7052 AC_SUBST(ZLIB_OBJS)
7053 AC_ZLIB([ZLIB_OBJS=""], [
7054         ZLIB_LIBS=""
7055         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
7056                      deflate.o trees.o zutil.o inflate.o infback.o \
7057                          inftrees.o inffast.o
7058         do
7059                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
7060         done
7061         CFLAGS="-I../lib/zlib $CFLAGS"
7064 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
7066 if test "x$enable_dmalloc" = xyes
7067 then
7068         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
7069         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
7070                   [Define to check invariants around some common functions])
7071         LIBS="$LIBS -ldmalloc"
7074 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
7075 LIB_REMOVE_USR_LIB(LDFLAGS)
7076 LIB_REMOVE_USR_LIB(LIBS)
7078 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
7079 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
7080 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
7082 #################################################
7083 # Display summary of libraries detected
7085 AC_MSG_RESULT([Using libraries:])
7086 AC_MSG_RESULT([    LIBS = $LIBS])
7087 if test x"$with_ads_support" != x"no"; then
7088     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
7090 if test x"$with_ldap_support" != x"no"; then
7091     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
7093 if test x"$with_dnsupdate_support" != x"no"; then
7094     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
7096 if test x"$have_dnssd_support" != x"no"; then
7097     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
7099 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
7101 #################################################
7102 # final configure stuff
7104 AC_MSG_CHECKING([configure summary])
7105 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
7106            AC_MSG_RESULT(yes),
7107            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
7108            AC_MSG_WARN([cannot run when cross-compiling]))
7110 dnl Merge in developer cflags from now on
7111 AC_SUBST(DEVELOPER_CFLAGS)
7112 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
7113     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
7116 # Stuff the smbd-only libraries at the end of the smbd link
7117 # path (if we have them).
7118 SMBD_LIBS="$samba_dmapi_libs"
7119 AC_SUBST(SMBD_LIBS)
7121 CFLAGS="${CFLAGS} \$(FLAGS)"
7122 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
7124 # If we had to expand the includes, make tsure the output file is moved back
7125 AC_OUTPUT_COMMANDS([
7126 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
7127         ln -s Makefile-noincludes Makefile
7131 AC_OUTPUT(Makefile
7132           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
7133           lib/netapi/examples/Makefile
7134           lib/netapi/tests/Makefile
7135           pkgconfig/smbclient.pc
7136           pkgconfig/wbclient.pc
7137           pkgconfig/netapi.pc
7138           pkgconfig/smbsharemodes.pc
7139           ../examples/libsmbclient/Makefile.internal
7140           )
7142 #################################################
7143 # Print very concise instructions on building/use
7144 if test "x$enable_dmalloc" = xyes
7145 then
7146         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
7147         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])