WHATSNEW: Prepare release notes for Samba 3.6.12.
[Samba.git] / source3 / configure.in
blob0f805ee503e895e028be79bd471e2f52864e91ae
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/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 -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_TARGET_SOVER)
73 AC_SUBST(LIBWBCLIENT_SHARED_TARGET_FULLVER)
74 AC_SUBST(LIBWBCLIENT_SHARED)
75 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
76 AC_SUBST(LIBWBCLIENT_STATIC)
77 AC_SUBST(LIBWBCLIENT_SOVER)
78 AC_SUBST(LIBWBCLIENT_FULLVER)
79 AC_SUBST(LIBWBCLIENT)
80 AC_SUBST(LIBWBCLIENT_LIBS)
82 AC_SUBST(LIBSAMBAUTIL_SHARED)
84 AC_SUBST(PRINT_LIBS)
85 AC_SUBST(AUTH_LIBS)
86 AC_SUBST(ACL_LIBS)
87 AC_SUBST(PASSDB_LIBS)
88 AC_SUBST(IDMAP_LIBS)
89 AC_SUBST(KRB5_LIBS)
90 AC_SUBST(UUID_LIBS)
91 AC_SUBST(LDAP_LIBS)
92 AC_SUBST(GPEXT_LIBS)
93 AC_SUBST(PAM_MODULES)
94 AC_SUBST(INSTALL_PAM_MODULES)
95 AC_SUBST(UNINSTALL_PAM_MODULES)
96 AC_SUBST(NSS_MODULES)
97 AC_SUBST(EXTRA_BIN_PROGS)
98 AC_SUBST(CIFSMOUNT_PROGS)
99 AC_SUBST(INSTALL_CIFSMOUNT)
100 AC_SUBST(UNINSTALL_CIFSMOUNT)
101 AC_SUBST(CIFSUMOUNT_PROGS)
102 AC_SUBST(INSTALL_CIFSUMOUNT)
103 AC_SUBST(UNINSTALL_CIFSUMOUNT)
104 AC_SUBST(CIFSUPCALL_PROGS)
105 AC_SUBST(INSTALL_CIFSUPCALL)
106 AC_SUBST(UNINSTALL_CIFSUPCALL)
107 AC_SUBST(EXTRA_SBIN_PROGS)
108 AC_SUBST(EXTRA_ALL_TARGETS)
109 AC_SUBST(CONFIG_LIBS)
110 AC_SUBST(NSCD_LIBS)
112 # compile with optimization and without debugging by default, but
113 # allow people to set their own preference.
114 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
115 # if it has no value.  This prevent *very* large debug binaries from occurring
116 # by default.
117 if test "x$debug" = "xyes" ; then
118         CFLAGS="${CFLAGS} -g"
120 if test "x$CFLAGS" = x; then
121   CFLAGS="-O"
124 m4_include(../lib/socket_wrapper/config.m4)
125 m4_include(../lib/nss_wrapper/config.m4)
127 m4_include(m4/swat.m4)
129 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
131 # Probe the gcc version for extra CFLAGS. We always stash these in
132 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
133 # Makefile edit, avoiding the need to re-run configure.
134 if test x"$ac_cv_prog_gcc" = x"yes" ; then
135         DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
136         # Add -Wdeclaration-after-statement if compiler supports it
137         AC_CACHE_CHECK(
138           [that the C compiler understands -Wdeclaration-after-statement],
139           samba_cv_HAVE_Wdeclaration_after_statement, [
140           AC_TRY_RUN_STRICT([
141             int main(void)
142             {
143                 return 0;
144             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
145             samba_cv_HAVE_Wdeclaration_after_statement=yes,
146             samba_cv_HAVE_Wdeclaration_after_statement=no,
147             samba_cv_HAVE_Wdeclaration_after_statement=cross)
148        ])
150         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
151             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
152         fi
154         #-Werror-implicit-function-declaration
155         AC_CACHE_CHECK(
156           [that the C compiler understands -Werror-implicit-function-declaration],
157           samba_cv_HAVE_Werror_implicit_function_declaration, [
158           AC_TRY_RUN_STRICT([
159             int main(void)
160             {
161                 return 0;
162             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
163             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
164             samba_cv_HAVE_Werror_implicit_function_declaration=no,
165             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
166        ])
167        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
168             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
169        fi
171         # krb5developer is like developer, except we don't get
172         # -Wstrict-prototypes.
173        if test x"$krb5_developer" != x"$yes" ; then
174             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
175        fi
177        if test x"$picky_developer" = x"yes"; then
178             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
179        fi
182 #################################################
183 # check for a shared memory profiling support
184 AC_MSG_CHECKING(whether to use profiling)
185 AC_ARG_WITH(profiling-data,
186 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
187 [ case "$withval" in
188   yes)
189     AC_MSG_RESULT(yes)
190     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
191     samba_cv_WITH_PROFILE=yes
192     ;;
193   *)
194     AC_MSG_RESULT(no)
195     samba_cv_WITH_PROFILE=no
196     ;;
197   esac ],
198   AC_MSG_RESULT(no)
201 dnl Checks for programs.
202 AC_ARG_ENABLE(smbtorture4,
203         [AS_HELP_STRING([--enable-smbtorture4], [Enable building smbtorture4 (default=auto)])])
205 if test x$enable_smbtorture4 != xno; then
206         smbtorture4_possible=yes
207 else
208         smbtorture4_possible=no
211 AC_PROG_INSTALL
212 AC_PROG_AWK
213 # Check for GNU make
214 m4_include(../m4/check_make.m4)
215 AC_SAMBA_GNU_MAKE([true], [true])
217 # Check for perl
218 m4_include(../m4/check_perl.m4)
219 AC_SAMBA_PERL([true], [smbtorture4_possible=no])
221 # Check for python
222 m4_include(../m4/check_python.m4)
223 AC_SAMBA_PYTHON_DEVEL([true], [smbtorture4_possible=no])
225 AC_CHECK_TOOL(AR, ar)
227 dnl Check if we (actually our C compiler!) use GNU ld
228 AC_PROG_LD_GNU
230 dnl Certain versions of GNU ld the default is not to have the
231 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
232 dnl warnings when building modules.
233 if test "$ac_cv_prog_gnu_ld" = "yes"; then
234         ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>&1 < /dev/null | grep "GNU ld"`
235         AC_MSG_CHECKING(GNU ld release date)
236         changequote(,)dnl
237         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'`
238         changequote([,])dnl
239         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
240         if test -n "$ac_cv_gnu_ld_date"; then
241         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
242                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
243         fi
244         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
245                 ac_cv_gnu_ld_version_script=yes
246         fi
247         else
248            AC_MSG_CHECKING(GNU ld release version)
249            changequote(,)dnl
250            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'`
251            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
252            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
253            changequote([,])dnl
254            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
255            AC_MSG_CHECKING(GNU ld release version major)
256            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
257            AC_MSG_CHECKING(GNU ld release version minor)
258            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
259            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
260              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
261            fi
262            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
263              ac_cv_gnu_ld_version_script=yes
264            fi
265         fi
268 dnl look for executable suffix
269 AC_EXEEXT
271 dnl Check if C compiler understands -c and -o at the same time
272 AC_PROG_CC_C_O
273 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
274       BROKEN_CC=
275 else
276       BROKEN_CC=#
278 AC_SUBST(BROKEN_CC)
280 dnl Check if the C compiler understands -Werror (GNU)
281 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
282  AC_TRY_RUN_STRICT([
283   int main(void)
284   {
285         return 0;
286   }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
287   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
288 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
289    Werror_FLAGS="-Werror"
290 else
291 dnl Check if the C compiler understands -w2
292 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
293  AC_TRY_RUN_STRICT([
294   int main(void)
295   {
296         return 0;
297   }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
298   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
299 if test x"$samba_cv_HAVE_w2" = x"yes"; then
300    Werror_FLAGS="-w2"
301 else
302 dnl Check if the C compiler understands -errwarn (Sun)
303 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
304   AC_TRY_RUN_STRICT([
305    int main(void)
306    {
307         return 0;
308    }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
309    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
310 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
311    Werror_FLAGS="-errwarn=%all"
312 else
313 dnl Check if the C compiler understands -qhalt (IBM)
314 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
315   AC_TRY_RUN_STRICT([
316    int main(void)
317    {
318         return 0;
319    }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
320    samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
321 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
322    Werror_FLAGS="-qhalt=w"
328 ############################################
329 # check if the compiler can handle negative enum values
330 # and don't truncate the values to INT_MAX
331 # a runtime test is needed here
332 AC_SUBST(PIDL_ARGS)
333 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
334     AC_TRY_RUN(
336         #include <stdio.h>
337         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
338         int main(void) {
339                 enum negative_values v1 = NEGATIVE_VALUE;
340                 unsigned v2 = NEGATIVE_VALUE;
342                 if (v1 != 0xFFFFFFFF) {
343                         printf("%u != 0xFFFFFFFF\n", v1);
344                         return 1;
345                 }
346                 if (v2 != 0xFFFFFFFF) {
347                         printf("%u != 0xFFFFFFFF\n", v2);
348                         return 1;
349                 }
351                 return 0;
352         }
354         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv_CC_NEGATIVE_ENUM_VALUES=no)])
355 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
356         AC_MSG_WARN([using --uint-enums for pidl])
357         PIDL_ARGS="$PIDL_ARGS --uint-enums"
360 dnl Figure out the flags to support named structure initializers
362 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
364 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
365 AC_MSG_CHECKING(uname -s)
366 AC_MSG_RESULT(${UNAME_S})
368 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
369 AC_MSG_CHECKING(uname -r)
370 AC_MSG_RESULT(${UNAME_R})
372 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
373 AC_MSG_CHECKING(uname -m)
374 AC_MSG_RESULT(${UNAME_M})
376 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
377 AC_MSG_CHECKING(uname -p)
378 AC_MSG_RESULT(${UNAME_P})
380 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
381 AC_MSG_CHECKING(uname -i)
382 AC_MSG_RESULT(${UNAME_I})
384 dnl Add #include for broken IRIX header files
385   case "$host_os" in
386         *irix6*)
387                 #TODO add to libreplace
388                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
389                         dnl Fix sensible defaults for MIPSPro compilers. The
390                         dnl error numbers are valid for the 7.3 compilers,
391                         dnl hopefully also valid for the 7.4 series.
392                         dnl
393                         dnl Bugzilla 3801. Force an error on warning 1035
394                         dnl so we don't incorrectly detect stdint.h. This
395                         dnl warning is emitted for #error directives.
396                         CFLAGS="$CFLAGS -diag_error 1035"
397                         dnl 1209: Controlling expression is constant
398                         dnl 1174: Function foo declared but never referenced
399                         dnl 3201: Parameter foo was never referenced
400                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
401                 fi
402         ;;
403 esac
405 DYNEXP=
406 AC_SUBST(DYNEXP)
407 LDSHFLAGS_Z_DEFS=
408 AC_SUBST(LDSHFLAGS_Z_DEFS)
409 LDSHFLAGS_Z_NODEFS=
410 AC_SUBST(LDSHFLAGS_Z_NODEFS)
412 dnl Add modules that have to be built by default here
413 dnl These have to be built static:
414 default_static_modules=""
415 default_static_modules="$default_static_modules pdb_smbpasswd"
416 default_static_modules="$default_static_modules pdb_tdbsam"
417 default_static_modules="$default_static_modules pdb_wbc_sam"
418 default_static_modules="$default_static_modules rpc_lsarpc"
419 default_static_modules="$default_static_modules rpc_samr"
420 default_static_modules="$default_static_modules rpc_winreg"
421 default_static_modules="$default_static_modules rpc_initshutdown"
422 default_static_modules="$default_static_modules rpc_dssetup"
423 default_static_modules="$default_static_modules rpc_wkssvc"
424 default_static_modules="$default_static_modules rpc_svcctl"
425 default_static_modules="$default_static_modules rpc_ntsvcs"
426 default_static_modules="$default_static_modules rpc_netlogon"
427 default_static_modules="$default_static_modules rpc_netdfs"
428 default_static_modules="$default_static_modules rpc_srvsvc"
429 default_static_modules="$default_static_modules rpc_spoolss"
430 default_static_modules="$default_static_modules rpc_eventlog"
431 default_static_modules="$default_static_modules auth_sam"
432 default_static_modules="$default_static_modules auth_unix"
433 default_static_modules="$default_static_modules auth_winbind"
434 default_static_modules="$default_static_modules auth_wbc"
435 default_static_modules="$default_static_modules auth_server"
436 default_static_modules="$default_static_modules auth_domain"
437 default_static_modules="$default_static_modules auth_builtin"
438 default_static_modules="$default_static_modules vfs_default"
439 default_static_modules="$default_static_modules nss_info_template"
441 dnl These are preferably build shared, and static if dlopen() is not available
442 default_shared_modules=""
443 default_shared_modules="$default_shared_modules vfs_recycle"
444 default_shared_modules="$default_shared_modules vfs_audit"
445 default_shared_modules="$default_shared_modules vfs_extd_audit"
446 default_shared_modules="$default_shared_modules vfs_full_audit"
447 default_shared_modules="$default_shared_modules vfs_netatalk"
448 default_shared_modules="$default_shared_modules vfs_fake_perms"
449 default_shared_modules="$default_shared_modules vfs_default_quota"
450 default_shared_modules="$default_shared_modules vfs_readonly"
451 default_shared_modules="$default_shared_modules vfs_cap"
452 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
453 default_shared_modules="$default_shared_modules vfs_shadow_copy"
454 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
455 default_shared_modules="$default_shared_modules charset_CP850"
456 default_shared_modules="$default_shared_modules charset_CP437"
457 default_shared_modules="$default_shared_modules auth_script"
458 default_shared_modules="$default_shared_modules vfs_readahead"
459 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
460 default_shared_modules="$default_shared_modules vfs_streams_xattr"
461 default_shared_modules="$default_shared_modules vfs_streams_depot"
462 default_shared_modules="$default_shared_modules vfs_acl_xattr"
463 default_shared_modules="$default_shared_modules vfs_acl_tdb"
464 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
465 default_shared_modules="$default_shared_modules vfs_preopen"
466 default_shared_modules="$default_shared_modules vfs_catia"
467 default_shared_modules="$default_shared_modules vfs_scannedonly"
468 default_shared_modules="$default_shared_modules vfs_crossrename"
469 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
470 default_shared_modules="$default_shared_modules vfs_time_audit"
471 default_shared_modules="$default_shared_modules idmap_autorid"
473 if test "x$developer" = xyes; then
474    default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
475    default_static_modules="$default_static_modules auth_netlogond"
476    default_shared_modules="$default_shared_modules charset_weird perfcount_test"
480 # Config CPPFLAG settings for strange OS's that must be set
481 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
482 # case statement; its first reference must be unconditional.
484 case "$host_os" in
485     *hpux*)
487 # Defines needed for HPUX support.
488 # HPUX has bigcrypt but (sometimes?) doesn't use it for
489 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
491       case `uname -r` in
492                 *9*|*10*|*11)
493                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
494                 ;;
495       esac
496       ;;
499 # CRAY Unicos has broken const handling
500        *unicos*)
501           AC_MSG_RESULT([disabling const])
502           CPPFLAGS="$CPPFLAGS -Dconst="
503           ;;
504         
506 # AIX4.x doesn't even admit to having large
507 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
509     *aix4*)
510           AC_MSG_RESULT([enabling large file support])
511       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
512           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
513       ;;
515 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
516 # to the existance of large files..
517 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
518 # recommendations on large file support, however it makes the
519 # compile work using gcc 2.7 and 2.8, whereas using the Sun
520 # recommendation makes the compile fail on gcc2.7. JRA.
522 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
524         *solaris*)
525                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
526                 case `uname -r` in
527                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
528                                 AC_MSG_RESULT([no large file support])
529                                 ;;
530                         5.*)
531                         LDFLAGS="$LDFLAGS -lthread"
532                         CPPFLAGS="$CPPFLAGS -D_REENTRANT"
533                         AC_MSG_RESULT([enabling large file support])
534                         if test "$ac_cv_prog_gcc" = yes; then
535                                 ${CC-cc} -v >conftest.c 2>&1
536                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
537                                 rm -fr conftest.c
538                                 case "$ac_cv_gcc_compiler_version_number" in
539                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
540                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
541                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
542                                                 ;;
543                                         *)
544                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
545                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
546                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
547                                                 ;;
548                                 esac
549                         else
550                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
551                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
552                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
553                         fi
554                         ;;
555                 esac
556                 ;;
558 # IRIX uses SYSV printing.  Make sure to set that here
560         *irix*)
561                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
562                 ;;
563         *freebsd*|*dragonfly*)
564                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
565                 ;;
567 # VOS may need to have POSIX support and System V compatibility enabled.
569     *vos*)
570     case "$CPPFLAGS" in
571           *-D_POSIX_C_SOURCE*)
572                 ;;
573           *)
574                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
575                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
576                 ;;
577     esac
578     case "$CPPFLAGS" in
579           *-D_SYSV*|*-D_SVID_SOURCE*)
580                 ;;
581           *)
582                 CPPFLAGS="$CPPFLAGS -D_SYSV"
583                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
584     esac
585     ;;
587 # Tests needed for SINIX large file support.
589     *sysv4*)
590       if test $host = mips-sni-sysv4 ; then
591         AC_MSG_CHECKING([for LFS support])
592         old_CPPFLAGS="$CPPFLAGS"
593         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
594         AC_TRY_RUN([
595 #include <unistd.h>
596 main () {
597 #if _LFS64_LARGEFILE == 1
598 exit(0);
599 #else
600 exit(1);
601 #endif
602 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
603         CPPFLAGS="$old_CPPFLAGS"
604         if test x$SINIX_LFS_SUPPORT = xyes ; then
605           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
606                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
607           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
608           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
609           LIBS="`getconf LFS64_LIBS` $LIBS"
610         fi
611       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
612       fi
613     ;;
615 # Systems with LFS support.
617     gnu* | k*bsd*-gnu | kopensolaris*-gnu)
618         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
619         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
620         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
621         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
622         ;;
624 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
626     *linux*)
627         AC_MSG_CHECKING([for LFS support])
628         old_CPPFLAGS="$CPPFLAGS"
629         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
630        AC_TRY_RUN([
631 #include <unistd.h>
632 #include <sys/utsname.h>
633 #include <string.h>
634 #include <stdlib.h>
635 main() {
636 #if _LFS64_LARGEFILE == 1
637        struct utsname uts;
638        char *release;
639        int major, minor;
641        /* Ensure this is glibc 2.2 or higher */
642 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
643        int libc_major = __GLIBC__;
644        int libc_minor = __GLIBC_MINOR__;
646        if (libc_major < 2)
647               exit(1);
648        if (libc_minor < 2)
649               exit(1);
650 #endif
652        /* Ensure this is kernel 2.4 or higher */
654        uname(&uts);
655        release = strdup(uts.release);
656        major = atoi(strsep(&release, "."));
657        minor = atoi(strsep(&release, "."));
659        if (major > 2 || (major == 2 && minor > 3))
660                exit(0);
661        exit(1);
662 #else
663        exit(1);
664 #endif
666 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
667         CPPFLAGS="$old_CPPFLAGS"
668         if test x$LINUX_LFS_SUPPORT = xyes ; then
669                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
670                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
671                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
672                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
673         fi
674         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
675         ;;
678 # MacOS X is the *only* system that uses compose character in utf8. This
679 # is so horribly broken....
681     *darwin*)
682         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
684 # Add a system specific charset module.
685         default_shared_modules="$default_shared_modules charset_macosxfs"
687         ;;
688     *hurd*)
689         AC_MSG_CHECKING([for LFS support])
690         old_CPPFLAGS="$CPPFLAGS"
691         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
692         AC_TRY_RUN([
693 #include <unistd.h>
694 main () {
695 #if _LFS64_LARGEFILE == 1
696 exit(0);
697 #else
698 exit(1);
699 #endif
700 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
701         CPPFLAGS="$old_CPPFLAGS"
702         if test x$GLIBC_LFS_SUPPORT = xyes ; then
703           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
704                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
705           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
706         fi
707       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
708     ;;
709     *qnx*)
710         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
711         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
712         ;;
714 esac
716 SAVE_CPPFLAGS="${CPPFLAGS}"
717 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
719 AC_LIBREPLACE_BROKEN_CHECKS
720 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
721 AC_LIBREPLACE_NETWORK_CHECKS
723 CPPFLAGS="${SAVE_CPPFLAGS}"
725 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
727 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
728 AC_SUBST(LIBREPLACE_OBJS)
730 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
731 AC_SUBST(LIBREPLACE_LIBS)
734 # add -ldl to the global LIBS
735 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
736 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
739 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
740 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
741 AC_CHECK_HEADERS(limits.h float.h libintl.h)
742 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
743 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)
744 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
745 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
746 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
747 AC_CHECK_HEADERS(sys/sysmacros.h)
748 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
749 AC_CHECK_HEADERS(langinfo.h locale.h)
750 AC_CHECK_HEADERS(xfs/libxfs.h)
751 AC_CHECK_HEADERS(netgroup.h)
752 AC_CHECK_HEADERS(linux/falloc.h)
754 dnl check for OS implementation of md5 conformant to rfc1321
755 samba_cv_md5lib=none
757 AC_CHECK_LIB(c, MD5Update, [samba_cv_md5lib=""])
759 if test x"$samba_cv_md5lib" = x"none" ; then
760         AC_CHECK_LIB(md, MD5Update, [samba_cv_md5lib=md])
763 if test x"$samba_cv_md5lib" = x"none" ; then
764         AC_CHECK_LIB(md5, MD5Update, [samba_cv_md5lib=md5])
767 if test x"$samba_cv_md5lib" != x"none" ; then
768         AC_CHECK_HEADERS(md5.h)
771 CRYPTO_MD5_OBJ="../lib/crypto/md5.o"
772 if test x"$ac_cv_header_md5_h" = x"yes" -a \
773         x"$samba_cv_md5lib" != x"none" ; then
774         if test x"$samba_cv_md5lib" != x ; then
775                 LIBS="${LIBS} -l${samba_cv_md5lib}"
776                 AC_DEFINE(HAVE_LIBMD5, 1,
777                                   [Whether libmd5 conformant to rfc1321 is available.])
778         fi
779         CRYPTO_MD5_OBJ=
782 AC_SUBST(CRYPTO_MD5_OBJ)
785 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
786 #if HAVE_RPC_RPC_H
787 #include <rpc/rpc.h>
788 #endif
791 ## These fail to compile on IRIX so just check for their presence
792 AC_CHECK_HEADERS(sys/mode.h,,,)
794 # Look for Darwin headers
795 old_CPPFLAGS="$CPPFLAGS"
796 CPPFLAGS="-Iinclude $CPPFLAGS"
797 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
798 CPPFLAGS="$old_CPPFLAGS"
800 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
801 # subdirectory of headers.
802 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
804 if test x"$enable_developer" = x"yes" ; then
805    if test x"$ac_cv_header_valgrind_h" = xyes -o \
806            x"$ac_cv_header_valgrind_valgrind_h" = xyes ; then
807       AC_DEFINE(VALGRIND,1,[Whether we have valgrind headers])
808    fi
812 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
813 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
815 case "$host_os" in
816     *hpux*)
817                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
818                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
819                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
820                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
821                 fi
822         ;;
823 esac
824 AC_CHECK_HEADERS(shadow.h)
825 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
826 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
828 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
829 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
831 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
833 # For experimental utmp support (lastlog on some BSD-like systems)
834 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
836 AC_CHECK_SIZEOF(int,cross)
837 AC_CHECK_SIZEOF(long,cross)
838 AC_CHECK_SIZEOF(long long,cross)
839 AC_CHECK_SIZEOF(short,cross)
841 AC_C_CONST
842 AC_C_INLINE
843 AC_C_BIGENDIAN
844 AC_C_CHAR_UNSIGNED
846 AC_TYPE_SIGNAL
847 AC_TYPE_UID_T
848 AC_TYPE_MODE_T
849 AC_TYPE_OFF_T
850 AC_TYPE_SIZE_T
851 AC_TYPE_PID_T
852 AC_STRUCT_ST_RDEV
853 AC_DIRENT_D_OFF
854 AC_CHECK_TYPE(ssize_t, int)
855 AC_CHECK_TYPE(wchar_t, unsigned short)
857 ############################################
858 # for cups support we need libcups, and a handful of header files
860 AC_ARG_ENABLE(cups,
861 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
863 if test x$enable_cups != xno; then
864         AC_PATH_PROG(CUPS_CONFIG, cups-config)
866         if test "x$CUPS_CONFIG" != x; then
868                 ac_save_LDFLAGS=$LDFLAGS
869                 ac_save_PRINT_LIBS=$PRINT_LIBS
870                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
872                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
873                         x"$ac_cv_header_cups_language_h" = xyes; then
874                         # try linking with -lcups alone first. That should work unless libcups is
875                         # underlinked. With cups-config --libs we pull in unwanted and unneeded
876                         # dendencies including thread libraries - use cups-config only if really
877                         # required. 
878                         AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
879                                 [PRINT_LIBS="$ac_save_PRINT_LIBS -lcups"],
880                                 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
881                                  PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
883                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
884                         samba_cv_HAVE_CUPS=yes
885                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
886                 else
887                         AC_MSG_WARN([cups-config around but cups-devel not installed])
888                         CFLAGS=$ac_save_CFLAGS
889                         LDFLAGS=$ac_save_LDFLAGS
890                         PRINT_LIBS=$ac_save_PRINT_LIBS
891                 fi
893         elif test x"$enable_cups" = x"yes"; then
894                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
895         fi
898 AC_ARG_ENABLE(iprint,
899 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
901 if test x$enable_iprint != xno; then
902         if test x"$samba_cv_HAVE_CUPS" = xyes; then
903                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
904         elif test x"$enable_iprint" = x"yes"; then
905                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
906         fi
909 ############################################
910 # check if the compiler will optimize out function calls
911 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
912     AC_TRY_LINK([
913 #include <stdio.h>],
915                 if (0) {
916                    this_function_does_not_exist();
917                 } else {
918                   return 1;
919                 }
922         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
923 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
924    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
927 #############################################
928 # check for fd passing struct via msg_control
929 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
930     AC_TRY_COMPILE([
931 #include <sys/types.h>
932 #include <stdlib.h>
933 #include <stddef.h>
934 #include <sys/socket.h>
935 #include <sys/un.h>],
937         struct msghdr msg;
938         union {
939               struct cmsghdr cm;
940               char control[CMSG_SPACE(sizeof(int))];
941         } control_un;
942         msg.msg_control = control_un.control;
943         msg.msg_controllen = sizeof(control_un.control);
945         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
946 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
947    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
948              [If we can use msg_control for passing file descriptors])
951 #############################################
952 # check for fd passing struct via msg_acctrights
953 AC_CACHE_CHECK([for fd passing via msg_acctrights],
954                 samba_cv_msghdr_msg_acctrights, [
955     AC_TRY_COMPILE([
956 #include <sys/types.h>
957 #include <stdlib.h>
958 #include <stddef.h>
959 #include <sys/socket.h>
960 #include <sys/un.h>],
962         struct msghdr msg;
963         int fd;
964         msg.msg_acctrights = (caddr_t) &fd;
965         msg.msg_acctrightslen = sizeof(fd);
967         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
968 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
969    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
970              [If we can use msg_acctrights for passing file descriptors])
973 AC_CHECK_FUNCS(dirfd)
974 if test x"$ac_cv_func_dirfd" = x"yes"; then
975         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
978 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
979     AC_TRY_COMPILE([
980 #include <sys/types.h>
981 #if STDC_HEADERS
982 #include <stdlib.h>
983 #include <stddef.h>
984 #endif
985 #include <signal.h>],[struct sigevent s;],
986         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
987 if test x"$samba_cv_struct_sigevent" = x"yes"; then
988    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
989    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
990         [#include <signal.h>])
993 # and glibc has setresuid under linux but the function does
994 # nothing until kernel 2.1.44! very dumb.
995 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
996     AC_TRY_RUN([#include <errno.h>
997 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
998         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
999 if test x"$samba_cv_have_setresuid" = x"yes"; then
1000     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1003 # Do the same check for setresguid...
1005 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1006     AC_TRY_RUN([#include <unistd.h>
1007 #include <errno.h>
1008 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1009         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1010 if test x"$samba_cv_have_setresgid" = x"yes"; then
1011     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1014 AC_FUNC_MEMCMP
1016 ###############################################
1017 # Readline included by default unless explicitly asked not to
1018 test "${with_readline+set}" != "set" && with_readline=yes
1020 # test for where we get readline() from
1021 AC_MSG_CHECKING(whether to use readline)
1022 AC_ARG_WITH(readline,
1023 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
1024 [  case "$with_readline" in
1025   yes)
1026     AC_MSG_RESULT(yes)
1028     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1029     AC_CHECK_HEADERS(readline/history.h)
1031     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1032       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1033        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1034       done
1035       AC_CHECK_LIB(readline, rl_callback_handler_install,
1036        [TERMLIBS="-lreadline $TERMLIBS"
1037        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1038        break], [TERMLIBS=], $TERMLIBS)])
1039     ;;
1040   no)
1041     AC_MSG_RESULT(no)
1042     ;;
1043   *)
1044     AC_MSG_RESULT(yes)
1046     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1047     # alternate readline path
1048     _ldflags=${LDFLAGS}
1049     _cppflags=${CPPFLAGS}
1051     # Add additional search path
1052     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1053     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1055     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1056     AC_CHECK_HEADERS(readline/history.h)
1058     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1059       for termlib in ncurses curses termcap terminfo termlib; do
1060        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1061       done
1062       AC_CHECK_LIB(readline, rl_callback_handler_install,
1063        [TERMLDFLAGS="-L$with_readline/lib"
1064        TERMCPPFLAGS="-I$with_readline/include"
1065        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1066        TERMLIBS="-lreadline $TERMLIBS"
1067        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1068        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1070     LDFLAGS=$_ldflags
1071     ;;
1072   esac],
1073   AC_MSG_RESULT(no)
1075 AC_SUBST(TERMLIBS)
1076 AC_SUBST(TERMLDFLAGS)
1078 # The readline API changed slightly from readline3 to readline4, so
1079 # code will generate warnings on one of them unless we have a few
1080 # special cases.
1081 AC_CHECK_LIB(readline, rl_completion_matches,
1082              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1083                         [Do we have rl_completion_matches?])],
1084              [],
1085              [$TERMLIBS])
1087 # not all readline libs have rl_event_hook or history_list
1088 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1089 AC_CHECK_LIB(readline, history_list,
1090              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1091              [],
1092              [$TERMLIBS])
1094 ###############################################
1095 # test for where we get yp_get_default_domain() from
1096 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1097 AC_CHECK_FUNCS(yp_get_default_domain)
1099 # Check if we have execl, if not we need to compile smbrun.
1100 AC_CHECK_FUNCS(execl)
1101 if test x"$ac_cv_func_execl" = x"no"; then
1102     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1105 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1106 AC_CHECK_FUNCS(strtol)
1107 AC_CHECK_FUNCS(strchr chflags)
1108 AC_CHECK_FUNCS(getrlimit fsync setpgid)
1109 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
1110 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1111 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1112 AC_CHECK_FUNCS(initgroups select rdchk getgrnam getgrent pathconf)
1113 AC_CHECK_FUNCS(getgrset)
1114 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1115 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1116 AC_CHECK_FUNCS(fallocate fallocate64)
1117 AC_CHECK_FUNCS(fseeko fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1118 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1119 AC_CHECK_FUNCS(fdopendir fdopendir64)
1120 AC_CHECK_FUNCS(getpwent_r)
1121 AC_CHECK_FUNCS(getdents64)
1122 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1123 AC_CHECK_FUNCS(syslog vsyslog timegm)
1124 AC_CHECK_FUNCS(setlocale nl_langinfo)
1125 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1126 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1127 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1128 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1129 AC_CHECK_HEADERS(sys/mman.h)
1130 # setbuffer, shmget, shm_open are needed for smbtorture
1131 AC_CHECK_FUNCS(shmget shm_open)
1132 AC_CHECK_FUNCS(gettext dgettext)
1133 AC_CHECK_FUNCS(bindtextdomain textdomain)
1134 AC_CHECK_FUNCS(strupr)
1136 # Find a method of generating a stack trace
1137 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1138 # libexecinfo provides backtrace_symbols on FreeBSD
1139 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1140 AC_CHECK_FUNCS(backtrace_symbols)
1141 AC_CHECK_LIB(exc, trace_back_stack)
1143 # check for sysctlbyname for BSD systems
1144 AC_CHECK_FUNCS(sysctlbyname)
1146 #################################################
1147 # Check to see if core dump directory is defined in linux
1148 # with /proc/sys/kernel/core_pattern
1150 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
1151         AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
1152         [Whether Linux kernel uses core_pattern for core files]),
1153          [])
1155 #############################
1156 # check if building with gpfs
1157 AC_CHECK_HEADERS(gpfs_gpl.h)
1158 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1159     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1160     default_shared_modules="$default_shared_modules vfs_gpfs"
1161     default_shared_modules="$default_shared_modules vfs_gpfs_hsm_notify"
1164 #############################################
1165 # check if building on Isilon OneFS
1166 printf "%s" "checking for Isilon OneFS... "
1167 save_LIBS="$LIBS"
1168 LIBS="$LIBS -lisi_version"
1169 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1170           [get_isilon_copyright()],
1171           samba_cv_HAVE_ONEFS=yes,
1172           samba_cv_HAVE_ONEFS=no)
1173 echo $samba_cv_HAVE_ONEFS
1174 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1175     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1176     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1177     default_static_modules="$default_static_modules"
1178     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1179     # Need to also add general libs for oplocks support
1180     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1182 AC_SUBST(ONEFS_LIBS)
1183 LIBS="$save_LIBS"
1185 # Note that all the libunwind symbols in the API are defined to internal
1186 # platform-specific version, so we must include libunwind.h before checking
1187 # any of them.
1188 AC_MSG_CHECKING([for libunwind])
1189 save_LIBS=$LIBS
1191 UNWIND_ARCH="unknown"
1192 if test x"$UNAME_I" != x"unknown"; then
1193         UNWIND_ARCH="$UNAME_I"
1194 elif test x"$UNAME_M" != x"unknown"; then
1195         UNWIND_ARCH="$UNAME_M"
1196 elif test x"$UNAME_P" != x"unknown"; then
1197         UNWIND_ARCH="$UNAME_P"
1200 case "$UNWIND_ARCH" in
1201         unknown)
1202                 # This probably won't link without
1203                 # the platform-specific libunwind.
1204                 LIBS="$LIBS -lunwind"
1205                 ;;
1206         i386|i586|i686)
1207                 # Add the platform-specific libunwind module.
1208                 LIBS="$LIBS -lunwind -lunwind-x86"
1209                 ;;
1210         *)
1211                 # Add the platform-specific libunwind module.
1212                 # based on uname -i, uname -m or uname -p
1213                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1214                 ;;
1215 esac
1217 AC_TRY_LINK(
1218     [
1219 #ifdef HAVE_LIBUNWIND_H
1220 #include <libunwind.h>
1221 #endif
1222     ],
1223     [
1224         unw_context_t ctx; unw_cursor_t cur;
1225         char buf[256]; unw_word_t off;
1226         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1227         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1228     ],
1229     [
1230         AC_MSG_RESULT(yes)
1231         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1233         # If we have libunwind, test whether we also have libunwind-ptrace
1234         # which would let us unwind arbitrary processes.
1235         save_LIBS=$LIBS
1236         AC_CHECK_HEADERS(libunwind-ptrace.h)
1237         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1238             [
1239                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1240                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1241                     [Whether libunwind-ptrace.a is available.])
1242             ],
1243             [ LIBUNWIND_PTRACE="" ])
1245         LIBS=$save_LIBS
1246     ],
1247     [
1248         AC_MSG_RESULT(no)
1249         LIBS=$save_LIBS
1250     ])
1252 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1253 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1254     AC_CHECK_HEADERS(sys/ptrace.h)
1255     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1256     AC_TRY_LINK(
1257             [
1258 #if HAVE_SYS_TYPES_H
1259 #include <sys/types.h>
1260 #endif
1261 #if HAVE_SYS_PTRACE_H
1262 #include <sys/ptrace.h>
1263 #endif
1264             ],
1265             [
1266                 pid_t me = (pid_t)-1;
1267                 ptrace(PTRACE_ATTACH, me, 0, 0);
1268                 ptrace(PTRACE_DETACH, me, 0, 0);
1269                 return 0;
1270             ],
1271             [
1272                 AC_MSG_RESULT(yes)
1273                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1274                     [Whether the Linux ptrace(2) interface is available.])
1275             ],
1276             [
1277                 AC_MSG_RESULT(no)
1278                 LIBUNWIND_PTRACE=""
1279             ])
1282 AC_SUBST(LIBUNWIND_PTRACE)
1284 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1285 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1286 AC_CHECK_FUNCS(__getcwd _getcwd)
1287 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1288 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1289 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1290 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1291 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1292 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1293 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1294 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1295 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1296 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1297 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1298 AC_CHECK_FUNCS(prctl)
1300 AC_TRY_COMPILE([
1301 #ifdef HAVE_SYS_PRCTL_H
1302 #include <sys/prctl.h>
1303 #endif
1305 [int i; i = prtcl(0); ],
1306 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1311 case "$host_os" in
1312     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1313        # glibc <= 2.3.2 has a broken getgrouplist
1314        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1315 #include <unistd.h>
1316 #include <sys/utsname.h>
1317 main() {
1318        /* glibc up to 2.3 has a broken getgrouplist */
1319 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1320        int libc_major = __GLIBC__;
1321        int libc_minor = __GLIBC_MINOR__;
1323        if (libc_major < 2)
1324               exit(1);
1325        if ((libc_major == 2) && (libc_minor <= 3))
1326               exit(1);
1327 #endif
1328        exit(0);
1330 ], [samba_cv_linux_getgrouplist_ok=yes],
1331    [samba_cv_linux_getgrouplist_ok=no],
1332    [samba_cv_linux_getgrouplist_ok=cross])])
1333        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1334           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1335        fi
1336        ;;
1337     *)
1338        AC_CHECK_FUNCS(getgrouplist)
1339        ;;
1340 esac
1343 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1346 if test x$ac_cv_func_stat64 = xno ; then
1347   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1348   AC_TRY_LINK([
1349 #if defined(HAVE_UNISTD_H)
1350 #include <unistd.h>
1351 #endif
1352 #include <sys/stat.h>
1353 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1354   AC_MSG_RESULT([$ac_cv_func_stat64])
1355   if test x$ac_cv_func_stat64 = xyes ; then
1356     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1357   fi
1360 if test x$ac_cv_func_lstat64 = xno ; then
1361   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1362   AC_TRY_LINK([
1363 #if defined(HAVE_UNISTD_H)
1364 #include <unistd.h>
1365 #endif
1366 #include <sys/stat.h>
1367 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1368   AC_MSG_RESULT([$ac_cv_func_lstat64])
1369   if test x$ac_cv_func_lstat64 = xyes ; then
1370     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1371   fi
1374 if test x$ac_cv_func_fstat64 = xno ; then
1375   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1376   AC_TRY_LINK([
1377 #if defined(HAVE_UNISTD_H)
1378 #include <unistd.h>
1379 #endif
1380 #include <sys/stat.h>
1381 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1382   AC_MSG_RESULT([$ac_cv_func_fstat64])
1383   if test x$ac_cv_func_fstat64 = xyes ; then
1384     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1385   fi
1388 #################################################
1389 # Check whether struct stat has timestamps with sub-second resolution.
1392 samba_cv_stat_hires=no
1393 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1394         [samba_cv_stat_hires=yes])
1395 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1396         [samba_cv_stat_hires=yes])
1397 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1398         [samba_cv_stat_hires=yes])
1399 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1400         [samba_cv_stat_hires=yes])
1401 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1402         [samba_cv_stat_hires=yes])
1404 if test x"$samba_cv_stat_hires" = x"yes" ; then
1405     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1406             [whether struct stat has sub-second timestamps])
1409 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1410 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1411 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1414 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1415     [
1416         AC_TRY_COMPILE(
1417             [#include <sys/stat.h>],
1418             [
1419                 int a = UF_DOS_ARCHIVE;
1420                 int h = UF_DOS_HIDDEN;
1421                 int r = UF_DOS_RO;
1422                 int s = UF_DOS_SYSTEM;
1423                 int i = UF_DOS_NOINDEX;
1424                 int f = UF_DOS_FLAGS;
1425             ],
1426             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1427     ])
1429 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1430     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1433 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1434                samba_cv_function_attribute_destructor,
1435                [
1436                  AC_COMPILE_IFELSE(
1437                         [
1438                                 __attribute__((destructor))
1439                                 static void cleanup(void) { }
1440                         ],
1441                         samba_cv_function_attribute_destructor=yes)
1442                 ])
1444 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1445    AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1446              [whether we can compile with __attribute__((destructor))])
1449 #####################################
1450 # needed for SRV lookups
1451 AC_CHECK_LIB(resolv, dn_expand)
1452 AC_CHECK_LIB(resolv, _dn_expand)
1453 AC_CHECK_LIB(resolv, __dn_expand)
1456 # Check for the functions putprpwnam, set_auth_parameters,
1457 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1458 # Needed for OSF1 and HPUX.
1461 AC_LIBTESTFUNC(security, putprpwnam)
1462 AC_LIBTESTFUNC(sec, putprpwnam)
1464 AC_LIBTESTFUNC(security, set_auth_parameters)
1465 AC_LIBTESTFUNC(sec, set_auth_parameters)
1467 # UnixWare 7.x has its getspnam in -lgen
1468 AC_LIBTESTFUNC(gen, getspnam)
1470 AC_LIBTESTFUNC(security, getspnam)
1471 AC_LIBTESTFUNC(sec, getspnam)
1473 AC_LIBTESTFUNC(security, bigcrypt)
1474 AC_LIBTESTFUNC(sec, bigcrypt)
1476 AC_LIBTESTFUNC(security, getprpwnam)
1477 AC_LIBTESTFUNC(sec, getprpwnam)
1479 AC_CHECK_FUNCS(strsignal)
1481 ############################################
1482 # Check for EA implementations
1483 case "$host_os" in
1484   *osf*)
1485         AC_SEARCH_LIBS(getproplist, [proplist])
1486         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1487         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1488         AC_CHECK_FUNCS(sizeof_proplist_entry)
1489   ;;
1490   *freebsd4* | *dragonfly* )
1491         AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1492   ;;
1493   *solaris*)
1494         AC_CHECK_FUNCS(attropen)
1495   ;;
1496   *)
1497         AC_SEARCH_LIBS(getxattr, [attr])
1498         AC_CHECK_FUNCS(getxattr,[
1499                 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1500                 ])
1501         AC_CHECK_FUNCS(getea,[
1502                 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1503                 ])
1504         AC_CHECK_FUNCS(attr_get,[
1505                 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1506                 ])
1507         AC_CHECK_FUNCS(extattr_delete_file,[
1508                 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)
1509                 ])
1510   ;;
1511 esac
1513 ########################################################
1514 # Do xattr functions take additional options like on Darwin?
1515 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1516         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1517                 old_LIBS=$LIBS
1518                 LIBS="$LIBS $ACL_LIBS"
1519                 AC_TRY_COMPILE([
1520                         #include <sys/types.h>
1521                         #if HAVE_ATTR_XATTR_H
1522                         #include <attr/xattr.h>
1523                         #elif HAVE_SYS_XATTR_H
1524                         #include <sys/xattr.h>
1525                         #endif
1526                 ],[
1527                         getxattr(0, 0, 0, 0, 0, 0);
1528                 ],
1529                 [smb_attr_cv_xattr_add_opt=yes],
1530                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1531         ])
1532         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1533                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1534         fi
1537 AC_DISABLE_STATIC
1538 AC_ENABLE_SHARED
1540 # Set defaults
1541 PIE_CFLAGS=""
1542 PIE_LDFLAGS=""
1543 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1545 if test "x$enable_pie" != xno
1546 then
1547         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1548         [
1549                 cat > conftest.c <<EOF
1550 int foo;
1551 int main () { return 0;}
1553                 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1554                 then
1555                         samba_cv_fpie=yes
1556                 else
1557                         samba_cv_fpie=no
1558                 fi
1559                 rm -f conftest*
1560         ])
1561         if test x"${samba_cv_fpie}" = x"yes"
1562         then
1563                 PIE_CFLAGS="-fPIE"
1564                 PIE_LDFLAGS="-pie"
1565         fi
1568 # Set defaults
1569 RELRO_LDFLAGS=""
1570 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1572 if test "x$enable_relro" != xno
1573 then
1574         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1575         [
1576                 cat > conftest.c <<EOF
1577 int foo;
1578 main () { return 0;}
1580                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1581                 then
1582                         samba_cv_relro=yes
1583                 else
1584                         samba_cv_relro=no
1585                 fi
1586                 rm -f conftest*
1587         ])
1588         if test x"${samba_cv_relro}" = x"yes"
1589         then
1590                 RELRO_LDFLAGS="-Wl,-z,relro"
1591         fi
1594 # Set defaults
1595 SYMSEXT="syms"
1596 AC_SUBST(SYMSEXT)
1598 # Assume non-shared by default and override below
1599 BLDSHARED="false"
1601 # these are the defaults, good for lots of systems
1602 HOST_OS="$host_os"
1603 LDSHFLAGS="-shared"
1604 MODULE_EXPORTS=""
1605 SONAMEFLAG="#"
1606 SHLD="\${CC} \${CFLAGS}"
1607 PICFLAG="${PIE_CFLAGS}"
1608 SHLIBEXT="so"
1609 DSO_EXPORTS=""
1611 # this bit needs to be modified for each OS that supports share libs
1612 # You need to specify how to create a shared library and
1613   # how to compile C code to produce PIC object files
1615   AC_MSG_CHECKING([ability to build shared libraries])
1617   # and these are for particular systems
1618   case "$host_os" in
1619                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1620                         case "$host_os" in
1621                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1622                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1623                         esac
1624                         BLDSHARED="true"
1625                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1626                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1627                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1628                         fi
1629                         DYNEXP="-Wl,--export-dynamic"
1630                         PICFLAG="-fPIC"
1631                         SONAMEFLAG="-Wl,-soname="
1632                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1633                         ;;
1634                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1635                         BLDSHARED="true"
1636                         if test "${GCC}" = "yes"; then
1637                                 PICFLAG="-fPIC"
1638                                 SONAMEFLAG="-Wl,-soname="
1639                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1640                                         DYNEXP="-Wl,-E"
1641                                 fi
1642                                 LDSHFLAGS="-shared"
1643                         else
1644                                 PICFLAG="-KPIC"
1645                                 LDSHFLAGS="-G"
1646                         fi
1647                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1648                                 SONAMEFLAG="-Wl,-soname="
1649                         else
1650                                 SONAMEFLAG="-Wl,-h,"
1651                         fi
1652                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1653                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1654                         ;;
1655                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1656                         BLDSHARED="true"
1657                         LDSHFLAGS="-G"
1658                         SONAMEFLAG="-Wl,-h,"
1659                         PICFLAG="-KPIC"   # Is this correct for SunOS
1660                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1661                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1662                         ;;
1663                 *netbsd* | *freebsd* | *dragonfly* )
1664                         BLDSHARED="true"
1665                         LDSHFLAGS="-shared"
1666                         DYNEXP="-Wl,--export-dynamic"
1667                         SONAMEFLAG="-Wl,-soname,"
1668                         PICFLAG="-fPIC -DPIC"
1669                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1670                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1671                         ;;
1672                 *openbsd*)  BLDSHARED="true"
1673                         LDSHFLAGS="-shared"
1674                         DYNEXP="-Wl,-Bdynamic"
1675                         SONAMEFLAG="-Wl,-soname,"
1676                         PICFLAG="-fPIC"
1677                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1678                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1679                         ;;
1680                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1681                         case "$host_os" in
1682                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1683                         ;;
1684                         esac
1685                         BLDSHARED="true"
1686                         LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1687                         SONAMEFLAG="-Wl,-soname,"
1688                         if test "${GCC}" = "yes"; then
1689                                 PICFLAG="-fPIC"
1690                         else
1691                                 PICFLAG="-KPIC"
1692                         fi
1693                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1694                         ;;
1695                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1696                         BLDSHARED="true"
1697                         # use expfull to export underscored symbols
1698                         # add rtl to remove /lib/crt0.o warning
1699                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1700                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1701                         PICFLAG="-O2"
1702                         # as AIX code is always position independent...
1703                         # .po will just create compile warnings, use po.o:
1704                         if test "${GCC}" != "yes"; then
1705                                 ## for funky AIX compiler using strncpy()
1706                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1707                         fi
1709                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1710                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1711                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1712                         ;;
1713                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1714                         # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1715                         #       64bit build using HP's cc with CFLAGS="+DD64"
1716                         # hppa: 64bit build unsupported by gcc
1717                         #       64bit build using HP's cc with CFLAGS="+DA2.0w"
1718                         # HP-UX 11.00 ld needs PHSS_33034
1719                         BLDSHARED="true"
1720                         if test "${GCC}" = "yes"; then
1721                                 PICFLAG="-fPIC"
1722                                 LDSHFLAGS="-shared"
1723                         else
1724                                 PICFLAG="+z"
1725                                 LDSHFLAGS="-b"
1726                                 # "Uses depth-first symbol resolution"
1727                                 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1728                                 if test "$host_cpu" != "ia64"; then
1729                                         # "don't store literals in read-only memory" (?):
1730                                         PICFLAG="$PICFLAG +ESnolit"
1731                                 fi
1732                         fi
1733                         if test "$host_cpu" = "ia64"; then
1734                                 SHLIBEXT="so"
1735                                 # TODO: does the linker find the right 32/64 bit version of the libs? :
1736                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1737                         else
1738                                 SHLIBEXT="sl"
1739                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1740                         fi
1741                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1742                                 SONAMEFLAG="-Wl,-soname="
1743                         else
1744                                 SONAMEFLAG="-Wl,+h,"
1745                         fi
1746                         # PIE/PIC flags at link time are required on HP-UX because
1747                         # linking requires a temporary source file, which is being
1748                         # compiled with the indicated flags - which need to contain
1749                         # PIC flags when we don't support PIE flags:
1750                         if test "$PIE_LDFLAGS" = "" ; then
1751                                 PIE_LDFLAGS=\${PICFLAG}
1752                         fi
1753                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1754                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1755                         ;;
1756                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1757                         BLDSHARED="true"
1758                         LDSHFLAGS="-shared"
1759                         SONAMEFLAG="-Wl,-soname,"
1760                         if test "${GCC}" = "yes"; then
1761                                 PICFLAG="-fPIC"
1762                         fi
1763                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1764                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1765                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1766                                 saved_ldflags="$LDFLAGS"
1767                                 AC_MSG_CHECKING([if $flags works])
1768                                 LDFLAGS="$flags $saved_ldflags"
1769                                 AC_TRY_LINK([],[],
1770                                         [AC_MSG_RESULT([yes])
1771                                         LDSHFLAGS_Z_NODEFS=$flags],
1772                                         AC_MSG_RESULT([no]))
1773                                 LDFLAGS="$saved_ldflags"
1774                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1775                         done
1776                         ;;
1777                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1778                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1779                         ;;
1780                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1781                         BLDSHARED="true"
1782                         LDSHFLAGS="-shared"
1783                         SONAMEFLAG="-Wl,-soname,"
1784                         PICFLAG="-KPIC"
1785                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1786                         ;;
1787                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1788                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789                         ;;
1790                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1791                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1792                         ;;
1793                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1794                         case "$host" in
1795                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1796                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1797                                         fi
1798                                         LDSHFLAGS="-G"
1799                                         DYNEXP="-Bexport"
1800                                 ;;
1801                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1802                         esac
1803                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804                         ;;
1806                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1807                         if [ test "$GCC" != yes ]; then
1808                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1809                         fi
1810                         LDSHFLAGS="-G"
1811                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1812                         ;;
1813                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1814                         BLDSHARED="false"
1815                         LDSHFLAGS=""
1816                         ;;
1818                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1819                         BLDSHARED="true"
1820                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1821                         CFLAGS="$CFLAGS -fno-common"
1822                         SHLD="\${CC}"
1823                         SHLIBEXT="dylib"
1824                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1825                         SHLIBEXT="dylib"
1826                         # Since gcc doesn't fail on unrecognised options, the
1827                         # PIE test incorrectly succeeds. Darwin gcc does not
1828                         # actually support the PIE stuff.
1829                         PIE_LDFLAGS=
1830                         PIE_CFLAGS=
1831                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1832                         ;;
1834                 *)
1835                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1836                         ;;
1837   esac
1839 if test "$enable_shared" != "yes"; then
1840         BLDSHARED=false
1843 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1844         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1847 if test x"$BLDSHARED" = x"true" ; then
1848         LDFLAGS="$LDFLAGS -L./bin"
1851 AC_MSG_RESULT($BLDSHARED)
1853 if test x"$enable_developer" = x"yes" ; then
1854         default_as_needed=auto
1855 else
1856         default_as_needed=no
1858 AC_ARG_ENABLE(as-needed,
1859         AS_HELP_STRING([--enable-as-needed],
1860         [Turn on as-needed support if available (default=no)]),
1861         [enable_as_needed=$enableval],
1862         [enable_as_needed=$default_as_needed])
1863 if test "x$enable_as_needed" != xno; then
1864     saved_before_as_needed_ldflags="$LDFLAGS"
1865     for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1866         saved_ldflags="$LDFLAGS"
1867         AC_MSG_CHECKING([if $flags works])
1868         LDFLAGS="$flags $saved_ldflags"
1869         AC_TRY_LINK([],[],
1870                 [AC_MSG_RESULT([yes])
1871                 LD_AS_NEEDED_FLAG=$flags
1872                 ld_as_needed_flag_found=yes],
1873                 AC_MSG_RESULT([no]))
1874         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1875         test x"$ld_as_needed_flag_found" = xyes && break
1876     done
1879 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1880 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1881         AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1882 cat > conftest_shb.c <<END
1883 void b() {}
1885 cat > conftest_sha.c <<END
1886 extern void b();
1887 void a() {
1888         b();
1891 cat > conftest.c <<END
1892 extern void a();
1893 int main() {
1894         a();
1895         return 0;
1899         rm -fr conftest
1900         AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1901         AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1902         TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1903         AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1904         AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1905         AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1906         if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1907         then
1908                 AC_MSG_RESULT([no])
1909         else
1910                 ld_as_needed_flag_found=no
1911                 LDFLAGS="$saved_before_as_needed_ldflags"
1912                 AC_MSG_RESULT([yes])
1913         fi
1914         rm conftest* libconftest*
1917 # check if we have to disable LD_AS_NEEDED_FLAG:
1918 # On some systems for a veriety of reasons linking with
1919 # -Wl,--as-needed -lreadline -lncurses fails
1920 # we have to retest, if these combination is detected before.
1921 # Bugzilla #7209
1923 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1924         if test x$ld_as_needed_flag_found = xyes ; then
1925                 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1926                 # try if check no fails
1927                 save_LIBS=$LIBS
1928                 LIBS="$LIBS $TERMLIBS"
1929                 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1930                 LIBS="$save_LIBS"
1931         fi
1936 # for historical reasons almost all linkers don't complain about unresolved
1937 # symbols in shared libs. Except for the internal samba modules we want to get
1938 # errors when we produce a shared lib with unresolved symbols. On some
1939 # platforms unresolved symbols might be intended, so we might have to add
1940 # platform specific exceptions here.
1942 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1943         saved_ldflags="$LDFLAGS"
1944         AC_MSG_CHECKING([if $flags works])
1945         LDFLAGS="$flags $saved_ldflags"
1946         AC_TRY_LINK([],[],
1947         [AC_MSG_RESULT([yes])
1948         LDSHFLAGS_Z_DEFS=$flags
1949         ldshflags_z_defs_found=yes],
1950         AC_MSG_RESULT([no]))
1951         LDFLAGS=$saved_ldflags
1952         test x"$ldshflags_z_defs_found" = xyes && break
1953 done
1955 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1956 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1957 AC_MSG_CHECKING([LDFLAGS])
1958 AC_MSG_RESULT([$LDFLAGS])
1959 AC_MSG_CHECKING([DYNEXP])
1960 AC_MSG_RESULT([$DYNEXP])
1962 #######################################################
1963 # test whether building a shared library actually works
1964 if test $BLDSHARED = true; then
1966 AC_MSG_CHECKING([SHLD])
1967 AC_MSG_RESULT([$SHLD])
1968 AC_MSG_CHECKING([LDSHFLAGS])
1969 AC_MSG_RESULT([$LDSHFLAGS])
1971 AC_MSG_CHECKING([SHLIBEXT])
1972 AC_MSG_RESULT([$SHLIBEXT])
1973 AC_MSG_CHECKING([SONAMEFLAG])
1974 AC_MSG_RESULT([$SONAMEFLAG])
1976 AC_MSG_CHECKING([PICFLAG])
1977 AC_MSG_RESULT([$PICFLAG])
1979 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1980 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1982 AC_CACHE_CHECK([whether building shared libraries actually works],
1983                [ac_cv_shlib_works],[
1984    # try building a trivial shared library
1985    ac_cv_shlib_works=no
1986    # The $SHLD and $LDSHFLAGS variables may contain references to other
1987    # variables so they need to be eval'ed.
1988    if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1989    then
1990      TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1991      TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1992      if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1993      then
1994        ac_cv_shlib_works=yes
1995      fi
1996    fi
1997    rm -f "shlib.$SHLIBEXT" shlib.o
2000 if test $ac_cv_shlib_works = no; then
2001    BLDSHARED=false
2005 if test x"$BLDSHARED" != x"true"; then
2006         LDSHFLAGS="shared-libraries-disabled"
2007         SONAMEFLAG="shared-libraries-disabled"
2008         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2009         SHLD="shared-libraries-disabled"
2010         PICFLAG="${PIE_CFLAGS}"
2011         SHLIBEXT="shared_libraries_disabled"
2012         smbtorture4_possible=no
2015 AC_MSG_CHECKING([used PICFLAG])
2016 AC_MSG_RESULT([$PICFLAG])
2018 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2022 ###########################################################
2024 # Configuration of subsystems / libraries
2026 ###########################################################
2028 INSTALLLIBCMD_SH=:
2029 INSTALLLIBCMD_A=:
2030 UNINSTALLLIBCMD_SH=:
2031 UNINSTALLLIBCMD_A=:
2033 if test $BLDSHARED = true; then
2034         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
2035         UNINSTALLLIBCMD_SH="rm -f"
2037 if test $enable_static = yes; then
2038         INSTALLLIBCMD_A="\$(INSTALLCMD)"
2039         UNINSTALLLIBCMD_A="rm -f"
2042 #################################################
2043 # --disable-shared-libs
2044 # can be used to disable the internal use of shared libs altogether
2045 # (this only has an effect when building shared libs is enabled)
2047 USESHARED=false
2048 AC_SUBST(USESHARED)
2050 AC_MSG_CHECKING(whether to use shared libraries internally)
2051 AC_ARG_ENABLE([shared-libs],
2052         AS_HELP_STRING([--enable-shared-libs],
2053                 [Use shared libraries internally (default=yes)]),
2054         [enable_shared_libs=$enableval],
2055         [enable_shared_libs=yes])
2057 if test x"$enable_shared_libs" != x"no" ; then
2058         USESHARED=$BLDSHARED
2061 AC_MSG_RESULT([$USESHARED])
2063 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
2064         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
2067 #################################################
2068 # --with-static-libs=LIBS:
2069 #   link (internal) libs dynamically or statically?
2071 # If a subsystem is built as a library then this controls whether they are
2072 # linked into Samba targets statically or dynamically:
2074 # * If we build the shared library at all, we link dynamically by default.
2076 # * We only link statically if we don't build shared or if the library
2077 #   appears in the --with-static-libs configure option.
2079 # Example:
2080 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
2081 #   of linking the dynamic variant with -ltalloc.
2083 # NOTE: This option only affects libraries that we do not only build
2084 # but that samba also links against as libraries (as opposed to linking
2085 # the plain object files. - This has to be configured in Makefile.in.
2086 # So in particular it does not harm to give invalid or unknown names here.
2089 AC_ARG_WITH([static-libs],
2090         [AS_HELP_STRING([--with-static-libs=LIBS],
2091                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
2092         [AS_IF([test $withval],
2093                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
2094                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
2095                         eval LINK_$lib=STATIC
2096                 done], [])],
2097         [])
2100 # WORKAROUND:
2101 #   until we have organized other internal subsystems (as util, registry
2102 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
2103 #   dynamically to samba programs.
2105 LINK_LIBNETAPI=STATIC
2107 LINK_LIBSMBCLIENT=STATIC
2110 #  The library versions are hardcoded here
2111 #  and filled into the LIBFOO_SOVER variable.
2113 #  TODO: for talloc and tdb (at least), these should
2114 #  be extracted from their respective source directories
2116 AC_ARG_ENABLE(external_libtalloc,
2117         [AS_HELP_STRING([--enable-external-libtalloc],
2118                 [Enable external talloc [default=auto]])],
2119         [ enable_external_libtalloc=$enableval ],
2120         [ enable_external_libtalloc=auto ])
2122 if test "x$enable_external_libtalloc" != xno
2123 then
2124         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
2125                 [ enable_external_libtalloc=yes ],
2126                 [ if test x$enable_external_libtalloc = xyes; then
2127                         AC_MSG_ERROR([Unable to find libtalloc])
2128                   else
2129                         enable_external_libtalloc=no
2130                   fi
2131                 ])
2134 if test "x$enable_external_libtalloc" = xno
2135 then
2136         m4_include(../lib/talloc/libtalloc.m4)
2137         if test x"$USESHARED" = x"no" ; then
2138                 LINK_LIBTALLOC=STATIC
2139         fi
2140         LIBTALLOCVERSION=`grep ^VERSION ${tallocdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
2141         SMB_LIBRARY(talloc, 2, ${LIBTALLOCVERSION})
2142         LIBTALLOC_OBJ0=""
2143         for obj in ${TALLOC_OBJ}; do
2144                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
2145         done
2146         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
2147         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
2148         AC_SUBST(LIBTALLOC_OBJ0)
2150         TALLOCTORT="bin/talloctort\$(EXEEXT)"
2151         AC_SUBST(TALLOCTORT)
2155 AC_ARG_ENABLE(external_libtdb,
2156         [AS_HELP_STRING([--enable-external-libtdb],
2157                 [Enable external tdb [default=auto]])],
2158                 [ enable_external_libtdb=$enableval ],
2159                 [ enable_external_libtdb=auto ])
2161 if test "x$enable_external_libtdb" != xno
2162 then
2163         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.6,
2164                 [ enable_external_libtdb=yes ],
2165                 [
2166                 if test x$enable_external_libtdb = xyes; then
2167                         AC_MSG_ERROR([Unable to find libtdb])
2168                 else
2169                         enable_external_libtdb=no
2170                 fi
2171                 ])
2174 AC_SUBST(LIBTDB_OBJ0)
2175 if test "x$enable_external_libtdb" = xno
2176 then
2177         m4_include(../lib/tdb/libtdb.m4)
2178         if test x"$USESHARED" = x"no" ; then
2179                 LINK_LIBTDB=STATIC
2180         fi
2181         LIBTDBVERSION=`grep ^VERSION ${tdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
2182         SMB_LIBRARY(tdb, 1, ${LIBTDBVERSION})
2183         LIBTDB_OBJ0=""
2184         LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
2185         for obj in ${TDB_OBJ}; do
2186                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2187         done
2188         AC_SUBST(LIBTDB_OBJ0)
2189         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2190         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2192         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2193         AC_SUBST(TDBBACKUP)
2194         TDBDUMP="bin/tdbdump\$(EXEEXT)"
2195         AC_SUBST(TDBDUMP)
2196         TDBRESTORE="bin/tdbrestore\$(EXEEXT)"
2197         AC_SUBST(TDBRESTORE)
2198         TDBTOOL="bin/tdbtool\$(EXEEXT)"
2199         AC_SUBST(TDBTOOL)
2200         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2201         AC_SUBST(TDBTORTURE)
2202         ac_cv_have_tdb_err_nesting=yes
2203 else
2204         AC_TRY_COMPILE([#include <tdb.h>],
2205                        [enum TDB_ERROR err = TDB_ERR_NESTING],
2206                        ac_cv_have_tdb_err_nesting=yes,
2207                        ac_cv_have_tdb_err_nesting=no)
2210 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2211    AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2214 SMB_LIBRARY(netapi, 0)
2215 SMB_LIBRARY(smbclient, 0)
2216 SMB_LIBRARY(smbsharemodes, 0)
2217 SMB_LIBRARY(addns, 0, [], no, [undefined API])
2221 ################
2223 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2224 AC_TRY_RUN([#include <stdio.h>
2225 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2226 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2227 if test x"$samba_cv_have_longlong" = x"yes"; then
2228     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2229     AC_CHECK_TYPE(intptr_t, unsigned long long)
2230 else
2231     AC_CHECK_TYPE(intptr_t, unsigned long)
2235 # Check if the compiler supports the LL prefix on long long integers.
2236 # AIX needs this.
2238 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2239     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2240         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2241 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2242    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2246 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2247 AC_TRY_RUN([#include <time.h>
2248 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2249 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2250 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2251     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2254 AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
2255 AC_TRY_RUN([#include <time.h>
2256 main() {
2257         struct tm *tm;
2258         if (sizeof(time_t) == 8) {
2259                 time_t max_time = 0x7fffffffffffffffll;
2260                 tm = gmtime(&max_time);
2261                 /* This should fail with 32-bit tm_year. */
2262                 if (tm == NULL) {
2263                         /* Max time_t that works with 32-bit int tm_year in struct tm. */
2264                         max_time = 67768036191676799ll;
2265                         tm = gmtime(&max_time);
2266                         if (tm) {
2267                                 exit(0);
2268                         }
2269                 }
2270         }
2271         exit(1);
2273 samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
2274 if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
2275     AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
2279 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2280 AC_TRY_RUN([#include <stdio.h>
2281 #include <sys/stat.h>
2282 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2283 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2284 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2285     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2288 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2289 AC_TRY_RUN([
2290 #if defined(HAVE_UNISTD_H)
2291 #include <unistd.h>
2292 #endif
2293 #include <stdio.h>
2294 #include <sys/stat.h>
2295 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2296 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2297 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2298     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2301 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2302 AC_TRY_RUN([
2303 #if defined(HAVE_UNISTD_H)
2304 #include <unistd.h>
2305 #endif
2306 #include <stdio.h>
2307 #include <sys/stat.h>
2308 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2309 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2310 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2311     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2314 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2315 AC_TRY_RUN([
2316 #if defined(HAVE_UNISTD_H)
2317 #include <unistd.h>
2318 #endif
2319 #include <stdio.h>
2320 #include <sys/stat.h>
2321 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2322 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2323 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2324     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2327 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2328 AC_TRY_RUN([
2329 #if defined(HAVE_UNISTD_H)
2330 #include <unistd.h>
2331 #endif
2332 #include <stdio.h>
2333 #include <sys/stat.h>
2334 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2335 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2336 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2337     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2340 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2341 AC_TRY_RUN([
2342 #if defined(HAVE_UNISTD_H)
2343 #include <unistd.h>
2344 #endif
2345 #include <stdio.h>
2346 #include <sys/stat.h>
2347 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2348 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2349 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2350     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2353 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2354 AC_TRY_COMPILE([
2355 #if defined(HAVE_UNISTD_H)
2356 #include <unistd.h>
2357 #endif
2358 #include <sys/types.h>
2359 #include <dirent.h>],
2360 [DIR64 de;],
2361 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2362 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2363     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2366 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2367 AC_TRY_COMPILE([
2368 #if defined(HAVE_UNISTD_H)
2369 #include <unistd.h>
2370 #endif
2371 #include <sys/types.h>
2372 #include <dirent.h>],
2373 [struct dirent64 de;],
2374 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2375 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2376     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2379 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2380 AC_TRY_RUN([
2381 #if defined(HAVE_UNISTD_H)
2382 #include <unistd.h>
2383 #endif
2384 #include <sys/types.h>
2385 main() { dev_t dev; int i = major(dev); return 0; }],
2386 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2387 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2388     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2391 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2392 AC_TRY_RUN([
2393 #if defined(HAVE_UNISTD_H)
2394 #include <unistd.h>
2395 #endif
2396 #include <sys/types.h>
2397 main() { dev_t dev; int i = minor(dev); return 0; }],
2398 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2399 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2400     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2403 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2404 AC_TRY_RUN([
2405 #if defined(HAVE_UNISTD_H)
2406 #include <unistd.h>
2407 #endif
2408 #include <sys/types.h>
2409 main() { dev_t dev = makedev(1,2); return 0; }],
2410 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2411 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2412     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2415 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2416 AC_TRY_RUN([#include <stdio.h>
2417 main() { char c; c=250; exit((c > 0)?0:1); }],
2418 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2419 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2420     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2423 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2424 AC_TRY_COMPILE([#include <sys/types.h>
2425 #include <dirent.h>
2426 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2427 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2428 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2429     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2432 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2433 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2434 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2435 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2436     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2439 if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then
2440         LIBS="$LIBS -lrt"
2443 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2444 AC_TRY_RUN([#include <sys/types.h>
2445 #include <dirent.h>
2446 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2447 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2448 di->d_name[0] == 0) exit(0); exit(1);} ],
2449 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2450 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2451     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2454 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2455 AC_TRY_COMPILE([#include <sys/types.h>
2456 #include <utime.h>],
2457 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2458 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2459 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2460     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2463 ##############
2464 # Check utmp details, but only if our OS offers utmp.h
2465 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2466 dnl  utmp and utmpx come in many flavours
2467 dnl  We need to check for many of them
2468 dnl  But we don't need to do each and every one, because our code uses
2469 dnl  mostly just the utmp (not utmpx) fields.
2471 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2473 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2474 AC_TRY_COMPILE([#include <sys/types.h>
2475 #include <utmp.h>],
2476 [struct utmp ut;  ut.ut_name[0] = 'a';],
2477 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2478 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2479     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2482 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2483 AC_TRY_COMPILE([#include <sys/types.h>
2484 #include <utmp.h>],
2485 [struct utmp ut;  ut.ut_user[0] = 'a';],
2486 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2487 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2488     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2491 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2492 AC_TRY_COMPILE([#include <sys/types.h>
2493 #include <utmp.h>],
2494 [struct utmp ut;  ut.ut_id[0] = 'a';],
2495 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2496 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2497     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2500 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2501 AC_TRY_COMPILE([#include <sys/types.h>
2502 #include <utmp.h>],
2503 [struct utmp ut;  ut.ut_host[0] = 'a';],
2504 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2505 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2506     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2509 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2510 AC_TRY_COMPILE([#include <sys/types.h>
2511 #include <utmp.h>],
2512 [struct utmp ut;  time_t t; ut.ut_time = t;],
2513 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2514 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2515     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2518 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2519 AC_TRY_COMPILE([#include <sys/types.h>
2520 #include <utmp.h>],
2521 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2522 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2523 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2524     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2527 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2528 AC_TRY_COMPILE([#include <sys/types.h>
2529 #include <utmp.h>],
2530 [struct utmp ut;  ut.ut_type = 0;],
2531 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2532 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2533     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2536 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2537 AC_TRY_COMPILE([#include <sys/types.h>
2538 #include <utmp.h>],
2539 [struct utmp ut;  ut.ut_pid = 0;],
2540 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2541 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2542     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2545 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2546 AC_TRY_COMPILE([#include <sys/types.h>
2547 #include <utmp.h>],
2548 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2549 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2550 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2551     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2554 dnl Look for the IPv6 varient by preference. Many systems have both.
2555 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2556 AC_TRY_COMPILE([#include <sys/types.h>
2557 #include <utmp.h>],
2558 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2559 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2560 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2561     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2564 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2565 AC_TRY_COMPILE([#include <sys/types.h>
2566 #include <utmp.h>],
2567 [struct utmp ut;  ut.ut_addr = 0;],
2568 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2569 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2570     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2573 if test x$ac_cv_func_pututline = xyes ; then
2574   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2575   AC_TRY_COMPILE([#include <sys/types.h>
2576 #include <utmp.h>],
2577   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2578   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2579   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2580       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2581   fi
2584 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2585 AC_TRY_COMPILE([#include <sys/types.h>
2586 #include <utmpx.h>],
2587 [struct utmpx ux;  ux.ut_syslen = 0;],
2588 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2589 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2590     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2594 # end utmp details
2596 AC_CACHE_CHECK([for linux fallocate],samba_cv_HAVE_LINUX_FALLOCATE,[
2597 AC_TRY_COMPILE([
2598 #if defined(HAVE_UNISTD_H)
2599 #include <unistd.h>
2600 #endif
2601 #include <sys/types.h>
2602 #define _GNU_SOURCE
2603 #include <fcntl.h>
2604 #if defined(HAVE_LINUX_FALLOC_H)
2605 #include <linux/falloc.h>
2606 #endif],
2607 [int ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2608 samba_cv_HAVE_LINUX_FALLOCATE=yes,samba_cv_HAVE_LINUX_FALLOCATE=no)])
2609 if test x"$samba_cv_HAVE_LINUX_FALLOCATE" = x"yes" && test x"$ac_cv_func_fallocate" = x"yes"; then
2610     AC_DEFINE(HAVE_LINUX_FALLOCATE,1,[Whether the Linux 'fallocate' function is available])
2613 AC_CACHE_CHECK([for linux fallocate64],samba_cv_HAVE_LINUX_FALLOCATE64,[
2614 AC_TRY_COMPILE([
2615 #if defined(HAVE_UNISTD_H)
2616 #include <unistd.h>
2617 #endif
2618 #include <sys/types.h>
2619 #define _GNU_SOURCE
2620 #include <fcntl.h>
2621 #if defined(HAVE_LINUX_FALLOC_H)
2622 #include <linux/falloc.h>
2623 #endif],
2624 [int ret = fallocate64(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2625 samba_cv_HAVE_LINUX_FALLOCATE64=yes,samba_cv_HAVE_LINUX_FALLOCATE64=no)])
2626 if test x"$samba_cv_HAVE_LINUX_FALLOCATE64" = x"yes" && test x"$ac_cv_func_fallocate64" = x"yes"; then
2627     AC_DEFINE(HAVE_LINUX_FALLOCATE64,1,[Whether the Linux 'fallocate64' function is available])
2630 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2631 AC_ARG_WITH(libiconv,
2632 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2634   if test "$withval" = "no" ; then
2635     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2636   else
2637      if test "$withval" != "yes" ; then
2638         ICONV_PATH_SPEC=yes
2639         ICONV_LOOK_DIRS="$withval"
2640      fi
2641   fi
2644 for i in $ICONV_LOOK_DIRS ; do
2646     save_LIBS="$LIBS"
2647     save_LDFLAGS="$LDFLAGS"
2648     save_CPPFLAGS="$CPPFLAGS"
2650     iconv_current_LIBS=""
2651     iconv_current_LDFLAGS=""
2652     iconv_current_CPPFLAGS=""
2654     ICONV_FOUND="no"
2655     unset libext
2657     #  This is here to handle -withval stuff for --with-libiconv
2658     #  Perhaps we should always add a -L
2659     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2661     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2662     # installation paths. This gets a little tricky since we might have iconv
2663     # in both libiconv and in libc. In this case the jm_ICONV test will always
2664     # succeed when the header is found. To counter this, make sure the
2665     # library directory is there and check the ABI directory first (which
2666     # should be harmless on other systems, but causes tons of linker warnings on
2667     # 64bit Ubuntu systems).
2668     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2669     # installed, I've decided to fix the linker warnings.
2670     # -- Kai
2671     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2672     for l in "lib" "lib32" "lib/hpux32"; do
2673         if test -d "$i/$l" ; then
2674                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2675                 LIBS=
2676                 export LDFLAGS LIBS CPPFLAGS
2677                 # Try to find iconv(3)
2678                 jm_ICONV($i/$l)
2679                 if test x"$ICONV_FOUND" = "xyes" ; then
2680                     libext="$l"
2681                     break
2682                 fi
2683         fi
2684     done
2686     if test x"$ICONV_FOUND" = "xyes" ; then
2687         iconv_current_LDFLAGS="-L$i/$libext"
2688         iconv_current_CPPFLAGS="-I$i/include"
2690         if test x"$jm_cv_lib_iconv" != x; then
2691             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2692         else
2693             # We found iconv in libc.
2694             iconv_current_LIBS=""
2695         fi
2697     fi
2699     if test x"$ICONV_FOUND" = "xyes" ; then
2701         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2702         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2703         LIBS="$save_LIBS $iconv_current_LIBS"
2704         export LDFLAGS LIBS CPPFLAGS
2706         default_dos_charset=no
2707         default_display_charset=no
2708         default_unix_charset=no
2710         # check for default dos charset name
2711         for j in CP850 IBM850 ; do
2712             rjs_CHARSET($j)
2713             default_dos_charset="$ICONV_CHARSET"
2714             if test x"$default_dos_charset" = x"$j"; then
2715                 break
2716             fi
2717         done
2719         # check for default display charset name
2720         for j in ASCII 646 ; do
2721             rjs_CHARSET($j)
2722             default_display_charset="$ICONV_CHARSET"
2723             if test x"$default_display_charset" = x"$j"; then
2724                 break
2725             fi
2726         done
2728         # check for default unix charset name
2729         for j in UTF-8 UTF8 ; do
2730             rjs_CHARSET($j)
2731             default_unix_charset="$ICONV_CHARSET"
2732             if test x"$default_unix_charset" = x"$j"; then
2733                 break
2734             fi
2735         done
2737         if test "$default_dos_charset" != "no" -a \
2738                 "$default_dos_charset" != "cross" -a \
2739                 "$default_display_charset" != "no" -a \
2740                 "$default_display_charset" != "cross" -a \
2741                 "$default_unix_charset" != "no" -a \
2742                 "$default_unix_charset" != "cross"
2743         then
2744                 samba_cv_HAVE_NATIVE_ICONV=yes
2745         else
2746             if test "$default_dos_charset" = "cross" -o \
2747                      "$default_display_charset" = "cross" -o \
2748                      "$default_unix_charset" = "cross"
2749             then
2750                     samba_cv_HAVE_NATIVE_ICONV=cross
2751             else
2752                     samba_cv_HAVE_NATIVE_ICONV=no
2753             fi
2754         fi
2756         # At this point, we have a libiconv candidate. We know that
2757         # we have the right headers and libraries, but we don't know
2758         # whether it does the conversions we want. We can't test this
2759         # because we are cross-compiling. This is not necessarily a big
2760         # deal, since we can't guarantee that the results we get now will
2761         # match the results we get at runtime anyway.
2762         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2763             default_dos_charset="CP850"
2764             default_display_charset="ASCII"
2765             default_unix_charset="UTF-8"
2766             samba_cv_HAVE_NATIVE_ICONV=yes
2767             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2768             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2769         fi
2771         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2773             CPPFLAGS=$save_CPPFLAGS
2774             LDFLAGS=$save_LDFLAGS
2775             LIBS=$save_LIBS
2777             if test x"$iconv_current_LIBS" != x; then
2778                 LIBS="$LIBS $iconv_current_LIBS"
2779             fi
2781             # Add the flags we need to CPPFLAGS and LDFLAGS
2782             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2783             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2785             # Turn the #defines into string literals
2786             default_dos_charset="\"$default_dos_charset\""
2787             default_display_charset="\"$default_display_charset\""
2788             default_unix_charset="\"$default_unix_charset\""
2790             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2791             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2792             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2793             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2795            break
2796         fi
2798     # We didn't find a working iconv, so keep going
2799     fi
2801     #  We only need to clean these up here for the next pass through the loop
2802     CPPFLAGS=$save_CPPFLAGS
2803     LDFLAGS=$save_LDFLAGS
2804     LIBS=$save_LIBS
2805     export LDFLAGS LIBS CPPFLAGS
2806 done
2807 unset libext
2810 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2811     AC_MSG_WARN([Sufficient support for iconv function was not found.
2812     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2813    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2814    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2815    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2819 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2820 AC_TRY_RUN([
2821 #include <sys/types.h>
2822 #include <fcntl.h>
2823 #ifndef F_GETLEASE
2824 #define F_GETLEASE      1025
2825 #endif
2826 main() {
2827        int fd = open("/dev/null", O_RDONLY);
2828        return fcntl(fd, F_GETLEASE, 0) == -1;
2831 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2832 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2833     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2836 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2837 AC_TRY_RUN([
2838 #include <sys/types.h>
2839 #include <fcntl.h>
2840 #include <signal.h>
2841 #ifndef F_NOTIFY
2842 #define F_NOTIFY 1026
2843 #endif
2844 main() {
2845         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2848 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2849 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2850     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2853 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2854 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2855 AC_CHECK_FUNCS(inotify_init)
2856 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2858 samba_cv_HAVE_INOTIFY=yes,
2859 samba_cv_HAVE_INOTIFY=no,
2860 samba_cv_HAVE_INOTIFY=cross)
2862 if test x"$ac_cv_func_inotify_init" = x"yes"; then
2863     if test  x"$ac_cv_header_sys_inotify_h" = x"yes" -o x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2864         AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel or sys has inotify support])
2865     fi
2868 #################################################
2869 # Check if FAM notifications are available. For FAM info, see
2870 #       http://oss.sgi.com/projects/fam/
2871 #       http://savannah.nongnu.org/projects/fam/
2872 AC_ARG_ENABLE(fam,
2873 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2875 if test x$enable_fam != xno; then
2876     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2877     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2878         # On IRIX, libfam requires libC, but other FAM implementations
2879         # might not need it.
2880         AC_CHECK_LIB(fam, FAMOpen2,
2881             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2882             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2883             [samba_cv_HAVE_LIBFAM=no])
2885         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2886             samba_fam_xtra=-lC
2887             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2888                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2889                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2890                 [samba_cv_HAVE_LIBFAM=no])
2891             unset samba_fam_xtra
2892         fi
2893     fi
2894     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2895         default_shared_modules="$default_shared_modules vfs_notify_fam"
2896         AC_TRY_COMPILE([#include <fam.h>],
2897                     [enum FAMCodes code = FAMChanged;],
2898                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2899                         [Whether fam.h contains a typedef for enum FAMCodes]),
2900                     [])
2901     fi
2903     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2904         AC_CHECK_LIB(fam, FAMNoExists,
2905             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2906     fi
2908     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2909         AC_MSG_ERROR(FAM support requested but FAM library not available )
2910     fi
2913 AC_SUBST(SMB_FAM_LIBS)
2915 #################################################
2916 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2919 with_dmapi_support=auto
2920 AC_MSG_CHECKING(whether to use DMAPI support)
2921 AC_ARG_WITH(dmapi,
2922 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2923 [ case "$withval" in
2924   yes|no)
2925     with_dmapi_support=$withval
2926     ;;
2927   esac ]
2929 AC_MSG_RESULT([$with_dmapi_support])
2931 if test x"$with_dmapi_support" != xno ; then
2932         SMB_CHECK_DMAPI([], [
2933                 AC_MSG_NOTICE(DMAPI support not present)
2934                 if test x"$with_dmapi_support" = xyes ; then
2935                         AC_MSG_ERROR(no DMAPI support found but requested!)
2936                 fi
2937                 ]
2938         )
2941 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2942 # Theoretically it should work with AIX JFS2 too but this needs testing
2943 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2944     default_shared_modules="$default_shared_modules vfs_tsmsm"
2947 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2948 AC_TRY_RUN([
2949 #include <sys/types.h>
2950 #include <fcntl.h>
2951 #include <signal.h>
2952 #include <sys/file.h>
2953 #ifndef LOCK_MAND
2954 #define LOCK_MAND       32
2955 #define LOCK_READ       64
2956 #endif
2957 main() {
2958         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2961 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2962 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2963     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2967 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2968 AC_TRY_COMPILE([#include <sys/types.h>
2969 #include <fcntl.h>],
2970 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2971 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2972 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2973     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2976 #################################################
2977 # Check for POSIX capability support
2979 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2980     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2981     [], [])
2983 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2985     ac_save_LIBS=$LIBS
2986     AC_LIBTESTFUNC(cap, cap_get_proc)
2988     AC_CACHE_CHECK([for POSIX capabilities],
2989             samba_cv_HAVE_POSIX_CAPABILITIES,
2990             [
2991                 AC_TRY_RUN([
2992 #include <sys/types.h>
2993 #include <sys/capability.h>
2994 main() {
2995  cap_t cap;
2996  cap_value_t vals[1];
2997  if (!(cap = cap_get_proc()))
2998    exit(1);
2999  vals[0] = CAP_CHOWN;
3000  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
3001  cap_set_proc(cap);
3002  exit(0);
3004                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
3005                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
3006                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
3007             ])
3009 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
3010     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
3011             [Whether POSIX capabilities are available])
3012 else
3013     LIBS=$ac_save_LIBS
3019 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
3020 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
3023 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_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 [int16 testvar;],
3029 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
3030 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
3031     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
3034 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
3035 AC_TRY_COMPILE([#include <sys/types.h>
3036 #if defined(HAVE_RPC_RPC_H)
3037 #include <rpc/rpc.h>
3038 #endif],
3039 [uint16 testvar;],
3040 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
3041 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
3042     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
3045 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
3046 AC_TRY_COMPILE([#include <sys/types.h>
3047 #if defined(HAVE_RPC_RPC_H)
3048 #include <rpc/rpc.h>
3049 #endif],
3050 [int32 testvar;],
3051 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
3052 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
3053     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
3056 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
3057 AC_TRY_COMPILE([#include <sys/types.h>
3058 #if defined(HAVE_RPC_RPC_H)
3059 #include <rpc/rpc.h>
3060 #endif],
3061 [uint32 testvar;],
3062 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
3063 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
3064     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
3068 dnl Some systems (SCO) have a problem including
3069 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
3070 dnl as a #define in <prot.h> and as part of an enum
3071 dnl in <rpc/rpc.h>.
3074 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
3075 AC_TRY_COMPILE([#include <sys/types.h>
3076 #ifdef HAVE_SYS_SECURITY_H
3077 #include <sys/security.h>
3078 #include <prot.h>
3079 #endif  /* HAVE_SYS_SECURITY_H */
3080 #if defined(HAVE_RPC_RPC_H)
3081 #include <rpc/rpc.h>
3082 #endif],
3083 [int testvar;],
3084 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
3085 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
3086     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
3089 AC_MSG_CHECKING([for test routines])
3090 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
3091            AC_MSG_RESULT(yes),
3092            AC_MSG_ERROR([cant find test code. Aborting config]),
3093            AC_MSG_WARN([cannot run when cross-compiling]))
3095 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
3096 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
3097            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
3098 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
3099     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
3102 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
3103 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
3104            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
3105 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
3106     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
3109 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
3110 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
3111 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
3112 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
3113 AC_CHECK_FUNCS(getpagesize)
3115 ################################################
3116 # look for a method of setting the effective uid
3117 seteuid=no;
3119 if test $seteuid = no; then
3120 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3121 AC_TRY_RUN([
3122 #define AUTOCONF_TEST 1
3123 #define USE_SETREUID 1
3124 #include "confdefs.h"
3125 #include "${srcdir-.}/lib/util_sec.c"],
3126            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3127 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3128     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3132 # we check for setresuid second as it conflicts with AIO on Linux. 
3133 # see http://samba.org/~tridge/junkcode/aio_uid.c
3134 if test $seteuid = no; then
3135 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3136 AC_TRY_RUN([
3137 #define AUTOCONF_TEST 1
3138 #define USE_SETRESUID 1
3139 #include "confdefs.h"
3140 #include "${srcdir-.}/lib/util_sec.c"],
3141            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3142 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3143     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3147 if test $seteuid = no; then
3148 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3149 AC_TRY_RUN([
3150 #define AUTOCONF_TEST 1
3151 #define USE_SETEUID 1
3152 #include "confdefs.h"
3153 #include "${srcdir-.}/lib/util_sec.c"],
3154            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3155 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3156     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3160 if test $seteuid = no; then
3161 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3162 AC_TRY_RUN([
3163 #define AUTOCONF_TEST 1
3164 #define USE_SETUIDX 1
3165 #include "confdefs.h"
3166 #include "${srcdir-.}/lib/util_sec.c"],
3167            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3168 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3169     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3173 AC_CACHE_CHECK([for the Darwin initgroups system call],
3174         samba_cv_DARWIN_INITGROUPS,
3175         AC_TRY_LINK([
3176 #include <sys/syscall.h>
3177 #include <unistd.h>
3178         ],
3179         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3180         samba_cv_DARWIN_INITGROUPS=yes,
3181         samba_cv_DARWIN_INITGROUPS=no)
3184 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3185     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3186         [Whether to use the Darwin-specific initgroups system call])
3189 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3190 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
3191            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3192 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3193     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3196 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3197 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
3198            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3199 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3200     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3202 else
3205 dnl Don't check for 64 bit fcntl locking if we know that the
3206 dnl glibc2.1 broken check has succeeded.
3209   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3210   AC_TRY_RUN([
3211 #if defined(HAVE_UNISTD_H)
3212 #include <unistd.h>
3213 #endif
3214 #include <stdio.h>
3215 #include <stdlib.h>
3217 #ifdef HAVE_FCNTL_H
3218 #include <fcntl.h>
3219 #endif
3221 #ifdef HAVE_SYS_FCNTL_H
3222 #include <sys/fcntl.h>
3223 #endif
3224 main() { struct flock64 fl64;
3225 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3226 exit(0);
3227 #else
3228 exit(1);
3229 #endif
3231        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3233   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3234       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3235   fi
3238 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3239 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3240 AC_TRY_COMPILE([
3241   #define _XOPEN_SOURCE 600
3242   #include <stdlib.h>
3243   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3244     probably broken posix_fallocate
3245   #endif
3246 ], [
3247 ], 
3248 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3249 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3250         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3254 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3255 AC_TRY_COMPILE([#include <sys/types.h>
3256 #include <sys/stat.h>
3257 #include <unistd.h>],
3258 [struct stat st;  st.st_blocks = 0;],
3259 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3260 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3261     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3264 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3266 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3267 AC_TRY_COMPILE([#include <sys/types.h>
3268 #include <sys/stat.h>
3269 #include <unistd.h>],
3270 [struct stat st;  st.st_blksize = 0;],
3271 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3272 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3273     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3276 AC_CACHE_CHECK([for st_flags in struct stat],
3277         samba_cv_HAVE_STAT_ST_FLAGS,
3278         [
3279             AC_TRY_COMPILE([#include <sys/types.h>
3280 #include <sys/stat.h>
3281 #include <unistd.h>],
3282             [struct stat st;  st.st_flags = 0;],
3283             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3284             samba_cv_HAVE_STAT_ST_FLAGS=no,
3285             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3286         ])
3288 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3289     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3290                 [Whether the stat struct has a st_flags member])
3293 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3294 AC_TRY_COMPILE([
3295 #include <sys/types.h>
3296 #include <sys/acl.h>
3297 #if defined(HAVE_RPCSVC_NIS_H)
3298 #include <rpcsvc/nis.h>
3299 #endif],
3300 [int i;],
3301 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3302 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3303         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3306 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3307 AC_TRY_RUN([
3308 #include <stdio.h>
3309 #include <limits.h>
3310 #include <signal.h>
3312 void exit_on_core(int ignored) {
3313         exit(1);
3316 main() {
3317         char *newpath;
3318         signal(SIGSEGV, exit_on_core);
3319         newpath = realpath("/tmp", NULL);
3320         exit((newpath != NULL) ? 0 : 1);
3323 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3324 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3325     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3328 #################################################
3329 # check for AFS clear-text auth support
3330 samba_cv_WITH_AFS=no
3331 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3332 AC_ARG_WITH(afs,
3333 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3334 [ case "$withval" in
3335   yes|auto)
3336     AC_MSG_RESULT($withval)
3337     samba_cv_WITH_AFS=$withval
3338     ;;
3339   *)
3340     AC_MSG_RESULT(no)
3341     ;;
3342   esac ],
3343   AC_MSG_RESULT(no)
3346 ####################################################
3347 # check for Linux-specific AFS fake-kaserver support
3348 samba_cv_WITH_FAKE_KASERVER=no
3349 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3350 AC_ARG_WITH(fake-kaserver,
3351 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3352 [ case "$withval" in
3353   yes|auto)
3354     AC_MSG_RESULT($withval)
3355     samba_cv_WITH_FAKE_KASERVER=$withval
3356     ;;
3357   *)
3358     AC_MSG_RESULT(no)
3359     ;;
3360   esac ],
3361   AC_MSG_RESULT(no)
3364 #################################################
3365 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3366 if test x"$samba_cv_WITH_AFS" != x"no" ||
3367    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3369     # see if this box has the OpenSSL DES libraries
3370     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3372     # see if this box has the afs-headers in /usr/include/afs
3373     AC_MSG_CHECKING(for /usr/include/afs)
3374     if test -d /usr/include/afs; then
3375           AC_MSG_RESULT(yes)
3376     else
3377       AC_MSG_RESULT(no)
3378     fi
3380     # check for afs.h
3381     have_afs_headers=no
3382     AC_CHECK_HEADERS(afs.h afs/afs.h)
3383     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3384         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3385            test x"$samba_cv_WITH_AFS" = x"auto"; then
3386                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3387         else
3388                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3389         fi
3390     else
3391         have_afs_headers=yes
3392     fi
3395 FAKE_KASERVER_OBJ=""
3396 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3397     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3398     FAKE_KASERVER_OBJ="utils/net_afs.o"
3400 AC_SUBST(FAKE_KASERVER_OBJ)
3402 #################################################
3403 # check whether to compile AFS/NT ACL mapping module
3404 samba_cv_WITH_VFS_AFSACL=no
3405 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3406 AC_ARG_WITH(vfs-afsacl,
3407 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3408 [ case "$withval" in
3409   yes|auto)
3410     AC_MSG_RESULT($withval)
3411     samba_cv_WITH_VFS_AFSACL=yes
3412     ;;
3413   *)
3414     AC_MSG_RESULT(no)
3415     ;;
3416   esac ],
3417   AC_MSG_RESULT(no)
3420 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3421    default_shared_modules="$default_shared_modules vfs_afsacl"
3423         
3424 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3425     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3428 #################################################
3429 # check for the DFS clear-text auth system
3430 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3431 AC_ARG_WITH(dfs,
3432 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3433 [ case "$withval" in
3434   yes)
3435     AC_MSG_RESULT(yes)
3436     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3437     ;;
3438   *)
3439     AC_MSG_RESULT(no)
3440     ;;
3441   esac ],
3442   AC_MSG_RESULT(no)
3445 ########################################################
3446 # Compile with LDAP support?
3448 with_ldap_support=auto
3449 AC_MSG_CHECKING([for LDAP support])
3451 AC_ARG_WITH(ldap,
3452 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3453 [ case "$withval" in
3454     yes|no)
3455         with_ldap_support=$withval
3456         ;;
3457   esac ])
3459 AC_MSG_RESULT($with_ldap_support)
3461 SMBLDAP=""
3462 AC_SUBST(SMBLDAP)
3463 SMBLDAPUTIL=""
3464 AC_SUBST(SMBLDAPUTIL)
3466 if test x"$with_ldap_support" != x"no"; then
3468   ##################################################################
3469   # first test for ldap.h and lber.h
3470   # (ldap.h is required for this test)
3471   AC_CHECK_HEADERS(ldap.h lber.h)
3473   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3474         if test x"$with_ldap_support" = x"yes"; then
3475          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3476         else
3477          AC_MSG_WARN(ldap.h is needed for LDAP support)
3478         fi
3479         
3480         with_ldap_support=no
3481   fi
3483   ##################################################################
3484   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3485   # unsigned int in include/includes.h
3486   case $host_os in
3487         *hpux*)
3488          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3489          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3490         with_ldap_support=yes
3491         ;;
3492         *)
3493         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3494         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3495                 if test x"$with_ldap_support" = x"yes"; then
3496                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3497                 else
3498                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3499                 fi
3500                 with_ldap_support=no
3501         fi
3502         ;;
3503   esac
3506 if test x"$with_ldap_support" != x"no"; then
3507   ac_save_LIBS=$LIBS
3509   ##################################################################
3510   # we might need the lber lib on some systems. To avoid link errors
3511   # this test must be before the libldap test
3512   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3514   ########################################################
3515   # If ber_sockbuf_add_io() is available we can add
3516   # SASL wrapping hooks
3517   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3519   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3520                  AC_TRY_COMPILE([#include <ldap.h>],
3521                                 [int val = LDAP_OPT_SOCKBUF;],
3522                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3523                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3525   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3526           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3527         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3528   fi
3530   #######################################################
3531   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3532   # ldap logging and print it out in the samba logs
3533   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3534                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3535                  [AC_TRY_COMPILE([#include <lber.h>],
3536                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3537                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3538                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3540   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3541         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3542                   [Support for LDAP/LBER logging interception])
3543   fi
3545   ########################################################
3546   # now see if we can find the ldap libs in standard paths
3547   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3549   ########################################################
3550   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3551   # Check found in pam_ldap 145.
3552   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3554   LIBS="$LIBS $LDAP_LIBS"
3555   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3556     AC_TRY_COMPILE([
3557         #include <lber.h>
3558         #include <ldap.h>],
3559         [ldap_set_rebind_proc(0, 0, 0);],
3560         [smb_ldap_cv_ldap_set_rebind_proc=3],
3561         [smb_ldap_cv_ldap_set_rebind_proc=2]
3562     )
3563   ])
3565   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3567   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3569   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3570     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3571     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3572     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3573     default_shared_modules="$default_shared_modules";
3574     SMBLDAP="lib/smbldap.o"
3575     SMBLDAPUTIL="lib/smbldap_util.o"
3576     with_ldap_support=yes
3577     AC_MSG_CHECKING(whether LDAP support is used)
3578     AC_MSG_RESULT(yes)
3579   else
3580     if test x"$with_ldap_support" = x"yes"; then
3581         AC_MSG_ERROR(libldap is needed for LDAP support)
3582     else
3583         AC_MSG_WARN(libldap is needed for LDAP support)
3584     fi
3586     LDAP_LIBS=""
3587     with_ldap_support=no
3588   fi
3589   LIBS=$ac_save_LIBS
3593 #################################################
3594 # active directory support
3596 with_ads_support=auto
3597 AC_MSG_CHECKING([for Active Directory and krb5 support])
3599 AC_ARG_WITH(ads,
3600 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3601 [ case "$withval" in
3602     yes|no)
3603         with_ads_support="$withval"
3604         ;;
3605   esac ])
3607 AC_MSG_RESULT($with_ads_support)
3609 FOUND_KRB5=no
3610 KRB5_LIBS=""
3612 if test x"$with_ldap_support" != x"yes"; then
3614     if test x"$with_ads_support" = x"yes"; then
3615         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3616     elif test x"$with_ads_support" = x"auto"; then
3617         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3618         with_ads_support=no
3619     fi
3621 else
3623     # Check to see whether there is enough LDAP functionality to be able
3624     # to build AD support.
3626 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3627 case "$host_os" in
3628         *hpux*)
3629     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3631     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3632         if test x"$with_ads_support" = x"yes"; then
3633             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3634         elif test x"$with_ads_support" = x"auto"; then
3635             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3636             with_ads_support=no
3637         fi
3638     fi
3639     ;;
3640         *)
3641     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3643     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3644         if test x"$with_ads_support" = x"yes"; then
3645             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3646         elif test x"$with_ads_support" = x"auto"; then
3647             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3648             with_ads_support=no
3649         fi
3650     fi
3651     ;;
3652 esac
3655     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3657     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3658         if test x"$with_ads_support" = x"yes"; then
3659             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3660         elif test x"$with_ads_support" = x"auto"; then
3661             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3662             with_ads_support=no
3663         fi
3664     fi
3668 if test x"$with_ads_support" != x"no"; then
3670   # Do no harm to the values of CFLAGS and LIBS while testing for
3671   # Kerberos support.
3673   if test x$FOUND_KRB5 = x"no"; then
3674     #################################################
3675     # check for location of Kerberos 5 install
3676     AC_MSG_CHECKING(for kerberos 5 install path)
3677     AC_ARG_WITH(krb5,
3678     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3679     [ case "$withval" in
3680       no)
3681         AC_MSG_RESULT(no krb5-path given)
3682         ;;
3683       yes)
3684         AC_MSG_RESULT(/usr)
3685         FOUND_KRB5=yes
3686         ;;
3687       *)
3688         AC_MSG_RESULT($withval)
3689         KRB5_CFLAGS="-I$withval/include"
3690         KRB5_CPPFLAGS="-I$withval/include"
3691         KRB5_LDFLAGS="-L$withval/lib"
3692         FOUND_KRB5=yes
3693         if test -x "$withval/bin/krb5-config"; then
3694                 KRB5CONFIG=$withval/bin/krb5-config
3695         fi
3696         ;;
3697       esac ],
3698       AC_MSG_RESULT(no krb5-path given)
3699     )
3700   fi
3702   #################################################
3703   # check for krb5-config from recent MIT and Heimdal kerberos 5
3704   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3705   AC_MSG_CHECKING(for working krb5-config)
3706   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3707     ac_save_CFLAGS=$CFLAGS
3708     CFLAGS="";export CFLAGS
3709     ac_save_LDFLAGS=$LDFLAGS
3710     LDFLAGS="";export LDFLAGS
3711     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3712     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3713     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3714     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3715     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3716     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3717     FOUND_KRB5=yes
3718     AC_MSG_RESULT(yes)
3719   else
3720     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3721   fi
3723   if test x$FOUND_KRB5 = x"no"; then
3724     #################################################
3725     # see if this box has the SuSE location for the heimdal krb implementation
3726     AC_MSG_CHECKING(for /usr/include/heimdal)
3727     if test -d /usr/include/heimdal; then
3728       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3729           KRB5_CFLAGS="-I/usr/include/heimdal"
3730           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3731           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3732           FOUND_KRB5=yes
3733           AC_MSG_RESULT(yes)
3734       else
3735           KRB5_CFLAGS="-I/usr/include/heimdal"
3736           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3737           FOUND_KRB5=yes
3738           AC_MSG_RESULT(yes)
3739       fi
3740     else
3741       AC_MSG_RESULT(no)
3742     fi
3743   fi
3745   if test x$FOUND_KRB5 = x"no"; then
3746     #################################################
3747     # see if this box has the RedHat location for kerberos
3748     AC_MSG_CHECKING(for /usr/kerberos)
3749     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3750       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3751       KRB5_CFLAGS="-I/usr/kerberos/include"
3752       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3753       FOUND_KRB5=yes
3754       AC_MSG_RESULT(yes)
3755     else
3756       AC_MSG_RESULT(no)
3757     fi
3758   fi
3760   if test x$FOUND_KRB5 = x"no"; then
3761     #################################################
3762     # see if this box has the OpenBSD location for heimdal krb5
3763     AC_MSG_CHECKING(for /usr/include/kerberosV)
3764     if test -d /usr/include/kerberosV; then
3765       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3766       KRB5_LIBS="-lcrypto"
3767       FOUND_KRB5=yes
3768       AC_MSG_RESULT(yes)
3769     else
3770       AC_MSG_RESULT(no)
3771     fi
3772   fi
3774   ac_save_CFLAGS=$CFLAGS
3775   ac_save_CPPFLAGS=$CPPFLAGS
3776   ac_save_LDFLAGS=$LDFLAGS
3778   # remove needless evil rpath stuff as early as possible:
3779   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3780   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3781   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3782   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3783   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3785   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3787   # now check for krb5.h. Some systems have the libraries without the headers!
3788   # note that this check is done here to allow for different kerberos
3789   # include paths
3790   AC_CHECK_HEADERS(krb5.h)
3792   if test x"$ac_cv_header_krb5_h" = x"no"; then
3794     # Give a warning if AD support was not explicitly requested,
3795     # i.e with_ads_support = auto, otherwise die with an error.
3797     if test x"$with_ads_support" = x"yes"; then
3798       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3799     else
3800       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3801     fi
3803     # Turn off AD support and restore CFLAGS and LIBS variables
3805     with_ads_support="no"
3807     CFLAGS=$ac_save_CFLAGS
3808     CPPFLAGS=$ac_save_CPPFLAGS
3809     LDFLAGS=$ac_save_LDFLAGS
3810   fi
3812   # check for new heimdal KRB5_DEPRECATED handling
3814   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3815                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3816     AC_TRY_COMPILE(
3817       [#define KRB5_DEPRECATED 1
3818       #include <krb5.h>],
3819       [],
3820       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3821       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3823   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3824     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3825                [Whether to use deprecated krb5 interfaces])
3826   fi
3829 # Now we have determined whether we really want ADS support
3830 use_ads=no
3831 if test x"$with_ads_support" != x"no"; then
3832   use_ads=yes
3833   have_gssapi=no
3834   ac_save_LIBS=$LIBS
3836   # now check for gssapi headers.  This is also done here to allow for
3837   # different kerberos include paths
3838   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h com_err.h)
3840   ##################################################################
3841   # we might need the k5crypto and com_err libraries on some systems
3842   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3843   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3845   # Heimdal checks.
3846   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3847   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3848   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3850   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3851   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3853   ########################################################
3854   # now see if we can find the krb5 libs in standard paths
3855   # or as specified above
3856   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3857   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3859   ########################################################
3860   # now see if we can find the gssapi libs in standard paths
3861   if test x"$have_gssapi" != x"yes"; then
3862      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3863      AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3864   fi
3866   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3867   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3868   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3869   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3870   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3871   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3872   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3873   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3874   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3875   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3876   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3877   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3878   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3879   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3880   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3881   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3882   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3883   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3884   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3885   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3886   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3887   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3888   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3889   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3890   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3891   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3892   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3893   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3894   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3895   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3896   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3897   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3898   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3899   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3900   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3901   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3902   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3903   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3904   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3905   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3906   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3907   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3908   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3909   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3910   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3911   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3912   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3913   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3914   AC_CHECK_FUNC_EXT(gss_get_name_attribute, $KRB5_LIBS)
3916   # MIT krb5 1.8 does not expose this call (yet)
3917   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3919   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3920   # but does have the symbol
3921   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3923   LIBS="$KRB5_LIBS $LIBS"
3925   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3926         smb_krb5_cv_ticket_has_keyinfo,
3927         [
3928             AC_TRY_COMPILE(
3929             [
3930                 #include <krb5.h>
3931             ],
3932             [
3933                 krb5_ticket ticket;
3934                 krb5_kvno kvno;
3935                 krb5_enctype enctype;
3937                 enctype = ticket.enc_part.enctype;
3938                 kvno = ticket.enc_part.kvno;
3939             ],
3940             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3941             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3942         ])
3944   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3945         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3946             [Whether the krb5_ticket structure contains the kvno and enctype])
3947   fi
3949   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3950           smb_krb5_cv_creds_opt_free_context,
3951           [
3952                 AC_TRY_COMPILE([
3953                     #include <krb5.h>],
3954                     [
3955                         krb5_context ctx;
3956                         krb5_get_init_creds_opt *opt = NULL;
3957                         krb5_get_init_creds_opt_free(ctx, opt);
3958                     ],
3959                     [smb_krb5_cv_creds_opt_free_context=yes],
3960                     [smb_krb5_cv_creds_opt_free_context=no]
3961                 )
3962           ])
3964   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3965         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3966             [Whether krb5_get_init_creds_opt_free takes a context argument])
3967   fi
3969   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3970     AC_TRY_COMPILE([
3971         #include <krb5.h>],
3972         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3973         [smb_krb5_cv_verify_checksum=7],
3974         [smb_krb5_cv_verify_checksum=6],
3975     )
3976   ])
3977   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3979   AC_CACHE_CHECK([for checksum in krb5_checksum],
3980                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3981     AC_TRY_COMPILE([#include <krb5.h>],
3982       [krb5_checksum cksum; cksum.checksum.length = 0;],
3983       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3984       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3986   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3987     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3988                [Whether the krb5_checksum struct has a checksum property])
3989   fi
3991   AC_CACHE_CHECK([for etype in EncryptedData],
3992                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3993     AC_TRY_COMPILE([#include <krb5.h>],
3994       [EncryptedData edata; edata.etype = 0;],
3995       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3996       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3998   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3999     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
4000                [Whether the EncryptedData struct has a etype property])
4001   fi
4003   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
4004                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
4005     AC_TRY_COMPILE([#include <krb5.h>],
4006       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
4007       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
4008       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
4010   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
4011     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
4012                [Whether the krb5_ap_req struct has a ticket pointer])
4013   fi
4015   AC_CACHE_CHECK([for e_data pointer in krb5_error],
4016                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
4017     AC_TRY_COMPILE([#include <krb5.h>],
4018       [krb5_error err; err.e_data = NULL;],
4019       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
4020       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
4022   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
4023     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
4024                [Whether the krb5_error struct has a e_data pointer])
4025   fi
4027   AC_CACHE_CHECK([for krb5_crypto type],
4028                 samba_cv_HAVE_KRB5_CRYPTO,[
4029     AC_TRY_COMPILE([#include <krb5.h>],
4030       [krb5_crypto crypto;],
4031       samba_cv_HAVE_KRB5_CRYPTO=yes,
4032       samba_cv_HAVE_KRB5_CRYPTO=no)])
4034   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
4035     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
4036                [Whether the type krb5_crypto exists])
4037   fi
4039   AC_CACHE_CHECK([for krb5_encrypt_block type],
4040                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
4041     AC_TRY_COMPILE([#include <krb5.h>],
4042       [krb5_encrypt_block block;],
4043       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
4044       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
4046   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
4047     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
4048                [Whether the type krb5_encrypt_block exists])
4049   fi
4051   AC_CACHE_CHECK([for addrtype in krb5_address],
4052                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
4053     AC_TRY_COMPILE([#include <krb5.h>],
4054       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
4055       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
4056       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
4058   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
4059     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
4060                [Whether the krb5_address struct has a addrtype property])
4061   fi
4063   AC_CACHE_CHECK([for addr_type in krb5_address],
4064                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
4065     AC_TRY_COMPILE([#include <krb5.h>],
4066       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
4067       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
4068       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
4070   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
4071     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
4072               [Whether the krb5_address struct has a addr_type property])
4073   fi
4075   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
4076                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
4077                  [AC_TRY_COMPILE([#include <krb5.h>],
4078     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4079     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4081   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4082     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4083               [Whether the krb5_ticket struct has a enc_part2 property])
4084   fi
4086   AC_CACHE_CHECK([for keyblock in krb5_creds],
4087                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4088     AC_TRY_COMPILE([#include <krb5.h>],
4089       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4090       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4091       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4093   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4094     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4095               [Whether the krb5_creds struct has a keyblock property])
4096   fi
4098   AC_CACHE_CHECK([for session in krb5_creds],
4099                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4100     AC_TRY_COMPILE([#include <krb5.h>],
4101       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4102       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4103       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4105   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4106     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4107               [Whether the krb5_creds struct has a session property])
4108   fi
4110   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4111                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4112     AC_TRY_COMPILE([#include <krb5.h>],
4113       [krb5_keyblock key; key.keyvalue.data = NULL;],
4114       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4115       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4117   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4118     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4119               [Whether the krb5_keyblock struct has a keyvalue property])
4120   fi
4122   found_arcfour_hmac=no
4123   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4124                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4125     AC_TRY_COMPILE([#include <krb5.h>],
4126       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4127       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4128       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4129   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4130                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4131     AC_TRY_COMPILE([#include <krb5.h>],
4132       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4133       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4134       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4135 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4136 # w.r.t. arcfour and windows, so we must not enable it here
4137   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4138           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4139     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4140               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
4141     found_arcfour_hmac=yes
4142   fi
4143   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
4144                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
4145     AC_TRY_COMPILE([#include <krb5.h>],
4146       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
4147       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
4148       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
4149   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
4150     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
4151               [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
4152     found_arcfour_hmac=yes
4153   fi
4155   AC_CACHE_CHECK([for ENCTYPE_AES128_CTS_HMAC_SHA1_96],
4156                  samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,[
4157     AC_TRY_COMPILE([#include <krb5.h>],
4158       [krb5_enctype enctype; enctype = ENCTYPE_AES128_CTS_HMAC_SHA1_96;],
4159       samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=yes,
4160       samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=no)])
4161   if test x"$samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96" = x"yes"; then
4162     AC_DEFINE(HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,1,
4163               [Whether the ENCTYPE_AES128_CTS_HMAC_SHA1_96 key type definition is available])
4164   fi
4165   AC_CACHE_CHECK([for ENCTYPE_AES256_CTS_HMAC_SHA1_96],
4166                  samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,[
4167     AC_TRY_COMPILE([#include <krb5.h>],
4168       [krb5_enctype enctype; enctype = ENCTYPE_AES256_CTS_HMAC_SHA1_96;],
4169       samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=yes,
4170       samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=no)])
4171   if test x"$samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96" = x"yes"; then
4172     AC_DEFINE(HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,1,
4173               [Whether the ENCTYPE_AES256_CTS_HMAC_SHA1_96 key type definition is available])
4174   fi
4176   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4177                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4178     AC_TRY_COMPILE([#include <krb5.h>],
4179       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4180       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4181       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4183   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4184     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4185               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4186   fi
4188   AC_CACHE_CHECK([for KV5M_KEYTAB],
4189                  samba_cv_HAVE_KV5M_KEYTAB,[
4190     AC_TRY_COMPILE([#include <krb5.h>],
4191       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4192       samba_cv_HAVE_KV5M_KEYTAB=yes,
4193       samba_cv_HAVE_KV5M_KEYTAB=no)])
4195   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4196       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4197              [Whether the KV5M_KEYTAB option is available])
4198   fi
4200   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4201                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4202     AC_TRY_COMPILE([#include <krb5.h>],
4203       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4204       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4205       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4207   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4208     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4209               [Whether KRB5_KU_OTHER_CKSUM is available])
4210   fi
4212   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4213                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4214     AC_TRY_COMPILE([#include <krb5.h>],
4215       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4216       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4217       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4219   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4220     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4221               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4222   fi
4224   AC_CACHE_CHECK([for the krb5_princ_component macro],
4225                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4226     AC_TRY_LINK([#include <krb5.h>],
4227       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4228       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4229       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4231   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4232     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4233                [Whether krb5_princ_component is available])
4234   fi
4236   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4237                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4238     AC_TRY_COMPILE([#include <krb5.h>],
4239       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4240       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4241       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4243   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4244     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4245               [Whether krb5_keytab_entry has key member])
4246   fi
4248   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4249                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4250     AC_TRY_COMPILE([#include <krb5.h>],
4251       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4252       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4253       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4255   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4256     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4257               [Whether krb5_keytab_entry has keyblock member])
4258   fi
4260   AC_CACHE_CHECK([for magic in krb5_address],
4261                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4262     AC_TRY_COMPILE([#include <krb5.h>],
4263       [krb5_address addr; addr.magic = 0;],
4264       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4265       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4267   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4268     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4269               [Whether the krb5_address struct has a magic property])
4270   fi
4272   AC_CACHE_CHECK([for WRFILE: keytab support],
4273                 samba_cv_HAVE_WRFILE_KEYTAB,[
4274     AC_TRY_RUN([
4275 #include<krb5.h>
4276   main()
4277   {
4278     krb5_context context;
4279     krb5_keytab keytab;
4281     krb5_init_context(&context);
4282     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4283   }],
4284   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4285   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4287   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4288       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4289                [Whether the WRFILE:-keytab is supported])
4290   fi
4292   AC_CACHE_CHECK([for krb5_realm type],
4293                 samba_cv_HAVE_KRB5_REALM_TYPE,[
4294     AC_TRY_COMPILE([#include <krb5.h>],
4295       [krb5_realm realm;],
4296       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4297       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4299   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4300     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4301                [Whether the type krb5_realm exists])
4302   fi
4304   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4305                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4306     AC_TRY_COMPILE([#include <krb5.h>],
4307     [
4308     krb5_context context;
4309     krb5_principal principal;
4310     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4311     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4312     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4314   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4315     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4316               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4317   fi
4319   AC_CACHE_CHECK([for krb5_addresses type],
4320                 samba_cv_HAVE_KRB5_ADDRESSES,[
4321     AC_TRY_COMPILE([#include <krb5.h>],
4322       [krb5_addresses addr;],
4323       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4324       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4326   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4327     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4328                [Whether the type krb5_addresses type exists])
4329   fi
4331   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4332                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4333     AC_TRY_COMPILE([#include <krb5.h>],
4334     [
4335     krb5_mk_error(0,0,0);],
4336     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4337     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4339   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4340     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4341               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4342   fi
4344   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4345     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4346         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4347         AC_TRY_RUN_STRICT([
4348                 #include <stdlib.h>
4349                 #include <krb5.h>
4350                 int main(void) {
4351                         krb5_context context = NULL;
4352                         char *str = NULL;
4353                         krb5_enctype_to_string(context, 1, &str);
4354                         if (str) free (str); 
4355                         return 0;
4356                 }
4357                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4358                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4359                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4361     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4362       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4363                 [whether krb5_enctype_to_string takes krb5_context argument])
4364     fi
4366     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4367         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4368         AC_TRY_RUN_STRICT([
4369                 #include <krb5.h>
4370                 int main(void) {
4371                         char buf[256];
4372                         krb5_enctype_to_string(1, buf, 256);
4373                         return 0;
4374                 }
4375                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4376                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4377                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4379     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4380       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4381                 [whether krb5_enctype_to_string takes size_t argument])
4382     fi
4383   fi
4385   AC_CACHE_CHECK([for krb5_principal_get_realm],
4386                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4387     AC_TRY_LINK([#include <krb5.h>],
4388       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4389       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4390       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4392   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4393     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4394                [Whether the function krb5_principal_get_realm is defined])
4395   fi
4397   AC_CACHE_CHECK([for krb5_princ_realm],
4398                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4399     AC_TRY_LINK([#include <krb5.h>],
4400       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4401       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4402       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4404   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4405     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4406                [Whether the macro krb5_princ_realm is defined])
4407   fi
4409   #
4410   #
4411   # Now the decisions whether we can support krb5
4412   #
4413   # NOTE: all tests should be done before this block!
4414   #
4415   #
4416   if test x"$found_arcfour_hmac" != x"yes"; then
4417     AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4418     use_ads=no
4419   fi
4421   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4422     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4423     use_ads=no
4424   fi
4426   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4427           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4428   then
4429     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4430     use_ads=no
4431   fi
4433   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4434           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4435   then
4436     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4437     use_ads=no
4438   fi
4440   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4441           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4442   then
4443     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4444     use_ads=no
4445   fi
4447   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4448           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4449   then
4450     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4451     use_ads=no
4452   fi
4454   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4456       # We only need the following functions if we can't get the enctype
4457       # and kvno out of the ticket directly (ie. on Heimdal).
4459       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4460       then
4461         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4462         use_ads=no
4463       fi
4465       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4466       then
4467         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4468         use_ads=no
4469       fi
4471   fi
4473   if test x"$use_ads" = x"yes"; then
4474     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4475     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4476     if test x"$have_gssapi" = x"yes"; then
4477       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4478     fi
4479   else
4480     if test x"$with_ads_support" = x"yes"; then
4481         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4482     else
4483         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4484     fi
4485     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4486     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4487     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4488     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4489     KRB5_LIBS=""
4490     with_ads_support=no
4491   fi
4492   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4493   AC_MSG_RESULT([$use_ads])
4495 LIBS="$ac_save_LIBS"
4498 if test x"$use_ads" != xyes; then
4499         smbtorture4_possible=no
4502 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4503 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4506 ########################################################
4507 # Compile with DNS Updates support?
4509 with_dnsupdate_support=auto
4510 AC_MSG_CHECKING([whether to enable DNS Updates support])
4512 AC_ARG_WITH(dnsupdate,
4513 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4514 [ case "$withval" in
4515     yes|no)
4516         with_dnsupdate_support=$withval
4517         ;;
4518   esac ])
4520 AC_MSG_RESULT($with_dnsupdate_support)
4522 if test x"$with_dnsupdate_support" != x"no"; then
4524   ################################################################
4525   # first test for AD / GSSAPI support being enabled
4526         if test x"$have_gssapi" != xyes ; then
4527                 if test x"$with_dnsupdate_support" = x"yes" ; then
4528                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4529                 else
4530                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4531                         with_dnsupdate_support=no
4532                 fi
4533         fi
4534   ##################################################################
4535   # then test for uuid.h (necessary to generate unique DNS keynames
4536   # (uuid.h is required for this test)
4537         AC_CHECK_HEADERS(uuid/uuid.h)
4539         
4540         if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4541                 if test x"$with_dnsupdate_support" = x"yes"; then
4542                         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4543                 else
4544                         AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4545                 fi
4546                 with_dnsupdate_support=no
4547         fi
4550 if test x"$with_dnsupdate_support" != x"no"; then
4552   ########################################################
4553   # Now see if we can find the uuid libs in standard paths
4554   # On some systems, the uuid API is in libc, so we have to
4555   # be careful not to insert a spurious -luuid.
4557   UUID_LIBS=""
4558   AC_LIBTESTFUNC(uuid, uuid_generate,
4559           [
4560             case " $LIBS " in
4561                 *\ -luuid\ *)
4562                 UUID_LIBS="-luuid"
4563                 SMB_REMOVE_LIB(uuid)
4564                 ;;
4565             esac
4567             with_dnsupdate_support=yes
4568             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4569         ],
4570         [
4571             if test x"$with_dnsupdate_support" = x"yes"; then
4572                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4573             else
4574                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4575             fi
4576             with_dnsupdate_support=no
4577         ])
4579   # finally print out the result:
4580 AC_MSG_CHECKING(whether DNS Updates support is used)
4581 AC_MSG_RESULT([$with_dnsupdate_support])
4584 #################################################
4585 # check for automount support
4586 AC_MSG_CHECKING(whether to use automount)
4587 AC_ARG_WITH(automount,
4588 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4589 [ case "$withval" in
4590   yes)
4591     AC_MSG_RESULT(yes)
4592     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4593     ;;
4594   *)
4595     AC_MSG_RESULT(no)
4596     ;;
4597   esac ],
4598   AC_MSG_RESULT(no)
4601 #################################################
4602 # Check for a PAM clear-text auth, accounts, password
4603 # and session support. Most PAM implementations keep their
4604 # headers in /usr/include/security. Darwin keeps its in
4605 # /usr/include/pam.
4607 with_pam_for_crypt=no
4608 try_pam=auto
4609 AC_MSG_CHECKING(whether to try PAM support)
4610 AC_ARG_WITH(pam,
4611 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4612 [ case "$withval" in
4613   yes|no|auto)
4614     try_pam=$withval
4615     ;;
4616   esac
4618 AC_MSG_RESULT([$try_pam])
4620 use_pam=no
4621 create_pam_modules=no
4622 if test x"${try_pam}" != x"no";then
4623         use_pam=yes
4624         create_pam_modules=yes
4626         # Most systems have PAM headers in /usr/include/security, but Darwin
4627         # has them in /usr/include/pam.
4628         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4629         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4630                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4631                 if test x"${try_pam}" = x"yes";then
4632                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4633                 fi
4634                 use_pam=no
4635                 create_pam_modules=no
4636         fi
4638         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4639         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4640                 if test x"${try_pam}" = x"yes";then
4641                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4642                 fi
4643                 use_pam=no
4644                 create_pam_modules=no
4645         fi
4647         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4648                 #if HAVE_SECURITY_PAM_APPL_H
4649                 #include <security/pam_appl.h>
4650                 #endif
4651                 #if HAVE_PAM_PAM_APPL_H
4652                 #include <pam/pam_appl.h>
4653                 #endif
4654         ]])
4655         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4656                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4657                 if test x"${try_pam}" = x"yes";then
4658                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4659        fi
4660                 create_pam_modules=no
4661     fi
4663         if test x"$use_pam" = x"yes"; then
4664     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4665                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4666                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4667     with_pam_for_crypt=yes
4669                 if test x"$create_pam_modules" = x"yes"; then
4670                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4671                         # this checks are optional,
4672                         # we don't care about the results here
4673                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4674                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4675                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4676                 else
4677                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4678                 fi
4679         fi
4680         AC_MSG_CHECKING(whether to use PAM support)
4681         AC_MSG_RESULT([$use_pam])
4683         AC_MSG_CHECKING(whether to have PAM MODULES support)
4684         AC_MSG_RESULT([$create_pam_modules])
4686         AC_TRY_COMPILE([
4687                 #if defined(HAVE_SECURITY_PAM_APPL_H)
4688                 #include <security/pam_appl.h>
4689                 #elif defined(HAVE_PAM_PAM_APPL_H)
4690                 #include <pam/pam_appl.h>
4691                 #endif],[
4692                 pam_set_item(0, PAM_RHOST, 0);
4693                 ],
4694                 AC_DEFINE(HAVE_PAM_RHOST, 1,
4695                           [Define to 1 if PAM_RHOST is available]),[])
4697         AC_TRY_COMPILE([
4698                 #if defined(HAVE_SECURITY_PAM_APPL_H)
4699                 #include <security/pam_appl.h>
4700                 #elif defined(HAVE_PAM_PAM_APPL_H)
4701                 #include <pam/pam_appl.h>
4702                 #endif],[
4703                 pam_set_item(0, PAM_TTY, 0);
4704                 ],
4705                 AC_DEFINE(HAVE_PAM_TTY, 1,
4706                           [Define to 1 if PAM_TTY is available]),[])
4708 fi # try_pam != no
4710 #################################################
4711 # check for PAM_RADIO_TYPE
4712 AC_TRY_COMPILE([
4713 #if (!defined(LINUX))
4715 #define PAM_EXTERN extern
4716 #if defined(HAVE_SECURITY_PAM_APPL_H)
4717 #include <security/pam_appl.h>
4718 #elif defined(HAVE_PAM_PAM_APPL_H)
4719 #include <pam/pam_appl.h>
4720 #endif
4722 #endif
4724 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4725 #include <security/pam_modules.h>
4726 #elif defined(HAVE_PAM_PAM_MODULES_H)
4727 #include <pam/pam_modules.h>
4728 #endif
4730 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4731 #include <security/_pam_macros.h>
4732 #elif defined(HAVE_PAM__PAM_MACROS_H)
4733 #include <pam/_pam_macros.h>
4734 #endif
4736 #ifdef HAVE_SECURITY_PAM_EXT_H
4737 #include <security/pam_ext.h>
4738 #endif
4740 [int i; i = PAM_RADIO_TYPE; ],
4741 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4743 #################################################
4744 # check for pam_smbpass support
4745 PAM_MODULES=""
4746 INSTALL_PAM_MODULES=""
4747 UNINSTALL_PAM_MODULES=""
4749 try_pam_smbpass=auto
4750 AC_MSG_CHECKING(whether to use pam_smbpass)
4751 AC_ARG_WITH(pam_smbpass,
4752 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4753 [ case "$withval" in
4754   yes|no|auto)
4755     try_pam_smbpass=$withval
4756   ;;
4757   *)
4758     AC_MSG_ERROR([valid options are yes,no,auto])
4759   ;;
4760   esac
4763 if test x"${try_pam_smbpass}" = xno ; then
4764         use_pam_smbpass=no
4765 else
4766         use_pam_smbpass=yes
4767         # Conditions under which pam_smbpass can't be built.
4768         if test x"$BLDSHARED" != xtrue ; then
4769                 if test x"${try_pam_smbpass}" = xyes ; then
4770                         AC_MSG_ERROR([No support for shared modules])
4771                 fi
4772                 use_pam_smbpass=no
4773         elif test x"$create_pam_modules" != xyes ; then
4774                 if test x"${try_pam_smbpass}" = xyes ; then
4775                         AC_MSG_ERROR([No support for PAM MODULES])
4776                 fi
4777                 use_pam_smbpass=no
4778         fi
4780         if test x"${use_pam_smbpass}" = xyes ; then 
4781                 PAM_MODULES="pam_smbpass"
4782                 INSTALL_PAM_MODULES="installpammodules"
4783                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4784         fi
4786 AC_MSG_RESULT([$use_pam_smbpass])
4790 ## moved after the check for -lcrypt in order to
4791 ## ensure that the necessary libraries are included
4792 ## check checking for truncated salt.  Wrapped by the
4793 ## $with_pam_for_crypt variable as above   --jerry
4795 if test $with_pam_for_crypt = no; then
4796 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4797 crypt_LIBS="$LIBS"
4798 LIBS="$AUTH_LIBS $LIBS"
4799 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4800         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4801 LIBS="$crypt_LIBS"])
4802 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4803         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4807 #################################################
4808 # check for a NISPLUS_HOME support
4809 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4810 AC_ARG_WITH(nisplus-home,
4811 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4812 [ case "$withval" in
4813   yes)
4814     AC_MSG_RESULT(yes)
4815     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4816     ;;
4817   *)
4818     AC_MSG_RESULT(no)
4819     ;;
4820   esac ],
4821   AC_MSG_RESULT(no)
4824 #################################################
4825 # check for syslog logging
4826 AC_MSG_CHECKING(whether to use syslog logging)
4827 AC_ARG_WITH(syslog,
4828 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4829 [ case "$withval" in
4830   yes)
4831     AC_MSG_RESULT(yes)
4832     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4833     ;;
4834   *)
4835     AC_MSG_RESULT(no)
4836     ;;
4837   esac ],
4838   AC_MSG_RESULT(no)
4841 #################################################
4842 # check for custom syslog facility
4843 AC_MSG_CHECKING(whether to use a custom syslog facility)
4844 AC_ARG_WITH(syslog-facility,
4845 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4847   if test "$withval" = "no" ; then
4848     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4849   else
4850      if test "$withval" != "yes" ; then
4851         syslog_facility="$withval"
4852         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4853      fi
4854   fi
4857 #################################################
4858 # check for experimental disk-quotas support
4860 samba_cv_WITH_QUOTAS=auto
4861 samba_cv_TRY_QUOTAS=no
4862 samba_cv_RUN_QUOTA_TESTS=auto
4863 samba_cv_WITH_SYS_QUOTAS=auto
4864 samba_cv_TRY_SYS_QUOTAS=auto
4865 samba_cv_SYSQUOTA_FOUND=no
4867 AC_MSG_CHECKING(whether to try disk-quotas support)
4868 AC_ARG_WITH(quotas,
4869 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4870 [ case "$withval" in
4871   yes)
4872     AC_MSG_RESULT(yes)
4873     samba_cv_WITH_QUOTAS=yes
4874     samba_cv_TRY_QUOTAS=yes
4875     samba_cv_RUN_QUOTA_TESTS=yes
4876     #set sys quotas to auto in this case
4877     samba_cv_TRY_SYS_QUOTAS=auto
4878     ;;
4879   auto)
4880     AC_MSG_RESULT(auto)
4881     samba_cv_WITH_QUOTAS=auto
4882     samba_cv_TRY_QUOTAS=auto
4883     samba_cv_RUN_QUOTA_TESTS=auto
4884     #set sys quotas to auto in this case
4885     samba_cv_TRY_SYS_QUOTAS=auto
4886     ;;
4887   no)
4888     AC_MSG_RESULT(no)
4889     samba_cv_WITH_QUOTAS=no
4890     samba_cv_TRY_QUOTAS=no
4891     samba_cv_RUN_QUOTA_TESTS=no
4892     ;;
4893   *)
4894     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4895     ;;
4896   esac ],
4897   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4900 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4901 AC_ARG_WITH(sys-quotas,
4902 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4903 [ case "$withval" in
4904   yes)
4905     AC_MSG_RESULT(yes)
4906     samba_cv_WITH_SYS_QUOTAS=yes
4907     samba_cv_TRY_SYS_QUOTAS=yes
4908     samba_cv_RUN_QUOTA_TESTS=yes
4909     ;;
4910   auto)
4911     AC_MSG_RESULT(auto)
4912     samba_cv_WITH_SYS_QUOTAS=auto
4913     samba_cv_TRY_SYS_QUOTAS=auto
4914     samba_cv_RUN_QUOTA_TESTS=auto
4915     ;;
4916   no)
4917     AC_MSG_RESULT(no)
4918     samba_cv_WITH_SYS_QUOTAS=no
4919     samba_cv_TRY_SYS_QUOTAS=no
4920     ;;
4921   *)
4922     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4923     ;;
4924   esac ],
4925   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4928 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4929 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4930   case "$host_os" in
4931         *linux*)
4932             AC_MSG_RESULT(yes)
4933             samba_cv_TRY_SYS_QUOTAS=yes
4934             samba_cv_RUN_QUOTA_TESTS=yes
4935             ;;
4936         *)
4937             AC_MSG_RESULT(no)
4938             samba_cv_TRY_SYS_QUOTAS=no
4939             ;;
4940   esac
4943 #############################################
4944 # only check for quota stuff if --with-quotas
4945 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4947 case "$host_os" in
4948         # on linux we didn't need to test we have builtin support
4949         *linux*)
4950             samba_cv_SYSQUOTA_FOUND=yes
4951             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4952             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4953             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4954             AC_MSG_RESULT(yes)
4956             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4957             samba_cv_found_xfs_header=yes
4958             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4959             AC_MSG_RESULT(yes)
4960             ;;
4961         *solaris*)
4962             # need to set this define when using static linking (BUG 1473)
4963             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4964             ;;
4965         *)
4966             ;;
4967 esac
4969 # some broken header files need this
4970 AC_CHECK_HEADER(asm/types.h,[
4971             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4972             AC_ADD_INCLUDE(<asm/types.h>)
4973             ])
4975 # For quotas on Veritas VxFS filesystems
4976 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4978 # For quotas on Linux XFS filesystems
4979 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4981 # For sys/quota.h and linux/quota.h
4982 AC_CHECK_HEADERS(sys/quota.h)
4984 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4985 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4986 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4987 AC_TRY_COMPILE([
4988 #include "confdefs.h"
4989 #ifdef HAVE_SYS_TYPES_H
4990 #include <sys/types.h>
4991 #endif
4992 #ifdef HAVE_ASM_TYPES_H
4993 #include <asm/types.h>
4994 #endif
4995 #include <sys/quota.h>
4996 ],[int i = Q_XGETQUOTA;],
4997 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4998 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4999         samba_cv_found_xfs_header=yes
5003 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
5004 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
5005 AC_TRY_COMPILE([
5006 #include "confdefs.h"
5007 #ifdef HAVE_SYS_QUOTA_H
5008 #include <sys/quota.h>
5009 #endif
5011 struct dqblk D;
5012 D.dqb_fsoftlimit = 0;],
5013 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
5014 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
5015         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
5018 ##################
5019 # look for a working quota system
5021 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5022 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
5023 AC_TRY_RUN_STRICT([
5024 #define HAVE_QUOTACTL_4A 1
5025 #define AUTOCONF_TEST 1
5026 #include "confdefs.h"
5027 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
5028            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
5029 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
5030     samba_cv_SYSQUOTA_FOUND=yes;
5031     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
5032     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
5036 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5037 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
5038 AC_TRY_RUN_STRICT([
5039 #define HAVE_QUOTACTL_4B 1
5040 #define AUTOCONF_TEST 1
5041 #include "confdefs.h"
5042 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
5043            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
5044 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
5045     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
5046     samba_cv_SYSQUOTA_FOUND=yes;
5047     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
5048     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
5052 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5053 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
5054 AC_TRY_RUN_STRICT([
5055 #define HAVE_QUOTACTL_3 1
5056 #define AUTOCONF_TEST 1
5057 #include "confdefs.h"
5058 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
5059            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
5060 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
5061     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
5062     samba_cv_SYSQUOTA_FOUND=yes;
5063     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
5064     samba_cv_sysquotas_file="lib/sysquotas_3.c"
5068 #################################################
5069 # check for mntent.h and struct mntent
5070 AC_CHECK_HEADERS(mntent.h)
5071 #################################################
5072 # check for setmntent,getmntent,endmntent
5073 AC_CHECK_FUNCS(setmntent getmntent endmntent)
5075 #################################################
5076 # check for devnm.h and struct mntent
5077 AC_CHECK_HEADERS(devnm.h)
5078 #################################################
5079 # check for devnm
5080 AC_CHECK_FUNCS(devnm)
5082 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
5083     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
5084         # if --with-sys-quotas=yes then build it
5085         # you have can use the get/set quota command smb.conf
5086         # options then
5087         samba_cv_SYSQUOTA_FOUND=auto
5088     fi
5089     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
5090         # if --with-sys-quotas=yes then build it
5091         # you have can use the get/set quota command smb.conf
5092         # options then
5093         samba_cv_TRY_SYS_QUOTAS=auto
5094     fi
5097 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5098 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
5099 SAVE_CPPFLAGS="$CPPFLAGS"
5100 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5101 AC_TRY_COMPILE([
5102 #include "confdefs.h"
5103 #define NO_PROTO_H 1
5104 #define NO_CONFIG_H 1
5105 #define HAVE_SYS_QUOTAS 1
5106 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
5107 #include "${srcdir-.}/lib/sysquotas.c"
5108 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
5109 CPPFLAGS="$SAVE_CPPFLAGS"
5111 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
5112 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
5113     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
5114         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5115         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
5116         samba_cv_WE_USE_SYS_QUOTAS=yes
5117         AC_MSG_RESULT(yes)
5118     else
5119         AC_MSG_RESULT(no)
5120     fi
5124 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5125 AC_CACHE_CHECK([whether the sys_quota interface works with NFS],samba_cv_SYSQUOTA_WORKS_NFS,[
5126 SAVE_CPPFLAGS="$CPPFLAGS"
5127 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5128 AC_TRY_COMPILE([
5129 #include "confdefs.h"
5130 #define NO_PROTO_H 1
5131 #define NO_CONFIG_H 1
5132 #define HAVE_SYS_QUOTAS 1
5133 #define HAVE_NFS_QUOTAS 1
5134 #include "${srcdir-.}/lib/sysquotas_nfs.c"
5135 ],[],samba_cv_SYSQUOTA_WORKS_NFS=yes,samba_cv_SYSQUOTA_WORKS_NFS=no)
5136 CPPFLAGS="$SAVE_CPPFLAGS"
5138 if test x"$samba_cv_SYSQUOTA_WORKS_NFS" = x"yes"; then
5139     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5140         AC_DEFINE(HAVE_NFS_QUOTAS,1,[Whether nfs quota support is available])
5141     fi
5145 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5146 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5147 SAVE_CPPFLAGS="$CPPFLAGS"
5148 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5149 AC_TRY_COMPILE([
5150 #include "confdefs.h"
5151 #define NO_PROTO_H 1
5152 #define NO_CONFIG_H 1
5153 #define HAVE_SYS_QUOTAS 1
5154 #define HAVE_XFS_QUOTAS 1
5155 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5156 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5157 CPPFLAGS="$SAVE_CPPFLAGS"
5159 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5160     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5161         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5162     fi
5166 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5167 SAVE_CPPFLAGS="$CPPFLAGS"
5168 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5169 AC_TRY_COMPILE([
5170 #include "confdefs.h"
5171 #define NO_PROTO_H 1
5172 #define NO_CONFIG_H 1
5173 #include "${srcdir-.}/smbd/quotas.c"
5174 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5175 CPPFLAGS="$SAVE_CPPFLAGS"
5177 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5178 AC_MSG_CHECKING(whether to use the old quota support)
5179     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5180       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5181         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5182         AC_MSG_RESULT(yes)
5183       else
5184         AC_MSG_RESULT(no)
5185       fi
5186     else
5187       AC_MSG_RESULT(no)
5188     fi
5191 ####################
5192 # End of quota check samba_cv_RUN_QUOTA_TESTS
5195 #################################################
5196 # check for experimental utmp accounting
5198 AC_MSG_CHECKING(whether to support utmp accounting)
5199 WITH_UTMP=yes
5200 AC_ARG_WITH(utmp,
5201 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
5202 [ case "$withval" in
5203   no)
5204                 WITH_UTMP=no
5205                 ;;
5206   *)
5207                 WITH_UTMP=yes
5208                 ;;
5209   esac ],
5212 # utmp requires utmp.h
5213 # Note similar check earlier, when checking utmp details.
5215 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5216         utmp_no_reason=", no utmp.h on $host_os"
5217         WITH_UTMP=no
5220 # Display test results
5222 if test x"$WITH_UTMP" = x"yes"; then
5223         AC_MSG_RESULT(yes)
5224         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5225 else
5226         AC_MSG_RESULT(no$utmp_no_reason)
5230 #################################################
5231 # these tests are taken from the GNU fileutils package
5232 AC_CHECKING(how to get filesystem space usage)
5233 space=no
5235 # Test for statvfs64.
5236 if test $space = no; then
5237   # SVR4
5238   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5239   [AC_TRY_RUN([
5240 #if defined(HAVE_UNISTD_H)
5241 #include <unistd.h>
5242 #endif
5243 #include <sys/types.h>
5244 #include <sys/statvfs.h>
5245   main ()
5246   {
5247     struct statvfs64 fsd;
5248     exit (statvfs64 (".", &fsd));
5249   }],
5250   fu_cv_sys_stat_statvfs64=yes,
5251   fu_cv_sys_stat_statvfs64=no,
5252   fu_cv_sys_stat_statvfs64=cross)])
5253   if test $fu_cv_sys_stat_statvfs64 = yes; then
5254     space=yes
5255     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5256   fi
5259 # Perform only the link test since it seems there are no variants of the
5260 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
5261 # because that got a false positive on SCO OSR5.  Adding the declaration
5262 # of a `struct statvfs' causes this test to fail (as it should) on such
5263 # systems.  That system is reported to work fine with STAT_STATFS4 which
5264 # is what it gets when this test fails.
5265 if test $space = no; then
5266   # SVR4
5267   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5268                  [AC_TRY_LINK([#include <sys/types.h>
5269 #include <sys/statvfs.h>],
5270                               [struct statvfs fsd; statvfs (0, &fsd);],
5271                               fu_cv_sys_stat_statvfs=yes,
5272                               fu_cv_sys_stat_statvfs=no)])
5273   if test $fu_cv_sys_stat_statvfs = yes; then
5274     space=yes
5275     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5276   fi
5279 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5280 # This is not the case on ancient Linux systems.
5282 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5283     AC_TRY_COMPILE([#include <sys/types.h>
5284 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5285         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5286 if test x"$samba_cv_fsid_int" = x"yes"; then
5287     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5290 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5291 # systems use f_bsize.
5292 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5293     AC_TRY_COMPILE([#include <sys/types.h>
5294 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5295         samba_cv_frsize=yes,samba_cv_frsize=no)])
5296 if test x"$samba_cv_frsize" = x"yes"; then
5297     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5300 # Some systems use f_flag in struct statvfs while others use f_flags
5301 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5302     AC_TRY_COMPILE([#include <sys/types.h>
5303 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5304         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5305 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5306     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5309 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5310     AC_TRY_COMPILE([#include <sys/types.h>
5311 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5312         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5313 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5314     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5317 if test $space = no; then
5318   # DEC Alpha running OSF/1
5319   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5320   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5321   [AC_TRY_RUN([
5322 #include <sys/param.h>
5323 #include <sys/types.h>
5324 #include <sys/mount.h>
5325   main ()
5326   {
5327     struct statfs fsd;
5328     fsd.f_fsize = 0;
5329     exit (statfs (".", &fsd, sizeof (struct statfs)));
5330   }],
5331   fu_cv_sys_stat_statfs3_osf1=yes,
5332   fu_cv_sys_stat_statfs3_osf1=no,
5333   fu_cv_sys_stat_statfs3_osf1=no)])
5334   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5335   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5336     space=yes
5337     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5338   fi
5341 if test $space = no; then
5342 # AIX
5343   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5344 member (AIX, 4.3BSD)])
5345   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5346   [AC_TRY_RUN([
5347 #ifdef HAVE_SYS_PARAM_H
5348 #include <sys/param.h>
5349 #endif
5350 #ifdef HAVE_SYS_MOUNT_H
5351 #include <sys/mount.h>
5352 #endif
5353 #ifdef HAVE_SYS_VFS_H
5354 #include <sys/vfs.h>
5355 #endif
5356   main ()
5357   {
5358   struct statfs fsd;
5359   fsd.f_bsize = 0;
5360   exit (statfs (".", &fsd));
5361   }],
5362   fu_cv_sys_stat_statfs2_bsize=yes,
5363   fu_cv_sys_stat_statfs2_bsize=no,
5364   fu_cv_sys_stat_statfs2_bsize=no)])
5365   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5366   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5367     space=yes
5368     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5369   fi
5372 if test $space = no; then
5373 # SVR3
5374   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5375   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5376   [AC_TRY_RUN([#include <sys/types.h>
5377 #include <sys/statfs.h>
5378   main ()
5379   {
5380   struct statfs fsd;
5381   exit (statfs (".", &fsd, sizeof fsd, 0));
5382   }],
5383     fu_cv_sys_stat_statfs4=yes,
5384     fu_cv_sys_stat_statfs4=no,
5385     fu_cv_sys_stat_statfs4=no)])
5386   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5387   if test $fu_cv_sys_stat_statfs4 = yes; then
5388     space=yes
5389     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5390   fi
5393 if test $space = no; then
5394 # 4.4BSD and NetBSD
5395   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5396 member (4.4BSD and NetBSD)])
5397   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5398   [AC_TRY_RUN([#include <sys/types.h>
5399 #ifdef HAVE_SYS_PARAM_H
5400 #include <sys/param.h>
5401 #endif
5402 #ifdef HAVE_SYS_MOUNT_H
5403 #include <sys/mount.h>
5404 #endif
5405   main ()
5406   {
5407   struct statfs fsd;
5408   fsd.f_fsize = 0;
5409   exit (statfs (".", &fsd));
5410   }],
5411   fu_cv_sys_stat_statfs2_fsize=yes,
5412   fu_cv_sys_stat_statfs2_fsize=no,
5413   fu_cv_sys_stat_statfs2_fsize=no)])
5414   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5415   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5416     space=yes
5417         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5418   fi
5421 if test $space = no; then
5422   # Ultrix
5423   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5424   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5425   [AC_TRY_RUN([#include <sys/types.h>
5426 #ifdef HAVE_SYS_PARAM_H
5427 #include <sys/param.h>
5428 #endif
5429 #ifdef HAVE_SYS_MOUNT_H
5430 #include <sys/mount.h>
5431 #endif
5432 #ifdef HAVE_SYS_FS_TYPES_H
5433 #include <sys/fs_types.h>
5434 #endif
5435   main ()
5436   {
5437   struct fs_data fsd;
5438   /* Ultrix's statfs returns 1 for success,
5439      0 for not mounted, -1 for failure.  */
5440   exit (statfs (".", &fsd) != 1);
5441   }],
5442   fu_cv_sys_stat_fs_data=yes,
5443   fu_cv_sys_stat_fs_data=no,
5444   fu_cv_sys_stat_fs_data=no)])
5445   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5446   if test $fu_cv_sys_stat_fs_data = yes; then
5447     space=yes
5448     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5449   fi
5453 # As a gating factor for large file support, in order to
5454 # use <4GB files we must have the following minimal support
5455 # available.
5456 # long long, and a 64 bit off_t or off64_t.
5457 # If we don't have all of these then disable large
5458 # file support.
5460 AC_MSG_CHECKING([if large file support can be enabled])
5461 AC_TRY_COMPILE([
5462 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5463 #include <sys/types.h>
5464 #else
5465 __COMPILE_ERROR_
5466 #endif
5468 [int i],
5469 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5470 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5471         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5473 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5476 #################################################
5477 # check for cluster extensions
5479 AC_MSG_CHECKING(cluster support)
5480 AC_ARG_WITH(cluster-support,
5481 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5483 if test x"$with_cluster_support" = x ; then
5484         with_cluster_support="auto"
5487 AC_MSG_RESULT($with_cluster_support)
5489 AC_ARG_WITH(ctdb,
5490 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5491 [ case "$withval" in
5492   yes|no)
5493     AC_MSG_WARN([--with-ctdb called without argument])
5494     ;;
5495   *)
5496     CTDB_CPPFLAGS="-I$withval/include"
5497     ;;
5498   esac])
5500 AC_ARG_ENABLE(old-ctdb,
5501         [AS_HELP_STRING([--enable-old-ctdb],
5502                 [Enable build against (too) old ctdb version (default=no)])],,
5503                 [enable_old_ctdb=no])
5506 if test "$with_cluster_support" != "no" ; then
5508 AC_MSG_NOTICE(checking whether cluster support is available)
5510 have_cluster_support="yes"
5511 ctdb_broken="no"
5513 SAVED_CPPFLAGS="$CPPFLAGS"
5514 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5516 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5517 #include "confdefs.h"
5518 #define NO_CONFIG_H
5519 #include "replace.h"
5520 #include "system/wait.h"
5521 #include "system/network.h"
5522 #define private #error __USED_RESERVED_WORD_private__
5523 #include <talloc.h>
5524 #include <tdb.h>
5525 #include <ctdb.h>
5528 if test "x$have_cluster_support" = "xyes" -a \
5529         "x$ac_cv_header_ctdb_h" != "xyes"
5530 then
5531         have_cluster_support=no
5532         ctdb_broken="ctdb.h is required for cluster support"
5535 if test "x$have_cluster_support" = "xyes" -a \
5536         "x$ac_cv_header_ctdb_h" != "xyes"
5537 then
5538         have_cluster_support=no
5539         ctdb_broken="ctdb_private.h is required for cluster support"
5543 if test "x$have_cluster_support" = "xyes" ; then
5544         AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5545         #include "confdefs.h"
5546         #define NO_CONFIG_H
5547         #include "replace.h"
5548         #include "system/wait.h"
5549         #include "system/network.h"
5550         #include <talloc.h>
5551         #include <tdb.h>
5552         #include <ctdb.h>
5553         #include <ctdb_private.h>
5554         ])
5555         if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" != x"yes"; then
5556                 ctdb_broken="ctdb transaction support missing or too old"
5557                 have_cluster_support=no
5558         fi
5561 if test "x$have_cluster_support" = "xyes" ; then
5562         AC_HAVE_DECL(CTDB_CONTROL_SCHEDULE_FOR_DELETION,[
5563         #include "confdefs.h"
5564         #define NO_CONFIG_H
5565         #include "replace.h"
5566         #include "system/wait.h"
5567         #include "system/network.h"
5568         #include <talloc.h>
5569         #include <tdb.h>
5570         #include <ctdb.h>
5571         #include <ctdb_private.h>
5572         ])
5573         if test x"$ac_cv_have_CTDB_CONTROL_SCHEDULE_FOR_DELETION_decl" != x"yes"
5574         then
5575                 if test "x$enable_old_ctdb" = "xyes" ; then
5576                         AC_MSG_WARN([ignoring missing SCHEDULE_FOR_DELETION (--enable-old-ctdb)])
5577                 else
5578                         ctdb_broken="support for SCHEDULE_FOR_DELETION control missing"
5579                         have_cluster_support=no
5580                 fi
5581         fi
5584 if test "x$have_cluster_support" = "xyes" ; then
5585         # In ctdb 1.0.57, ctdb_control_tcp was temporarily renamed
5586         # to ctdb_tcp_client.
5587         AC_CHECK_TYPE(struct ctdb_tcp_client,[
5588                 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5589         ],,[
5590         #include "confdefs.h"
5591         #define NO_CONFIG_H
5592         #include "replace.h"
5593         #include "system/wait.h"
5594         #include "system/network.h"
5595         #include <talloc.h>
5596         #include <tdb.h>
5597         #include <ctdb.h>
5598         #include <ctdb_private.h>
5599         ])
5602 if test "x$have_cluster_support" = "xyes" ; then
5603         AC_CHECK_TYPE(struct ctdb_control_tcp,[
5604                 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5605         ],[
5606                 ctdb_broken="missing struct ctdb_control_tcp"
5607                 have_cluster_support=no
5608         ],[
5609         #include "confdefs.h"
5610         #define NO_CONFIG_H
5611         #include "replace.h"
5612         #include "system/wait.h"
5613         #include "system/network.h"
5614         #include <talloc.h>
5615         #include <tdb.h>
5616         #include <ctdb.h>
5617         #include <ctdb_private.h>
5618         ])
5621 # test for optional ipv6 support in ctdb:
5622 if test "x$have_cluster_support" = "xyes" ; then
5623         AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5624                 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5625         ],,[
5626         #include "confdefs.h"
5627         #define NO_CONFIG_H
5628         #include "replace.h"
5629         #include "system/wait.h"
5630         #include "system/network.h"
5631         #include <talloc.h>
5632         #include <tdb.h>
5633         #include <ctdb.h>
5634         #include <ctdb_private.h>
5635         ])
5638 CPPFLAGS="$SAVED_CPPFLAGS"
5640 fi # (if test "$with_cluster_support" != "no")
5642 if test x"$have_cluster_support" = "xno" ; then
5643         case "$with_cluster_support" in
5644         yes)
5645                 AC_MSG_ERROR(["cluster support not available: $ctdb_broken"])
5646                 ;;
5647         auto)
5648                 AC_MSG_WARN(["cluster support not available: $ctdb_broken"])
5649                 ;;
5650         esac
5651         with_cluster_support=no
5654 if test "x$with_cluster_support" != "xno"; then
5655     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5656     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5657     AC_MSG_NOTICE(Building with cluster support)
5658 else
5659     AC_MSG_NOTICE(Building without cluster support)
5663 #################################################
5664 # check for rtnetlink
5666 AC_CHECK_HEADERS([linux/netlink.h],
5667   AC_CHECK_HEADERS([linux/rtnetlink.h],[],[],
5668                    [#include <bits/sockaddr.h>
5669                     #include <linux/netlink.h>]),
5670   [],[#include <bits/sockaddr.h>])
5672 #################################################
5673 # check for ACL support
5675 AC_MSG_CHECKING(whether to support ACLs)
5676 AC_ARG_WITH(acl-support,
5677 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5678 [ case "$withval" in
5679         yes|no)
5680                 with_acl_support="$withval"
5681                 ;;
5682   esac ])
5684 if test x"$with_acl_support" = x ; then
5685         with_acl_support="auto"
5688 AC_MSG_RESULT($with_acl_support)
5690 if test x"$with_acl_support" = x"no"; then
5691         AC_MSG_RESULT(Disabling ACL support)
5692         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5693 else
5694         AC_MSG_NOTICE(checking whether ACL support is available:)
5695         case "$host_os" in
5696         *sysv5*)
5697                 AC_MSG_NOTICE(Using UnixWare ACLs)
5698                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5699                 default_static_modules="$default_static_modules vfs_solarisacl"
5700                 ;;
5701         *solaris*)
5702                 AC_MSG_NOTICE(Using solaris ACLs)
5703                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5704                 ACL_LIBS="$ACL_LIBS -lsec"
5705                 default_static_modules="$default_static_modules vfs_solarisacl"
5706                 ;;
5707         *hpux*)
5708                 AC_MSG_NOTICE(Using HPUX ACLs)
5709                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5710                 default_static_modules="$default_static_modules vfs_hpuxacl"
5711                 ;;
5712         *irix*)
5713                 AC_MSG_NOTICE(Using IRIX ACLs)
5714                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5715                 default_static_modules="$default_static_modules vfs_irixacl"
5716                 ;;
5717         *aix*)
5718                 AC_MSG_NOTICE(Using AIX ACLs)
5719                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5720                 default_static_modules="$default_static_modules vfs_aixacl"
5721                 ;;
5722         *osf*)
5723                 AC_MSG_NOTICE(Using Tru64 ACLs)
5724                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5725                 ACL_LIBS="$ACL_LIBS -lpacl"
5726                 default_static_modules="$default_static_modules vfs_tru64acl"
5727                 ;;
5728         *darwin*)
5729                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5730                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5731                 ;;
5732         *)
5733                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5734                 case "$host_os" in
5735                 *linux*)
5736                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5737                         ;;
5738                 esac
5739                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5740                         acl_LIBS=$LIBS
5741                         LIBS="$LIBS $ACL_LIBS"
5742                         AC_TRY_LINK([
5743                                 #include <sys/types.h>
5744                                 #include <sys/acl.h>
5745                         ],[
5746                                 acl_t acl;
5747                                 int entry_id;
5748                                 acl_entry_t *entry_p;
5749                                 return acl_get_entry(acl, entry_id, entry_p);
5750                         ],
5751                         [samba_cv_HAVE_POSIX_ACLS=yes],
5752                         [samba_cv_HAVE_POSIX_ACLS=no])
5753                         LIBS=$acl_LIBS
5754                 ])
5755                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5756                         AC_MSG_NOTICE(Using posix ACLs)
5757                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5758                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5759                                 acl_LIBS=$LIBS
5760                                 LIBS="$LIBS $ACL_LIBS"
5761                                 AC_TRY_LINK([
5762                                         #include <sys/types.h>
5763                                         #include <sys/acl.h>
5764                                 ],[
5765                                         acl_permset_t permset_d;
5766                                         acl_perm_t perm;
5767                                         return acl_get_perm_np(permset_d, perm);
5768                                 ],
5769                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5770                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5771                                 LIBS=$acl_LIBS
5772                         ])
5773                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5774                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5775                         fi
5776                         default_static_modules="$default_static_modules vfs_posixacl"
5777                 else
5778                         AC_MSG_NOTICE(ACL support is not avaliable)
5779                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5780                 fi
5781                 ;;
5782         esac
5783 fi # with_acl_support
5785 #################################################
5786 # check if we have FreeBSD sunacl
5787 case "$host_os" in
5788 *freebsd*)
5789     AC_CHECK_HEADER(sunacl.h)
5790     if test x"$ac_cv_header_sunacl_h" = xyes ; then
5791        AC_DEFINE(HAVE_FREEBSD_SUNACL_H,1,[Whether we have FreeBSD sunacl around])
5792        ZFSACL_LIBS=-lsunacl
5793        AC_SUBST(ZFSACL_LIBS)
5794        default_shared_modules="$default_shared_modules vfs_zfsacl"
5795     fi
5796     ;;
5797 esac
5799 #################################################
5800 # check for AIO support
5802 AC_MSG_CHECKING(whether to support asynchronous io)
5803 AC_ARG_WITH(aio-support,
5804 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5805 [ case "$withval" in
5806   yes)
5808         AC_MSG_RESULT(yes)
5809         case "$host_os" in
5810         *)
5811                 AIO_LIBS=$LIBS
5812                 no_rt_LIBS=$LIBS
5813                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5814                 LIBS=$no_rt_LIBS
5815                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5816                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5817                 aio_LIBS=$LIBS
5818                 LIBS=$AIO_LIBS
5819                 AC_TRY_LINK([#include <sys/types.h>
5820 #include <aio.h>],
5821 [ struct aiocb a; return aio_read(&a);],
5822 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5823                 LIBS=$aio_LIBS])
5824                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5825                 aio_LIBS=$LIBS
5826                 LIBS=$AIO_LIBS
5827                 AC_TRY_LINK([#include <sys/types.h>
5828 #include <aio.h>],
5829 [ struct aiocb64 a; return aio_read64(&a);],
5830 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5831                 LIBS=$aio_LIBS])
5832                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5833                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5834                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5835                         LIBS=$AIO_LIBS
5836                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5837                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5838                         LIBS=$AIO_LIBS
5839                 fi
5841                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5842                         AC_MSG_CHECKING(for aio_read)
5843                         AC_LINK_IFELSE([#include <aio.h>
5844 int main() { struct aiocb a; return aio_read(&a); }],
5845 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5846 [AC_MSG_RESULT(no)])
5848                         AC_MSG_CHECKING(for aio_write)
5849                         AC_LINK_IFELSE([#include <aio.h>
5850 int main() { struct aiocb a; return aio_write(&a); }],
5851 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5852 [AC_MSG_RESULT(no)])
5854                         AC_MSG_CHECKING(for aio_fsync)
5855                         AC_LINK_IFELSE([#include <aio.h>
5856 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5857 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5858 [AC_MSG_RESULT(no)])
5860                         AC_MSG_CHECKING(for aio_return)
5861                         AC_LINK_IFELSE([#include <aio.h>
5862 int main() { struct aiocb a; return aio_return(&a); }],
5863 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5864 [AC_MSG_RESULT(no)])
5866                         AC_MSG_CHECKING(for aio_error)
5867                         AC_LINK_IFELSE([#include <aio.h>
5868 int main() { struct aiocb a; return aio_error(&a); }],
5869 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5870 [AC_MSG_RESULT(no)])
5872                         AC_MSG_CHECKING(for aio_cancel)
5873                         AC_LINK_IFELSE([#include <aio.h>
5874 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5875 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5876 [AC_MSG_RESULT(no)])
5878                         AC_MSG_CHECKING(for aio_suspend)
5879                         AC_LINK_IFELSE([#include <aio.h>
5880 int main() { struct aiocb a; struct timespec t; return aio_suspend(&a, 1, &t); }],
5881 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5882 [AC_MSG_RESULT(no)])
5883                 fi
5885                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5886                         AC_MSG_CHECKING(for aio_read64)
5887                         AC_LINK_IFELSE([#include <aio.h>
5888 int main() { struct aiocb a; return aio_read64(&a); }],
5889 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5890 [AC_MSG_RESULT(no)])
5892                         AC_MSG_CHECKING(for aio_write64)
5893                         AC_LINK_IFELSE([#include <aio.h>
5894 int main() { struct aiocb a; return aio_write64(&a); }],
5895 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5896 [AC_MSG_RESULT(no)])
5898                         AC_MSG_CHECKING(for aio_fsync64)
5899                         AC_LINK_IFELSE([#include <aio.h>
5900 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5901 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5902 [AC_MSG_RESULT(no)])
5904                         AC_MSG_CHECKING(for aio_return64)
5905                         AC_LINK_IFELSE([#include <aio.h>
5906 int main() { struct aiocb a; return aio_return64(&a); }],
5907 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5908 [AC_MSG_RESULT(no)])
5910                         AC_MSG_CHECKING(for aio_error64)
5911                         AC_LINK_IFELSE([#include <aio.h>
5912 int main() { struct aiocb a; return aio_error64(&a); }],
5913 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5914 [AC_MSG_RESULT(no)])
5916                         AC_MSG_CHECKING(for aio_cancel64)
5917                         AC_LINK_IFELSE([#include <aio.h>
5918 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5919 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5920 [AC_MSG_RESULT(no)])
5922                         AC_MSG_CHECKING(for aio_suspend64)
5923                         AC_LINK_IFELSE([#include <aio.h>
5924 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5925 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5926 [AC_MSG_RESULT(no)])
5927                 fi
5928             ;;
5929         esac
5930         ;;
5931   *)
5932     AC_MSG_RESULT(no)
5933     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5934     ;;
5935   esac ],
5936   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5937   AC_MSG_RESULT(no)
5940 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5941         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5942                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5943                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5944         fi
5947 #################################################
5948 # check for sendfile support
5950 AC_MSG_CHECKING(whether sendfile support should be built in)
5951 AC_ARG_WITH(sendfile-support,
5952 [AS_HELP_STRING([--with-sendfile-support], [Whether sendfile support should be built in (default=auto)])],
5953 [ case "$withval" in
5954   yes|no)
5955         AC_MSG_RESULT($withval);
5956         with_sendfile_support=$withval
5957         ;;
5958   *)
5959         AC_MSG_RESULT(yes)
5960         with_sendfile_support=auto
5961         ;;
5962   esac ],
5965 if test x$with_sendfile_support != xno ; then
5966     case "$host_os" in
5967         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5968                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5969                 AC_TRY_LINK([#include <sys/sendfile.h>],
5971 int tofd, fromfd;
5972 off64_t offset;
5973 size_t total;
5974 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5976 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5978                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5979                 AC_TRY_LINK([#include <sys/sendfile.h>],
5981 int tofd, fromfd;
5982 off_t offset;
5983 size_t total;
5984 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5986 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5988 # Try and cope with broken Linux sendfile....
5989                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5990                 AC_TRY_LINK([\
5991 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5992 #undef _FILE_OFFSET_BITS
5993 #endif
5994 #include <sys/sendfile.h>],
5996 int tofd, fromfd;
5997 off_t offset;
5998 size_t total;
5999 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
6001 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
6003         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
6004                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
6005                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
6006                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
6007         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6008                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6009                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
6010                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
6011         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
6012                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
6013                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
6014         else
6015                 AC_MSG_RESULT(no);
6016         fi
6018         ;;
6019         *freebsd* | *dragonfly* )
6020                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
6021                 AC_TRY_LINK([\
6022 #include <sys/types.h>
6023 #include <unistd.h>
6024 #include <sys/socket.h>
6025 #include <sys/uio.h>],
6027         int fromfd, tofd, ret, total=0;
6028         off_t offset, nwritten;
6029         struct sf_hdtr hdr;
6030         struct iovec hdtrl;
6031         hdr.headers = &hdtrl;
6032         hdr.hdr_cnt = 1;
6033         hdr.trailers = NULL;
6034         hdr.trl_cnt = 0;
6035         hdtrl.iov_base = NULL;
6036         hdtrl.iov_len = 0;
6037         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
6039 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6041         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6042                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
6043                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
6044                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6045         else
6046                 AC_MSG_RESULT(no);
6047         fi
6048         ;;
6050         *hpux*)
6051                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
6052                 AC_TRY_LINK([\
6053 #include <sys/socket.h>
6054 #include <sys/uio.h>],
6056         int fromfd, tofd;
6057         size_t total=0;
6058         struct iovec hdtrl[2];
6059         ssize_t nwritten;
6060         off64_t offset;
6062         hdtrl[0].iov_base = 0;
6063         hdtrl[0].iov_len = 0;
6065         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
6067 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
6068         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
6069                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
6070                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
6071                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6072         else
6073                 AC_MSG_RESULT(no);
6074         fi
6076                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
6077                 AC_TRY_LINK([\
6078 #include <sys/socket.h>
6079 #include <sys/uio.h>],
6081         int fromfd, tofd;
6082         size_t total=0;
6083         struct iovec hdtrl[2];
6084         ssize_t nwritten;
6085         off_t offset;
6087         hdtrl[0].iov_base = 0;
6088         hdtrl[0].iov_len = 0;
6090         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
6092 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6093         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6094                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6095                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
6096                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6097         else
6098                 AC_MSG_RESULT(no);
6099         fi
6100         ;;
6102         *solaris*)
6103                 AC_CHECK_LIB(sendfile,sendfilev)
6104                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
6105                 AC_TRY_LINK([\
6106 #include <sys/sendfile.h>],
6108         int sfvcnt;
6109         size_t xferred;
6110         struct sendfilevec vec[2];
6111         ssize_t nwritten;
6112         int tofd;
6114         sfvcnt = 2;
6116         vec[0].sfv_fd = SFV_FD_SELF;
6117         vec[0].sfv_flag = 0;
6118         vec[0].sfv_off = 0;
6119         vec[0].sfv_len = 0;
6121         vec[1].sfv_fd = 0;
6122         vec[1].sfv_flag = 0;
6123         vec[1].sfv_off = 0;
6124         vec[1].sfv_len = 0;
6125         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
6127 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
6129         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
6130                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
6131                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
6132                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6133         else
6134                 AC_MSG_RESULT(no);
6135         fi
6137                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
6138                 AC_TRY_LINK([\
6139 #include <sys/sendfile.h>],
6141         int sfvcnt;
6142         size_t xferred;
6143         struct sendfilevec vec[2];
6144         ssize_t nwritten;
6145         int tofd;
6147         sfvcnt = 2;
6149         vec[0].sfv_fd = SFV_FD_SELF;
6150         vec[0].sfv_flag = 0;
6151         vec[0].sfv_off = 0;
6152         vec[0].sfv_len = 0;
6154         vec[1].sfv_fd = 0;
6155         vec[1].sfv_flag = 0;
6156         vec[1].sfv_off = 0;
6157         vec[1].sfv_len = 0;
6158         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
6160 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
6162         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
6163                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
6164                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
6165                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6166         else
6167                 AC_MSG_RESULT(no);
6168         fi
6169         ;;
6170         *aix*)
6171                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
6172                 AC_TRY_LINK([\
6173 #include <sys/socket.h>],
6175         int fromfd, tofd;
6176         size_t total=0;
6177         struct sf_parms hdtrl;
6178         ssize_t nwritten;
6179         off64_t offset;
6181         hdtrl.header_data = 0;
6182         hdtrl.header_length = 0;
6183         hdtrl.file_descriptor = fromfd;
6184         hdtrl.file_offset = 0;
6185         hdtrl.file_bytes = 0;
6186         hdtrl.trailer_data = 0;
6187         hdtrl.trailer_length = 0;
6189         nwritten = send_file(&tofd, &hdtrl, 0);
6191 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6192         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6193                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6194                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
6195                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6196         else
6197                 AC_MSG_RESULT(no);
6198         fi
6199         ;;
6200         *)
6201         ;;
6202     esac
6205 if test x$with_sendfile_support = xyes -a x"$samba_cv_HAVE_SENDFILE" != xyes ; then
6206         AC_MSG_ERROR(sendfile support requested but sendfile not available )
6209 ############################################
6210 # See if we have the Linux readahead syscall.
6212 AC_CACHE_CHECK([for Linux readahead],
6213                 samba_cv_HAVE_LINUX_READAHEAD,[
6214     AC_TRY_LINK([
6215 #if defined(HAVE_UNISTD_H)
6216 #include <unistd.h>
6217 #endif
6218 #include <fcntl.h>],
6219     [ssize_t err = readahead(0,0,0x80000);],
6220     samba_cv_HAVE_LINUX_READAHEAD=yes,
6221     samba_cv_HAVE_LINUX_READAHEAD=no)])
6223 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6224   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6225              [Whether Linux readahead is available])
6228 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6230 ############################################
6231 # See if we have the posix_fadvise syscall.
6233 AC_CACHE_CHECK([for posix_fadvise],
6234                 samba_cv_HAVE_POSIX_FADVISE,[
6235     AC_TRY_LINK([
6236 #if defined(HAVE_UNISTD_H)
6237 #include <unistd.h>
6238 #endif
6239 #include <fcntl.h>],
6240     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6241     samba_cv_HAVE_POSIX_FADVISE=yes,
6242     samba_cv_HAVE_POSIX_FADVISE=no)])
6244 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6245   AC_DEFINE(HAVE_POSIX_FADVISE,1,
6246              [Whether posix_fadvise is available])
6249 ############################################
6250 # See if we have the Linux splice syscall.
6252 case "$host_os" in
6253 *linux*)
6254 AC_CACHE_CHECK([for Linux splice],
6255                 samba_cv_HAVE_LINUX_SPLICE,[
6256     AC_TRY_LINK([
6257 #if defined(HAVE_UNISTD_H)
6258 #include <unistd.h>
6259 #endif
6260 #include <fcntl.h>],
6261     [long ret = splice(0,0,1,0,400,0);],
6262     samba_cv_HAVE_LINUX_SPLICE=yes,
6263     samba_cv_HAVE_LINUX_SPLICE=no)])
6266 samba_cv_HAVE_LINUX_SPLICE=no
6268 esac
6270 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
6271   AC_DEFINE(HAVE_LINUX_SPLICE,1,
6272              [Whether Linux splice is available])
6275 AC_HAVE_DECL(splice, [#include <fcntl.h>])
6277 ############################################
6278 # See if we have the a broken readlink syscall.
6280 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
6281 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
6282         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
6284 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
6285         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
6288 #################################################
6289 # Check whether winbind is supported on this platform.  If so we need to
6290 # build and install client programs, sbin programs and shared libraries
6292 AC_MSG_CHECKING(whether to build winbind)
6294 # Initially, the value of $host_os decides whether winbind is supported
6296 HAVE_WINBIND=yes
6297 HAVE_WBCLIENT=no
6299 # Define external wbclient library to link against.  This disables winbind.
6300 # We define this here so --with-winbind can override it.
6301 AC_ARG_WITH(wbclient,
6302 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
6304   case "$withval" in
6305         no)
6306                 HAVE_WBCLIENT=no
6307                 ;;
6308         yes)
6309                 HAVE_WBCLIENT=yes
6310                 HAVE_WINBIND=no
6311                 ;;
6312         *)
6313                 HAVE_WBCLIENT=yes
6314                 HAVE_WINBIND=no
6315                 WBCLIENT_INCLUDES="-I$withval/include"
6316                 WBCLIENT_LDFLAGS="-L$withval/lib"
6317                 ;;
6318   esac ],
6321 AC_SUBST(WBCLIENT_INCLUDES)
6322 AC_SUBST(WBCLIENT_LDFLAGS)
6323 AC_SUBST(WBCLIENT_LIBS)
6326 # Define the winbind shared library name and any specific linker flags
6327 # it needs to be built with.
6329 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
6330 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
6331 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6332 NSSSONAMEVERSIONSUFFIX=""
6334 case "$host_os" in
6335         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
6336                 NSSSONAMEVERSIONSUFFIX=".2"
6337                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
6338                 ;;
6339         *freebsd[[5-9]]*)
6340                 # FreeBSD winbind client is implemented as a wrapper around
6341                 # the Linux version.
6342                 NSSSONAMEVERSIONSUFFIX=".1"
6343                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
6344                     ../nsswitch/winbind_nss_linux.o"
6345                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6346                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6347                 ;;
6349         *netbsd*[[3-9]]*)
6350                 # NetBSD winbind client is implemented as a wrapper
6351                 # around the Linux version. It needs getpwent_r() to
6352                 # indicate libc's use of the correct nsdispatch API.
6353                 #
6354                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6355                         WINBIND_NSS_EXTRA_OBJS="\
6356                             ../nsswitch/winbind_nss_netbsd.o \
6357                             ../nsswitch/winbind_nss_linux.o"
6358                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6359                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6360                 else
6361                         HAVE_WINBIND=no
6362                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6363                 fi
6364                 ;;
6365         *irix*)
6366                 # IRIX has differently named shared libraries
6367                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6368                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6369                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6370                 ;;
6371         *solaris*)
6372                 # Solaris winbind client is implemented as a wrapper around
6373                 # the Linux version.
6374                 NSSSONAMEVERSIONSUFFIX=".1"
6375                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6376                     ../nsswitch/winbind_nss_linux.o"
6377                 ;;
6378         *hpux11*)
6379                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6380                 ;;
6381         *aix*)
6382                 # AIX has even differently named shared libraries.  No
6383                 # WINS support has been implemented yet.
6384                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6385                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6386                 WINBIND_NSS="../nsswitch/WINBIND"
6387                 WINBIND_WINS_NSS=""
6388                 ;;
6389         *)
6390                 HAVE_WINBIND=no
6391                 winbind_no_reason=", unsupported on $host_os"
6392                 ;;
6393 esac
6395 # Check the setting of --with-winbind
6397 AC_ARG_WITH(winbind,
6398 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6400   case "$withval" in
6401         yes)
6402                 HAVE_WINBIND=yes
6403                 HAVE_WBCLIENT=no
6404                 ;;
6405         no)
6406                 HAVE_WINBIND=no
6407                 winbind_reason=""
6408                 ;;
6409   esac ],
6412 # We need unix domain sockets for winbind
6414 if test x"$HAVE_WINBIND" = x"yes"; then
6415         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6416                 winbind_no_reason=", no unix domain socket support on $host_os"
6417                 HAVE_WINBIND=no
6418         fi
6421 # Display test results
6423 if test x"$HAVE_WINBIND" = x"no"; then
6424         WINBIND_NSS=""
6425         WINBIND_WINS_NSS=""
6427 if test x"$HAVE_WBCLIENT" = x"yes"; then
6428         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6429                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6430         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6431         AC_MSG_RESULT(yes)
6432         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6433         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6434 else
6435         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6436                 BUILD_LIBWBCLIENT_SHARED=no
6437         else
6438                 BUILD_LIBWBCLIENT_SHARED=yes
6439         fi
6441         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6442         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6443         LIBWBCLIENT_SOVER=0
6444         LIBWBCLIENT_FULLVER=0
6445         LIBWBCLIENT_SHARED_TARGET_SOVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_SOVER
6446         LIBWBCLIENT_SHARED_TARGET_FULLVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_FULLVER
6447         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6448                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6449                 ## Only worry about libwbclient if we have shared
6450                 # library support
6451                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6452                 LIBWBCLIENT=libwbclient
6453                 INSTALL_LIBWBCLIENT=installlibwbclient
6454                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6455                 LIBWBCLIENT_LIBS="-lwbclient"
6456         else
6457                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6458                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6459         fi
6462 if test x"$HAVE_WINBIND" = x"yes"; then
6463         AC_MSG_RESULT(yes)
6464         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6466         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6467         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6468         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6469                 PAM_MODULES="$PAM_MODULES pam_winbind"
6470                 INSTALL_PAM_MODULES="installpammodules"
6471                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6472         fi
6474         # we use winbind, check for krb5 locate_plugin support:
6475         AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
6476                 [[#ifdef HAVE_KRB5_H
6477                  #include <krb5.h>
6478                  #endif
6479         ]])
6480         if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
6481                 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
6482                 if test x"$BLDSHARED" = x"true" ; then
6483                         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
6484                 fi
6485         fi
6486         # end of krb5 locate_plugin check
6487 else
6488         AC_MSG_RESULT(no$winbind_no_reason)
6491 AC_SUBST(WINBIND_NSS)
6492 AC_SUBST(WINBIND_WINS_NSS)
6493 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6494 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6495 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6497 AC_SUBST(WINBIND_KRB5_LOCATOR)
6499 # Solaris 10 does have new member in nss_XbyY_key
6500 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6501                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6502                 [#include <nss_dbdefs.h>])
6504 # Solaris has some extra fields in struct passwd that need to be
6505 # initialised otherwise nscd crashes.
6507 AC_CHECK_MEMBER(struct passwd.pw_comment,
6508                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6509                 [#include <pwd.h>])
6511 AC_CHECK_MEMBER(struct passwd.pw_age,
6512                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6513                 [#include <pwd.h>])
6515 # AIX 4.3.x and 5.1 do not have as many members in
6516 # struct secmethod_table as AIX 5.2
6517 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6518        [#include <usersec.h>])
6519 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6520        [#include <usersec.h>])
6522 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6523 AC_TRY_COMPILE([#include <sys/types.h>
6524 #include <sys/socket.h>],
6525 [struct ucred cred;
6526  socklen_t cred_len;
6527  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6529 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6530 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6531     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6534 AC_CACHE_CHECK([for getpeereid],samba_cv_HAVE_GETPEEREID,[
6535 AC_TRY_LINK([#include <sys/types.h>
6536 #include <unistd.h>],
6537 [uid_t uid; gid_t gid; int ret;
6538  ret = getpeereid(0, &uid, &gid);
6540 samba_cv_HAVE_GETPEEREID=yes,samba_cv_HAVE_GETPEEREID=no)])
6541 if test x"$samba_cv_HAVE_GETPEEREID" = xyes; then
6542    AC_DEFINE(HAVE_GETPEEREID,1,
6543              [Whether we have getpeereid to get socket credentials])
6547 #################################################
6548 # Check to see if we should use the included popt
6550 AC_ARG_WITH(included-popt,
6551 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6553   case "$withval" in
6554         yes)
6555                 INCLUDED_POPT=yes
6556                 ;;
6557         no)
6558                 INCLUDED_POPT=no
6559                 ;;
6560   esac ],
6562 if test x"$INCLUDED_POPT" != x"yes"; then
6563     AC_CHECK_LIB(popt, poptGetContext,
6564                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6567 AC_MSG_CHECKING(whether to use included popt)
6568 if test x"$INCLUDED_POPT" = x"yes"; then
6569     AC_MSG_RESULT(yes)
6570     BUILD_POPT='$(POPT_OBJ)'
6571     POPTLIBS='$(POPT_OBJ)'
6572     FLAGS1="-I\$(srcdir)/../lib/popt"
6573 else
6574     AC_MSG_RESULT(no)
6575         BUILD_POPT=""
6576     POPTLIBS="-lpopt"
6578 AC_SUBST(BUILD_POPT)
6579 AC_SUBST(POPTLIBS)
6580 AC_SUBST(FLAGS1)
6582 #################################################
6583 # Check if user wants DNS service discovery support
6585 AC_ARG_ENABLE(dnssd,
6586 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6588 AC_SUBST(DNSSD_LIBS)
6589 if test x"$enable_dnssd" = x"yes"; then
6590     have_dnssd_support=yes
6592     AC_CHECK_HEADERS(dns_sd.h)
6593     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6594         have_dnssd_support=no
6595     fi
6597     # On Darwin the DNSSD API is in libc, but on other platforms it's
6598     # probably in -ldns_sd
6599     AC_CHECK_FUNCS(DNSServiceRegister)
6600     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6601     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6602             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6603         have_dnssd_support=no
6604     fi
6606     if test x"$have_dnssd_support" = x"yes"; then
6607         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6608                 [Whether to enable DNS service discovery support])
6609     else
6610         if test x"$enable_dnssd" = x"yes"; then
6611             AC_MSG_ERROR(DNS service discovery support not available)
6612         fi
6613     fi
6617 #################################################
6618 # Check if user wants avahi support
6620 AC_ARG_ENABLE(avahi,
6621 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6623 if test x"$enable_avahi" != x"no"; then
6624     have_avahi_support=yes
6626     AC_CHECK_HEADERS(avahi-common/watch.h)
6627     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6628         have_avahi_support=no
6629     fi
6631     AC_CHECK_HEADERS(avahi-client/client.h)
6632     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6633         have_avahi_support=no
6634     fi
6636     save_LIBS="$LIBS"
6637     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6638     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6639     LIBS="$save_LIBS"
6641     if test x"$have_avahi_client_new" != x"yes" -o \
6642        x"$have_avahi_strerror" != x"yes" ; then
6643         have_avahi_support=no
6644     fi
6646     if test x"$have_avahi_support" = x"yes"; then
6647         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6648         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6649                 [Whether to enable avahi support])
6650         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6651     else
6652         if test x"$enable_avahi" = x"yes"; then
6653             AC_MSG_ERROR(avahi support not available)
6654         fi
6655     fi
6659 #################################################
6660 # Set pthread stuff
6662 PTHREAD_CFLAGS=error
6663 PTHREAD_LDFLAGS=error
6665 # If it's error, then the user didn't 
6666 # define it.
6667 if test "x$PTHREAD_LDFLAGS" = xerror; then
6668   AC_CHECK_LIB(pthread, pthread_attr_init, [
6669              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6670              PTHREAD_LDFLAGS="-lpthread" ])
6673 if test "x$PTHREAD_LDFLAGS" = xerror; then
6674   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6675              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6676              PTHREAD_LDFLAGS="-lpthreads" ])
6679 if test "x$PTHREAD_LDFLAGS" = xerror; then
6680    AC_CHECK_LIB(c_r, pthread_attr_init, [
6681                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6682                 PTHREAD_LDFLAGS="-pthread" ])
6685 if test "x$PTHREAD_LDFLAGS" = xerror; then
6686    AC_CHECK_FUNC(pthread_attr_init, [
6687                  PTHREAD_CFLAGS="-D_REENTRANT"
6688                  PTHREAD_LDFLAGS="-lpthread" ])
6691 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6692 # pthread_attr_init. On pthread_mutex_lock it works there...
6693 if test "x$PTHREAD_LDFLAGS" = xerror; then
6694    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6695                 PTHREAD_CFLAGS="-D_REENTRANT"
6696                 PTHREAD_LDFLAGS="-lpthread" ])
6699 AC_SUBST(PTHREAD_CFLAGS)
6700 AC_SUBST(PTHREAD_LDFLAGS)
6702 samba_cv_HAVE_PTHREAD=no
6703 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6704         samba_cv_HAVE_PTHREAD=yes
6705         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6706         ac_save_CFLAGS=$CFLAGS
6707         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6708         ac_save_LDFLAGS=$LDFLAGS
6709         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6710         AC_CHECK_HEADERS(pthread.h)
6711         CFLAGS=$ac_save_CFLAGS
6712         LDFLAGS=$ac_save_LDFLAGS
6713         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6716 #################################################
6717 # Check if user wants pthreadpool support
6719 AC_ARG_ENABLE(pthreadpool,
6720 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6722 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6723         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6726 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6727     LIBS="$LIBS $PTHREAD_LDFLAGS"
6728     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6729     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6730     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool.o")
6731     PTHREADPOOLTEST="bin/pthreadpooltest\$(EXEEXT)"
6732     AC_SUBST(PTHREADPOOLTEST)
6733     if test x"$samba_cv_HAVE_AIO" = x"yes"; then
6734         default_shared_modules="$default_shared_modules vfs_aio_pthread"
6735     fi
6738 #################################################
6739 # Check to see if we should use the included iniparser
6741 AC_ARG_WITH(included-iniparser,
6742 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6744   case "$withval" in
6745         yes)
6746                 INCLUDED_INIPARSER=yes
6747                 ;;
6748         no)
6749                 INCLUDED_INIPARSER=no
6750                 ;;
6751   esac ],
6753 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6754     AC_CHECK_LIB(iniparser, iniparser_load,
6755                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6758 AC_MSG_CHECKING(whether to use included iniparser)
6759 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6760     AC_MSG_RESULT(yes)
6761     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6762         INIPARSERLIBS=""
6763     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6764 else
6765     AC_MSG_RESULT(no)
6766         BUILD_INIPARSER=""
6767     INIPARSERLIBS="-liniparser"
6769 AC_SUBST(BUILD_INIPARSER)
6770 AC_SUBST(INIPARSERLIBS)
6771 AC_SUBST(FLAGS1)
6773 ###################################################
6774 # Check for different/missing (set|get|end)netgrent prototypes
6775 CFLAGS_SAVE=$CFLAGS
6776 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
6777         CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6779 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6780     AC_TRY_COMPILE([#include<netdb.h>
6781                     #ifdef HAVE_NETGROUP_H
6782                     #include<netgroup.h>
6783                     #endif],[setnetgrent("foo")],
6784                     samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6785 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6786     AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6788 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6789     AC_TRY_COMPILE([#include<netdb.h>
6790                     #ifdef HAVE_NETGROUP_H
6791                     #include<netgroup.h>
6792                     #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6793                     samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6794 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6795     AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6797 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6798     AC_TRY_COMPILE([#include<netdb.h>
6799                     #ifdef HAVE_NETGROUP_H
6800                     #include<netgroup.h>
6801                     #endif],[endnetgrent()],
6802                     samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6803 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6804     AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6807 CFLAGS=$CFLAGS_SAVE
6809 # Checks for the vfs_fileid module
6810 # Start
6811 AC_CHECK_FUNC(getmntent)
6813 AC_CHECK_HEADERS(sys/statfs.h)
6815 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6816 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6817              AC_TRY_RUN([
6818                 #include <sys/types.h>
6819                 #include <sys/statfs.h>
6820                 int main(void)
6821                 {
6822                         struct statfs fsd;
6823                         fsid_t fsid = fsd.f_fsid;
6824                         return statfs (".", &fsd);
6825                 }],
6826                 vfsfileid_cv_statfs=yes,
6827                 vfsfileid_cv_statfs=no,
6828                 vfsfileid_cv_statfs=cross)
6830 AC_MSG_RESULT($vfsfileid_cv_statfs)
6832 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6833         x"$vfsfileid_cv_statfs" = x"yes"; then
6834         default_shared_modules="$default_shared_modules vfs_fileid"
6836 # End
6837 # Checks for the vfs_fileid module
6840 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6842         eval MODULE_DEFAULT_$i=STATIC
6843 done
6845 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6847         dnl Fall back to static if we cannot build shared libraries
6848         eval MODULE_DEFAULT_$i=STATIC
6850         if test $BLDSHARED = true; then
6851                 eval MODULE_DEFAULT_$i=SHARED
6852         fi
6853 done
6855 dnl Always build these modules static
6856 MODULE_rpc_spoolss=STATIC
6857 MODULE_rpc_srvsvc=STATIC
6858 MODULE_idmap_tdb=STATIC
6859 MODULE_idmap_passdb=STATIC
6860 MODULE_idmap_nss=STATIC
6862 MODULE_nss_info_template=STATIC
6864 AC_ARG_WITH(static-modules,
6865 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6866 [ if test $withval; then
6867         for i in `echo $withval | sed -e 's/,/ /g'`
6868         do
6869                 eval MODULE_$i=STATIC
6870         done
6871 fi ])
6873 AC_ARG_WITH(shared-modules,
6874 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6875 [ if test $withval; then
6876         for i in `echo $withval | sed -e 's/,/ /g'`
6877         do
6878                         eval MODULE_$i=SHARED
6879         done
6880 fi ])
6882 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6883                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6884         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6885         AC_SUBST(SMBD_FAM_LIBS)
6888 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o,
6889                    "bin/ldapsam.$SHLIBEXT", PDB,
6890                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6891 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6892 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6893 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6894 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6895 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6897 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6898 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6899 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6900 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6901 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6902 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6903 SMB_MODULE(idmap_autorid, winbindd/idmap_autorid.o, "bin/autorid.$SHLIBEXT", IDMAP)
6904 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6905 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6906 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6907 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6909 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6910 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6912 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6913 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6914 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6915 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6916 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6918 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6919 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6920 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6921 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6922 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6923 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6924 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6925 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6926 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6927 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6929 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6930 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6931 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6932 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6933 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6934 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6935 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6936 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6937 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6938 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6939 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6940 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6941 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6942 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6943 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6944 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6945 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6946 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6947 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6948 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6949 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6950 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6951 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6952 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6953 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6954 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6955 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6956 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6957 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6958 SMB_MODULE(vfs_gpfs_hsm_notify, \$(VFS_GPFS_PREFETCH_OBJ), "bin/gpfs_hsm_notify.$SHLIBEXT", VFS)
6959 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6960 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6961 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6962 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6963 SMB_MODULE(vfs_aio_pthread, \$(VFS_AIO_PTHREAD_OBJ), "bin/aio_pthread.$SHLIBEXT", VFS)
6964 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6965 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6966 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6967 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6968 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6969 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6970 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6971 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6972 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6973 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6974 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6975 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6976 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6977 SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
6979 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6981 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6982 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6983 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6985 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6986 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6987 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6988 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6990 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6992 #################################################
6993 # do extra things if we are running insure
6995 if test "${ac_cv_prog_CC}" = "insure"; then
6996         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6999 #################################################
7000 # If run from the build farm, enable NASTY hacks
7001 #################################################
7002 AC_MSG_CHECKING(whether to enable build farm hacks)
7003 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
7004         AC_MSG_RESULT(yes)
7005         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
7006 else
7007         AC_MSG_RESULT(no)
7010 #################################################
7011 # check for bad librt/libpthread interactions
7013 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
7014     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
7015     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
7016     x"$samba_cv_HAVE_AIO" = x"yes" ; then
7018 SMB_IF_RTSIGNAL_BUG(
7019         [
7020             # Have RT_SIGNAL bug, need to check whether the problem will
7021             # affect anything we have configured.
7023             rt_do_error=no
7024             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
7025                 if test x"$rt_signal_lease_ok" = x"no" ; then
7026                     rt_do_error=yes
7027                 fi
7028             fi
7030             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
7031                 if test x"$rt_signal_notify_ok" = x"no" ; then
7032                     rt_do_error=yes
7033                 fi
7034             fi
7036             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
7037                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
7038                 if test x"$rt_signal_aio_ok" = x"no" ; then
7039                     rt_do_error=yes
7040                 fi
7041             fi
7043             if test x"$rt_do_error" = x"yes" ; then
7044                 SMB_IS_LIBPTHREAD_LINKED(
7045                     [
7046                         cat<<MSG
7048 *** On this platforms, linking Samba against pthreads causes problems
7049 *** with the oplock and change notification mechanisms. You may be
7050 *** using pthreads as a side-effect of using the --with-aio-support
7051 *** or --with-profiling-data options. Please remove these and try again.
7054                     ],
7055                     [
7056                         cat<<MSG
7058 *** On this platform, the oplock and change notification mechanisms do not
7059 *** appear to work. Please report this problem to samba-technical@samba.org
7060 *** and attach the config.log file from this directory.
7063                     ])
7064                 AC_MSG_ERROR(unable to use realtime signals on this platform)
7065             fi
7066         ],
7067         [
7068             # no RT_SIGNAL bug, we are golden
7069             SMB_IS_LIBPTHREAD_LINKED(
7070                 [
7071                     AC_MSG_WARN(using libpthreads - this may degrade performance)
7072                 ])
7074         ],
7075         [
7076             # cross compiling, I hope you know what you are doing
7077             true
7078         ])
7082 m4_include(../lib/zlib/zlib.m4)
7084 if test x$smbtorture4_possible = xyes; then
7085         saved_USESHARED="$USESHARED"
7086         USESHARED="false"
7087         smbtorture4_path="bin/smbtorture4"
7088         smbtorture4_option="-t bin/smbtorture4"
7089         AC_SUBST(smbtorture4_path)
7090         AC_SUBST(smbtorture4_option)
7091         USESHARED="$saved_USESHARED"
7092         SMBTORTURE4="bin/smbtorture4"
7093         AC_SUBST(SMBTORTURE4)
7096 AC_SUBST(ZLIB_LIBS)
7097 AC_SUBST(ZLIB_OBJS)
7098 AC_ZLIB([ZLIB_OBJS=""], [
7099         ZLIB_LIBS=""
7100         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
7101                      deflate.o trees.o zutil.o inflate.o infback.o \
7102                          inftrees.o inffast.o
7103         do
7104                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
7105         done
7106         CFLAGS="-I../lib/zlib $CFLAGS"
7109 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
7111 if test "x$enable_dmalloc" = xyes
7112 then
7113         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
7114         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
7115                   [Define to check invariants around some common functions])
7116         LIBS="$LIBS -ldmalloc"
7119 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
7120 LIB_REMOVE_USR_LIB(LDFLAGS)
7121 LIB_REMOVE_USR_LIB(LIBS)
7123 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
7124 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
7125 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
7127 #################################################
7128 # Display summary of libraries detected
7130 AC_MSG_RESULT([Using libraries:])
7131 AC_MSG_RESULT([    LIBS = $LIBS])
7132 if test x"$with_ads_support" != x"no"; then
7133     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
7135 if test x"$with_ldap_support" != x"no"; then
7136     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
7138 if test x"$with_dnsupdate_support" != x"no"; then
7139     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
7141 if test x"$have_dnssd_support" != x"no"; then
7142     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
7144 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
7146 #################################################
7147 # final configure stuff
7149 AC_MSG_CHECKING([configure summary])
7150 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
7151            AC_MSG_RESULT(yes),
7152            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
7153            AC_MSG_WARN([cannot run when cross-compiling]))
7155 dnl Merge in developer cflags from now on
7156 AC_SUBST(DEVELOPER_CFLAGS)
7157 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
7158     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
7161 # Stuff the smbd-only libraries at the end of the smbd link
7162 # path (if we have them).
7163 SMBD_LIBS="$samba_dmapi_libs"
7164 AC_SUBST(SMBD_LIBS)
7166 CFLAGS="${CFLAGS} \$(FLAGS)"
7167 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
7169 # If we had to expand the includes, make tsure the output file is moved back
7170 AC_OUTPUT_COMMANDS([
7171 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
7172         ln -s Makefile-noincludes Makefile
7176 AC_OUTPUT(Makefile
7177           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
7178           lib/netapi/examples/Makefile
7179           lib/netapi/tests/Makefile
7180           pkgconfig/smbclient.pc
7181           pkgconfig/wbclient.pc
7182           pkgconfig/netapi.pc
7183           pkgconfig/smbsharemodes.pc
7184           ../examples/libsmbclient/Makefile.internal
7185           )
7187 #################################################
7188 # Print very concise instructions on building/use
7189 if test "x$enable_dmalloc" = xyes
7190 then
7191         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
7192         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])