lib/util: Remove unbuilt file util_getent.c and BROKEN_GETGRNAM
[Samba/bb.git] / source3 / configure.in
blob440d89511a321a8dc60431db479a215731db45f7
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/autoconf/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
23 m4_include(pkg.m4)
25 AC_LIBREPLACE_CC_CHECKS
26 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
28 m4_include(../lib/tevent/libtevent.m4)
29 m4_include(../lib/ccan/libccan.m4)
31 LIBTEVENT_OBJ0=""
32 for obj in ${TEVENT_OBJ}; do
33         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
34 done
35 AC_SUBST(LIBTEVENT_OBJ0)
36 LIBS="${LIBS} ${TEVENT_LIBS}"
38 SAMBA_CPPFLAGS="-Iinclude/autoconf -Iautoconf -Iautoconf/source3"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
42 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CCAN_CFLAGS}"
43 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
44 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
45 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/tdb_compat"
47 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
49 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
50 if test "x${srcdir-.}" != "x."; then
51         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
54 dnl Unique-to-Samba variables we'll be playing with.
55 AC_SUBST(SAMBA_CPPFLAGS)
56 AC_SUBST(SHELL)
57 AC_SUBST(LDSHFLAGS)
58 AC_SUBST(SONAMEFLAG)
59 AC_SUBST(SHLD)
60 AC_SUBST(MODULE_EXPORTS)
61 AC_SUBST(DSO_EXPORTS)
62 AC_SUBST(HOST_OS)
63 AC_SUBST(PICFLAG)
64 AC_SUBST(PIE_CFLAGS)
65 AC_SUBST(PIE_LDFLAGS)
66 AC_SUBST(RELRO_LDFLAGS)
67 AC_SUBST(SHLIBEXT)
68 AC_SUBST(INSTALLLIBCMD_SH)
69 AC_SUBST(INSTALLLIBCMD_A)
70 AC_SUBST(UNINSTALLLIBCMD_SH)
71 AC_SUBST(UNINSTALLLIBCMD_A)
73 AC_SUBST(INSTALL_LIBWBCLIENT)
74 AC_SUBST(UNINSTALL_LIBWBCLIENT)
75 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
76 AC_SUBST(LIBWBCLIENT_SHARED_TARGET_SOVER)
77 AC_SUBST(LIBWBCLIENT_SHARED_TARGET_FULLVER)
78 AC_SUBST(LIBWBCLIENT_SHARED)
79 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
80 AC_SUBST(LIBWBCLIENT_STATIC)
81 AC_SUBST(LIBWBCLIENT_SOVER)
82 AC_SUBST(LIBWBCLIENT_FULLVER)
83 AC_SUBST(LIBWBCLIENT)
84 AC_SUBST(LIBWBCLIENT_LIBS)
86 AC_SUBST(LIBSAMBAUTIL_SHARED)
88 AC_SUBST(PRINT_LIBS)
89 AC_SUBST(AUTH_LIBS)
90 AC_SUBST(ACL_LIBS)
91 AC_SUBST(PASSDB_LIBS)
92 AC_SUBST(IDMAP_LIBS)
93 AC_SUBST(KRB5_LIBS)
94 AC_SUBST(LDAP_LIBS)
95 AC_SUBST(GPEXT_LIBS)
96 AC_SUBST(PAM_MODULES)
97 AC_SUBST(INSTALL_PAM_MODULES)
98 AC_SUBST(UNINSTALL_PAM_MODULES)
99 AC_SUBST(NSS_MODULES)
100 AC_SUBST(EXTRA_BIN_PROGS)
101 AC_SUBST(CIFSMOUNT_PROGS)
102 AC_SUBST(INSTALL_CIFSMOUNT)
103 AC_SUBST(UNINSTALL_CIFSMOUNT)
104 AC_SUBST(CIFSUMOUNT_PROGS)
105 AC_SUBST(INSTALL_CIFSUMOUNT)
106 AC_SUBST(UNINSTALL_CIFSUMOUNT)
107 AC_SUBST(CIFSUPCALL_PROGS)
108 AC_SUBST(INSTALL_CIFSUPCALL)
109 AC_SUBST(UNINSTALL_CIFSUPCALL)
110 AC_SUBST(EXTRA_SBIN_PROGS)
111 AC_SUBST(EXTRA_ALL_TARGETS)
112 AC_SUBST(CONFIG_LIBS)
113 AC_SUBST(NSCD_LIBS)
115 # compile with optimization and without debugging by default, but
116 # allow people to set their own preference.
117 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
118 # if it has no value.  This prevent *very* large debug binaries from occurring
119 # by default.
120 if test "x$debug" = "xyes" ; then
121         CFLAGS="${CFLAGS} -g"
123 if test "x$CFLAGS" = x; then
124   CFLAGS="-O"
127 m4_include(../lib/socket_wrapper/config.m4)
128 m4_include(../lib/nss_wrapper/config.m4)
129 m4_include(../lib/uid_wrapper/config.m4)
131 m4_include(m4/swat.m4)
133 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
135 # Probe the gcc version for extra CFLAGS. We always stash these in
136 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
137 # Makefile edit, avoiding the need to re-run configure.
138 if test x"$ac_cv_prog_gcc" = x"yes" ; then
139         DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
140         # Add -Wdeclaration-after-statement if compiler supports it
141         AC_CACHE_CHECK(
142           [that the C compiler understands -Wdeclaration-after-statement],
143           samba_cv_HAVE_Wdeclaration_after_statement, [
144           AC_TRY_RUN_STRICT([
145             int main(void)
146             {
147                 return 0;
148             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
149             samba_cv_HAVE_Wdeclaration_after_statement=yes,
150             samba_cv_HAVE_Wdeclaration_after_statement=no,
151             samba_cv_HAVE_Wdeclaration_after_statement=cross)
152        ])
154         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
155             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
156         fi
158         #-Werror-implicit-function-declaration
159         AC_CACHE_CHECK(
160           [that the C compiler understands -Werror-implicit-function-declaration],
161           samba_cv_HAVE_Werror_implicit_function_declaration, [
162           AC_TRY_RUN_STRICT([
163             int main(void)
164             {
165                 return 0;
166             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
167             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
168             samba_cv_HAVE_Werror_implicit_function_declaration=no,
169             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
170        ])
171        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
172             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
173        fi
175         # krb5developer is like developer, except we don't get
176         # -Wstrict-prototypes.
177        if test x"$krb5_developer" != x"$yes" ; then
178             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
179        fi
181        if test x"$picky_developer" = x"yes"; then
182             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
183        fi
186 #################################################
187 # check for a shared memory profiling support
188 AC_MSG_CHECKING(whether to use profiling)
189 AC_ARG_WITH(profiling-data,
190 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
191 [ case "$withval" in
192   yes)
193     AC_MSG_RESULT(yes)
194     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
195     samba_cv_WITH_PROFILE=yes
196     ;;
197   *)
198     AC_MSG_RESULT(no)
199     samba_cv_WITH_PROFILE=no
200     ;;
201   esac ],
202   AC_MSG_RESULT(no)
205 dnl Checks for programs.
206 AC_ARG_ENABLE(smbtorture4,
207         [AS_HELP_STRING([--enable-smbtorture4], [Enable building smbtorture4 (default=auto)])])
209 if test x$enable_smbtorture4 != xno; then
210         smbtorture4_possible=yes
211 else
212         smbtorture4_possible=no
215 AC_PROG_INSTALL
216 AC_PROG_AWK
217 # Check for GNU make
218 m4_include(../m4/check_make.m4)
219 AC_SAMBA_GNU_MAKE([true], [true])
221 # Check for perl
222 m4_include(../m4/check_perl.m4)
223 AC_SAMBA_PERL([true], [smbtorture4_possible=no])
225 # Check for python
226 m4_include(../m4/check_python.m4)
227 AC_SAMBA_PYTHON_DEVEL([true], [smbtorture4_possible=no])
229 AC_CHECK_TOOL(AR, ar)
231 dnl Check if we (actually our C compiler!) use GNU ld
232 AC_PROG_LD_GNU
234 dnl Certain versions of GNU ld the default is not to have the
235 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
236 dnl warnings when building modules.
237 if test "$ac_cv_prog_gnu_ld" = "yes"; then
238         ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>&1 < /dev/null | grep "GNU ld"`
239         AC_MSG_CHECKING(GNU ld release date)
240         changequote(,)dnl
241         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'`
242         changequote([,])dnl
243         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
244         if test -n "$ac_cv_gnu_ld_date"; then
245         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
246                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
247         fi
248         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
249                 ac_cv_gnu_ld_version_script=yes
250         fi
251         else
252            AC_MSG_CHECKING(GNU ld release version)
253            changequote(,)dnl
254            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'`
255            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
256            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
257            changequote([,])dnl
258            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
259            AC_MSG_CHECKING(GNU ld release version major)
260            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
261            AC_MSG_CHECKING(GNU ld release version minor)
262            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
263            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
264              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
265            fi
266            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
267              ac_cv_gnu_ld_version_script=yes
268            fi
269         fi
272 dnl Check if C compiler understands -c and -o at the same time
273 AC_PROG_CC_C_O
274 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
275       BROKEN_CC=
276 else
277       BROKEN_CC=#
279 AC_SUBST(BROKEN_CC)
281 dnl Check if the C compiler understands -Werror (GNU)
282 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
283  AC_TRY_RUN_STRICT([
284   int main(void)
285   {
286         return 0;
287   }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
288   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
289 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
290    Werror_FLAGS="-Werror"
291 else
292 dnl Check if the C compiler understands -w2
293 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
294  AC_TRY_RUN_STRICT([
295   int main(void)
296   {
297         return 0;
298   }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
299   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
300 if test x"$samba_cv_HAVE_w2" = x"yes"; then
301    Werror_FLAGS="-w2"
302 else
303 dnl Check if the C compiler understands -errwarn (Sun)
304 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
305   AC_TRY_RUN_STRICT([
306    int main(void)
307    {
308         return 0;
309    }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
310    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
311 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
312    Werror_FLAGS="-errwarn=%all"
313 else
314 dnl Check if the C compiler understands -qhalt (IBM)
315 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
316   AC_TRY_RUN_STRICT([
317    int main(void)
318    {
319         return 0;
320    }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
321    samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
322 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
323    Werror_FLAGS="-qhalt=w"
329 ############################################
330 # check if the compiler can handle negative enum values
331 # and don't truncate the values to INT_MAX
332 # a runtime test is needed here
333 AC_SUBST(PIDL_ARGS)
334 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
335     AC_TRY_RUN(
337         #include <stdio.h>
338         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
339         int main(void) {
340                 enum negative_values v1 = NEGATIVE_VALUE;
341                 unsigned v2 = NEGATIVE_VALUE;
343                 if (v1 != 0xFFFFFFFF) {
344                         printf("%u != 0xFFFFFFFF\n", v1);
345                         return 1;
346                 }
347                 if (v2 != 0xFFFFFFFF) {
348                         printf("%u != 0xFFFFFFFF\n", v2);
349                         return 1;
350                 }
352                 return 0;
353         }
355         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv_CC_NEGATIVE_ENUM_VALUES=no)])
356 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
357         AC_MSG_WARN([using --uint-enums for pidl])
358         PIDL_ARGS="$PIDL_ARGS --uint-enums"
361 dnl Figure out the flags to support named structure initializers
363 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
365 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
366 AC_MSG_CHECKING(uname -s)
367 AC_MSG_RESULT(${UNAME_S})
369 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
370 AC_MSG_CHECKING(uname -r)
371 AC_MSG_RESULT(${UNAME_R})
373 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
374 AC_MSG_CHECKING(uname -m)
375 AC_MSG_RESULT(${UNAME_M})
377 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
378 AC_MSG_CHECKING(uname -p)
379 AC_MSG_RESULT(${UNAME_P})
381 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
382 AC_MSG_CHECKING(uname -i)
383 AC_MSG_RESULT(${UNAME_I})
385 dnl Add #include for broken IRIX header files
386   case "$host_os" in
387         *irix6*)
388                 #TODO add to libreplace
389                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
390                         dnl Fix sensible defaults for MIPSPro compilers. The
391                         dnl error numbers are valid for the 7.3 compilers,
392                         dnl hopefully also valid for the 7.4 series.
393                         dnl
394                         dnl Bugzilla 3801. Force an error on warning 1035
395                         dnl so we don't incorrectly detect stdint.h. This
396                         dnl warning is emitted for #error directives.
397                         CFLAGS="$CFLAGS -diag_error 1035"
398                         dnl 1209: Controlling expression is constant
399                         dnl 1174: Function foo declared but never referenced
400                         dnl 3201: Parameter foo was never referenced
401                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
402                 fi
403         ;;
404 esac
406 DYNEXP=
407 AC_SUBST(DYNEXP)
408 LDSHFLAGS_Z_DEFS=
409 AC_SUBST(LDSHFLAGS_Z_DEFS)
410 LDSHFLAGS_Z_NODEFS=
411 AC_SUBST(LDSHFLAGS_Z_NODEFS)
413 dnl Add modules that have to be built by default here
414 dnl These have to be built static:
415 default_static_modules=""
416 default_static_modules="$default_static_modules pdb_smbpasswd"
417 default_static_modules="$default_static_modules pdb_tdbsam"
418 default_static_modules="$default_static_modules pdb_wbc_sam"
419 default_static_modules="$default_static_modules rpc_lsarpc"
420 default_static_modules="$default_static_modules rpc_samr"
421 default_static_modules="$default_static_modules rpc_winreg"
422 default_static_modules="$default_static_modules rpc_initshutdown"
423 default_static_modules="$default_static_modules rpc_dssetup"
424 default_static_modules="$default_static_modules rpc_wkssvc"
425 default_static_modules="$default_static_modules rpc_svcctl"
426 default_static_modules="$default_static_modules rpc_ntsvcs"
427 default_static_modules="$default_static_modules rpc_netlogon"
428 default_static_modules="$default_static_modules rpc_netdfs"
429 default_static_modules="$default_static_modules rpc_srvsvc"
430 default_static_modules="$default_static_modules rpc_spoolss"
431 default_static_modules="$default_static_modules rpc_eventlog"
432 default_static_modules="$default_static_modules auth_sam"
433 default_static_modules="$default_static_modules auth_unix"
434 default_static_modules="$default_static_modules auth_winbind"
435 default_static_modules="$default_static_modules auth_wbc"
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 auth_script"
456 default_shared_modules="$default_shared_modules vfs_readahead"
457 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
458 default_shared_modules="$default_shared_modules vfs_streams_xattr"
459 default_shared_modules="$default_shared_modules vfs_streams_depot"
460 default_shared_modules="$default_shared_modules vfs_acl_xattr"
461 default_shared_modules="$default_shared_modules vfs_acl_tdb"
462 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
463 default_shared_modules="$default_shared_modules vfs_preopen"
464 default_shared_modules="$default_shared_modules vfs_catia"
465 default_shared_modules="$default_shared_modules vfs_scannedonly"
466 default_shared_modules="$default_shared_modules vfs_crossrename"
467 default_shared_modules="$default_shared_modules vfs_linux_xfs_sgid"
468 default_shared_modules="$default_shared_modules vfs_time_audit"
469 default_shared_modules="$default_shared_modules vfs_media_harmony"
470 default_shared_modules="$default_shared_modules idmap_autorid"
471 default_shared_modules="$default_shared_modules idmap_tdb2"
472 default_shared_modules="$default_shared_modules idmap_rid"
473 default_shared_modules="$default_shared_modules idmap_hash"
475 if test "x$developer" = xyes; then
476    default_shared_modules="$default_shared_modules perfcount_test"
479 if test x"$selftest" = x"yes" -o "x$developer" = xyes; then
480    default_shared_modules="$default_shared_modules vfs_fake_acls"
484 # Config CPPFLAG settings for strange OS's that must be set
485 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
486 # case statement; its first reference must be unconditional.
488 case "$host_os" in
489     *hpux*)
491 # Defines needed for HPUX support.
492 # HPUX has bigcrypt but (sometimes?) doesn't use it for
493 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
495       case `uname -r` in
496                 *9*|*10*|*11)
497                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
498                 ;;
499       esac
500       ;;
503 # AIX4.x doesn't even admit to having large
504 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
506     *aix4*)
507           AC_MSG_RESULT([enabling large file support])
508           CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
509           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
510       ;;
512 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
513 # to the existance of large files..
515 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
517         *solaris*)
518                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
519                 LDFLAGS="$LDFLAGS -lthread"
520                 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
521                 ;;
523 # IRIX uses SYSV printing.  Make sure to set that here
525         *irix*)
526                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
527                 ;;
528         *freebsd*|*dragonfly*)
529                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
530                 ;;
532 # VOS may need to have POSIX support and System V compatibility enabled.
534     *vos*)
535     case "$CPPFLAGS" in
536           *-D_POSIX_C_SOURCE*)
537                 ;;
538           *)
539                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
540                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
541                 ;;
542     esac
543     case "$CPPFLAGS" in
544           *-D_SYSV*|*-D_SVID_SOURCE*)
545                 ;;
546           *)
547                 CPPFLAGS="$CPPFLAGS -D_SYSV"
548                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
549     esac
550     ;;
551 # GNU systems
553     *linux* | *hurd* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
554         CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
555         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
556         ;;
559 # MacOS X is the *only* system that uses compose character in utf8. This
560 # is so horribly broken....
562     *darwin*)
563         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
565 # Add a system specific charset module.
566         default_shared_modules="$default_shared_modules"
568         ;;
569     *qnx*)
570         ;;
572 esac
574 SAVE_CPPFLAGS="${CPPFLAGS}"
575 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
577 AC_LIBREPLACE_BROKEN_CHECKS
578 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
579 AC_LIBREPLACE_NETWORK_CHECKS
581 CPPFLAGS="${SAVE_CPPFLAGS}"
583 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
585 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
586 AC_SUBST(LIBREPLACE_OBJS)
588 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS} ${LIBREPLACE_FILESYS_LIBS}"
589 AC_SUBST(LIBREPLACE_LIBS)
592 # add -ldl to the global LIBS
593 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
594 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
597 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
598 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
599 AC_CHECK_HEADERS(limits.h float.h libintl.h)
600 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
601 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)
602 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
603 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
604 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
605 AC_CHECK_HEADERS(sys/sysmacros.h)
606 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
607 AC_CHECK_HEADERS(langinfo.h locale.h)
608 AC_CHECK_HEADERS(xfs/libxfs.h)
609 AC_CHECK_HEADERS(netgroup.h)
610 AC_CHECK_HEADERS(linux/falloc.h)
611 AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h)
613 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
614 #if HAVE_RPC_RPC_H
615 #include <rpc/rpc.h>
616 #endif
618 CRYPTO_MD5_OBJ=
619 if test "x$ac_cv_header_CommonCrypto_CommonDigest_h" != "xyes"
620 then
621         CRYPTO_MD5_OBJ="../lib/crypto/md5.o"
623 AC_SUBST(CRYPTO_MD5_OBJ)
625 ## These fail to compile on IRIX so just check for their presence
626 AC_CHECK_HEADERS(sys/mode.h,,,)
628 # Look for Darwin headers
629 old_CPPFLAGS="$CPPFLAGS"
630 CPPFLAGS="-Iinclude $CPPFLAGS"
631 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
632 CPPFLAGS="$old_CPPFLAGS"
634 # To link lib/util/charset/charset_macosxfs.c, we need to tell the linker
635 # about CoreFoundation, at least on os X 10.4..10.7 resp. darwin8..12
636 case "$host_os" in
637     *darwin*)
638                 LDFLAGS="$LDFLAGS -framework CoreFoundation"
639         ;;
640 esac
642 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
643 # subdirectory of headers.
644 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
646 if test x"$enable_developer" = x"yes" ; then
647    if test x"$ac_cv_header_valgrind_h" = xyes -o \
648            x"$ac_cv_header_valgrind_valgrind_h" = xyes ; then
649       AC_DEFINE(VALGRIND,1,[Whether we have valgrind headers])
650    fi
654 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
655 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
657 case "$host_os" in
658     *hpux*)
659                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
660                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
661                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
662                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
663                 fi
664         ;;
665 esac
666 AC_CHECK_HEADERS(shadow.h)
667 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
668 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
670 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
672 # For experimental utmp support (lastlog on some BSD-like systems)
673 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
675 AC_CHECK_SIZEOF(int,cross)
676 AC_CHECK_SIZEOF(long,cross)
677 AC_CHECK_SIZEOF(long long,cross)
678 AC_CHECK_SIZEOF(short,cross)
680 AC_C_CONST
681 AC_C_INLINE
682 AC_C_BIGENDIAN
683 AC_C_CHAR_UNSIGNED
685 AC_TYPE_SIGNAL
686 AC_TYPE_UID_T
687 AC_TYPE_MODE_T
688 AC_TYPE_OFF_T
689 AC_TYPE_SIZE_T
690 AC_TYPE_PID_T
691 AC_STRUCT_ST_RDEV
692 AC_DIRENT_D_OFF
693 AC_CHECK_TYPE(ssize_t, int)
694 AC_CHECK_TYPE(wchar_t, unsigned short)
696 ############################################
697 # for cups support we need libcups, and a handful of header files
699 AC_ARG_ENABLE(cups,
700 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
702 if test x$enable_cups != xno; then
703         AC_PATH_PROG(CUPS_CONFIG, cups-config)
705         if test "x$CUPS_CONFIG" != x; then
707                 ac_save_LDFLAGS=$LDFLAGS
708                 ac_save_PRINT_LIBS=$PRINT_LIBS
709                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
711                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
712                         x"$ac_cv_header_cups_language_h" = xyes; then
713                         # try linking with -lcups alone first. That should work unless libcups is
714                         # underlinked. With cups-config --libs we pull in unwanted and unneeded
715                         # dendencies including thread libraries - use cups-config only if really
716                         # required. 
717                         AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
718                                 [PRINT_LIBS="$ac_save_PRINT_LIBS -lcups"],
719                                 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
720                                  PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
722                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
723                         samba_cv_HAVE_CUPS=yes
724                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
725                 else
726                         AC_MSG_WARN([cups-config around but cups-devel not installed])
727                         CFLAGS=$ac_save_CFLAGS
728                         LDFLAGS=$ac_save_LDFLAGS
729                         PRINT_LIBS=$ac_save_PRINT_LIBS
730                 fi
732         elif test x"$enable_cups" = x"yes"; then
733                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
734         fi
737 AC_ARG_ENABLE(iprint,
738 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
740 if test x$enable_iprint != xno; then
741         if test x"$samba_cv_HAVE_CUPS" = xyes; then
742                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
743         elif test x"$enable_iprint" = x"yes"; then
744                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
745         fi
748 ############################################
749 # check if the compiler will optimize out function calls
750 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
751     AC_TRY_LINK([
752 #include <stdio.h>],
754                 if (0) {
755                    this_function_does_not_exist();
756                 } else {
757                   return 1;
758                 }
761         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
762 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
763    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
766 #############################################
767 # check for fd passing struct via msg_control
768 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
769     AC_TRY_COMPILE([
770 #include <sys/types.h>
771 #include <stdlib.h>
772 #include <stddef.h>
773 #include <sys/socket.h>
774 #include <sys/un.h>],
776         struct msghdr msg;
777         union {
778               struct cmsghdr cm;
779               char control[CMSG_SPACE(sizeof(int))];
780         } control_un;
781         msg.msg_control = control_un.control;
782         msg.msg_controllen = sizeof(control_un.control);
784         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
785 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
786    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
787              [If we can use msg_control for passing file descriptors])
790 #############################################
791 # check for fd passing struct via msg_acctrights
792 AC_CACHE_CHECK([for fd passing via msg_acctrights],
793                 samba_cv_msghdr_msg_acctrights, [
794     AC_TRY_COMPILE([
795 #include <sys/types.h>
796 #include <stdlib.h>
797 #include <stddef.h>
798 #include <sys/socket.h>
799 #include <sys/un.h>],
801         struct msghdr msg;
802         int fd;
803         msg.msg_acctrights = (caddr_t) &fd;
804         msg.msg_acctrightslen = sizeof(fd);
806         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
807 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
808    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
809              [If we can use msg_acctrights for passing file descriptors])
812 AC_CHECK_FUNCS(dirfd)
813 if test x"$ac_cv_func_dirfd" = x"yes"; then
814         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
817 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
818     AC_TRY_COMPILE([
819 #include <sys/types.h>
820 #if STDC_HEADERS
821 #include <stdlib.h>
822 #include <stddef.h>
823 #endif
824 #include <signal.h>],[struct sigevent s;],
825         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
826 if test x"$samba_cv_struct_sigevent" = x"yes"; then
827    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
828    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
829         [#include <signal.h>])
832 # and glibc has setresuid under linux but the function does
833 # nothing until kernel 2.1.44! very dumb.
834 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
835     AC_TRY_RUN([#include <errno.h>
836 main() { setresuid(1,1,1); setresuid(2,2,2); return(errno==EPERM?0:1);}],
837         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
838 if test x"$samba_cv_have_setresuid" = x"yes"; then
839     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
842 # Do the same check for setresguid...
844 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
845     AC_TRY_RUN([#include <unistd.h>
846 #include <errno.h>
847 main() { errno = 0; setresgid(1,1,1); return(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
848         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
849 if test x"$samba_cv_have_setresgid" = x"yes"; then
850     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
853 AC_FUNC_MEMCMP
855 ###############################################
856 # Readline included by default unless explicitly asked not to
857 test "${with_readline+set}" != "set" && with_readline=yes
859 # test for where we get readline() from
860 AC_MSG_CHECKING(whether to use readline)
861 AC_ARG_WITH(readline,
862 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
863 [  case "$with_readline" in
864   yes)
865     AC_MSG_RESULT(yes)
867     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
868     AC_CHECK_HEADERS(readline/history.h)
870     AC_CHECK_HEADERS(readline.h readline/readline.h,[
871       for termlib in ncurses curses termcap terminfo termlib tinfo; do
872        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
873       done
874       AC_CHECK_LIB(readline, rl_callback_handler_install,
875        [TERMLIBS="-lreadline $TERMLIBS"
876        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
877        break], [TERMLIBS=], $TERMLIBS)])
878     ;;
879   no)
880     AC_MSG_RESULT(no)
881     ;;
882   *)
883     AC_MSG_RESULT(yes)
885     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
886     # alternate readline path
887     _ldflags=${LDFLAGS}
888     _cppflags=${CPPFLAGS}
890     # Add additional search path
891     LDFLAGS="-L$with_readline/lib $LDFLAGS"
892     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
894     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
895     AC_CHECK_HEADERS(readline/history.h)
897     AC_CHECK_HEADERS(readline.h readline/readline.h,[
898       for termlib in ncurses curses termcap terminfo termlib; do
899        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
900       done
901       AC_CHECK_LIB(readline, rl_callback_handler_install,
902        [TERMLDFLAGS="-L$with_readline/lib"
903        TERMCPPFLAGS="-I$with_readline/include"
904        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
905        TERMLIBS="-lreadline $TERMLIBS"
906        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
907        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
909     LDFLAGS=$_ldflags
910     ;;
911   esac],
912   AC_MSG_RESULT(no)
914 AC_SUBST(TERMLIBS)
915 AC_SUBST(TERMLDFLAGS)
917 # The readline API changed slightly from readline3 to readline4, so
918 # code will generate warnings on one of them unless we have a few
919 # special cases.
920 AC_CHECK_LIB(readline, rl_completion_matches,
921              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
922                         [Do we have rl_completion_matches?])],
923              [],
924              [$TERMLIBS])
926 # not all readline libs have rl_event_hook or history_list
927 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
928 AC_CHECK_LIB(readline, history_list,
929              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
930              [],
931              [$TERMLIBS])
933 ###############################################
934 # test for where we get yp_get_default_domain() from
935 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
936 AC_CHECK_FUNCS(yp_get_default_domain)
938 # Check if we have execl, if not we need to compile smbrun.
939 AC_CHECK_FUNCS(execl)
940 if test x"$ac_cv_func_execl" = x"no"; then
941     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun"
944 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
945 AC_CHECK_FUNCS(strtol)
946 AC_CHECK_FUNCS(strchr chflags)
947 AC_CHECK_FUNCS(getrlimit fsync setpgid)
948 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
949 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
950 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
951 AC_CHECK_FUNCS(initgroups select rdchk getgrnam getgrent pathconf)
952 AC_CHECK_FUNCS(getgrset)
953 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups syscall sysconf)
954 AC_CHECK_FUNCS(atexit grantpt posix_fallocate)
955 AC_CHECK_FUNCS(fallocate)
956 AC_CHECK_FUNCS(fseeko setluid getpwanam)
957 AC_CHECK_FUNCS(fdopendir)
958 AC_CHECK_FUNCS(getpwent_r)
959 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
960 AC_CHECK_FUNCS(syslog vsyslog timegm)
961 AC_CHECK_FUNCS(setlocale)
962 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
963 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
964 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
965 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
966 AC_CHECK_HEADERS(sys/mman.h)
967 # setbuffer, shmget, shm_open are needed for smbtorture
968 AC_CHECK_FUNCS(shmget shm_open)
969 AC_CHECK_FUNCS(gettext dgettext)
970 AC_CHECK_FUNCS(bindtextdomain textdomain bind_textdomain_codeset)
971 AC_CHECK_FUNCS(strupr)
973 # Find a method of generating a stack trace
974 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
975 # libexecinfo provides backtrace_symbols on FreeBSD
976 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
977 AC_CHECK_FUNCS(backtrace_symbols)
978 AC_CHECK_LIB(exc, trace_back_stack)
980 # check for sysctlbyname and sysctl for BSD systems
981 AC_CHECK_FUNCS(sysctlbyname)
982 AC_CHECK_FUNCS(sysctl)
984 #################################################
985 # Check to see if core dump directory is defined in linux
986 # with /proc/sys/kernel/core_pattern
988 AC_CHECK_FILE([/proc/sys/kernel/core_pattern],
989         AC_DEFINE(HAVE_SYS_KERNEL_PROC_CORE_PATTERN, 1,
990         [Whether Linux kernel uses core_pattern for core files]),
991          [])
993 #############################
994 # check if building with gpfs
995 AC_CHECK_HEADERS(gpfs_gpl.h)
996 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
997     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
998     default_shared_modules="$default_shared_modules vfs_gpfs"
1001 # Note that all the libunwind symbols in the API are defined to internal
1002 # platform-specific version, so we must include libunwind.h before checking
1003 # any of them.
1004 AC_MSG_CHECKING([for libunwind])
1005 save_LIBS=$LIBS
1007 UNWIND_ARCH="unknown"
1008 if test x"$UNAME_I" != x"unknown"; then
1009         UNWIND_ARCH="$UNAME_I"
1010 elif test x"$UNAME_M" != x"unknown"; then
1011         UNWIND_ARCH="$UNAME_M"
1012 elif test x"$UNAME_P" != x"unknown"; then
1013         UNWIND_ARCH="$UNAME_P"
1016 case "$UNWIND_ARCH" in
1017         unknown)
1018                 # This probably won't link without
1019                 # the platform-specific libunwind.
1020                 LIBS="$LIBS -lunwind"
1021                 ;;
1022         i386|i586|i686)
1023                 # Add the platform-specific libunwind module.
1024                 LIBS="$LIBS -lunwind -lunwind-x86"
1025                 ;;
1026         *)
1027                 # Add the platform-specific libunwind module.
1028                 # based on uname -i, uname -m or uname -p
1029                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1030                 ;;
1031 esac
1033 AC_TRY_LINK(
1034     [
1035 #ifdef HAVE_LIBUNWIND_H
1036 #include <libunwind.h>
1037 #endif
1038     ],
1039     [
1040         unw_context_t ctx; unw_cursor_t cur;
1041         char buf[256]; unw_word_t off;
1042         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1043         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1044     ],
1045     [
1046         AC_MSG_RESULT(yes)
1047         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1049         # If we have libunwind, test whether we also have libunwind-ptrace
1050         # which would let us unwind arbitrary processes.
1051         save_LIBS=$LIBS
1052         AC_CHECK_HEADERS(libunwind-ptrace.h)
1053         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1054             [
1055                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1056                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1057                     [Whether libunwind-ptrace.a is available.])
1058             ],
1059             [ LIBUNWIND_PTRACE="" ])
1061         LIBS=$save_LIBS
1062     ],
1063     [
1064         AC_MSG_RESULT(no)
1065         LIBS=$save_LIBS
1066     ])
1068 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1069 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1070     AC_CHECK_HEADERS(sys/ptrace.h)
1071     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1072     AC_TRY_LINK(
1073             [
1074 #if HAVE_SYS_TYPES_H
1075 #include <sys/types.h>
1076 #endif
1077 #if HAVE_SYS_PTRACE_H
1078 #include <sys/ptrace.h>
1079 #endif
1080             ],
1081             [
1082                 pid_t me = (pid_t)-1;
1083                 ptrace(PTRACE_ATTACH, me, 0, 0);
1084                 ptrace(PTRACE_DETACH, me, 0, 0);
1085                 return 0;
1086             ],
1087             [
1088                 AC_MSG_RESULT(yes)
1089                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1090                     [Whether the Linux ptrace(2) interface is available.])
1091             ],
1092             [
1093                 AC_MSG_RESULT(no)
1094                 LIBUNWIND_PTRACE=""
1095             ])
1098 AC_SUBST(LIBUNWIND_PTRACE)
1100 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1101 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1102 AC_CHECK_FUNCS(__getcwd _getcwd)
1103 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1104 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1105 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1106 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1107 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1108 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1109 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek)
1110 AC_CHECK_FUNCS(pread _pread __pread)
1111 AC_CHECK_FUNCS(pwrite _pwrite __pwrite)
1112 AC_CHECK_FUNCS(prctl)
1114 AC_TRY_COMPILE([
1115 #ifdef HAVE_SYS_PRCTL_H
1116 #include <sys/prctl.h>
1117 #endif
1119 [int i; i = prtcl(0); ],
1120 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1125 case "$host_os" in
1126     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1127        # glibc <= 2.3.2 has a broken getgrouplist
1128        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1129 #include <unistd.h>
1130 #include <sys/utsname.h>
1131 main() {
1132        /* glibc up to 2.3 has a broken getgrouplist */
1133 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1134        int libc_major = __GLIBC__;
1135        int libc_minor = __GLIBC_MINOR__;
1137        if (libc_major < 2)
1138               return(1);
1139        if ((libc_major == 2) && (libc_minor <= 3))
1140               return(1);
1141 #endif
1142        return(0);
1144 ], [samba_cv_linux_getgrouplist_ok=yes],
1145    [samba_cv_linux_getgrouplist_ok=no],
1146    [samba_cv_linux_getgrouplist_ok=cross])])
1147        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1148           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1149        fi
1150        ;;
1151     *)
1152        AC_CHECK_FUNCS(getgrouplist)
1153        ;;
1154 esac
1156 #################################################
1157 # Check whether struct stat has timestamps with sub-second resolution.
1160 samba_cv_stat_hires=no
1161 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1162         [samba_cv_stat_hires=yes])
1163 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1164         [samba_cv_stat_hires=yes])
1165 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1166         [samba_cv_stat_hires=yes])
1167 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1168         [samba_cv_stat_hires=yes])
1169 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1170         [samba_cv_stat_hires=yes])
1172 if test x"$samba_cv_stat_hires" = x"yes" ; then
1173     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1174             [whether struct stat has sub-second timestamps])
1177 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1178 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1179 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1182 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1183     [
1184         AC_TRY_COMPILE(
1185             [#include <sys/stat.h>],
1186             [
1187                 int a = UF_DOS_ARCHIVE;
1188                 int h = UF_DOS_HIDDEN;
1189                 int r = UF_DOS_RO;
1190                 int s = UF_DOS_SYSTEM;
1191                 int i = UF_DOS_NOINDEX;
1192                 int f = UF_DOS_FLAGS;
1193             ],
1194             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1195     ])
1197 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1198     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1201 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1202                samba_cv_function_attribute_destructor,
1203                [
1204                  AC_COMPILE_IFELSE([AC_LANG_SOURCE(
1205                         [
1206                                 __attribute__((destructor))
1207                                 static void cleanup(void) { }
1208                         ])],
1209                         samba_cv_function_attribute_destructor=yes)
1210                 ])
1212 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1213    AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1214              [whether we can compile with __attribute__((destructor))])
1217 #####################################
1218 # needed for SRV lookups
1219 AC_CHECK_LIB(resolv, dn_expand)
1220 AC_CHECK_LIB(resolv, _dn_expand)
1221 AC_CHECK_LIB(resolv, __dn_expand)
1222 AC_CHECK_LIB(inet, dn_expand)
1225 # Check for the functions putprpwnam, set_auth_parameters,
1226 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1227 # Needed for OSF1 and HPUX.
1230 AC_LIBTESTFUNC(security, putprpwnam)
1231 AC_LIBTESTFUNC(sec, putprpwnam)
1233 AC_LIBTESTFUNC(security, set_auth_parameters)
1234 AC_LIBTESTFUNC(sec, set_auth_parameters)
1236 # UnixWare 7.x has its getspnam in -lgen
1237 AC_LIBTESTFUNC(gen, getspnam)
1239 AC_LIBTESTFUNC(security, getspnam)
1240 AC_LIBTESTFUNC(sec, getspnam)
1242 AC_LIBTESTFUNC(security, bigcrypt)
1243 AC_LIBTESTFUNC(sec, bigcrypt)
1245 AC_LIBTESTFUNC(security, getprpwnam)
1246 AC_LIBTESTFUNC(sec, getprpwnam)
1248 AC_CHECK_FUNCS(strsignal)
1250 AC_DISABLE_STATIC
1251 AC_ENABLE_SHARED
1253 # Set defaults
1254 PIE_CFLAGS=""
1255 PIE_LDFLAGS=""
1256 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1258 if test "x$enable_pie" != xno
1259 then
1260         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1261         [
1262                 cat > conftest.c <<EOF
1263 int foo;
1264 int main () { return 0;}
1266                 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1267                 then
1268                         samba_cv_fpie=yes
1269                 else
1270                         samba_cv_fpie=no
1271                 fi
1272                 rm -f conftest*
1273         ])
1274         if test x"${samba_cv_fpie}" = x"yes"
1275         then
1276                 PIE_CFLAGS="-fPIE"
1277                 PIE_LDFLAGS="-pie"
1278         fi
1281 # Set defaults
1282 RELRO_LDFLAGS=""
1283 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1285 if test "x$enable_relro" != xno
1286 then
1287         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1288         [
1289                 cat > conftest.c <<EOF
1290 int foo;
1291 main () { return 0;}
1293                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1294                 then
1295                         samba_cv_relro=yes
1296                 else
1297                         samba_cv_relro=no
1298                 fi
1299                 rm -f conftest*
1300         ])
1301         if test x"${samba_cv_relro}" = x"yes"
1302         then
1303                 RELRO_LDFLAGS="-Wl,-z,relro"
1304         fi
1307 # Set defaults
1308 SYMSEXT="syms"
1309 AC_SUBST(SYMSEXT)
1311 # Assume non-shared by default and override below
1312 BLDSHARED="false"
1314 # these are the defaults, good for lots of systems
1315 HOST_OS="$host_os"
1316 LDSHFLAGS="-shared"
1317 MODULE_EXPORTS=""
1318 SONAMEFLAG="#"
1319 SHLD="\${CC} \${CFLAGS}"
1320 PICFLAG="${PIE_CFLAGS}"
1321 SHLIBEXT="so"
1322 DSO_EXPORTS=""
1324 # this bit needs to be modified for each OS that supports share libs
1325 # You need to specify how to create a shared library and
1326   # how to compile C code to produce PIC object files
1328   AC_MSG_CHECKING([ability to build shared libraries])
1330   # and these are for particular systems
1331   case "$host_os" in
1332                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1333                         case "$host_os" in
1334                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1335                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1336                         esac
1337                         BLDSHARED="true"
1338                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1339                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1340                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1341                         fi
1342                         DYNEXP="-Wl,--export-dynamic"
1343                         PICFLAG="-fPIC"
1344                         SONAMEFLAG="-Wl,-soname="
1345                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1346                         ;;
1347                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1348                         BLDSHARED="true"
1349                         if test "${GCC}" = "yes"; then
1350                                 PICFLAG="-fPIC"
1351                                 SONAMEFLAG="-Wl,-soname="
1352                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1353                                         DYNEXP="-Wl,-E"
1354                                 fi
1355                                 LDSHFLAGS="-shared"
1356                         else
1357                                 PICFLAG="-KPIC"
1358                                 LDSHFLAGS="-G"
1359                         fi
1360                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1361                                 SONAMEFLAG="-Wl,-soname="
1362                         else
1363                                 SONAMEFLAG="-Wl,-h,"
1364                         fi
1365                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1366                         ;;
1367                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1368                         BLDSHARED="true"
1369                         LDSHFLAGS="-G"
1370                         SONAMEFLAG="-Wl,-h,"
1371                         PICFLAG="-KPIC"   # Is this correct for SunOS
1372                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1373                         ;;
1374                 *netbsd* | *freebsd* | *dragonfly* )
1375                         BLDSHARED="true"
1376                         LDSHFLAGS="-shared"
1377                         DYNEXP="-Wl,--export-dynamic"
1378                         SONAMEFLAG="-Wl,-soname,"
1379                         PICFLAG="-fPIC -DPIC"
1380                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1381                         ;;
1382                 *openbsd*)  BLDSHARED="true"
1383                         LDSHFLAGS="-shared"
1384                         DYNEXP="-Wl,-Bdynamic"
1385                         SONAMEFLAG="-Wl,-soname,"
1386                         PICFLAG="-fPIC"
1387                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1388                         ;;
1389                 *irix*) BLDSHARED="true"
1390                         LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1391                         SONAMEFLAG="-Wl,-soname,"
1392                         if test "${GCC}" = "yes"; then
1393                                 PICFLAG="-fPIC"
1394                         else
1395                                 PICFLAG="-KPIC"
1396                         fi
1397                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1398                         ;;
1399                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1400                         BLDSHARED="true"
1401                         # use expfull to export underscored symbols
1402                         # add rtl to remove /lib/crt0.o warning
1403                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1404                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1405                         PICFLAG="-O2"
1406                         # as AIX code is always position independent...
1407                         # .po will just create compile warnings, use po.o:
1408                         if test "${GCC}" != "yes"; then
1409                                 ## for funky AIX compiler using strncpy()
1410                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1411                         fi
1413                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1414                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1415                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1416                         ;;
1417                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1418                         # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1419                         #       64bit build using HP's cc with CFLAGS="+DD64"
1420                         # hppa: 64bit build unsupported by gcc
1421                         #       64bit build using HP's cc with CFLAGS="+DA2.0w"
1422                         # HP-UX 11.00 ld needs PHSS_33034
1423                         BLDSHARED="true"
1424                         if test "${GCC}" = "yes"; then
1425                                 PICFLAG="-fPIC"
1426                                 LDSHFLAGS="-shared"
1427                         else
1428                                 PICFLAG="+z"
1429                                 LDSHFLAGS="-b"
1430                                 # "Uses depth-first symbol resolution"
1431                                 LDSHFLAGS="$LDSHFLAGS -Wl,-B,symbolic,-b"
1432                                 if test "$host_cpu" != "ia64"; then
1433                                         # "don't store literals in read-only memory" (?):
1434                                         PICFLAG="$PICFLAG +ESnolit"
1435                                 fi
1436                         fi
1437                         if test "$host_cpu" = "ia64"; then
1438                                 SHLIBEXT="so"
1439                                 # TODO: does the linker find the right 32/64 bit version of the libs? :
1440                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1441                         else
1442                                 SHLIBEXT="sl"
1443                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1444                         fi
1445                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1446                                 SONAMEFLAG="-Wl,-soname="
1447                         else
1448                                 SONAMEFLAG="-Wl,+h,"
1449                         fi
1450                         # PIE/PIC flags at link time are required on HP-UX because
1451                         # linking requires a temporary source file, which is being
1452                         # compiled with the indicated flags - which need to contain
1453                         # PIC flags when we don't support PIE flags:
1454                         if test "$PIE_LDFLAGS" = "" ; then
1455                                 PIE_LDFLAGS=\${PICFLAG}
1456                         fi
1457                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1458                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1459                         ;;
1460                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1461                         BLDSHARED="true"
1462                         LDSHFLAGS="-shared"
1463                         SONAMEFLAG="-Wl,-soname,"
1464                         if test "${GCC}" = "yes"; then
1465                                 PICFLAG="-fPIC"
1466                         fi
1467                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1468                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1469                                 saved_ldflags="$LDFLAGS"
1470                                 AC_MSG_CHECKING([if $flags works])
1471                                 LDFLAGS="$flags $saved_ldflags"
1472                                 AC_TRY_LINK([],[],
1473                                         [AC_MSG_RESULT([yes])
1474                                         LDSHFLAGS_Z_NODEFS=$flags],
1475                                         AC_MSG_RESULT([no]))
1476                                 LDFLAGS="$saved_ldflags"
1477                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1478                         done
1479                         ;;
1480                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1481                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1482                         ;;
1483                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1484                         BLDSHARED="true"
1485                         LDSHFLAGS="-shared"
1486                         SONAMEFLAG="-Wl,-soname,"
1487                         PICFLAG="-KPIC"
1488                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1489                         ;;
1490                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1491                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1492                         ;;
1493                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1494                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1495                         ;;
1496                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1497                         case "$host" in
1498                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1499                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1500                                         fi
1501                                         LDSHFLAGS="-G"
1502                                         DYNEXP="-Bexport"
1503                                 ;;
1504                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1505                         esac
1506                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1507                         ;;
1509                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1510                         if [ test "$GCC" != yes ]; then
1511                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1512                         fi
1513                         LDSHFLAGS="-G"
1514                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1515                         ;;
1516                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1517                         BLDSHARED="false"
1518                         LDSHFLAGS=""
1519                         ;;
1521                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1522                         BLDSHARED="true"
1523                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1524                         CFLAGS="$CFLAGS -fno-common"
1525                         SHLD="\${CC}"
1526                         SHLIBEXT="dylib"
1527                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1528                         SHLIBEXT="dylib"
1529                         # Since gcc doesn't fail on unrecognised options, the
1530                         # PIE test incorrectly succeeds. Darwin gcc does not
1531                         # actually support the PIE stuff.
1532                         PIE_LDFLAGS=
1533                         PIE_CFLAGS=
1534                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1535                         ;;
1537                 *)
1538                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1539                         ;;
1540   esac
1542 if test "$enable_shared" != "yes"; then
1543         BLDSHARED=false
1546 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1547         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1550 if test x"$BLDSHARED" = x"true" ; then
1551         LDFLAGS="$LDFLAGS -L./bin"
1554 AC_MSG_RESULT($BLDSHARED)
1556 if test x"$enable_developer" = x"yes" ; then
1557         default_as_needed=auto
1558 else
1559         default_as_needed=no
1561 AC_ARG_ENABLE(as-needed,
1562         AS_HELP_STRING([--enable-as-needed],
1563         [Turn on as-needed support if available (default=no)]),
1564         [enable_as_needed=$enableval],
1565         [enable_as_needed=$default_as_needed])
1566 if test "x$enable_as_needed" != xno; then
1567     saved_before_as_needed_ldflags="$LDFLAGS"
1568     for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1569         saved_ldflags="$LDFLAGS"
1570         AC_MSG_CHECKING([if $flags works])
1571         LDFLAGS="$flags $saved_ldflags"
1572         AC_TRY_LINK([],[],
1573                 [AC_MSG_RESULT([yes])
1574                 LD_AS_NEEDED_FLAG=$flags
1575                 ld_as_needed_flag_found=yes],
1576                 AC_MSG_RESULT([no]))
1577         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1578         test x"$ld_as_needed_flag_found" = xyes && break
1579     done
1582 if test x$ld_as_needed_flag_found = xyes -a x$enable_as_needed = xauto ; then
1583 # check if ld has bug described in https://bugzilla.samba.org/show_bug.cgi?id=7209#c17
1584         AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG has explicit external libs bug])
1585 cat > conftest_shb.c <<END
1586 void b() {}
1588 cat > conftest_sha.c <<END
1589 extern void b();
1590 void a() {
1591         b();
1594 cat > conftest.c <<END
1595 extern void a();
1596 int main() {
1597         a();
1598         return 0;
1602         rm -fr conftest
1603         AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_sha.o conftest_sha.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1604         AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o conftest_shb.o conftest_shb.c 1>&AS_MESSAGE_LOG_FD 2>&1])
1605         TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1606         AC_TRY_COMMAND([$TESTCMD -o libconftest_shb.$SHLIBEXT conftest_shb.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1607         AC_TRY_COMMAND([$TESTCMD -o libconftest_sha.$SHLIBEXT conftest_sha.o 1>&AS_MESSAGE_LOG_FD 2>&1])
1608         AC_TRY_COMMAND([$CC -o conftest conftest.c $LDFLAGS -L. -lconftest_sha -lconftest_shb 1>&AS_MESSAGE_LOG_FD 2>&1])
1609         if AC_TRY_COMMAND([eval "$LIB_PATH_VAR=. ./conftest 1>&AS_MESSAGE_LOG_FD 2>&1"])
1610         then
1611                 AC_MSG_RESULT([no])
1612         else
1613                 ld_as_needed_flag_found=no
1614                 LDFLAGS="$saved_before_as_needed_ldflags"
1615                 AC_MSG_RESULT([yes])
1616         fi
1617         rm conftest* libconftest*
1620 # check if we have to disable LD_AS_NEEDED_FLAG:
1621 # On some systems for a veriety of reasons linking with
1622 # -Wl,--as-needed -lreadline -lncurses fails
1623 # we have to retest, if these combination is detected before.
1624 # Bugzilla #7209
1626 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1627         if test x$ld_as_needed_flag_found = xyes ; then
1628                 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1629                 # try if check no fails
1630                 save_LIBS=$LIBS
1631                 LIBS="$LIBS $TERMLIBS"
1632                 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1633                 LIBS="$save_LIBS"
1634         fi
1639 # for historical reasons almost all linkers don't complain about unresolved
1640 # symbols in shared libs. Except for the internal samba modules we want to get
1641 # errors when we produce a shared lib with unresolved symbols. On some
1642 # platforms unresolved symbols might be intended, so we might have to add
1643 # platform specific exceptions here.
1645 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1646         saved_ldflags="$LDFLAGS"
1647         AC_MSG_CHECKING([if $flags works])
1648         LDFLAGS="$flags $saved_ldflags"
1649         AC_TRY_LINK([],[],
1650         [AC_MSG_RESULT([yes])
1651         LDSHFLAGS_Z_DEFS=$flags
1652         ldshflags_z_defs_found=yes],
1653         AC_MSG_RESULT([no]))
1654         LDFLAGS=$saved_ldflags
1655         test x"$ldshflags_z_defs_found" = xyes && break
1656 done
1658 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1659 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1660 AC_MSG_CHECKING([LDFLAGS])
1661 AC_MSG_RESULT([$LDFLAGS])
1662 AC_MSG_CHECKING([DYNEXP])
1663 AC_MSG_RESULT([$DYNEXP])
1665 #######################################################
1666 # test whether building a shared library actually works
1667 if test $BLDSHARED = true; then
1669 AC_MSG_CHECKING([SHLD])
1670 AC_MSG_RESULT([$SHLD])
1671 AC_MSG_CHECKING([LDSHFLAGS])
1672 AC_MSG_RESULT([$LDSHFLAGS])
1674 AC_MSG_CHECKING([SHLIBEXT])
1675 AC_MSG_RESULT([$SHLIBEXT])
1676 AC_MSG_CHECKING([SONAMEFLAG])
1677 AC_MSG_RESULT([$SONAMEFLAG])
1679 AC_MSG_CHECKING([PICFLAG])
1680 AC_MSG_RESULT([$PICFLAG])
1682 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1683 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1685 AC_CACHE_CHECK([whether building shared libraries actually works],
1686                [ac_cv_shlib_works],[
1687    # try building a trivial shared library
1688    ac_cv_shlib_works=no
1689    # The $SHLD and $LDSHFLAGS variables may contain references to other
1690    # variables so they need to be eval'ed.
1691    if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1692    then
1693      TESTCMD="`eval echo \"$SHLD $LDSHFLAGS $PICFLAG\"`"
1694      TESTCMD="$TESTCMD -o \"shlib.$SHLIBEXT\" shlib.o"
1695      if AC_TRY_COMMAND([eval $TESTCMD 1>&AS_MESSAGE_LOG_FD 2>&1])
1696      then
1697        ac_cv_shlib_works=yes
1698      fi
1699    fi
1700    rm -f "shlib.$SHLIBEXT" shlib.o
1703 if test $ac_cv_shlib_works = no; then
1704    BLDSHARED=false
1708 if test x"$BLDSHARED" != x"true"; then
1709         LDSHFLAGS="shared-libraries-disabled"
1710         SONAMEFLAG="shared-libraries-disabled"
1711         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1712         SHLD="shared-libraries-disabled"
1713         PICFLAG="${PIE_CFLAGS}"
1714         SHLIBEXT="shared_libraries_disabled"
1715         smbtorture4_possible=no
1718 AC_MSG_CHECKING([used PICFLAG])
1719 AC_MSG_RESULT([$PICFLAG])
1721 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1725 ###########################################################
1727 # Configuration of subsystems / libraries
1729 ###########################################################
1731 INSTALLLIBCMD_SH=:
1732 INSTALLLIBCMD_A=:
1733 UNINSTALLLIBCMD_SH=:
1734 UNINSTALLLIBCMD_A=:
1736 if test $BLDSHARED = true; then
1737         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1738         UNINSTALLLIBCMD_SH="rm -f"
1740 if test $enable_static = yes; then
1741         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1742         UNINSTALLLIBCMD_A="rm -f"
1745 #################################################
1746 # --disable-shared-libs
1747 # can be used to disable the internal use of shared libs altogether
1748 # (this only has an effect when building shared libs is enabled)
1750 USESHARED=false
1751 AC_SUBST(USESHARED)
1753 AC_MSG_CHECKING(whether to use shared libraries internally)
1754 AC_ARG_ENABLE([shared-libs],
1755         AS_HELP_STRING([--enable-shared-libs],
1756                 [Use shared libraries internally (default=yes)]),
1757         [enable_shared_libs=$enableval],
1758         [enable_shared_libs=yes])
1760 if test x"$enable_shared_libs" != x"no" ; then
1761         USESHARED=$BLDSHARED
1764 AC_MSG_RESULT([$USESHARED])
1766 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1767         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1770 #################################################
1771 # --with-static-libs=LIBS:
1772 #   link (internal) libs dynamically or statically?
1774 # If a subsystem is built as a library then this controls whether they are
1775 # linked into Samba targets statically or dynamically:
1777 # * If we build the shared library at all, we link dynamically by default.
1779 # * We only link statically if we don't build shared or if the library
1780 #   appears in the --with-static-libs configure option.
1782 # Example:
1783 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1784 #   of linking the dynamic variant with -ltalloc.
1786 # NOTE: This option only affects libraries that we do not only build
1787 # but that samba also links against as libraries (as opposed to linking
1788 # the plain object files. - This has to be configured in Makefile.in.
1789 # So in particular it does not harm to give invalid or unknown names here.
1792 AC_ARG_WITH([static-libs],
1793         [AS_HELP_STRING([--with-static-libs=LIBS],
1794                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1795         [AS_IF([test $withval],
1796                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1797                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1798                         eval LINK_$lib=STATIC
1799                 done], [])],
1800         [])
1803 # WORKAROUND:
1804 #   until we have organized other internal subsystems (as util, registry
1805 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1806 #   dynamically to samba programs.
1808 LINK_LIBNETAPI=STATIC
1810 LINK_LIBSMBCLIENT=STATIC
1813 #  The library versions are hardcoded here
1814 #  and filled into the LIBFOO_SOVER variable.
1816 #  TODO: for talloc and tdb (at least), these should
1817 #  be extracted from their respective source directories
1819 AC_ARG_ENABLE(external_libtalloc,
1820         [AS_HELP_STRING([--enable-external-libtalloc],
1821                 [Enable external talloc [default=auto]])],
1822         [ enable_external_libtalloc=$enableval ],
1823         [ enable_external_libtalloc=auto ])
1825 if test "x$enable_external_libtalloc" != xno
1826 then
1827         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1828                 [ enable_external_libtalloc=yes ],
1829                 [ if test x$enable_external_libtalloc = xyes; then
1830                         AC_MSG_ERROR([Unable to find libtalloc])
1831                   else
1832                         enable_external_libtalloc=no
1833                   fi
1834                 ])
1837 if test "x$enable_external_libtalloc" = xno
1838 then
1839         m4_include(../lib/talloc/libtalloc.m4)
1840         LINK_LIBTALLOC=STATIC
1841         LIBTALLOCVERSION=`grep ^VERSION ${tallocdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1842         SMB_LIBRARY(talloc, 2, ${LIBTALLOCVERSION})
1843         LIBTALLOC_OBJ0=""
1844         for obj in ${TALLOC_OBJ}; do
1845                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1846         done
1847         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1848         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1849         AC_SUBST(LIBTALLOC_OBJ0)
1851         TALLOCTORT="bin/talloctort"
1852         AC_SUBST(TALLOCTORT)
1856 AC_ARG_ENABLE(external_libtdb,
1857         [AS_HELP_STRING([--enable-external-libtdb],
1858                 [Enable external tdb [default=auto]])],
1859                 [ enable_external_libtdb=$enableval ],
1860                 [ enable_external_libtdb=auto ])
1862 if test "x$enable_external_libtdb" != xno
1863 then
1864         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.6,
1865                 [ enable_external_libtdb=yes ],
1866                 [
1867                 if test x$enable_external_libtdb = xyes; then
1868                         AC_MSG_ERROR([Unable to find libtdb])
1869                 else
1870                         enable_external_libtdb=no
1871                 fi
1872                 ])
1875 AC_SUBST(LIBTDB_OBJ0)
1876 if test "x$enable_external_libtdb" = xno
1877 then
1878         m4_include(../lib/tdb/libtdb.m4)
1879         LINK_LIBTDB=STATIC
1880         LIBTDBVERSION=`grep ^VERSION ${tdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1881         SMB_LIBRARY(tdb, 1, ${LIBTDBVERSION})
1882         LIBTDB_OBJ0=""
1883         LIBTDB_LIBS="$LIBTDB_LIBS $TDB_DEPS"
1884         for obj in ${TDB_OBJ}; do
1885                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
1886         done
1887         AC_SUBST(LIBTDB_OBJ0)
1888         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
1889         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
1891         TDBBACKUP="bin/tdbbackup"
1892         AC_SUBST(TDBBACKUP)
1893         TDBDUMP="bin/tdbdump"
1894         AC_SUBST(TDBDUMP)
1895         TDBRESTORE="bin/tdbrestore"
1896         AC_SUBST(TDBRESTORE)
1897         TDBTOOL="bin/tdbtool"
1898         AC_SUBST(TDBTOOL)
1899         TDBTORTURE="bin/tdbtorture"
1900         AC_SUBST(TDBTORTURE)
1903 AC_ARG_ENABLE(external_libntdb,
1904         [AS_HELP_STRING([--enable-external-libntdb],
1905                 [Enable external ntdb [default=auto]])],
1906                 [ enable_external_libntdb=$enableval ],
1907                 [ enable_external_libntdb=auto ])
1909 if test "x$enable_external_libntdb" != xno
1910 then
1911         PKG_CHECK_MODULES(LIBNTDB, ntdb >= 1.0,
1912                 [ enable_external_libntdb=yes ],
1913                 [
1914                 if test x$enable_external_libntdb = xyes; then
1915                         AC_MSG_ERROR([Unable to find libntdb])
1916                 else
1917                         enable_external_libntdb=no
1918                 fi
1919                 ])
1922 AC_SUBST(LIBNTDB_OBJ0)
1923 if test "x$enable_external_libntdb" = xno
1924 then
1925         m4_include(../lib/ntdb/libntdb.m4)
1926         LINK_LIBNTDB=STATIC
1927         LIBNTDBVERSION=`grep ^VERSION ${ntdbdir}/wscript | sed -e "s/'//g" -e 's/.* //'`
1928         SMB_LIBRARY(ntdb, 1, ${LIBNTDBVERSION})
1929         LIBNTDB_OBJ0=""
1930         LIBNTDB_LIBS="$LIBNTDB_LIBS $NTDB_DEPS"
1931         for obj in ${NTDB_OBJ}; do
1932                 LIBNTDB_OBJ0="${LIBNTDB_OBJ0} ${ntdbdir}/${obj}"
1933         done
1934         AC_SUBST(LIBNTDB_OBJ0)
1935         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${NTDB_CFLAGS}"
1936         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${NTDB_CFLAGS}"
1938         NTDBBACKUP="bin/ntdbbackup"
1939         AC_SUBST(NTDBBACKUP)
1940         NTDBDUMP="bin/ntdbdump"
1941         AC_SUBST(NTDBDUMP)
1942         NTDBRESTORE="bin/ntdbrestore"
1943         AC_SUBST(NTDBRESTORE)
1944         NTDBTOOL="bin/ntdbtool"
1945         AC_SUBST(NTDBTOOL)
1946         NTDBTORTURE="bin/ntdbtorture"
1947         AC_SUBST(NTDBTORTURE)
1950 SMB_LIBRARY(netapi, 0)
1951 SMB_LIBRARY(smbclient, 0)
1952 SMB_LIBRARY(smbsharemodes, 0)
1955 ################
1957 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1958 AC_TRY_RUN([#include <stdio.h>
1959 main() { long long x = 1000000; x *= x; return(((x/1000000) == 1000000)? 0: 1); }],
1960 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1961 if test x"$samba_cv_have_longlong" = x"yes"; then
1962     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1963     AC_CHECK_TYPE(intptr_t, unsigned long long)
1964 else
1965     AC_CHECK_TYPE(intptr_t, unsigned long)
1969 # Check if the compiler supports the LL prefix on long long integers.
1970 # AIX needs this.
1972 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1973     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1974         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1975 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1976    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1980 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1981 AC_TRY_RUN([#include <time.h>
1982 main() { return((sizeof(time_t) == 8) ? 0 : 1); }],
1983 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1984 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1985     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1988 AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
1989 AC_TRY_RUN([#include <time.h>
1990 main() {
1991         struct tm *tm;
1992         if (sizeof(time_t) == 8) {
1993                 time_t max_time = 0x7fffffffffffffffll;
1994                 tm = gmtime(&max_time);
1995                 /* This should fail with 32-bit tm_year. */
1996                 if (tm == NULL) {
1997                         /* Max time_t that works with 32-bit int tm_year in struct tm. */
1998                         max_time = 67768036191676799ll;
1999                         tm = gmtime(&max_time);
2000                         if (tm) {
2001                                 return(0);
2002                         }
2003                 }
2004         }
2005         return(1);
2007 samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
2008 if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
2009     AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
2014 # As a gating factor for large file support, in order to
2015 # use >4GB files we must have the following minimal support
2016 # available: a 64 bit off_t
2017 # If we don't have all of these then fail the build
2020 AC_MSG_CHECKING([if large file support can be enabled])
2021 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2022 AC_TRY_RUN([#include <stdio.h>
2023 #include <sys/stat.h>
2024 main() { return((sizeof(off_t) == 8) ? 0 : 1); }],
2025 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2026 if test x"$samba_cv_SIZEOF_OFF_T" = x"no"; then
2027     AC_MSG_ERROR(["large file support support not available: sizeof(off_t) != 8"])
2030 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2031 AC_TRY_RUN([
2032 #if defined(HAVE_UNISTD_H)
2033 #include <unistd.h>
2034 #endif
2035 #include <stdio.h>
2036 #include <sys/stat.h>
2037 main() { return((sizeof(ino_t) == 8) ? 0 : 1); }],
2038 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2039 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2040     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2043 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2044 AC_TRY_RUN([
2045 #if defined(HAVE_UNISTD_H)
2046 #include <unistd.h>
2047 #endif
2048 #include <stdio.h>
2049 #include <sys/stat.h>
2050 main() { return((sizeof(dev_t) == 8) ? 0 : 1); }],
2051 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2052 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2053     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2056 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2057 AC_TRY_RUN([
2058 #if defined(HAVE_UNISTD_H)
2059 #include <unistd.h>
2060 #endif
2061 #include <sys/types.h>
2062 main() { dev_t dev; int i = major(dev); return 0; }],
2063 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2064 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2065     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2068 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2069 AC_TRY_RUN([
2070 #if defined(HAVE_UNISTD_H)
2071 #include <unistd.h>
2072 #endif
2073 #include <sys/types.h>
2074 main() { dev_t dev; int i = minor(dev); return 0; }],
2075 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2076 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2077     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2080 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2081 AC_TRY_RUN([
2082 #if defined(HAVE_UNISTD_H)
2083 #include <unistd.h>
2084 #endif
2085 #include <sys/types.h>
2086 main() { dev_t dev = makedev(1,2); return 0; }],
2087 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2088 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2089     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2092 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2093 AC_TRY_COMPILE([#include <sys/types.h>
2094 #include <dirent.h>
2095 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2096 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2097 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2098     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2101 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2102 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2103 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2104 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2105     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2108 if test x"$libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT" = xyes ; then
2109         LIBS="$LIBS -lrt"
2112 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2113 AC_TRY_RUN([#include <sys/types.h>
2114 #include <dirent.h>
2115 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2116 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2117 di->d_name[0] == 0) return(0); return(1);} ],
2118 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2119 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2120     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2123 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2124 AC_TRY_COMPILE([#include <sys/types.h>
2125 #include <utime.h>],
2126 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; return(utime("foo.c",&tbuf));],
2127 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2128 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2129     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2132 ##############
2133 # Check utmp details, but only if our OS offers utmp.h
2134 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2135 dnl  utmp and utmpx come in many flavours
2136 dnl  We need to check for many of them
2137 dnl  But we don't need to do each and every one, because our code uses
2138 dnl  mostly just the utmp (not utmpx) fields.
2140 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2142 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2143 AC_TRY_COMPILE([#include <sys/types.h>
2144 #include <utmp.h>],
2145 [struct utmp ut;  ut.ut_name[0] = 'a';],
2146 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2147 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2148     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2151 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2152 AC_TRY_COMPILE([#include <sys/types.h>
2153 #include <utmp.h>],
2154 [struct utmp ut;  ut.ut_user[0] = 'a';],
2155 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2156 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2157     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2160 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2161 AC_TRY_COMPILE([#include <sys/types.h>
2162 #include <utmp.h>],
2163 [struct utmp ut;  ut.ut_id[0] = 'a';],
2164 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2165 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2166     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2169 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2170 AC_TRY_COMPILE([#include <sys/types.h>
2171 #include <utmp.h>],
2172 [struct utmp ut;  ut.ut_host[0] = 'a';],
2173 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2174 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2175     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2178 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2179 AC_TRY_COMPILE([#include <sys/types.h>
2180 #include <utmp.h>],
2181 [struct utmp ut;  time_t t; ut.ut_time = t;],
2182 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2183 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2184     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2187 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2188 AC_TRY_COMPILE([#include <sys/types.h>
2189 #include <utmp.h>],
2190 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2191 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2192 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2193     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2196 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2197 AC_TRY_COMPILE([#include <sys/types.h>
2198 #include <utmp.h>],
2199 [struct utmp ut;  ut.ut_type = 0;],
2200 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2201 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2202     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2205 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2206 AC_TRY_COMPILE([#include <sys/types.h>
2207 #include <utmp.h>],
2208 [struct utmp ut;  ut.ut_pid = 0;],
2209 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2210 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2211     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2214 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2215 AC_TRY_COMPILE([#include <sys/types.h>
2216 #include <utmp.h>],
2217 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2218 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2219 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2220     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2223 dnl Look for the IPv6 varient by preference. Many systems have both.
2224 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2225 AC_TRY_COMPILE([#include <sys/types.h>
2226 #include <utmp.h>],
2227 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2228 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2229 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2230     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2233 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2234 AC_TRY_COMPILE([#include <sys/types.h>
2235 #include <utmp.h>],
2236 [struct utmp ut;  ut.ut_addr = 0;],
2237 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2238 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2239     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2242 if test x$ac_cv_func_pututline = xyes ; then
2243   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2244   AC_TRY_COMPILE([#include <sys/types.h>
2245 #include <utmp.h>],
2246   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2247   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2248   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2249       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2250   fi
2253 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2254 AC_TRY_COMPILE([#include <sys/types.h>
2255 #include <utmpx.h>],
2256 [struct utmpx ux;  ux.ut_syslen = 0;],
2257 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2258 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2259     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2263 # end utmp details
2265 AC_CACHE_CHECK([for linux fallocate],samba_cv_HAVE_LINUX_FALLOCATE,[
2266 AC_TRY_COMPILE([
2267 #if defined(HAVE_UNISTD_H)
2268 #include <unistd.h>
2269 #endif
2270 #include <sys/types.h>
2271 #define _GNU_SOURCE
2272 #include <fcntl.h>
2273 #if defined(HAVE_LINUX_FALLOC_H)
2274 #include <linux/falloc.h>
2275 #endif],
2276 [int ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0, 10);],
2277 samba_cv_HAVE_LINUX_FALLOCATE=yes,samba_cv_HAVE_LINUX_FALLOCATE=no)])
2278 if test x"$samba_cv_HAVE_LINUX_FALLOCATE" = x"yes" && test x"$ac_cv_func_fallocate" = x"yes"; then
2279     AC_DEFINE(HAVE_LINUX_FALLOCATE,1,[Whether the Linux 'fallocate' function is available])
2282 AC_CACHE_CHECK([for getcwd takes NULL],samba_cv_GETCWD_TAKES_NULL,[
2283 AC_TRY_RUN([
2284 #if defined(HAVE_UNISTD_H)
2285 #include <unistd.h>
2286 #endif
2287 main() { char *s = getcwd(NULL,0); if (s) return(0); return(1); }],
2288 samba_cv_GETCWD_TAKES_NULL=yes,samba_cv_GETCWD_TAKES_NULL=no,samba_cv_GETCWD_TAKES_NULL=cross)])
2289 if test x"$samba_cv_GETCWD_TAKES_NULL" = x"yes"; then
2290     AC_DEFINE(GETCWD_TAKES_NULL,1,[Whether the getcwd function takes NULL as an argument])
2293 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2294 AC_ARG_WITH(libiconv,
2295 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2297   if test "$withval" = "no" ; then
2298     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2299   else
2300      if test "$withval" != "yes" ; then
2301         ICONV_PATH_SPEC=yes
2302         ICONV_LOOK_DIRS="$withval"
2303      fi
2304   fi
2307 for i in $ICONV_LOOK_DIRS ; do
2309     save_LIBS="$LIBS"
2310     save_LDFLAGS="$LDFLAGS"
2311     save_CPPFLAGS="$CPPFLAGS"
2313     iconv_current_LIBS=""
2314     iconv_current_LDFLAGS=""
2315     iconv_current_CPPFLAGS=""
2317     ICONV_FOUND="no"
2318     unset libext
2320     #  This is here to handle -withval stuff for --with-libiconv
2321     #  Perhaps we should always add a -L
2322     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2324     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2325     # installation paths. This gets a little tricky since we might have iconv
2326     # in both libiconv and in libc. In this case the jm_ICONV test will always
2327     # succeed when the header is found. To counter this, make sure the
2328     # library directory is there and check the ABI directory first (which
2329     # should be harmless on other systems, but causes tons of linker warnings on
2330     # 64bit Ubuntu systems).
2331     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2332     # installed, I've decided to fix the linker warnings.
2333     # -- Kai
2334     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2335     for l in "lib" "lib32" "lib/hpux32"; do
2336         if test -d "$i/$l" ; then
2337                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2338                 LIBS=
2339                 export LDFLAGS LIBS CPPFLAGS
2340                 # Try to find iconv(3)
2341                 jm_ICONV($i/$l)
2342                 if test x"$ICONV_FOUND" = "xyes" ; then
2343                     libext="$l"
2344                     break
2345                 fi
2346         fi
2347     done
2349     if test x"$ICONV_FOUND" = "xyes" ; then
2350         iconv_current_LDFLAGS="-L$i/$libext"
2351         iconv_current_CPPFLAGS="-I$i/include"
2353         if test x"$jm_cv_lib_iconv" != x; then
2354             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2355         else
2356             # We found iconv in libc.
2357             iconv_current_LIBS=""
2358         fi
2360     fi
2362     if test x"$ICONV_FOUND" = "xyes" ; then
2364         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2365         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2366         LIBS="$save_LIBS $iconv_current_LIBS"
2367         export LDFLAGS LIBS CPPFLAGS
2369         default_dos_charset=no
2370         default_unix_charset=no
2372         # check for default dos charset name
2373         for j in CP850 IBM850 ; do
2374             rjs_CHARSET($j)
2375             default_dos_charset="$ICONV_CHARSET"
2376             if test x"$default_dos_charset" = x"$j"; then
2377                 break
2378             fi
2379         done
2381         # check for default unix charset name
2382         for j in UTF-8 UTF8 ; do
2383             rjs_CHARSET($j)
2384             default_unix_charset="$ICONV_CHARSET"
2385             if test x"$default_unix_charset" = x"$j"; then
2386                 break
2387             fi
2388         done
2390         if test "$default_dos_charset" != "no" -a \
2391                 "$default_dos_charset" != "cross" -a \
2392                 "$default_unix_charset" != "no" -a \
2393                 "$default_unix_charset" != "cross"
2394         then
2395                 samba_cv_HAVE_NATIVE_ICONV=yes
2396         else
2397             if test "$default_dos_charset" = "cross" -o \
2398                      "$default_unix_charset" = "cross"
2399             then
2400                     samba_cv_HAVE_NATIVE_ICONV=cross
2401             else
2402                     samba_cv_HAVE_NATIVE_ICONV=no
2403             fi
2404         fi
2406         # At this point, we have a libiconv candidate. We know that
2407         # we have the right headers and libraries, but we don't know
2408         # whether it does the conversions we want. We can't test this
2409         # because we are cross-compiling. This is not necessarily a big
2410         # deal, since we can't guarantee that the results we get now will
2411         # match the results we get at runtime anyway.
2412         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2413             default_dos_charset="CP850"
2414             default_unix_charset="UTF-8"
2415             samba_cv_HAVE_NATIVE_ICONV=yes
2416             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2417             AC_MSG_WARN([$default_dos_charset and $default_unix_charset to UCS-16LE])
2418         fi
2420         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2422             CPPFLAGS=$save_CPPFLAGS
2423             LDFLAGS=$save_LDFLAGS
2424             LIBS=$save_LIBS
2426             if test x"$iconv_current_LIBS" != x; then
2427                 LIBS="$LIBS $iconv_current_LIBS"
2428             fi
2430             # Add the flags we need to CPPFLAGS and LDFLAGS
2431             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2432             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2434             # Turn the #defines into string literals
2435             default_dos_charset="\"$default_dos_charset\""
2436             default_unix_charset="\"$default_unix_charset\""
2438             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2439             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2440             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2442            break
2443         fi
2445     # We didn't find a working iconv, so keep going
2446     fi
2448     #  We only need to clean these up here for the next pass through the loop
2449     CPPFLAGS=$save_CPPFLAGS
2450     LDFLAGS=$save_LDFLAGS
2451     LIBS=$save_LIBS
2452     export LDFLAGS LIBS CPPFLAGS
2453 done
2454 unset libext
2457 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2458     AC_MSG_WARN([Sufficient support for iconv function was not found.
2459     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2460    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2461    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2465 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2466 AC_TRY_RUN([
2467 #include <sys/types.h>
2468 #include <fcntl.h>
2469 #ifndef F_GETLEASE
2470 #define F_GETLEASE      1025
2471 #endif
2472 main() {
2473        int fd = open("/dev/null", O_RDONLY);
2474        return fcntl(fd, F_GETLEASE, 0) == -1;
2477 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2478 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2479     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2482 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2483 AC_TRY_RUN([
2484 #include <sys/types.h>
2485 #include <fcntl.h>
2486 #include <signal.h>
2487 #ifndef F_NOTIFY
2488 #define F_NOTIFY 1026
2489 #endif
2490 main() {
2491         return(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2494 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2495 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2496     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2499 AC_CHECK_HEADER(sys/inotify.h)
2501 if test x"ac_cv_header_sys_inotify_h" = x"yes"; then
2502     AC_DEFINE(HAVE_INOTIFY,1,[For inotify support])
2505 #################################################
2506 # Check if FAM notifications are available. For FAM info, see
2507 #       http://oss.sgi.com/projects/fam/
2508 #       http://savannah.nongnu.org/projects/fam/
2509 AC_ARG_ENABLE(fam,
2510 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2512 if test x$enable_fam != xno; then
2513     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2514     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2515         # On IRIX, libfam requires libC, but other FAM implementations
2516         # might not need it.
2517         AC_CHECK_LIB(fam, FAMOpen2,
2518             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2519             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2520             [samba_cv_HAVE_LIBFAM=no])
2522         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2523             samba_fam_xtra=-lC
2524             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2525                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2526                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2527                 [samba_cv_HAVE_LIBFAM=no])
2528             unset samba_fam_xtra
2529         fi
2530     fi
2531     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2532         default_shared_modules="$default_shared_modules vfs_notify_fam"
2533         AC_TRY_COMPILE([#include <fam.h>],
2534                     [enum FAMCodes code = FAMChanged;],
2535                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2536                         [Whether fam.h contains a typedef for enum FAMCodes]),
2537                     [])
2538     fi
2540     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2541         AC_CHECK_LIB(fam, FAMNoExists,
2542             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2543     fi
2545     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2546         AC_MSG_ERROR(FAM support requested but FAM library not available )
2547     fi
2550 AC_SUBST(SMB_FAM_LIBS)
2552 #################################################
2553 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2556 with_dmapi_support=auto
2557 AC_MSG_CHECKING(whether to use DMAPI support)
2558 AC_ARG_WITH(dmapi,
2559 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2560 [ case "$withval" in
2561   yes|no)
2562     with_dmapi_support=$withval
2563     ;;
2564   esac ]
2566 AC_MSG_RESULT([$with_dmapi_support])
2568 if test x"$with_dmapi_support" != xno ; then
2569         SMB_CHECK_DMAPI([], [
2570                 AC_MSG_NOTICE(DMAPI support not present)
2571                 if test x"$with_dmapi_support" = xyes ; then
2572                         AC_MSG_ERROR(no DMAPI support found but requested!)
2573                 fi
2574                 ]
2575         )
2578 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2579 # Theoretically it should work with AIX JFS2 too but this needs testing
2580 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2581     default_shared_modules="$default_shared_modules vfs_tsmsm"
2584 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2585 AC_TRY_RUN([
2586 #include <sys/types.h>
2587 #include <fcntl.h>
2588 #include <signal.h>
2589 #include <sys/file.h>
2590 #ifndef LOCK_MAND
2591 #define LOCK_MAND       32
2592 #define LOCK_READ       64
2593 #endif
2594 main() {
2595         return(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2598 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2599 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2600     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2604 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2605 AC_TRY_COMPILE([#include <sys/types.h>
2606 #include <fcntl.h>],
2607 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2608 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2609 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2610     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2613 #################################################
2614 # Check for POSIX capability support
2616 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2617     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2618     [], [])
2620 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2622     ac_save_LIBS=$LIBS
2623     AC_LIBTESTFUNC(cap, cap_get_proc)
2625     AC_CACHE_CHECK([for POSIX capabilities],
2626             samba_cv_HAVE_POSIX_CAPABILITIES,
2627             [
2628                 AC_TRY_RUN([
2629 #include <sys/types.h>
2630 #include <sys/capability.h>
2631 main() {
2632  cap_t cap;
2633  cap_value_t vals[1];
2634  if (!(cap = cap_get_proc()))
2635    return(1);
2636  vals[0] = CAP_CHOWN;
2637  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2638  cap_set_proc(cap);
2639  return(0);
2641                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2642                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2643                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2644             ])
2646 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2647     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2648             [Whether POSIX capabilities are available])
2649 else
2650     LIBS=$ac_save_LIBS
2656 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2657 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2660 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2661 AC_TRY_COMPILE([#include <sys/types.h>
2662 #if defined(HAVE_RPC_RPC_H)
2663 #include <rpc/rpc.h>
2664 #endif],
2665 [int16 testvar;],
2666 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2667 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2668     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2671 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2672 AC_TRY_COMPILE([#include <sys/types.h>
2673 #if defined(HAVE_RPC_RPC_H)
2674 #include <rpc/rpc.h>
2675 #endif],
2676 [uint16 testvar;],
2677 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2678 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2679     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2682 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2683 AC_TRY_COMPILE([#include <sys/types.h>
2684 #if defined(HAVE_RPC_RPC_H)
2685 #include <rpc/rpc.h>
2686 #endif],
2687 [int32 testvar;],
2688 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2689 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2690     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2693 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2694 AC_TRY_COMPILE([#include <sys/types.h>
2695 #if defined(HAVE_RPC_RPC_H)
2696 #include <rpc/rpc.h>
2697 #endif],
2698 [uint32 testvar;],
2699 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2700 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2701     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2705 dnl Some systems (SCO) have a problem including
2706 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2707 dnl as a #define in <prot.h> and as part of an enum
2708 dnl in <rpc/rpc.h>.
2711 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2712 AC_TRY_COMPILE([#include <sys/types.h>
2713 #ifdef HAVE_SYS_SECURITY_H
2714 #include <sys/security.h>
2715 #include <prot.h>
2716 #endif  /* HAVE_SYS_SECURITY_H */
2717 #if defined(HAVE_RPC_RPC_H)
2718 #include <rpc/rpc.h>
2719 #endif],
2720 [int testvar;],
2721 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2722 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2723     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2726 AC_MSG_CHECKING([for test routines])
2727 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2728            AC_MSG_RESULT(yes),
2729            AC_MSG_ERROR([cant find test code. Aborting config]),
2730            AC_MSG_WARN([cannot run when cross-compiling]))
2732 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2733 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2734            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2735 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2736     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2739 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2740 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2741            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2742 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2743     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2746 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2747 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2748 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2749 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2750 AC_CHECK_FUNCS(getpagesize)
2752 ################################################
2753 # look for a method of setting the effective uid
2754 seteuid=no;
2756 ################################################
2757 # Start by checking for 32-bit system call definitions on Linux.
2759 case "$host_os" in
2760 *linux*)
2761 AC_CACHE_CHECK([for Linux 32-bit system calls],samba_cv_USE_LINUX_32BIT_SYSCALLS,[
2762 AC_TRY_COMPILE([
2763 #if defined(HAVE_UNISTD_H)
2764 #include <unistd.h>
2765 #endif
2766 #include <stdlib.h>
2767 #include <stdio.h>
2768 #include <sys/types.h>
2769 #include <errno.h>
2771 #ifdef HAVE_SYS_PRIV_H
2772 #include <sys/priv.h>
2773 #endif
2774 #ifdef HAVE_SYS_ID_H
2775 #include <sys/id.h>
2776 #endif
2778 #if defined(HAVE_SYSCALL_H)
2779 #include <syscall.h>
2780 #endif
2782 #if defined(HAVE_SYS_SYSCALL_H)
2783 #include <sys/syscall.h>
2784 #endif
2787 syscall(SYS_setresuid32, -1, -1, -1);
2788 syscall(SYS_setresgid32, -1, -1, -1);
2789 syscall(SYS_setreuid32, -1, -1);
2790 syscall(SYS_setregid32, -1, -1);
2791 syscall(SYS_setuid32, -1);
2792 syscall(SYS_setgid32, -1);
2793 syscall(SYS_setgroups32, 0, NULL);
2794 ], samba_cv_USE_LINUX_32BIT_SYSCALLS=yes,samba_cv_USE_LINUX_32BIT_SYSCALLS=no,samba_cv_USE_LINUX_32BIT_SYSCALLS=cross)])
2796 if test x"$samba_cv_USE_LINUX_32BIT_SYSCALLS" = x"yes"; then
2797     AC_DEFINE(USE_LINUX_32BIT_SYSCALLS,1,[Use Linux 32-bit system calls])
2798     AC_CACHE_CHECK([for Linux thread-specific credentials with 32-bit system calls],samba_cv_USE_LINUX_THREAD_CREDENTIALS,[
2799     AC_TRY_RUN([
2800 #define AUTOCONF_TEST 1
2801 #define USE_LINUX_THREAD_CREDENTIALS 1
2802 #define USE_LINUX_32BIT_SYSCALLS 1
2803 #include "${srcdir-.}/../lib/util/setid.c"
2804 #include "${srcdir-.}/lib/util_sec.c"],
2805            samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
2806 if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
2807     seteuid=yes;
2808     AC_DEFINE(USE_LINUX_THREAD_CREDENTIALS,1,[Whether we can use Linux thread-specific credentials with 32-bit system calls])
2812 if test $seteuid = no; then
2813 AC_CACHE_CHECK([for Linux thread-specific credentials],samba_cv_USE_LINUX_THREAD_CREDENTIALS,[
2814 AC_TRY_RUN([
2815 #define AUTOCONF_TEST 1
2816 #define USE_LINUX_THREAD_CREDENTIALS 1
2817 #include "${srcdir-.}/../lib/util/setid.c"
2818 #include "${srcdir-.}/lib/util_sec.c"],
2819            samba_cv_USE_LINUX_THREAD_CREDENTIALS=yes,samba_cv_USE_LINUX_THREAD_CREDENTIALS=no,samba_cv_USE_LINUX_THREAD_CREDENTIALS=cross)])
2820 if test x"$samba_cv_USE_LINUX_THREAD_CREDENTIALS" = x"yes"; then
2821     seteuid=yes;AC_DEFINE(USE_LINUX_THREAD_CREDENTIALS,1,[Whether we can use Linux thread-specific credentials])
2826 esac
2828 if test $seteuid = no; then
2829 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2830 AC_TRY_RUN([
2831 #define AUTOCONF_TEST 1
2832 #define USE_SETREUID 1
2833 #include "confdefs.h"
2834 #include "${srcdir-.}/../lib/util/setid.c"
2835 #include "${srcdir-.}/lib/util_sec.c"],
2836            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2837 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2838     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2842 # we check for setresuid second as it conflicts with AIO on Linux. 
2843 # see http://samba.org/~tridge/junkcode/aio_uid.c
2844 if test $seteuid = no; then
2845 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2846 AC_TRY_RUN([
2847 #define AUTOCONF_TEST 1
2848 #define USE_SETRESUID 1
2849 #include "confdefs.h"
2850 #include "${srcdir-.}/../lib/util/setid.c"
2851 #include "${srcdir-.}/lib/util_sec.c"],
2852            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2853 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2854     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2858 if test $seteuid = no; then
2859 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2860 AC_TRY_RUN([
2861 #define AUTOCONF_TEST 1
2862 #define USE_SETEUID 1
2863 #include "confdefs.h"
2864 #include "${srcdir-.}/../lib/util/setid.c"
2865 #include "${srcdir-.}/lib/util_sec.c"],
2866            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2867 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2868     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2872 if test $seteuid = no; then
2873 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2874 AC_TRY_RUN([
2875 #define AUTOCONF_TEST 1
2876 #define USE_SETUIDX 1
2877 #include "confdefs.h"
2878 #include "${srcdir-.}/../lib/util/setid.c"
2879 #include "${srcdir-.}/lib/util_sec.c"],
2880            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2881 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2882     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2886 AC_CACHE_CHECK([for the Darwin initgroups system call],
2887         samba_cv_DARWIN_INITGROUPS,
2888         AC_TRY_LINK([
2889 #include <sys/syscall.h>
2890 #include <unistd.h>
2891         ],
2892         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2893         samba_cv_DARWIN_INITGROUPS=yes,
2894         samba_cv_DARWIN_INITGROUPS=no)
2897 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2898     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2899         [Whether to use the Darwin-specific initgroups system call])
2902 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2903 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2904            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2905 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2906     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2909 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
2910 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
2911 AC_TRY_COMPILE([
2912   #define _XOPEN_SOURCE 600
2913   #include <stdlib.h>
2914   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
2915   #error probably broken posix_fallocate
2916   #endif
2917 ], [
2918 ], 
2919 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
2920 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
2921         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE, 1, Whether we have a broken posix_fallocate)
2925 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2926 AC_TRY_COMPILE([#include <sys/types.h>
2927 #include <sys/stat.h>
2928 #include <unistd.h>],
2929 [struct stat st;  st.st_blocks = 0;],
2930 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2931 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2932     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2935 AC_CACHE_CHECK([for 32 bit blkcnt_t],samba_cv_SIZEOF_BLKCNT_T_4,[
2936 AC_TRY_RUN([
2937 #if defined(HAVE_UNISTD_H)
2938 #include <unistd.h>
2939 #endif
2940 #include <stdio.h>
2941 #include <sys/types.h>
2942 #include <sys/stat.h>
2943 main() { return((sizeof(blkcnt_t) == 4) ? 0 : 1); }],
2944 samba_cv_SIZEOF_BLKCNT_T_4=yes,samba_cv_SIZEOF_BLKCNT_T_4=no,samba_cv_SIZEOF_BLKCNT_T_4=cross)])
2945 if test x"$samba_cv_SIZEOF_BLKCNT_T_4" = x"yes"; then
2946     AC_DEFINE(SIZEOF_BLKCNT_T_4,1,[The size of the 'blkcnt_t' type])
2949 AC_CACHE_CHECK([for 64 bit blkcnt_t],samba_cv_SIZEOF_BLKCNT_T_8,[
2950 AC_TRY_RUN([
2951 #if defined(HAVE_UNISTD_H)
2952 #include <unistd.h>
2953 #endif
2954 #include <stdio.h>
2955 #include <sys/types.h>
2956 #include <sys/stat.h>
2957 main() { return((sizeof(blkcnt_t) == 8) ? 0 : 1); }],
2958 samba_cv_SIZEOF_BLKCNT_T_8=yes,samba_cv_SIZEOF_BLKCNT_T_8=no,samba_cv_SIZEOF_BLKCNT_T_8=cross)])
2959 if test x"$samba_cv_SIZEOF_BLKCNT_T_8" = x"yes"; then
2960     AC_DEFINE(SIZEOF_BLKCNT_T_8,1,[The size of the 'blkcnt_t' type])
2963 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2964 AC_TRY_COMPILE([#include <sys/types.h>
2965 #include <sys/stat.h>
2966 #include <unistd.h>],
2967 [struct stat st;  st.st_blksize = 0;],
2968 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2969 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2970     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2973 AC_CACHE_CHECK([for st_flags in struct stat],
2974         samba_cv_HAVE_STAT_ST_FLAGS,
2975         [
2976             AC_TRY_COMPILE([#include <sys/types.h>
2977 #include <sys/stat.h>
2978 #include <unistd.h>],
2979             [struct stat st;  st.st_flags = 0;],
2980             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2981             samba_cv_HAVE_STAT_ST_FLAGS=no,
2982             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2983         ])
2985 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2986     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2987                 [Whether the stat struct has a st_flags member])
2990 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2991 AC_TRY_COMPILE([
2992 #include <sys/types.h>
2993 #include <sys/acl.h>
2994 #if defined(HAVE_RPCSVC_NIS_H)
2995 #include <rpcsvc/nis.h>
2996 #endif],
2997 [int i;],
2998 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2999 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3000         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3003 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3004 AC_TRY_RUN([
3005 #include <stdio.h>
3006 #include <limits.h>
3007 #include <signal.h>
3009 void exit_on_core(int ignored) {
3010         exit(1);
3013 main() {
3014         char *newpath;
3015         signal(SIGSEGV, exit_on_core);
3016         newpath = realpath("/tmp", NULL);
3017         return((newpath != NULL) ? 0 : 1);
3020 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3021 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3022     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3025 #################################################
3026 # check for AFS clear-text auth support
3027 samba_cv_WITH_AFS=no
3028 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3029 AC_ARG_WITH(afs,
3030 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3031 [ case "$withval" in
3032   yes|auto)
3033     AC_MSG_RESULT($withval)
3034     samba_cv_WITH_AFS=$withval
3035     ;;
3036   *)
3037     AC_MSG_RESULT(no)
3038     ;;
3039   esac ],
3040   AC_MSG_RESULT(no)
3043 ####################################################
3044 # check for Linux-specific AFS fake-kaserver support
3045 samba_cv_WITH_FAKE_KASERVER=no
3046 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3047 AC_ARG_WITH(fake-kaserver,
3048 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3049 [ case "$withval" in
3050   yes|auto)
3051     AC_MSG_RESULT($withval)
3052     samba_cv_WITH_FAKE_KASERVER=$withval
3053     ;;
3054   *)
3055     AC_MSG_RESULT(no)
3056     ;;
3057   esac ],
3058   AC_MSG_RESULT(no)
3061 #################################################
3062 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3063 if test x"$samba_cv_WITH_AFS" != x"no" ||
3064    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3066     # see if this box has the OpenSSL DES libraries
3067     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3069     # see if this box has the afs-headers in /usr/include/afs
3070     AC_MSG_CHECKING(for /usr/include/afs)
3071     if test -d /usr/include/afs; then
3072           AC_MSG_RESULT(yes)
3073     else
3074       AC_MSG_RESULT(no)
3075     fi
3077     # check for afs.h
3078     have_afs_headers=no
3079     AC_CHECK_HEADERS(afs.h afs/afs.h)
3080     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3081         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3082            test x"$samba_cv_WITH_AFS" = x"auto"; then
3083                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3084         else
3085                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3086         fi
3087     else
3088         have_afs_headers=yes
3089     fi
3092 FAKE_KASERVER_OBJ=""
3093 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3094     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3095     FAKE_KASERVER_OBJ="utils/net_afs.o"
3097 AC_SUBST(FAKE_KASERVER_OBJ)
3099 #################################################
3100 # check whether to compile AFS/NT ACL mapping module
3101 samba_cv_WITH_VFS_AFSACL=no
3102 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3103 AC_ARG_WITH(vfs-afsacl,
3104 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3105 [ case "$withval" in
3106   yes|auto)
3107     AC_MSG_RESULT($withval)
3108     samba_cv_WITH_VFS_AFSACL=yes
3109     ;;
3110   *)
3111     AC_MSG_RESULT(no)
3112     ;;
3113   esac ],
3114   AC_MSG_RESULT(no)
3117 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3118    default_shared_modules="$default_shared_modules vfs_afsacl"
3120         
3121 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3122     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3125 #################################################
3126 # check for the DFS clear-text auth system
3127 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3128 AC_ARG_WITH(dfs,
3129 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3130 [ case "$withval" in
3131   yes)
3132     AC_MSG_RESULT(yes)
3133     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3134     ;;
3135   *)
3136     AC_MSG_RESULT(no)
3137     ;;
3138   esac ],
3139   AC_MSG_RESULT(no)
3142 ########################################################
3143 # Compile with LDAP support?
3145 with_ldap_support=auto
3146 AC_MSG_CHECKING([for LDAP support])
3148 AC_ARG_WITH(ldap,
3149 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3150 [ case "$withval" in
3151     yes|no)
3152         with_ldap_support=$withval
3153         ;;
3154   esac ])
3156 AC_MSG_RESULT($with_ldap_support)
3158 SMBLDAP=""
3159 AC_SUBST(SMBLDAP)
3161 if test x"$with_ldap_support" != x"no"; then
3163   ##################################################################
3164   # first test for ldap.h and lber.h
3165   # (ldap.h is required for this test)
3166   AC_CHECK_HEADERS(ldap.h lber.h)
3168   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3169         if test x"$with_ldap_support" = x"yes"; then
3170          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3171         else
3172          AC_MSG_WARN(ldap.h is needed for LDAP support)
3173         fi
3174         
3175         with_ldap_support=no
3176   fi
3178   ##################################################################
3179   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3180   # unsigned int in include/includes.h
3181   case $host_os in
3182         *hpux*)
3183          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3184          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3185         with_ldap_support=yes
3186         ;;
3187         *)
3188         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3189         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3190                 if test x"$with_ldap_support" = x"yes"; then
3191                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3192                 else
3193                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3194                 fi
3195                 with_ldap_support=no
3196         fi
3197         ;;
3198   esac
3201 if test x"$with_ldap_support" != x"no"; then
3202   ac_save_LIBS=$LIBS
3204   ##################################################################
3205   # we might need the lber lib on some systems. To avoid link errors
3206   # this test must be before the libldap test
3207   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3209   ########################################################
3210   # If ber_sockbuf_add_io() is available we can add
3211   # SASL wrapping hooks
3212   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3214   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3215                  AC_TRY_COMPILE([#include <ldap.h>],
3216                                 [int val = LDAP_OPT_SOCKBUF;],
3217                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3218                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3220   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3221           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3222         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3223   fi
3225   #######################################################
3226   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3227   # ldap logging and print it out in the samba logs
3228   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3229                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3230                  [AC_TRY_COMPILE([#include <lber.h>],
3231                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3232                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3233                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3235   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3236         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3237                   [Support for LDAP/LBER logging interception])
3238   fi
3240   ########################################################
3241   # now see if we can find the ldap libs in standard paths
3242   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3244   ########################################################
3245   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3246   # Check found in pam_ldap 145.
3247   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3249   LIBS="$LIBS $LDAP_LIBS"
3250   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3251     AC_TRY_COMPILE([
3252         #include <lber.h>
3253         #include <ldap.h>],
3254         [ldap_set_rebind_proc(0, 0, 0);],
3255         [smb_ldap_cv_ldap_set_rebind_proc=3],
3256         [smb_ldap_cv_ldap_set_rebind_proc=2]
3257     )
3258   ])
3260   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3262   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3264   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3265     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3266     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3267     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3268     default_shared_modules="$default_shared_modules";
3269     SMBLDAP="lib/smbldap.o"
3270     with_ldap_support=yes
3271     AC_MSG_CHECKING(whether LDAP support is used)
3272     AC_MSG_RESULT(yes)
3273   else
3274     if test x"$with_ldap_support" = x"yes"; then
3275         AC_MSG_ERROR(libldap is needed for LDAP support)
3276     else
3277         AC_MSG_WARN(libldap is needed for LDAP support)
3278     fi
3280     LDAP_LIBS=""
3281     with_ldap_support=no
3282   fi
3283   LIBS=$ac_save_LIBS
3287 #################################################
3288 # active directory support
3290 with_ads_support=auto
3291 AC_MSG_CHECKING([for Active Directory and krb5 support])
3293 AC_ARG_WITH(ads,
3294 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3295 [ case "$withval" in
3296     yes|no)
3297         with_ads_support="$withval"
3298         ;;
3299   esac ])
3301 AC_MSG_RESULT($with_ads_support)
3303 FOUND_KRB5=no
3304 KRB5_LIBS=""
3306 if test x"$with_ldap_support" != x"yes"; then
3308     if test x"$with_ads_support" = x"yes"; then
3309         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3310     elif test x"$with_ads_support" = x"auto"; then
3311         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3312         with_ads_support=no
3313     fi
3315 else
3317     # Check to see whether there is enough LDAP functionality to be able
3318     # to build AD support.
3320 # HPUX and Solaris only has ldap_init; ok, we take care of this in smbldap.c
3321 case "$host_os" in
3322         *hpux* | *solaris*)
3323     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3325     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3326         if test x"$with_ads_support" = x"yes"; then
3327             AC_MSG_ERROR(Active Directory support on HPUX or Solaris requires ldap_init)
3328         elif test x"$with_ads_support" = x"auto"; then
3329             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX or Solaris))
3330             with_ads_support=no
3331         fi
3332     fi
3333     ;;
3334         *)
3335     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3337     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3338         if test x"$with_ads_support" = x"yes"; then
3339             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3340         elif test x"$with_ads_support" = x"auto"; then
3341             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3342             with_ads_support=no
3343         fi
3344     fi
3345     ;;
3346 esac
3349     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3351     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3352         if test x"$with_ads_support" = x"yes"; then
3353             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3354         elif test x"$with_ads_support" = x"auto"; then
3355             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3356             with_ads_support=no
3357         fi
3358     fi
3362 if test x"$with_ads_support" != x"no"; then
3364   # Do no harm to the values of CFLAGS and LIBS while testing for
3365   # Kerberos support.
3367   if test x$FOUND_KRB5 = x"no"; then
3368     #################################################
3369     # check for location of Kerberos 5 install
3370     AC_MSG_CHECKING(for kerberos 5 install path)
3371     AC_ARG_WITH(krb5,
3372     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3373     [ case "$withval" in
3374       no)
3375         AC_MSG_RESULT(no krb5-path given)
3376         ;;
3377       yes)
3378         AC_MSG_RESULT(/usr)
3379         ;;
3380       *)
3381         AC_MSG_RESULT($withval)
3382         KRB5_CFLAGS="-I$withval/include"
3383         KRB5_CPPFLAGS="-I$withval/include"
3384         KRB5_LDFLAGS="-L$withval/lib"
3385         FOUND_KRB5=yes
3386         if test -x "$withval/bin/krb5-config"; then
3387                 KRB5CONFIG=$withval/bin/krb5-config
3388         fi
3389         ;;
3390       esac ],
3391       AC_MSG_RESULT(no krb5-path given)
3392     )
3393   fi
3395   #################################################
3396   # check for krb5-config from recent MIT and Heimdal kerberos 5
3397   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3398   AC_MSG_CHECKING(for working krb5-config)
3399   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3400     ac_save_CFLAGS=$CFLAGS
3401     CFLAGS="";export CFLAGS
3402     ac_save_LDFLAGS=$LDFLAGS
3403     LDFLAGS="";export LDFLAGS
3404     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3405     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3406     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3407     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3408     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3409     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3410     FOUND_KRB5=yes
3411     AC_MSG_RESULT(yes)
3412   else
3413     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3414   fi
3416   if test x$FOUND_KRB5 = x"no"; then
3417     #################################################
3418     # see if this box has the SuSE location for the heimdal krb implementation
3419     AC_MSG_CHECKING(for /usr/include/heimdal)
3420     if test -d /usr/include/heimdal; then
3421       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3422           KRB5_CFLAGS="-I/usr/include/heimdal"
3423           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3424           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3425           FOUND_KRB5=yes
3426           AC_MSG_RESULT(yes)
3427       else
3428           KRB5_CFLAGS="-I/usr/include/heimdal"
3429           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3430           FOUND_KRB5=yes
3431           AC_MSG_RESULT(yes)
3432       fi
3433     else
3434       AC_MSG_RESULT(no)
3435     fi
3436   fi
3438   if test x$FOUND_KRB5 = x"no"; then
3439     #################################################
3440     # see if this box has the RedHat location for kerberos
3441     AC_MSG_CHECKING(for /usr/kerberos)
3442     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3443       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3444       KRB5_CFLAGS="-I/usr/kerberos/include"
3445       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3446       FOUND_KRB5=yes
3447       AC_MSG_RESULT(yes)
3448     else
3449       AC_MSG_RESULT(no)
3450     fi
3451   fi
3453   if test x$FOUND_KRB5 = x"no"; then
3454     #################################################
3455     # see if this box has the OpenBSD location for heimdal krb5
3456     AC_MSG_CHECKING(for /usr/include/kerberosV)
3457     if test -d /usr/include/kerberosV; then
3458       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3459       KRB5_LIBS="-lcrypto"
3460       FOUND_KRB5=yes
3461       AC_MSG_RESULT(yes)
3462     else
3463       AC_MSG_RESULT(no)
3464     fi
3465   fi
3467   if test x$FOUND_KRB5 = x"no"; then
3468     #################################################
3469     # see if this box has Solaris MIT kerberos implementation
3470     AC_MSG_CHECKING(for Solaris MIT kerberos)
3471     if test -x "$KRB5CONFIG" && $KRB5CONFIG --version | grep -s Solaris | grep -s MIT > /dev/null ; then
3472        FOUND_KRB5=yes
3473        KRB5_LIBS="-lgss -lkrb5"
3474        KRB5_CFLAGS="`$KRB5CONFIG --cflags`"
3475        KRB5_CPPFLAGS="`$KRB5CONFIG --cflags`"
3476        AC_MSG_RESULT(yes)
3477     else
3478       AC_MSG_RESULT(no)
3479     fi
3480   fi
3482   ac_save_CFLAGS=$CFLAGS
3483   ac_save_CPPFLAGS=$CPPFLAGS
3484   ac_save_LDFLAGS=$LDFLAGS
3486   # remove needless evil rpath stuff as early as possible:
3487   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3488   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3489   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3490   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3491   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3493   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3495   # now check for krb5.h. Some systems have the libraries without the headers!
3496   # note that this check is done here to allow for different kerberos
3497   # include paths
3498   AC_CHECK_HEADERS(krb5.h)
3500   if test x"$ac_cv_header_krb5_h" = x"no"; then
3502     # Give a warning if AD support was not explicitly requested,
3503     # i.e with_ads_support = auto, otherwise die with an error.
3505     if test x"$with_ads_support" = x"yes"; then
3506       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3507     else
3508       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3509     fi
3511     # Turn off AD support and restore CFLAGS and LIBS variables
3513     with_ads_support="no"
3515     CFLAGS=$ac_save_CFLAGS
3516     CPPFLAGS=$ac_save_CPPFLAGS
3517     LDFLAGS=$ac_save_LDFLAGS
3518   fi
3520   # check for new heimdal KRB5_DEPRECATED handling
3522   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3523                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3524     AC_TRY_COMPILE(
3525       [#define KRB5_DEPRECATED 1
3526       #include <krb5.h>],
3527       [],
3528       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3529       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3531   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3532     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3533                [Whether to use deprecated krb5 interfaces])
3534   fi
3537 # Now we have determined whether we really want ADS support
3538 use_ads=no
3539 if test x"$with_ads_support" != x"no"; then
3540   use_ads=yes
3541   have_gssapi=no
3542   ac_save_LIBS=$LIBS
3544   # now check for gssapi headers.  This is also done here to allow for
3545   # different kerberos include paths
3546   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_ext.h gssapi/gssapi_krb5.h com_err.h)
3548   ##################################################################
3549   # we might need the k5crypto and com_err libraries on some systems
3550   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3551   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3553   # Heimdal checks.
3554   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3555   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3556   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3558   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3559   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3561   ########################################################
3562   # now see if we can find the krb5 libs in standard paths
3563   # or as specified above
3564   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3565   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3567   ########################################################
3568   # now see if we can find the gssapi libs in standard paths
3569   if test x"$have_gssapi" != x"yes"; then
3570      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3571      AC_CHECK_LIB_EXT(gss, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3572   fi
3573   ################################################################
3574   # test for AD / GSSAPI support being enabled
3575   if test x"$have_gssapi" != xyes ; then
3576         AC_MSG_WARN([Samba cannot be supported without GSSAPI])
3577         use_ads=no
3578   else
3579         AC_DEFINE(HAVE_GSSAPI, , [Whether the platform has GSSAPI support])
3580   fi
3582   # This is for FreeBSD (and possibly others). gss_mech_krb5 is a
3583   # #define to GSS_KRB5_MECHANISM, which is defined in -lgssapi_krb5
3584   # Also, gsskrb5_extract_authz_data_from_sec_context is in -lgssapi_krb5
3585   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS, GSS_KRB5_MECHANISM,
3586                    [KRB5_LIBS="$KRB5_LIBS -lgssapi_krb5"])
3588   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3589   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3590   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3591   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3592   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3593   AC_CHECK_FUNC_EXT(krb5_c_string_to_key, $KRB5_LIBS)
3594   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3595   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3596   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3597   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3598   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3599   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3600   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3601   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3602   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3603   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3604   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3605   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3606   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3607   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3608   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3609   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3610   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3611   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3612   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3613   AC_CHECK_FUNC_EXT(krb5_make_principal, $KRB5_LIBS)
3614   AC_CHECK_FUNC_EXT(krb5_principal_get_num_comp, $KRB5_LIBS)
3615   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3616   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3617   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3618   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3619   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3620   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3621   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3622   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3623   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3624   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3625   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3626   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3627   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3628   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3629   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3630   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3631   AC_CHECK_FUNC_EXT(krb5_get_init_creds_keytab, $KRB5_LIBS)
3632   AC_CHECK_FUNC_EXT(krb5_build_principal_alloc_va, $KRB5_LIBS)
3633   AC_CHECK_FUNC_EXT(krb5_cc_get_lifetime, $KRB5_LIBS)
3634   AC_CHECK_FUNC_EXT(krb5_cc_retrieve_cred, $KRB5_LIBS)
3635   AC_CHECK_FUNC_EXT(krb5_free_checksum_contents, $KRB5_LIBS)
3636   AC_CHECK_FUNC_EXT(krb5_create_checksum, $KRB5_LIBS)
3637   AC_CHECK_FUNC_EXT(krb5_c_make_checksum, $KRB5_LIBS)
3638   AC_CHECK_FUNC_EXT(gss_krb5_import_cred, $KRB5_LIBS)
3639   AC_CHECK_FUNC_EXT(gss_get_name_attribute, $KRB5_LIBS)
3640   AC_CHECK_FUNC_EXT(gsskrb5_extract_authz_data_from_sec_context, $KRB5_LIBS)
3641   AC_CHECK_FUNC_EXT(gss_mech_krb5, $KRB5_LIBS)
3642   AC_CHECK_FUNC_EXT(gss_oid_equal, $KRB5_LIBS)
3643   AC_CHECK_FUNC_EXT(gss_inquire_sec_context_by_oid, $KRB5_LIBS)
3644   AC_CHECK_FUNC_EXT(gss_wrap_iov, $KRB5_LIBS)
3646   # MIT krb5 1.8 does not expose this call (yet)
3647   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3649   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3650   # but does have the symbol
3651   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3653   LIBS="$KRB5_LIBS $LIBS"
3655   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3656           smb_krb5_cv_creds_opt_free_context,
3657           [
3658                 AC_TRY_COMPILE([
3659                     #include <krb5.h>],
3660                     [
3661                         krb5_context ctx;
3662                         krb5_get_init_creds_opt *opt = NULL;
3663                         krb5_get_init_creds_opt_free(ctx, opt);
3664                     ],
3665                     [smb_krb5_cv_creds_opt_free_context=yes],
3666                     [smb_krb5_cv_creds_opt_free_context=no]
3667                 )
3668           ])
3670   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3671         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3672             [Whether krb5_get_init_creds_opt_free takes a context argument])
3673   fi
3675   AC_CACHE_CHECK([for checksum in krb5_checksum],
3676                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3677     AC_TRY_COMPILE([#include <krb5.h>],
3678       [krb5_checksum cksum; cksum.checksum.length = 0;],
3679       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3680       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3682   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3683     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3684                [Whether the krb5_checksum struct has a checksum property])
3685   fi
3687   AC_CACHE_CHECK([for etype in EncryptedData],
3688                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3689     AC_TRY_COMPILE([#include <krb5.h>],
3690       [EncryptedData edata; edata.etype = 0;],
3691       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3692       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3694   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3695     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3696                [Whether the EncryptedData struct has a etype property])
3697   fi
3699   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3700                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3701     AC_TRY_COMPILE([#include <krb5.h>],
3702       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3703       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3704       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3706   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3707     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3708                [Whether the krb5_ap_req struct has a ticket pointer])
3709   fi
3711   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3712                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3713     AC_TRY_COMPILE([#include <krb5.h>],
3714       [krb5_error err; err.e_data = NULL;],
3715       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3716       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3718   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3719     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3720                [Whether the krb5_error struct has a e_data pointer])
3721   fi
3723   AC_CACHE_CHECK([for krb5_crypto type],
3724                 samba_cv_HAVE_KRB5_CRYPTO,[
3725     AC_TRY_COMPILE([#include <krb5.h>],
3726       [krb5_crypto crypto;],
3727       samba_cv_HAVE_KRB5_CRYPTO=yes,
3728       samba_cv_HAVE_KRB5_CRYPTO=no)])
3730   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3731     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3732                [Whether the type krb5_crypto exists])
3733   fi
3735   AC_CACHE_CHECK([for addrtype in krb5_address],
3736                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3737     AC_TRY_COMPILE([#include <krb5.h>],
3738       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3739       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3740       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3742   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3743     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3744                [Whether the krb5_address struct has a addrtype property])
3745   fi
3747   AC_CACHE_CHECK([for addr_type in krb5_address],
3748                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3749     AC_TRY_COMPILE([#include <krb5.h>],
3750       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3751       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3752       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3754   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3755     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3756               [Whether the krb5_address struct has a addr_type property])
3757   fi
3759   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3760                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3761     AC_TRY_COMPILE([#include <krb5.h>],
3762       [krb5_keyblock key; key.keyvalue.data = NULL;],
3763       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3764       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3766   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3767     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3768               [Whether the krb5_keyblock struct has a keyvalue property])
3769   fi
3771   found_arcfour_hmac=no
3772   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3773                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3774     AC_TRY_COMPILE([#include <krb5.h>],
3775       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3776       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3777       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3778   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3779                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3780     AC_TRY_COMPILE([#include <krb5.h>],
3781       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3782       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3783       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3784 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3785 # w.r.t. arcfour and windows, so we must not enable it here
3786   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3787           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3788     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3789               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type definition is available])
3790     found_arcfour_hmac=yes
3791   fi
3792   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC],
3793                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC,[
3794     AC_TRY_COMPILE([#include <krb5.h>],
3795       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC;],
3796       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=yes,
3797       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC=no)])
3798   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC" = x"yes"; then
3799     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC,1,
3800               [Whether the ENCTYPE_ARCFOUR_HMAC key type definition is available])
3801     found_arcfour_hmac=yes
3802   fi
3804   AC_CACHE_CHECK([for ENCTYPE_AES128_CTS_HMAC_SHA1_96],
3805                  samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,[
3806     AC_TRY_COMPILE([#include <krb5.h>],
3807       [krb5_enctype enctype; enctype = ENCTYPE_AES128_CTS_HMAC_SHA1_96;],
3808       samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=yes,
3809       samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96=no)])
3810   if test x"$samba_cv_HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96" = x"yes"; then
3811     AC_DEFINE(HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96,1,
3812               [Whether the ENCTYPE_AES128_CTS_HMAC_SHA1_96 key type definition is available])
3813   fi
3814   AC_CACHE_CHECK([for ENCTYPE_AES256_CTS_HMAC_SHA1_96],
3815                  samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,[
3816     AC_TRY_COMPILE([#include <krb5.h>],
3817       [krb5_enctype enctype; enctype = ENCTYPE_AES256_CTS_HMAC_SHA1_96;],
3818       samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=yes,
3819       samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96=no)])
3820   if test x"$samba_cv_HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96" = x"yes"; then
3821     AC_DEFINE(HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96,1,
3822               [Whether the ENCTYPE_AES256_CTS_HMAC_SHA1_96 key type definition is available])
3823   fi
3825   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3826                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3827     AC_TRY_COMPILE([#include <krb5.h>],
3828       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3829       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3830       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3832   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3833     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3834               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3835   fi
3837   AC_CACHE_CHECK([for KV5M_KEYTAB],
3838                  samba_cv_HAVE_KV5M_KEYTAB,[
3839     AC_TRY_COMPILE([#include <krb5.h>],
3840       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3841       samba_cv_HAVE_KV5M_KEYTAB=yes,
3842       samba_cv_HAVE_KV5M_KEYTAB=no)])
3844   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3845       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3846              [Whether the KV5M_KEYTAB option is available])
3847   fi
3849   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3850                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3851     AC_TRY_COMPILE([#include <krb5.h>],
3852       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3853       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3854       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3856   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3857     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3858               [Whether KRB5_KU_OTHER_CKSUM is available])
3859   fi
3861   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3862                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3863     AC_TRY_COMPILE([#include <krb5.h>],
3864       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3865       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3866       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3868   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3869     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3870               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3871   fi
3873   AC_CACHE_CHECK([for the krb5_princ_component macro],
3874                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3875     AC_TRY_LINK([#include <krb5.h>],
3876       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3877       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3878       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3880   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3881     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3882                [Whether krb5_princ_component is available])
3883   fi
3885   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3886                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3887     AC_TRY_COMPILE([#include <krb5.h>],
3888       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3889       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3890       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3892   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3893     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3894               [Whether krb5_keytab_entry has key member])
3895   fi
3897   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3898                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3899     AC_TRY_COMPILE([#include <krb5.h>],
3900       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3901       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3902       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3904   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3905     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3906               [Whether krb5_keytab_entry has keyblock member])
3907   fi
3909   AC_CACHE_CHECK([for magic in krb5_address],
3910                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3911     AC_TRY_COMPILE([#include <krb5.h>],
3912       [krb5_address addr; addr.magic = 0;],
3913       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3914       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3916   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3917     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3918               [Whether the krb5_address struct has a magic property])
3919   fi
3921   AC_CACHE_CHECK([for WRFILE: keytab support],
3922                 samba_cv_HAVE_WRFILE_KEYTAB,[
3923     AC_TRY_RUN([
3924 #include<krb5.h>
3925   main()
3926   {
3927     krb5_context context;
3928     krb5_keytab keytab;
3930     krb5_init_context(&context);
3931     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3932   }],
3933   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3934   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3936   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3937       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3938                [Whether the WRFILE:-keytab is supported])
3939   fi
3941   AC_CACHE_CHECK([for krb5_realm type],
3942                 samba_cv_HAVE_KRB5_REALM_TYPE,[
3943     AC_TRY_COMPILE([#include <krb5.h>],
3944       [krb5_realm realm;],
3945       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
3946       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
3948   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
3949     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
3950                [Whether the type krb5_realm exists])
3951   fi
3953   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3954                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3955     AC_TRY_COMPILE([#include <krb5.h>],
3956     [
3957     krb5_context context;
3958     krb5_principal principal;
3959     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3960     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3961     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3963   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3964     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3965               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3966   fi
3968   AC_CACHE_CHECK([for krb5_addresses type],
3969                 samba_cv_HAVE_KRB5_ADDRESSES,[
3970     AC_TRY_COMPILE([#include <krb5.h>],
3971       [krb5_addresses addr;],
3972       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3973       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3975   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3976     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3977                [Whether the type krb5_addresses type exists])
3978   fi
3980   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3981     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3982         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3983         AC_TRY_RUN_STRICT([
3984                 #include <stdlib.h>
3985                 #include <krb5.h>
3986                 int main(void) {
3987                         krb5_context context = NULL;
3988                         char *str = NULL;
3989                         krb5_enctype_to_string(context, 1, &str);
3990                         if (str) free (str); 
3991                         return 0;
3992                 }
3993                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3994                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3995                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3997     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3998       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3999                 [whether krb5_enctype_to_string takes krb5_context argument])
4000     fi
4002     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4003         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4004         AC_TRY_RUN_STRICT([
4005                 #include <krb5.h>
4006                 int main(void) {
4007                         char buf[256];
4008                         krb5_enctype_to_string(1, buf, 256);
4009                         return 0;
4010                 }
4011                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4012                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4013                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4015     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4016       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4017                 [whether krb5_enctype_to_string takes size_t argument])
4018     fi
4019   fi
4021   AC_CACHE_CHECK([for krb5_principal_get_realm],
4022                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4023     AC_TRY_LINK([#include <krb5.h>],
4024       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4025       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4026       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4028   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4029     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4030                [Whether the function krb5_principal_get_realm is defined])
4031   fi
4033   AC_CACHE_CHECK([for krb5_princ_realm],
4034                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4035     AC_TRY_LINK([#include <krb5.h>],
4036       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4037       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4038       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4040   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4041     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4042                [Whether the macro krb5_princ_realm is defined])
4043   fi
4045   AC_HAVE_DECL(KRB5_PDU_NONE,[#include <krb5.h>])
4047   AC_CACHE_CHECK([for flags in krb5_creds],
4048                 samba_cv_HAVE_FLAGS_IN_KRB5_CREDS,[
4049     AC_TRY_COMPILE([#include <krb5.h>],
4050       [krb5_creds creds; creds.flags.b.initial = 0;],
4051       samba_cv_HAVE_FLAGS_IN_KRB5_CREDS=yes,
4052       samba_cv_HAVE_FLAGS_IN_KRB5_CREDS=no)])
4054   if test x"$samba_cv_HAVE_FLAGS_IN_KRB5_CREDS" = x"yes"; then
4055     AC_DEFINE(HAVE_FLAGS_IN_KRB5_CREDS,1,
4056                [Whether the krb5_creds struct has a flags property])
4057   fi
4058   #
4059   #
4060   # Now the decisions whether we can support krb5
4061   #
4062   # NOTE: all tests should be done before this block!
4063   #
4064   #
4065   if test x"$found_arcfour_hmac" != x"yes"; then
4066     AC_MSG_WARN(arcfour-hmac-md5 encryption type not found in -lkrb5)
4067     use_ads=no
4068   fi
4070   if test x"$ac_cv_func_ext_krb5_set_real_time" != x"yes"; then
4071     AC_MSG_WARN(krb5_set_real_time encryption type not found in -lkrb5)
4072     use_ads=no
4073   fi
4075   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4076     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4077     use_ads=no
4078   fi
4080   if test x"$ac_cv_func_ext_krb5_get_host_realm" != x"yes"
4081   then
4082     AC_MSG_WARN(krb5_get_host_realm not found in -lkrb5)
4083     use_ads=no
4084   fi
4086   if test x"$ac_cv_func_ext_krb5_free_host_realm" != x"yes"
4087   then
4088     AC_MSG_WARN(krb5_free_host_realm not found in -lkrb5)
4089     use_ads=no
4090   fi
4092   if test x"$ac_cv_func_ext_krb5_fwd_tgt_creds" != x"yes"
4093   then
4094     AC_MSG_WARN(krb5_fwd_tgt_creds not found in -lkrb5)
4095     use_ads=no
4096   fi
4098   if test x"$ac_cv_func_ext_krb5_get_init_creds_opt_alloc" != x"yes"
4099   then
4100     AC_MSG_WARN(krb5_get_init_creds_opt_alloc found in -lkrb5)
4101     use_ads=no
4102   fi
4104   if test x"$smb_krb5_cv_creds_opt_free_context" != x"yes"
4105   then
4106     AC_MSG_WARN(krb5_get_init_creds_opt_free not found or was too old in -lkrb5)
4107     use_ads=no
4108   fi
4110   if test x"$ac_cv_func_ext_krb5_get_renewed_creds" != x"yes"
4111   then
4112     AC_MSG_WARN(krb5_get_renewed_creds not found in -lkrb5)
4113     use_ads=no
4114   fi
4116   if test x"$ac_cv_func_ext_krb5_principal_compare_any_realm" != x"yes"
4117   then
4118     AC_MSG_WARN(krb5_principal_compare_any_realm not found in -lkrb5)
4119     use_ads=no
4120   fi
4122   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -o \
4123           x"$ac_cv_func_ext_krb5_c_string_to_key" != x"yes"
4124   then
4125         if test x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes" -o \
4126              x"$ac_cv_func_ext_krb5_string_to_key_salt" != x"yes"
4127         then
4128               AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4129               use_ads=no
4130         fi
4131   fi
4133   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4134           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4135   then
4136     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4137     use_ads=no
4138   fi
4140   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4141           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4142   then
4143     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4144     use_ads=no
4145   fi
4147   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes"
4148   then
4149     AC_MSG_WARN(krb5_c_verify_checksum not found in -lkrb5)
4150     use_ads=no
4151   fi
4153   if test x"$ac_cv_func_ext_gss_wrap_iov" != x"yes" ; then
4154     AC_MSG_WARN(gss_wrap_iov not found in -lgssapi)
4155     use_ads=no
4156   fi
4158   if test x"$ac_cv_func_ext_gss_get_name_attribute" != x"yes" ; then
4159     if test x"$ac_cv_func_ext_gsskrb5_extract_authz_data_from_sec_context" != x"yes" -o \
4160             x"$ac_cv_func_ext_gss_inquire_sec_context_by_oid" != x"yes"
4161     then
4162       AC_MSG_WARN(need either gss_get_name_attribute or gsskrb5_extract_authz_data_from_sec_context and gss_inquire_sec_context_by_oid in -lgssapi for PAC support)
4163       use_ads=no
4164     fi
4165   fi
4167   if test x"$use_ads" = x"yes"; then
4168     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4169     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4170   else
4171     if test x"$with_ads_support" = x"yes"; then
4172         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4173     else
4174         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4175     fi
4176     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4177     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4178     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4179     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4180     AC_REMOVE_DEFINE(HAVE_GSSAPI)
4181     KRB5_LIBS=""
4182     with_ads_support=no
4183   fi
4184   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4185   AC_MSG_RESULT([$use_ads])
4187 LIBS="$ac_save_LIBS"
4190 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4191 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4194 ########################################################
4195 # Compile with DNS Updates support?
4197 with_dnsupdate_support=auto
4198 AC_MSG_CHECKING([whether to enable DNS Updates support])
4200 AC_ARG_WITH(dnsupdate,
4201 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4202 [ case "$withval" in
4203     yes|no)
4204         with_dnsupdate_support=$withval
4205         ;;
4206   esac ])
4208 AC_MSG_RESULT($with_dnsupdate_support)
4210 if test x"$with_dnsupdate_support" != x"no"; then
4212   ################################################################
4213   # first test for AD / GSSAPI support being enabled
4214         if test x"$have_gssapi" != xyes -o x"$use_ads" != xyes ; then
4215                 if test x"$with_dnsupdate_support" = x"yes" ; then
4216                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4217                 else
4218                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4219                         with_dnsupdate_support=no
4220                 fi
4221         fi
4224 if test x"$with_dnsupdate_support" != x"no"; then
4225       AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4228   # finally print out the result:
4229 AC_MSG_CHECKING(whether DNS Updates support is used)
4230 AC_MSG_RESULT([$with_dnsupdate_support])
4233 #################################################
4234 # check for automount support
4235 AC_MSG_CHECKING(whether to use automount)
4236 AC_ARG_WITH(automount,
4237 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4238 [ case "$withval" in
4239   yes)
4240     AC_MSG_RESULT(yes)
4241     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4242     ;;
4243   *)
4244     AC_MSG_RESULT(no)
4245     ;;
4246   esac ],
4247   AC_MSG_RESULT(no)
4250 #################################################
4251 # Check for a PAM clear-text auth, accounts, password
4252 # and session support. Most PAM implementations keep their
4253 # headers in /usr/include/security. Darwin keeps its in
4254 # /usr/include/pam.
4256 with_pam_for_crypt=no
4257 try_pam=auto
4258 AC_MSG_CHECKING(whether to try PAM support)
4259 AC_ARG_WITH(pam,
4260 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4261 [ case "$withval" in
4262   yes|no|auto)
4263     try_pam=$withval
4264     ;;
4265   esac
4267 AC_MSG_RESULT([$try_pam])
4269 use_pam=no
4270 create_pam_modules=no
4271 if test x"${try_pam}" != x"no";then
4272         use_pam=yes
4273         create_pam_modules=yes
4275         # Most systems have PAM headers in /usr/include/security, but Darwin
4276         # has them in /usr/include/pam.
4277         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4278         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4279                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4280                 if test x"${try_pam}" = x"yes";then
4281                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4282                 fi
4283                 use_pam=no
4284                 create_pam_modules=no
4285         fi
4287         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4288         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4289                 if test x"${try_pam}" = x"yes";then
4290                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4291                 fi
4292                 use_pam=no
4293                 create_pam_modules=no
4294         fi
4296         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4297                 #if HAVE_SECURITY_PAM_APPL_H
4298                 #include <security/pam_appl.h>
4299                 #endif
4300                 #if HAVE_PAM_PAM_APPL_H
4301                 #include <pam/pam_appl.h>
4302                 #endif
4303         ]])
4304         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4305                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4306                 if test x"${try_pam}" = x"yes";then
4307                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4308        fi
4309                 create_pam_modules=no
4310     fi
4312         if test x"$use_pam" = x"yes"; then
4313     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4314                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4315                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4316     with_pam_for_crypt=yes
4318                 if test x"$create_pam_modules" = x"yes"; then
4319                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4320                         # this checks are optional,
4321                         # we don't care about the results here
4322                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4323                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4324                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4325                 else
4326                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4327                 fi
4328         fi
4329         AC_MSG_CHECKING(whether to use PAM support)
4330         AC_MSG_RESULT([$use_pam])
4332         AC_MSG_CHECKING(whether to have PAM MODULES support)
4333         AC_MSG_RESULT([$create_pam_modules])
4335         AC_TRY_COMPILE([
4336                 #if defined(HAVE_SECURITY_PAM_APPL_H)
4337                 #include <security/pam_appl.h>
4338                 #elif defined(HAVE_PAM_PAM_APPL_H)
4339                 #include <pam/pam_appl.h>
4340                 #endif],[
4341                 pam_set_item(0, PAM_RHOST, 0);
4342                 ],
4343                 AC_DEFINE(HAVE_PAM_RHOST, 1,
4344                           [Define to 1 if PAM_RHOST is available]),[])
4346         AC_TRY_COMPILE([
4347                 #if defined(HAVE_SECURITY_PAM_APPL_H)
4348                 #include <security/pam_appl.h>
4349                 #elif defined(HAVE_PAM_PAM_APPL_H)
4350                 #include <pam/pam_appl.h>
4351                 #endif],[
4352                 pam_set_item(0, PAM_TTY, 0);
4353                 ],
4354                 AC_DEFINE(HAVE_PAM_TTY, 1,
4355                           [Define to 1 if PAM_TTY is available]),[])
4357 fi # try_pam != no
4359 #################################################
4360 # check for PAM_RADIO_TYPE
4361 AC_TRY_COMPILE([
4362 #if (!defined(LINUX))
4364 #define PAM_EXTERN extern
4365 #if defined(HAVE_SECURITY_PAM_APPL_H)
4366 #include <security/pam_appl.h>
4367 #elif defined(HAVE_PAM_PAM_APPL_H)
4368 #include <pam/pam_appl.h>
4369 #endif
4371 #endif
4373 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4374 #include <security/pam_modules.h>
4375 #elif defined(HAVE_PAM_PAM_MODULES_H)
4376 #include <pam/pam_modules.h>
4377 #endif
4379 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4380 #include <security/_pam_macros.h>
4381 #elif defined(HAVE_PAM__PAM_MACROS_H)
4382 #include <pam/_pam_macros.h>
4383 #endif
4385 #ifdef HAVE_SECURITY_PAM_EXT_H
4386 #include <security/pam_ext.h>
4387 #endif
4389 [int i; i = PAM_RADIO_TYPE; ],
4390 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4392 #################################################
4393 # check for pam_smbpass support
4394 PAM_MODULES=""
4395 INSTALL_PAM_MODULES=""
4396 UNINSTALL_PAM_MODULES=""
4398 try_pam_smbpass=auto
4399 AC_MSG_CHECKING(whether to use pam_smbpass)
4400 AC_ARG_WITH(pam_smbpass,
4401 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4402 [ case "$withval" in
4403   yes|no|auto)
4404     try_pam_smbpass=$withval
4405   ;;
4406   *)
4407     AC_MSG_ERROR([valid options are yes,no,auto])
4408   ;;
4409   esac
4412 if test x"${try_pam_smbpass}" = xno ; then
4413         use_pam_smbpass=no
4414 else
4415         use_pam_smbpass=yes
4416         # Conditions under which pam_smbpass can't be built.
4417         if test x"$BLDSHARED" != xtrue ; then
4418                 if test x"${try_pam_smbpass}" = xyes ; then
4419                         AC_MSG_ERROR([No support for shared modules])
4420                 fi
4421                 use_pam_smbpass=no
4422         elif test x"$create_pam_modules" != xyes ; then
4423                 if test x"${try_pam_smbpass}" = xyes ; then
4424                         AC_MSG_ERROR([No support for PAM MODULES])
4425                 fi
4426                 use_pam_smbpass=no
4427         fi
4429         if test x"${use_pam_smbpass}" = xyes ; then 
4430                 PAM_MODULES="pam_smbpass"
4431                 INSTALL_PAM_MODULES="installpammodules"
4432                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4433         fi
4435 AC_MSG_RESULT([$use_pam_smbpass])
4439 ## moved after the check for -lcrypt in order to
4440 ## ensure that the necessary libraries are included
4441 ## check checking for truncated salt.  Wrapped by the
4442 ## $with_pam_for_crypt variable as above   --jerry
4444 if test $with_pam_for_crypt = no; then
4445 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4446 crypt_LIBS="$LIBS"
4447 LIBS="$AUTH_LIBS $LIBS"
4448 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4449         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4450 LIBS="$crypt_LIBS"])
4451 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4452         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4456 #################################################
4457 # check for a NISPLUS_HOME support
4458 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4459 AC_ARG_WITH(nisplus-home,
4460 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4461 [ case "$withval" in
4462   yes)
4463     AC_MSG_RESULT(yes)
4464     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4465     ;;
4466   *)
4467     AC_MSG_RESULT(no)
4468     ;;
4469   esac ],
4470   AC_MSG_RESULT(no)
4473 #################################################
4474 # check for syslog logging
4475 AC_MSG_CHECKING(whether to use syslog logging)
4476 AC_ARG_WITH(syslog,
4477 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4478 [ case "$withval" in
4479   yes)
4480     AC_MSG_RESULT(yes)
4481     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4482     ;;
4483   *)
4484     AC_MSG_RESULT(no)
4485     ;;
4486   esac ],
4487   AC_MSG_RESULT(no)
4490 #################################################
4491 # check for custom syslog facility
4492 AC_MSG_CHECKING(whether to use a custom syslog facility)
4493 AC_ARG_WITH(syslog-facility,
4494 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4496   if test "$withval" = "no" ; then
4497     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4498   else
4499      if test "$withval" != "yes" ; then
4500         syslog_facility="$withval"
4501         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4502      fi
4503   fi
4506 #################################################
4507 # check for experimental disk-quotas support
4509 samba_cv_WITH_QUOTAS=auto
4510 samba_cv_SYSQUOTA_FOUND=no
4512 AC_MSG_CHECKING(whether to try disk-quotas support)
4513 AC_ARG_WITH(quotas,
4514 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4515 [ case "$withval" in
4516   yes)
4517     AC_MSG_RESULT(yes)
4518     samba_cv_WITH_QUOTAS=yes
4519     ;;
4520   auto)
4521     AC_MSG_RESULT(auto)
4522     samba_cv_WITH_QUOTAS=auto
4523     ;;
4524   no)
4525     AC_MSG_RESULT(no)
4526     samba_cv_WITH_QUOTAS=no
4527     ;;
4528   *)
4529     AC_MSG_RESULT(${samba_cv_WITH_QUOTAS})
4530     ;;
4531   esac ],
4532   AC_MSG_RESULT(${samba_cv_WITH_QUOTAS})
4535 #############################################
4536 # only check for quota stuff if --with-quotas
4537 if test x"$samba_cv_WITH_QUOTAS" != x"no"; then
4539 case "$host_os" in
4540         # on linux we didn't need to test we have builtin support
4541         *linux*)
4542             samba_cv_SYSQUOTA_FOUND=yes
4543             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4544             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4545             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4546             AC_MSG_RESULT(yes)
4548             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4549             AC_MSG_RESULT(yes)
4550             ;;
4551         *solaris*)
4552             # need to set this define when using static linking (BUG 1473)
4553             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4554             ;;
4555         *)
4556             ;;
4557 esac
4559 # some broken header files need this
4560 AC_CHECK_HEADER(asm/types.h,[
4561             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4562             AC_ADD_INCLUDE(<asm/types.h>)
4563             ])
4565 # For quotas on Veritas VxFS filesystems
4566 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4568 # For quotas on XFS filesystems, Linux style
4569 AC_CHECK_HEADERS(xfs/xqm.h,[
4570             AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4571         ])
4573 # For sys/quota.h and linux/quota.h
4574 AC_CHECK_HEADERS(sys/quota.h)
4576 # For quotas on BSD systems
4577 AC_CHECK_HEADERS(ufs/ufs/quota.h)
4580 if test x"$ac_cv_header_xfs_xqm_h" != x"yes"; then
4581 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4582 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4583 AC_TRY_COMPILE([
4584 #include "confdefs.h"
4585 #ifdef HAVE_SYS_TYPES_H
4586 #include <sys/types.h>
4587 #endif
4588 #ifdef HAVE_ASM_TYPES_H
4589 #include <asm/types.h>
4590 #endif
4591 #include <sys/quota.h>
4592 ],[int i = Q_XGETQUOTA;],
4593 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4594 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4595         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4599 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4600 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4601 AC_TRY_COMPILE([
4602 #include "confdefs.h"
4603 #ifdef HAVE_SYS_QUOTA_H
4604 #include <sys/quota.h>
4605 #endif
4607 struct dqblk D;
4608 D.dqb_fsoftlimit = 0;],
4609 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4610 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4611         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4614 ##################
4615 # look for a working quota system
4617 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4618 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4619 AC_TRY_RUN_STRICT([
4620 #define HAVE_QUOTACTL_4A 1
4621 #define AUTOCONF_TEST 1
4622 #include "confdefs.h"
4623 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4624            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4625 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4626     samba_cv_SYSQUOTA_FOUND=yes;
4627     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4628     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4632 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4633 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4634 AC_TRY_RUN_STRICT([
4635 #define HAVE_QUOTACTL_4B 1
4636 #define AUTOCONF_TEST 1
4637 #include "confdefs.h"
4638 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4639            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4640 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4641     samba_cv_SYSQUOTA_FOUND=yes;
4642     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4643     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4644     AC_CHECK_MEMBERS([struct dqblk.dqb_curbytes], # Darwin bytecount style
4645         [ AC_DEFINE([HAVE_STRUCT_DQBLK_DQB_CURBYTES],[1],[darwin style quota bytecount])],,
4646         [#include <sys/typeÑ•.h>
4647         #include <sys/quota.h>])
4652 AC_CACHE_CHECK([for NFS QUOTAS],samba_cv_HAVE_NFS_QUOTAS,[
4653 AC_TRY_COMPILE([
4654 #include <rpc/rpc.h>
4655 #include <rpc/types.h>
4656 #include <rpcsvc/rquota.h>
4657 #ifdef HAVE_RPC_NETTYPE_H
4658 #include <rpc/nettype.h>
4659 #endif
4660 #include <rpc/xdr.h>
4661 ],[clnt_create("", RQUOTAPROG, RQUOTAVERS, "udp");],
4662                    samba_cv_HAVE_NFS_QUOTAS=yes, samba_cv_HAVE_NFS_QUOTAS=no)])
4664 if test x"$samba_cv_HAVE_NFS_QUOTAS" = x"yes"; then
4665     AC_DEFINE(HAVE_NFS_QUOTAS,1,[NFS quota support is available])
4666     AC_CHECK_MEMBER(struct getquota_rslt.getquota_rslt_u,
4667                 AC_DEFINE(HAVE_GETQUOTA_RSLT_GETQUOTA_RSLT_U, 1, [Defined if struct getquota_rslt has getquota_rslt_u]),,
4668                 [#include <rpcsvc/rquota.h>])
4671 #################################################
4672 # check for mntent.h and struct mntent
4673 AC_CHECK_HEADERS(mntent.h)
4674 #################################################
4675 # check for setmntent,getmntent,endmntent
4676 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4678 #################################################
4679 # check for devnm.h and struct mntent
4680 AC_CHECK_HEADERS(devnm.h)
4681 #################################################
4682 # check for devnm
4683 AC_CHECK_FUNCS(devnm)
4685 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4686 if test x"$samba_cv_SYSQUOTA_FOUND" = x"yes"; then
4687         AC_MSG_RESULT(yes)
4688         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4689         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4690 else
4691     AC_MSG_RESULT(no)
4692     AC_MSG_CHECKING(whether to use the old quota support)
4693     if test x"$samba_cv_WITH_QUOTAS" = x"yes"; then
4694         AC_DEFINE(WITH_QUOTAS,1,[Whether to use old quota support])
4695         AC_MSG_RESULT(yes)
4696     else
4697         AC_MSG_RESULT(no)
4698     fi
4701 ####################
4702 # End of quota check samba_cv_WITH_QUOTAS
4705 #################################################
4706 # check for experimental utmp accounting
4708 AC_MSG_CHECKING(whether to support utmp accounting)
4709 WITH_UTMP=yes
4710 AC_ARG_WITH(utmp,
4711 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4712 [ case "$withval" in
4713   no)
4714                 WITH_UTMP=no
4715                 ;;
4716   *)
4717                 WITH_UTMP=yes
4718                 ;;
4719   esac ],
4722 # utmp requires utmp.h
4723 # Note similar check earlier, when checking utmp details.
4725 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4726         utmp_no_reason=", no utmp.h on $host_os"
4727         WITH_UTMP=no
4730 # Display test results
4732 if test x"$WITH_UTMP" = x"yes"; then
4733         AC_MSG_RESULT(yes)
4734         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4735 else
4736         AC_MSG_RESULT(no$utmp_no_reason)
4740 #################################################
4741 # these tests are taken from the GNU fileutils package
4742 AC_CHECKING(how to get filesystem space usage)
4743 space=no
4745 # Perform only the link test since it seems there are no variants of the
4746 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4747 # because that got a false positive on SCO OSR5.  Adding the declaration
4748 # of a `struct statvfs' causes this test to fail (as it should) on such
4749 # systems.  That system is reported to work fine with STAT_STATFS4 which
4750 # is what it gets when this test fails.
4751 if test $space = no; then
4752   # SVR4
4753   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4754                  [AC_TRY_LINK([#include <sys/types.h>
4755 #include <sys/statvfs.h>],
4756                               [struct statvfs fsd; statvfs (0, &fsd);],
4757                               fu_cv_sys_stat_statvfs=yes,
4758                               fu_cv_sys_stat_statvfs=no)])
4759   if test $fu_cv_sys_stat_statvfs = yes; then
4760     space=yes
4761     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4762   fi
4765 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4766 # This is not the case on ancient Linux systems.
4768 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4769     AC_TRY_COMPILE([#include <sys/types.h>
4770 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4771         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4772 if test x"$samba_cv_fsid_int" = x"yes"; then
4773     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4776 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4777 # systems use f_bsize.
4778 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4779     AC_TRY_COMPILE([#include <sys/types.h>
4780 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4781         samba_cv_frsize=yes,samba_cv_frsize=no)])
4782 if test x"$samba_cv_frsize" = x"yes"; then
4783     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4786 # Some systems use f_flag in struct statvfs while others use f_flags
4787 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
4788     AC_TRY_COMPILE([#include <sys/types.h>
4789 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
4790         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
4791 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
4792     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
4795 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
4796     AC_TRY_COMPILE([#include <sys/types.h>
4797 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
4798         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
4799 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
4800     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
4803 if test $space = no; then
4804   # DEC Alpha running OSF/1
4805   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4806   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4807   [AC_TRY_RUN([
4808 #include <sys/param.h>
4809 #include <sys/types.h>
4810 #include <sys/mount.h>
4811   main ()
4812   {
4813     struct statfs fsd;
4814     fsd.f_fsize = 0;
4815     return (statfs (".", &fsd, sizeof (struct statfs)));
4816   }],
4817   fu_cv_sys_stat_statfs3_osf1=yes,
4818   fu_cv_sys_stat_statfs3_osf1=no,
4819   fu_cv_sys_stat_statfs3_osf1=no)])
4820   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4821   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4822     space=yes
4823     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4824   fi
4827 if test $space = no; then
4828 # AIX
4829   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4830 member (AIX, 4.3BSD)])
4831   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4832   [AC_TRY_RUN([
4833 #ifdef HAVE_SYS_PARAM_H
4834 #include <sys/param.h>
4835 #endif
4836 #ifdef HAVE_SYS_MOUNT_H
4837 #include <sys/mount.h>
4838 #endif
4839 #ifdef HAVE_SYS_VFS_H
4840 #include <sys/vfs.h>
4841 #endif
4842   main ()
4843   {
4844   struct statfs fsd;
4845   fsd.f_bsize = 0;
4846   return (statfs (".", &fsd));
4847   }],
4848   fu_cv_sys_stat_statfs2_bsize=yes,
4849   fu_cv_sys_stat_statfs2_bsize=no,
4850   fu_cv_sys_stat_statfs2_bsize=no)])
4851   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4852   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4853     space=yes
4854     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4855   fi
4858 if test $space = no; then
4859 # SVR3
4860   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4861   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4862   [AC_TRY_RUN([#include <sys/types.h>
4863 #include <sys/statfs.h>
4864   main ()
4865   {
4866   struct statfs fsd;
4867   return (statfs (".", &fsd, sizeof fsd, 0));
4868   }],
4869     fu_cv_sys_stat_statfs4=yes,
4870     fu_cv_sys_stat_statfs4=no,
4871     fu_cv_sys_stat_statfs4=no)])
4872   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4873   if test $fu_cv_sys_stat_statfs4 = yes; then
4874     space=yes
4875     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4876   fi
4879 if test $space = no; then
4880 # 4.4BSD and NetBSD
4881   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4882 member (4.4BSD and NetBSD)])
4883   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4884   [AC_TRY_RUN([#include <sys/types.h>
4885 #ifdef HAVE_SYS_PARAM_H
4886 #include <sys/param.h>
4887 #endif
4888 #ifdef HAVE_SYS_MOUNT_H
4889 #include <sys/mount.h>
4890 #endif
4891   main ()
4892   {
4893   struct statfs fsd;
4894   fsd.f_fsize = 0;
4895   return (statfs (".", &fsd));
4896   }],
4897   fu_cv_sys_stat_statfs2_fsize=yes,
4898   fu_cv_sys_stat_statfs2_fsize=no,
4899   fu_cv_sys_stat_statfs2_fsize=no)])
4900   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4901   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4902     space=yes
4903         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4904   fi
4907 if test $space = no; then
4908   # Ultrix
4909   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4910   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4911   [AC_TRY_RUN([#include <sys/types.h>
4912 #ifdef HAVE_SYS_PARAM_H
4913 #include <sys/param.h>
4914 #endif
4915 #ifdef HAVE_SYS_MOUNT_H
4916 #include <sys/mount.h>
4917 #endif
4918 #ifdef HAVE_SYS_FS_TYPES_H
4919 #include <sys/fs_types.h>
4920 #endif
4921   main ()
4922   {
4923   struct fs_data fsd;
4924   /* Ultrix's statfs returns 1 for success,
4925      0 for not mounted, -1 for failure.  */
4926   return (statfs (".", &fsd) != 1);
4927   }],
4928   fu_cv_sys_stat_fs_data=yes,
4929   fu_cv_sys_stat_fs_data=no,
4930   fu_cv_sys_stat_fs_data=no)])
4931   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4932   if test $fu_cv_sys_stat_fs_data = yes; then
4933     space=yes
4934     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4935   fi
4938 #################################################
4939 # check for cluster extensions
4941 AC_MSG_CHECKING(cluster support)
4942 AC_ARG_WITH(cluster-support,
4943 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
4945 if test x"$with_cluster_support" = x ; then
4946         with_cluster_support="auto"
4949 AC_MSG_RESULT($with_cluster_support)
4951 AC_ARG_WITH(ctdb,
4952 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
4953 [ case "$withval" in
4954   yes|no)
4955     AC_MSG_WARN([--with-ctdb called without argument])
4956     ;;
4957   *)
4958     CTDB_CPPFLAGS="-I$withval/include"
4959     ;;
4960   esac])
4962 AC_ARG_ENABLE(old-ctdb,
4963         [AS_HELP_STRING([--enable-old-ctdb],
4964                 [Enable build against (too) old ctdb version (default=no)])],,
4965                 [enable_old_ctdb=no])
4968 if test "$with_cluster_support" != "no" ; then
4970 AC_MSG_NOTICE(checking whether cluster support is available)
4972 have_cluster_support="yes"
4973 ctdb_broken="no"
4975 SAVED_CPPFLAGS="$CPPFLAGS"
4976 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
4978 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
4979 #include "confdefs.h"
4980 #define NO_CONFIG_H
4981 #include "replace.h"
4982 #include "system/wait.h"
4983 #include "system/network.h"
4984 #define private #error __USED_RESERVED_WORD_private__
4985 #include <talloc.h>
4986 #include <tdb.h>
4987 #include <ctdb.h>
4990 if test "x$have_cluster_support" = "xyes" -a \
4991         "x$ac_cv_header_ctdb_h" != "xyes"
4992 then
4993         have_cluster_support=no
4994         ctdb_broken="ctdb.h is required for cluster support"
4997 if test "x$have_cluster_support" = "xyes" -a \
4998         "x$ac_cv_header_ctdb_h" != "xyes"
4999 then
5000         have_cluster_support=no
5001         ctdb_broken="ctdb_private.h is required for cluster support"
5005 if test "x$have_cluster_support" = "xyes" ; then
5006         AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5007         #include "confdefs.h"
5008         #define NO_CONFIG_H
5009         #include "replace.h"
5010         #include "system/wait.h"
5011         #include "system/network.h"
5012         #include <talloc.h>
5013         #include <tdb.h>
5014         #include <ctdb.h>
5015         #include <ctdb_private.h>
5016         ])
5017         if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" != x"yes"; then
5018                 ctdb_broken="ctdb transaction support missing or too old"
5019                 have_cluster_support=no
5020         fi
5023 if test "x$have_cluster_support" = "xyes" ; then
5024         AC_HAVE_DECL(CTDB_CONTROL_SCHEDULE_FOR_DELETION,[
5025         #include "confdefs.h"
5026         #define NO_CONFIG_H
5027         #include "replace.h"
5028         #include "system/wait.h"
5029         #include "system/network.h"
5030         #include <talloc.h>
5031         #include <tdb.h>
5032         #include <ctdb.h>
5033         #include <ctdb_private.h>
5034         ])
5035         if test x"$ac_cv_have_CTDB_CONTROL_SCHEDULE_FOR_DELETION_decl" != x"yes"
5036         then
5037                 if test "x$enable_old_ctdb" = "xyes" ; then
5038                         AC_MSG_WARN([ignoring missing SCHEDULE_FOR_DELETION (--enable-old-ctdb)])
5039                 else
5040                         ctdb_broken="support for SCHEDULE_FOR_DELETION control missing"
5041                         have_cluster_support=no
5042                 fi
5043         fi
5046 if test "x$have_cluster_support" = "xyes" ; then
5047         AC_HAVE_DECL(CTDB_CONTROL_CHECK_SRVIDS,[
5048         #include "confdefs.h"
5049         #define NO_CONFIG_H
5050         #include "replace.h"
5051         #include "system/wait.h"
5052         #include "system/network.h"
5053         #include <talloc.h>
5054         #include <tdb.h>
5055         #include <ctdb.h>
5056         #include <ctdb_private.h>
5057         ])
5058         if test x"$ac_cv_have_CTDB_CONTROL_CHECK_SRVIDS_decl" != x"yes"
5059         then
5060                 if test "x$enable_old_ctdb" = "xyes" ; then
5061                         AC_MSG_WARN([ignoring missing CHECK_SRVIDS (--enable-old-ctdb)])
5062                 else
5063                         ctdb_broken="support for CHECK_SRVIDS control missing"
5064                         have_cluster_support=no
5065                 fi
5066         fi
5069 AC_ARG_ENABLE([ctdb-readonly-records],
5070         AS_HELP_STRING([--enable-ctdb-readonly-records],
5071                 [Turn on CTDB readonly records support (default=yes)]),
5072         [want_ctdb_readonly=$enableval],
5073         [want_ctdb_readonly=yes])
5075 if test "x$have_cluster_support" = "xyes" -a "x$want_ctdb_readonly" = "xyes" ; then
5076         AC_HAVE_DECL(CTDB_WANT_READONLY,[
5077         #include "confdefs.h"
5078         #define NO_CONFIG_H
5079         #include "replace.h"
5080         #include "system/wait.h"
5081         #include "system/network.h"
5082         #include <talloc.h>
5083         #include <tdb.h>
5084         #include <ctdb.h>
5085         ])
5087         if test "x$ac_cv_have_CTDB_WANT_READONLY_decl" != "xyes" ; then
5088                 if test "x$enable_old_ctdb" = "xyes" ; then
5089                         AC_MSG_WARN([ignoring missing READONLY support (--enable-old-ctdb)])
5090                 else
5091                         ctdb_broken="support for CTDB readonly records missing"
5092                         have_cluster_support=no
5093                 fi
5094         fi
5097 if test "x$have_cluster_support" = "xyes" ; then
5098         # In ctdb 1.0.57, ctdb_control_tcp was temporarily renamed
5099         # to ctdb_tcp_client.
5100         AC_CHECK_TYPE(struct ctdb_tcp_client,[
5101                 AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5102         ],,[
5103         #include "confdefs.h"
5104         #define NO_CONFIG_H
5105         #include "replace.h"
5106         #include "system/wait.h"
5107         #include "system/network.h"
5108         #include <talloc.h>
5109         #include <tdb.h>
5110         #include <ctdb.h>
5111         #include <ctdb_private.h>
5112         ])
5115 if test "x$have_cluster_support" = "xyes" ; then
5116         AC_CHECK_TYPE(struct ctdb_control_tcp,[
5117                 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5118         ],[
5119                 ctdb_broken="missing struct ctdb_control_tcp"
5120                 have_cluster_support=no
5121         ],[
5122         #include "confdefs.h"
5123         #define NO_CONFIG_H
5124         #include "replace.h"
5125         #include "system/wait.h"
5126         #include "system/network.h"
5127         #include <talloc.h>
5128         #include <tdb.h>
5129         #include <ctdb.h>
5130         #include <ctdb_private.h>
5131         ])
5134 # test for optional ipv6 support in ctdb:
5135 if test "x$have_cluster_support" = "xyes" ; then
5136         AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5137                 AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5138         ],,[
5139         #include "confdefs.h"
5140         #define NO_CONFIG_H
5141         #include "replace.h"
5142         #include "system/wait.h"
5143         #include "system/network.h"
5144         #include <talloc.h>
5145         #include <tdb.h>
5146         #include <ctdb.h>
5147         #include <ctdb_private.h>
5148         ])
5151 CPPFLAGS="$SAVED_CPPFLAGS"
5153 fi # (if test "$with_cluster_support" != "no")
5155 if test x"$have_cluster_support" = "xno" ; then
5156         case "$with_cluster_support" in
5157         yes)
5158                 AC_MSG_ERROR(["cluster support not available: $ctdb_broken"])
5159                 ;;
5160         auto)
5161                 AC_MSG_WARN(["cluster support not available: $ctdb_broken"])
5162                 ;;
5163         esac
5164         with_cluster_support=no
5167 if test "x$with_cluster_support" != "xno"; then
5168     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5169     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5170     AC_MSG_NOTICE(Building with cluster support)
5171 else
5172     AC_MSG_NOTICE(Building without cluster support)
5176 #################################################
5177 # check for rtnetlink
5179 AC_CHECK_HEADERS([linux/netlink.h],
5180   AC_CHECK_HEADERS([linux/rtnetlink.h],[],[],
5181                    [#include <bits/sockaddr.h>
5182                     #include <linux/netlink.h>]),
5183   [],[#include <bits/sockaddr.h>])
5185 #################################################
5186 # check for ACL support
5188 AC_MSG_CHECKING(whether to support ACLs)
5189 AC_ARG_WITH(acl-support,
5190 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5191 [ case "$withval" in
5192         yes|no)
5193                 with_acl_support="$withval"
5194                 ;;
5195   esac ])
5197 if test x"$with_acl_support" = x ; then
5198         with_acl_support="auto"
5201 AC_MSG_RESULT($with_acl_support)
5203 if test x"$with_acl_support" = x"no"; then
5204         AC_MSG_RESULT(Disabling ACL support)
5205 else
5206         AC_MSG_NOTICE(checking whether ACL support is available:)
5207         case "$host_os" in
5208         *sysv5*)
5209                 AC_MSG_NOTICE(Using UnixWare ACLs)
5210                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5211                 default_static_modules="$default_static_modules vfs_solarisacl"
5212                 ;;
5213         *solaris*)
5214                 AC_MSG_NOTICE(Using solaris ACLs)
5215                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5216                 ACL_LIBS="$ACL_LIBS -lsec"
5217                 default_static_modules="$default_static_modules vfs_solarisacl"
5218                 ;;
5219         *hpux*)
5220                 AC_MSG_NOTICE(Using HPUX ACLs)
5221                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5222                 default_static_modules="$default_static_modules vfs_hpuxacl"
5223                 ;;
5224         *irix*)
5225                 AC_MSG_NOTICE(Using IRIX ACLs)
5226                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5227                 default_static_modules="$default_static_modules vfs_irixacl"
5228                 ;;
5229         *aix*)
5230                 AC_MSG_NOTICE(Using AIX ACLs)
5231                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5232                 default_static_modules="$default_static_modules vfs_aixacl"
5233                 ;;
5234         *osf*)
5235                 AC_MSG_NOTICE(Using Tru64 ACLs)
5236                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5237                 ACL_LIBS="$ACL_LIBS -lpacl"
5238                 default_static_modules="$default_static_modules vfs_tru64acl"
5239                 ;;
5240         *darwin*)
5241                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5242                 ;;
5243         *)
5244                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5245                 case "$host_os" in
5246                 *linux*)
5247                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5248                         ;;
5249                 esac
5250                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5251                         acl_LIBS=$LIBS
5252                         LIBS="$LIBS $ACL_LIBS"
5253                         AC_TRY_LINK([
5254                                 #include <sys/types.h>
5255                                 #include <sys/acl.h>
5256                         ],[
5257                                 acl_t acl;
5258                                 int entry_id;
5259                                 acl_entry_t *entry_p;
5260                                 return acl_get_entry(acl, entry_id, entry_p);
5261                         ],
5262                         [samba_cv_HAVE_POSIX_ACLS=yes],
5263                         [samba_cv_HAVE_POSIX_ACLS=no])
5264                         LIBS=$acl_LIBS
5265                 ])
5266                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5267                         AC_MSG_NOTICE(Using posix ACLs)
5268                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5269                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5270                                 acl_LIBS=$LIBS
5271                                 LIBS="$LIBS $ACL_LIBS"
5272                                 AC_TRY_LINK([
5273                                         #include <sys/types.h>
5274                                         #include <sys/acl.h>
5275                                 ],[
5276                                         acl_permset_t permset_d;
5277                                         acl_perm_t perm;
5278                                         return acl_get_perm_np(permset_d, perm);
5279                                 ],
5280                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5281                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5282                                 LIBS=$acl_LIBS
5283                         ])
5284                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5285                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5286                         fi
5287                         default_static_modules="$default_static_modules vfs_posixacl"
5288                 else
5289                         AC_MSG_NOTICE(ACL support is not avaliable)
5290                 fi
5291                 ;;
5292         esac
5293 fi # with_acl_support
5295 #################################################
5296 # check if we have FreeBSD sunacl
5297 case "$host_os" in
5298 *freebsd*)
5299     AC_CHECK_HEADER(sunacl.h)
5300     if test x"$ac_cv_header_sunacl_h" = xyes ; then
5301        AC_DEFINE(HAVE_FREEBSD_SUNACL_H,1,[Whether we have FreeBSD sunacl around])
5302        ZFSACL_LIBS=-lsunacl
5303        AC_SUBST(ZFSACL_LIBS)
5304        default_shared_modules="$default_shared_modules vfs_zfsacl"
5305     fi
5306     ;;
5307 esac
5309 #################################################
5310 # check for AIO support
5312 with_aio=auto
5313 AC_MSG_CHECKING(whether to support asynchronous io)
5314 AC_ARG_WITH(aio-support,
5315 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=auto)])],
5316 [  case "$withval" in
5317     yes|no)
5318         with_aio=$withval
5319         ;;
5320    esac ])
5322 AC_MSG_RESULT($with_aio)
5324 if test x"$with_aio" = x"no"; then
5325     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5326 else
5327                 AIO_LIBS=$LIBS
5328                 no_rt_LIBS=$LIBS
5329                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5330                 LIBS=$no_rt_LIBS
5331                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5332                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5333                 aio_LIBS=$LIBS
5334                 LIBS=$AIO_LIBS
5335                 AC_TRY_LINK([#include <sys/types.h>
5336 #include <aio.h>],
5337 [ struct aiocb a; return aio_read(&a);],
5338 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5339                 LIBS=$aio_LIBS])
5340                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5341                         AC_DEFINE(HAVE_AIO, 1, [Using asynchronous io])
5342                         LIBS=$AIO_LIBS
5343                         AC_MSG_CHECKING(for aio_read)
5344                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5345 int main() { struct aiocb a; return aio_read(&a); }])],
5346 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5347 [AC_MSG_RESULT(no)])
5349                         AC_MSG_CHECKING(for aio_write)
5350                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5351 int main() { struct aiocb a; return aio_write(&a); }])],
5352 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5353 [AC_MSG_RESULT(no)])
5355                         AC_MSG_CHECKING(for aio_fsync)
5356                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5357 int main() { struct aiocb a; return aio_fsync(1, &a); }])],
5358 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5359 [AC_MSG_RESULT(no)])
5361                         AC_MSG_CHECKING(for aio_return)
5362                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5363 int main() { struct aiocb a; return aio_return(&a); }])],
5364 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5365 [AC_MSG_RESULT(no)])
5367                         AC_MSG_CHECKING(for aio_error)
5368                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5369 int main() { struct aiocb a; return aio_error(&a); }])],
5370 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5371 [AC_MSG_RESULT(no)])
5373                         AC_MSG_CHECKING(for aio_cancel)
5374                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5375 int main() { struct aiocb a; return aio_cancel(1, &a); }])],
5376 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5377 [AC_MSG_RESULT(no)])
5379                         AC_MSG_CHECKING(for aio_suspend)
5380                         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <aio.h>
5381 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }])],
5382 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5383 [AC_MSG_RESULT(no)])
5384                 else
5385                         AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5386                         AC_MSG_RESULT(no)
5387                 fi
5390 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5391         x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5392         default_shared_modules="$default_shared_modules vfs_aio_fork"
5395 # Check for Linux kernel aio support.
5396 case "$host_os" in
5397 *linux*)
5398     AC_CHECK_LIB(aio,io_submit,[AIO_LIBS="$LIBS -laio"])
5399     AC_CACHE_CHECK([for Linux kernel asynchronous io support],samba_cv_HAVE_LINUX_KERNEL_AIO,[
5400     aio_LIBS=$LIBS
5401     LIBS=$AIO_LIBS
5402     AC_TRY_LINK([#include <unistd.h>
5403 #include <stdlib.h>
5404 #include <sys/types.h>
5405 #include <fcntl.h>
5406 #include <sys/eventfd.h>
5407 #include <libaio.h>],
5408 [ struct io_event ioev;
5409 struct iocb *ioc;
5410 io_context_t ctx;
5411 struct timespec ts;
5412 int fd;
5413 char *buf;
5414 fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
5415 io_queue_init(128,&ctx);
5416 io_prep_pwrite(ioc, 1, buf, 1, 0);
5417 io_prep_pread(ioc, 1, buf, 1, 0);
5418 io_set_eventfd(ioc, fd);
5419 io_set_callback(ioc, (io_callback_t)(0));
5420 io_submit(ctx, 1, &ioc);
5421 io_getevents(ctx, 1, 1, &ioev, &ts);],
5422 samba_cv_HAVE_LINUX_KERNEL_AIO=yes,samba_cv_HAVE_LINUX_KERNEL_AIO=no)
5423                 LIBS=$aio_LIBS])
5424     if test x"$samba_cv_HAVE_LINUX_KERNEL_AIO" = x"yes"; then
5425         default_shared_modules="$default_shared_modules vfs_aio_linux"
5426     fi
5427     ;;
5428 esac
5430 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5431   default_shared_modules="$default_shared_modules vfs_aio_posix"
5434 #################################################
5435 # check for sendfile support
5437 AC_MSG_CHECKING(whether sendfile support should be built in)
5438 AC_ARG_WITH(sendfile-support,
5439 [AS_HELP_STRING([--with-sendfile-support], [Whether sendfile support should be built in (default=auto)])],
5440 [ case "$withval" in
5441   yes|no)
5442         AC_MSG_RESULT($withval);
5443         with_sendfile_support=$withval
5444         ;;
5445   *)
5446         AC_MSG_RESULT(yes)
5447         with_sendfile_support=auto
5448         ;;
5449   esac ],
5452 if test x$with_sendfile_support != xno ; then
5453     case "$host_os" in
5454         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5455                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5456                 AC_TRY_LINK([#include <sys/sendfile.h>],
5458 int tofd, fromfd;
5459 off_t offset;
5460 size_t total;
5461 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5463 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5465         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5466                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5467                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5468                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5469         else
5470                 AC_MSG_RESULT(no);
5471         fi
5473         ;;
5474         *freebsd* | *dragonfly* )
5475                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5476                 AC_TRY_LINK([\
5477 #include <sys/types.h>
5478 #include <unistd.h>
5479 #include <sys/socket.h>
5480 #include <sys/uio.h>],
5482         int fromfd, tofd, ret, total=0;
5483         off_t offset, nwritten;
5484         struct sf_hdtr hdr;
5485         struct iovec hdtrl;
5486         hdr.headers = &hdtrl;
5487         hdr.hdr_cnt = 1;
5488         hdr.trailers = NULL;
5489         hdr.trl_cnt = 0;
5490         hdtrl.iov_base = NULL;
5491         hdtrl.iov_len = 0;
5492         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5494 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5496         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5497                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5498                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5499                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5500         else
5501                 AC_MSG_RESULT(no);
5502         fi
5503         ;;
5504         *darwin*)
5505                 AC_CACHE_CHECK([for Darwin sendfile support],
5506                         samba_cv_HAVE_SENDFILE,
5507                         [
5508                         AC_TRY_LINK([
5509 #include <sys/types.h>
5510 #include <sys/socket.h>
5511 #include <sys/uio.h>
5512                         ],
5513                         [
5514         int fromfd, tofd, ret;
5515         off_t offset, nwritten;
5516         struct sf_hdtr hdr;
5517         struct iovec hdtrl;
5518         hdr.headers = &hdtrl;
5519         hdr.hdr_cnt = 1;
5520         hdr.trailers = (void *)0;
5521         hdr.trl_cnt = 0;
5522         hdtrl.iov_base = (void *)0;
5523         hdtrl.iov_len = 0;
5524         ret = sendfile(fromfd, tofd, offset, &nwritten, &hdr, 0);
5525                         ],
5526                         samba_cv_HAVE_SENDFILE=yes,
5527                         samba_cv_HAVE_SENDFILE=no)])
5529         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5530                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5531                 AC_DEFINE(DARWIN_SENDFILE_API,1,[Whether the Darwin sendfile() API is available])
5532                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5533         else
5534                 AC_MSG_RESULT(no);
5535         fi
5536         ;;
5537         *hpux*|*osf*)
5538                 AC_CACHE_CHECK([for osf/hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5539                 AC_TRY_LINK([\
5540 #include <sys/socket.h>
5541 #include <sys/uio.h>],
5543         int fromfd, tofd;
5544         size_t total=0;
5545         struct iovec hdtrl[2];
5546         ssize_t nwritten;
5547         off_t offset;
5549         hdtrl[0].iov_base = 0;
5550         hdtrl[0].iov_len = 0;
5552         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5554 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5555         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5556                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5557                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the osf/hpux sendfile() API is available])
5558                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5559         else
5560                 AC_MSG_RESULT(no);
5561         fi
5562         ;;
5564         *solaris*)
5565                 AC_CHECK_LIB(sendfile,sendfilev)
5566                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5567                 AC_TRY_LINK([\
5568 #include <sys/sendfile.h>],
5570         int sfvcnt;
5571         size_t xferred;
5572         struct sendfilevec vec[2];
5573         ssize_t nwritten;
5574         int tofd;
5576         sfvcnt = 2;
5578         vec[0].sfv_fd = SFV_FD_SELF;
5579         vec[0].sfv_flag = 0;
5580         vec[0].sfv_off = 0;
5581         vec[0].sfv_len = 0;
5583         vec[1].sfv_fd = 0;
5584         vec[1].sfv_flag = 0;
5585         vec[1].sfv_off = 0;
5586         vec[1].sfv_len = 0;
5587         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5589 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5591         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5592                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5593                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5594                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5595         else
5596                 AC_MSG_RESULT(no);
5597         fi
5598         ;;
5599         *aix*)
5600                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5601                 AC_TRY_LINK([\
5602 #include <sys/socket.h>],
5604         int fromfd, tofd;
5605         size_t total=0;
5606         struct sf_parms hdtrl;
5607         ssize_t nwritten;
5609         hdtrl.header_data = 0;
5610         hdtrl.header_length = 0;
5611         hdtrl.file_descriptor = fromfd;
5612         hdtrl.file_offset = 0;
5613         hdtrl.file_bytes = 0;
5614         hdtrl.trailer_data = 0;
5615         hdtrl.trailer_length = 0;
5617         nwritten = send_file(&tofd, &hdtrl, 0);
5619 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5620         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5621                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5622                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5623                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5624         else
5625                 AC_MSG_RESULT(no);
5626         fi
5627         ;;
5628         *)
5629         ;;
5630     esac
5633 if test x$with_sendfile_support = xyes -a x"$samba_cv_HAVE_SENDFILE" != xyes ; then
5634         AC_MSG_ERROR(sendfile support requested but sendfile not available )
5637 ############################################
5638 # See if we have the Linux readahead syscall.
5640 AC_CACHE_CHECK([for Linux readahead],
5641                 samba_cv_HAVE_LINUX_READAHEAD,[
5642     AC_TRY_LINK([
5643 #if defined(HAVE_UNISTD_H)
5644 #include <unistd.h>
5645 #endif
5646 #include <fcntl.h>],
5647     [ssize_t err = readahead(0,0,0x80000);],
5648     samba_cv_HAVE_LINUX_READAHEAD=yes,
5649     samba_cv_HAVE_LINUX_READAHEAD=no)])
5651 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5652   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5653              [Whether Linux readahead is available])
5656 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5658 ############################################
5659 # See if we have the posix_fadvise syscall.
5661 AC_CACHE_CHECK([for posix_fadvise],
5662                 samba_cv_HAVE_POSIX_FADVISE,[
5663     AC_TRY_LINK([
5664 #if defined(HAVE_UNISTD_H)
5665 #include <unistd.h>
5666 #endif
5667 #include <fcntl.h>],
5668     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5669     samba_cv_HAVE_POSIX_FADVISE=yes,
5670     samba_cv_HAVE_POSIX_FADVISE=no)])
5672 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5673   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5674              [Whether posix_fadvise is available])
5677 ############################################
5678 # See if we have the openat syscall.
5680 AC_CACHE_CHECK([for openat],
5681                 samba_cv_HAVE_OPENAT,[
5682     AC_TRY_LINK([
5683 #if defined(HAVE_UNISTD_H)
5684 #include <unistd.h>
5685 #endif
5686 #include <fcntl.h>],
5687     [int fd = openat(AT_FDCWD, ".", O_RDONLY);],
5688     samba_cv_HAVE_OPENAT=yes,
5689     samba_cv_HAVE_OPENAT=no)])
5691 if test x"$samba_cv_HAVE_OPENAT" = x"yes"; then
5692     AC_DEFINE(HAVE_OPENAT,1, [Whether openat is available])
5695 ############################################
5696 # See if we have the Linux splice syscall.
5698 case "$host_os" in
5699 *linux*)
5700 AC_CACHE_CHECK([for Linux splice],
5701                 samba_cv_HAVE_LINUX_SPLICE,[
5702     AC_TRY_LINK([
5703 #if defined(HAVE_UNISTD_H)
5704 #include <unistd.h>
5705 #endif
5706 #include <fcntl.h>],
5707     [long ret = splice(0,0,1,0,400,SPLICE_F_MOVE);],
5708     samba_cv_HAVE_LINUX_SPLICE=yes,
5709     samba_cv_HAVE_LINUX_SPLICE=no)])
5712 samba_cv_HAVE_LINUX_SPLICE=no
5714 esac
5716 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5717   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5718              [Whether Linux splice is available])
5721 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5723 ############################################
5724 # See if we have the a broken readlink syscall.
5726 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5727 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5728         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5730 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5731         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5734 #################################################
5735 # Check whether winbind is supported on this platform.  If so we need to
5736 # build and install client programs, sbin programs and shared libraries
5738 AC_MSG_CHECKING(whether to build winbind)
5740 # Initially, the value of $host_os decides whether winbind is supported
5742 HAVE_WINBIND=yes
5743 HAVE_WBCLIENT=no
5745 # Define external wbclient library to link against.  This disables winbind.
5746 # We define this here so --with-winbind can override it.
5747 AC_ARG_WITH(wbclient,
5748 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5750   case "$withval" in
5751         no)
5752                 HAVE_WBCLIENT=no
5753                 ;;
5754         yes)
5755                 HAVE_WBCLIENT=yes
5756                 HAVE_WINBIND=no
5757                 ;;
5758         *)
5759                 HAVE_WBCLIENT=yes
5760                 HAVE_WINBIND=no
5761                 WBCLIENT_INCLUDES="-I$withval/include"
5762                 WBCLIENT_LDFLAGS="-L$withval/lib"
5763                 ;;
5764   esac ],
5767 AC_SUBST(WBCLIENT_INCLUDES)
5768 AC_SUBST(WBCLIENT_LDFLAGS)
5769 AC_SUBST(WBCLIENT_LIBS)
5772 # Define the winbind shared library name and any specific linker flags
5773 # it needs to be built with.
5775 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5776 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5777 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5778 NSSSONAMEVERSIONSUFFIX=""
5780 case "$host_os" in
5781         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5782                 NSSSONAMEVERSIONSUFFIX=".2"
5783                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5784                 ;;
5785         *freebsd[[5-9]]* | *freebsd1[[0-9]]*)
5786                 # FreeBSD winbind client is implemented as a wrapper around
5787                 # the Linux version.
5788                 NSSSONAMEVERSIONSUFFIX=".1"
5789                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5790                     ../nsswitch/winbind_nss_linux.o"
5791                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5792                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5793                 ;;
5795         *netbsd*[[3-9]]* | *netbsd1[[0-9]]*)
5796                 # NetBSD winbind client is implemented as a wrapper
5797                 # around the Linux version. It needs getpwent_r() to
5798                 # indicate libc's use of the correct nsdispatch API.
5799                 #
5800                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5801                         WINBIND_NSS_EXTRA_OBJS="\
5802                             ../nsswitch/winbind_nss_netbsd.o \
5803                             ../nsswitch/winbind_nss_linux.o"
5804                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5805                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5806                 else
5807                         HAVE_WINBIND=no
5808                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5809                 fi
5810                 ;;
5811         *irix*)
5812                 # IRIX has differently named shared libraries
5813                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5814                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5815                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5816                 ;;
5817         *solaris*)
5818                 # Solaris winbind client is implemented as a wrapper around
5819                 # the Linux version.
5820                 NSSSONAMEVERSIONSUFFIX=".1"
5821                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5822                     ../nsswitch/winbind_nss_linux.o"
5823                 ;;
5824         *hpux11*)
5825                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5826                 ;;
5827         *aix*)
5828                 # AIX has even differently named shared libraries.  No
5829                 # WINS support has been implemented yet.
5830                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5831                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5832                 WINBIND_NSS="../nsswitch/WINBIND"
5833                 WINBIND_WINS_NSS=""
5834                 ;;
5835         *darwin*)
5836                 ;;
5837         *)
5838                 HAVE_WINBIND=no
5839                 winbind_no_reason=", unsupported on $host_os"
5840                 ;;
5841 esac
5843 # Check the setting of --with-winbind
5845 AC_ARG_WITH(winbind,
5846 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5848   case "$withval" in
5849         yes)
5850                 HAVE_WINBIND=yes
5851                 HAVE_WBCLIENT=no
5852                 ;;
5853         no)
5854                 HAVE_WINBIND=no
5855                 winbind_reason=""
5856                 ;;
5857   esac ],
5860 # We need unix domain sockets for winbind
5862 if test x"$HAVE_WINBIND" = x"yes"; then
5863         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5864                 winbind_no_reason=", no unix domain socket support on $host_os"
5865                 HAVE_WINBIND=no
5866         fi
5869 # Display test results
5871 if test x"$HAVE_WINBIND" = x"no"; then
5872         WINBIND_NSS=""
5873         WINBIND_WINS_NSS=""
5875 if test x"$HAVE_WBCLIENT" = x"yes"; then
5876         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
5877                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
5878         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
5879         AC_MSG_RESULT(yes)
5880         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
5881         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo"
5882 else
5883         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5884                 BUILD_LIBWBCLIENT_SHARED=no
5885         else
5886                 BUILD_LIBWBCLIENT_SHARED=yes
5887         fi
5889         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5890         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5891         LIBWBCLIENT_SOVER=0
5892         LIBWBCLIENT_FULLVER=0
5893         LIBWBCLIENT_SHARED_TARGET_SOVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_SOVER
5894         LIBWBCLIENT_SHARED_TARGET_FULLVER=$LIBWBCLIENT_SHARED_TARGET.$LIBWBCLIENT_FULLVER
5895         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5896                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5897                 ## Only worry about libwbclient if we have shared
5898                 # library support
5899                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5900                 LIBWBCLIENT=libwbclient
5901                 INSTALL_LIBWBCLIENT=installlibwbclient
5902                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5903                 LIBWBCLIENT_LIBS="-lwbclient"
5904         else
5905                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5906                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
5907         fi
5910 if test x"$HAVE_WINBIND" = x"yes"; then
5911         AC_MSG_RESULT(yes)
5912         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5914         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo"
5915         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd"
5916         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5917                 PAM_MODULES="$PAM_MODULES pam_winbind"
5918                 INSTALL_PAM_MODULES="installpammodules"
5919                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5920         fi
5922         # we use winbind, check for krb5 locate_plugin support:
5923         AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
5924                 [[#ifdef HAVE_KRB5_H
5925                  #include <krb5.h>
5926                  #endif
5927         ]])
5928         if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
5929                 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
5930                 if test x"$BLDSHARED" = x"true" ; then
5931                         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
5932                 fi
5933         fi
5934         # end of krb5 locate_plugin check
5935 else
5936         AC_MSG_RESULT(no$winbind_no_reason)
5939 AC_SUBST(WINBIND_NSS)
5940 AC_SUBST(WINBIND_WINS_NSS)
5941 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5942 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5943 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5945 AC_SUBST(WINBIND_KRB5_LOCATOR)
5947 # Solaris 10 does have new member in nss_XbyY_key
5948 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5949                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5950                 [#include <nss_dbdefs.h>])
5952 # Solaris has some extra fields in struct passwd that need to be
5953 # initialised otherwise nscd crashes.
5955 AC_CHECK_MEMBER(struct passwd.pw_comment,
5956                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5957                 [#include <pwd.h>])
5959 AC_CHECK_MEMBER(struct passwd.pw_age,
5960                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5961                 [#include <pwd.h>])
5963 # AIX 4.3.x and 5.1 do not have as many members in
5964 # struct secmethod_table as AIX 5.2
5965 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5966        [#include <usersec.h>])
5967 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5968        [#include <usersec.h>])
5970 #################################################
5971 # Check to see if we should use the included popt
5973 AC_ARG_WITH(included-popt,
5974 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5976   case "$withval" in
5977         yes)
5978                 INCLUDED_POPT=yes
5979                 ;;
5980         no)
5981                 INCLUDED_POPT=no
5982                 ;;
5983   esac ],
5985 if test x"$INCLUDED_POPT" != x"yes"; then
5986     AC_CHECK_LIB(popt, poptGetContext,
5987                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5990 AC_MSG_CHECKING(whether to use included popt)
5991 if test x"$INCLUDED_POPT" = x"yes"; then
5992     AC_MSG_RESULT(yes)
5993     BUILD_POPT='$(POPT_OBJ)'
5994     POPTLIBS='$(POPT_OBJ)'
5995     FLAGS1="-I\$(srcdir)/../lib/popt"
5996 else
5997     AC_MSG_RESULT(no)
5998         BUILD_POPT=""
5999     POPTLIBS="-lpopt"
6001 AC_SUBST(BUILD_POPT)
6002 AC_SUBST(POPTLIBS)
6003 AC_SUBST(FLAGS1)
6005 #################################################
6006 # Check if user wants DNS service discovery support
6008 AC_ARG_ENABLE(dnssd,
6009 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6011 AC_SUBST(DNSSD_LIBS)
6012 if test x"$enable_dnssd" = x"yes"; then
6013     have_dnssd_support=yes
6015     AC_CHECK_HEADERS(dns_sd.h)
6016     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6017         have_dnssd_support=no
6018     fi
6020     # On Darwin the DNSSD API is in libc, but on other platforms it's
6021     # probably in -ldns_sd
6022     AC_CHECK_FUNCS(DNSServiceRegister)
6023     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6024     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6025             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6026         have_dnssd_support=no
6027     fi
6029     if test x"$have_dnssd_support" = x"yes"; then
6030         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6031                 [Whether to enable DNS service discovery support])
6032     else
6033         if test x"$enable_dnssd" = x"yes"; then
6034             AC_MSG_ERROR(DNS service discovery support not available)
6035         fi
6036     fi
6040 #################################################
6041 # Check if user wants avahi support
6043 AC_ARG_ENABLE(avahi,
6044 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6046 if test x"$enable_avahi" != x"no"; then
6047     have_avahi_support=yes
6049     AC_CHECK_HEADERS(avahi-common/watch.h)
6050     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6051         have_avahi_support=no
6052     fi
6054     AC_CHECK_HEADERS(avahi-client/client.h)
6055     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6056         have_avahi_support=no
6057     fi
6059     save_LIBS="$LIBS"
6060     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6061     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6062     LIBS="$save_LIBS"
6064     if test x"$have_avahi_client_new" != x"yes" -o \
6065        x"$have_avahi_strerror" != x"yes" ; then
6066         have_avahi_support=no
6067     fi
6069     if test x"$have_avahi_support" = x"yes"; then
6070         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6071         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6072                 [Whether to enable avahi support])
6073         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6074     else
6075         if test x"$enable_avahi" = x"yes"; then
6076             AC_MSG_ERROR(avahi support not available)
6077         fi
6078     fi
6082 #################################################
6083 # Set pthread stuff
6085 PTHREAD_CFLAGS=error
6086 PTHREAD_LDFLAGS=error
6088 # If it's error, then the user didn't 
6089 # define it.
6090 if test "x$PTHREAD_LDFLAGS" = xerror; then
6091   AC_CHECK_LIB(pthread, pthread_attr_init, [
6092              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6093              PTHREAD_LDFLAGS="-lpthread" ])
6096 if test "x$PTHREAD_LDFLAGS" = xerror; then
6097   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6098              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6099              PTHREAD_LDFLAGS="-lpthreads" ])
6102 if test "x$PTHREAD_LDFLAGS" = xerror; then
6103    AC_CHECK_LIB(c_r, pthread_attr_init, [
6104                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6105                 PTHREAD_LDFLAGS="-pthread" ])
6108 if test "x$PTHREAD_LDFLAGS" = xerror; then
6109    AC_CHECK_FUNC(pthread_attr_init, [
6110                  PTHREAD_CFLAGS="-D_REENTRANT"
6111                  PTHREAD_LDFLAGS="-lpthread" ])
6114 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6115 # pthread_attr_init. On pthread_mutex_lock it works there...
6116 if test "x$PTHREAD_LDFLAGS" = xerror; then
6117    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6118                 PTHREAD_CFLAGS="-D_REENTRANT"
6119                 PTHREAD_LDFLAGS="-lpthread" ])
6122 AC_SUBST(PTHREAD_CFLAGS)
6123 AC_SUBST(PTHREAD_LDFLAGS)
6125 samba_cv_HAVE_PTHREAD=no
6126 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6127         samba_cv_HAVE_PTHREAD=yes
6128         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6129         ac_save_CFLAGS=$CFLAGS
6130         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6131         ac_save_LDFLAGS=$LDFLAGS
6132         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6133         AC_CHECK_HEADERS(pthread.h)
6134         CFLAGS=$ac_save_CFLAGS
6135         LDFLAGS=$ac_save_LDFLAGS
6136         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6139 #################################################
6140 # Check if user wants pthreadpool support
6142 AC_ARG_ENABLE(pthreadpool,
6143 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=yes)])])
6145 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6146         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6149 if test x"$enable_pthreadpool" != x"no" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6150     LIBS="$LIBS $PTHREAD_LDFLAGS"
6151     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6152     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool.o")
6153     default_shared_modules="$default_shared_modules vfs_aio_pthread"
6154 else
6155     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool/pthreadpool_sync.o")
6158 PTHREADPOOLTEST="bin/pthreadpooltest"
6159 AC_SUBST(PTHREADPOOLTEST)
6162 #################################################
6163 # Check to see if we should use the included iniparser
6165 AC_ARG_WITH(included-iniparser,
6166 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6168   case "$withval" in
6169         yes)
6170                 INCLUDED_INIPARSER=yes
6171                 ;;
6172         no)
6173                 INCLUDED_INIPARSER=no
6174                 ;;
6175   esac ],
6177 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6178     AC_CHECK_LIB(iniparser, iniparser_load,
6179                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6182 AC_MSG_CHECKING(whether to use included iniparser)
6183 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6184     AC_MSG_RESULT(yes)
6185     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6186         INIPARSERLIBS=""
6187     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6188 else
6189     AC_MSG_RESULT(no)
6190         BUILD_INIPARSER=""
6191     INIPARSERLIBS="-liniparser"
6193 AC_SUBST(BUILD_INIPARSER)
6194 AC_SUBST(INIPARSERLIBS)
6195 AC_SUBST(FLAGS1)
6197 AC_ARG_ENABLE(fault-handler,[AS_HELP_STRING([--disable-fault-handler], [Disable the default handler])])
6199 if test x"$enable_fault_handler" = x"no"; then
6200         AC_DEFINE(HAVE_DISABLE_FAULT_HANDLER, 1, [Disable the default signal handler])
6203 ###################################################
6204 # Check for different/missing (set|get|end)netgrent prototypes
6205 CFLAGS_SAVE=$CFLAGS
6206 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
6207         CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
6209 AC_CACHE_CHECK([for setnetgrent prototype],samba_cv_setnetgrent_prototype, [
6210     AC_TRY_COMPILE([#include<netdb.h>
6211                     #ifdef HAVE_NETGROUP_H
6212                     #include<netgroup.h>
6213                     #endif],[setnetgrent("foo")],
6214                     samba_cv_setnetgrent_prototype=yes, samba_cv_setnetgrent_prototype=no)])
6215 if test x"$samba_cv_setnetgrent_prototype" = x"yes"; then
6216     AC_DEFINE(HAVE_SETNETGRENT_PROTOTYPE, 1, [If setnetgrent prototype is defined])
6218 AC_CACHE_CHECK([for getnetgrent prototype],samba_cv_getnetgrent_prototype, [
6219     AC_TRY_COMPILE([#include<netdb.h>
6220                     #ifdef HAVE_NETGROUP_H
6221                     #include<netgroup.h>
6222                     #endif],[char *dom, *user,*host; getnetgrent(&dom,&user,&host)],
6223                     samba_cv_getnetgrent_prototype=yes, samba_cv_getnetgrent_prototype=no)])
6224 if test x"$samba_cv_getnetgrent_prototype" = x"yes"; then
6225     AC_DEFINE(HAVE_GETNETGRENT_PROTOTYPE, 1, [If getnetgrent prototype is defined])
6227 AC_CACHE_CHECK([for endnetgrent prototype],samba_cv_endnetgrent_prototype, [
6228     AC_TRY_COMPILE([#include<netdb.h>
6229                     #ifdef HAVE_NETGROUP_H
6230                     #include<netgroup.h>
6231                     #endif],[endnetgrent()],
6232                     samba_cv_endnetgrent_prototype=yes, samba_cv_endnetgrent_prototype=no)])
6233 if test x"$samba_cv_endnetgrent_prototype" = x"yes"; then
6234     AC_DEFINE(HAVE_ENDNETGRENT_PROTOTYPE, 1, [If endnetgrent prototype is defined])
6237 CFLAGS=$CFLAGS_SAVE
6239 # Checks for POSIX ignorant BSD style statvfs() function
6240 # Start
6241 AC_CHECK_HEADERS(sys/param.h sys/mount.h)
6243 AC_MSG_CHECKING([checking for posix ignorant *bsd style statfs struct])
6244 AC_CACHE_VAL(bsdstatvfs_cv_statfs,[
6245              AC_TRY_RUN([
6246                 #ifdef HAVE_SYS_PARAM_H
6247                 #include <sys/param.h>
6248                 #endif
6249                 #ifdef HAVE_SYS_MOUNT_H
6250                 #include <sys/mount.h>
6251                 #endif
6252                 int main (void)
6253                 {
6254                         struct statfs fsd;
6255                         fsd.f_bsize = 0;
6256                         fsd.f_iosize = 0;
6257                         return (statfs (".", &fsd));
6258                 }],
6259                 bsdstatvfs_cv_statfs=yes,
6260                 bsdstatvfs_cv_statfs=no,
6261                 bsdstatvfs_cv_statfs=no)])
6262 AC_MSG_RESULT($bsdstatvfs_cv_statfs)
6264 if test $bsdstatvfs_cv_statfs = yes; then
6265   AC_DEFINE(BSD_STYLE_STATVFS,1,[Whether statfs struct is *bsd style])
6267 # End of checks POSIX ignorant BSD style statvfs() function
6269 # Checks for the vfs_fileid module
6270 # Start
6271 AC_CHECK_FUNC(getmntent)
6273 AC_CHECK_HEADERS(sys/statfs.h)
6275 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid])
6276 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6277              AC_TRY_RUN([
6278                 #include <sys/types.h>
6279                 #include <sys/statfs.h>
6280                 int main(void)
6281                 {
6282                         struct statfs fsd;
6283                         fsid_t fsid = fsd.f_fsid;
6284                         return statfs (".", &fsd);
6285                 }],
6286                 vfsfileid_cv_statfs=yes,
6287                 vfsfileid_cv_statfs=no,
6288                 vfsfileid_cv_statfs=cross)
6290 AC_MSG_RESULT($vfsfileid_cv_statfs)
6292 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6293         x"$vfsfileid_cv_statfs" = x"yes"; then
6294         default_shared_modules="$default_shared_modules vfs_fileid"
6296 # End
6297 # Checks for the vfs_fileid module
6300 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6302         eval MODULE_DEFAULT_$i=STATIC
6303 done
6305 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6307         dnl Fall back to static if we cannot build shared libraries
6308         eval MODULE_DEFAULT_$i=STATIC
6310         if test $BLDSHARED = true; then
6311                 eval MODULE_DEFAULT_$i=SHARED
6312         fi
6313 done
6315 dnl Always build these modules static
6316 MODULE_rpc_spoolss=STATIC
6317 MODULE_rpc_srvsvc=STATIC
6318 MODULE_idmap_tdb=STATIC
6319 MODULE_idmap_passdb=STATIC
6320 MODULE_idmap_nss=STATIC
6322 MODULE_nss_info_template=STATIC
6324 AC_ARG_WITH(static-modules,
6325 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6326 [ if test $withval; then
6327         for i in `echo $withval | sed -e 's/,/ /g'`
6328         do
6329                 eval MODULE_$i=STATIC
6330         done
6331 fi ])
6333 AC_ARG_WITH(shared-modules,
6334 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6335 [ if test $withval; then
6336         for i in `echo $withval | sed -e 's/,/ /g'`
6337         do
6338                         eval MODULE_$i=SHARED
6339         done
6340 fi ])
6342 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6343                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6344         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6345         AC_SUBST(SMBD_FAM_LIBS)
6348 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o,
6349                    "bin/ldapsam.$SHLIBEXT", PDB,
6350                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6351 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6352 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6353 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6354 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6356 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6357 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6358 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6359 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6360 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6361 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6362 SMB_MODULE(idmap_autorid, winbindd/idmap_autorid.o, "bin/autorid.$SHLIBEXT", IDMAP)
6363 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6364 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6365 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6367 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6368 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6370 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6371 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6372 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6373 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6374 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6375 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6376 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6377 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6379 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6380 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6381 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6382 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6383 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6384 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6385 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6386 SMB_MODULE(vfs_fake_acls, \$(VFS_FAKE_ACLS_OBJ), "bin/fake_acls.$SHLIBEXT", VFS)
6387 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6388 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6389 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6390 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6391 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6392 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6393 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6394 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6395 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6396 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6397 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6398 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6399 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6400 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6401 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6402 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6403 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6404 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6405 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6406 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6407 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6408 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6409 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6410 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6411 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6412 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6413 SMB_MODULE(vfs_aio_pthread, \$(VFS_AIO_PTHREAD_OBJ), "bin/aio_pthread.$SHLIBEXT", VFS)
6414 SMB_MODULE(vfs_aio_posix, \$(VFS_AIO_POSIX_OBJ), "bin/aio_posix.$SHLIBEXT", VFS)
6415 SMB_MODULE(vfs_aio_linux, \$(VFS_AIO_LINUX_OBJ), "bin/aio_linux.$SHLIBEXT", VFS)
6416 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6417 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6418 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6419 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6420 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6421 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6422 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6423 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6424 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6425 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6426 SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS)
6427 SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS)
6428 SMB_MODULE(vfs_media_harmony, \$(VFS_MEDIA_HARMONY_OBJ), "bin/media_harmony.$SHLIBEXT", VFS)
6430 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6432 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6433 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6435 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6436 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6437 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6438 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6440 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6442 #################################################
6443 # do extra things if we are running insure
6445 if test "${ac_cv_prog_CC}" = "insure"; then
6446         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6449 #################################################
6450 # If run from the build farm, enable NASTY hacks
6451 #################################################
6452 AC_MSG_CHECKING(whether to enable features for selftest)
6453 if test x"$selftest" = x"yes"; then
6454         AC_MSG_RESULT(yes)
6455         AC_DEFINE(ENABLE_SELFTEST, 1, [Support features needed for selftest])
6456 else
6457         AC_MSG_RESULT(no)
6460 #################################################
6461 # check for bad librt/libpthread interactions
6463 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6464     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6465     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6466     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6468 SMB_IF_RTSIGNAL_BUG(
6469         [
6470             # Have RT_SIGNAL bug, need to check whether the problem will
6471             # affect anything we have configured.
6473             rt_do_error=no
6474             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6475                 if test x"$rt_signal_lease_ok" = x"no" ; then
6476                     rt_do_error=yes
6477                 fi
6478             fi
6480             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6481                 if test x"$rt_signal_notify_ok" = x"no" ; then
6482                     rt_do_error=yes
6483                 fi
6484             fi
6486             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6487                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6488                 if test x"$rt_signal_aio_ok" = x"no" ; then
6489                     rt_do_error=yes
6490                 fi
6491             fi
6493             if test x"$rt_do_error" = x"yes" ; then
6494                 SMB_IS_LIBPTHREAD_LINKED(
6495                     [
6496                         cat<<MSG
6498 *** On this platforms, linking Samba against pthreads causes problems
6499 *** with the oplock and change notification mechanisms. You may be
6500 *** using pthreads as a side-effect of using the --with-aio-support
6501 *** or --with-profiling-data options. Please remove these and try again.
6504                     ],
6505                     [
6506                         cat<<MSG
6508 *** On this platform, the oplock and change notification mechanisms do not
6509 *** appear to work. Please report this problem to samba-technical@samba.org
6510 *** and attach the config.log file from this directory.
6513                     ])
6514                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6515             fi
6516         ],
6517         [
6518             # no RT_SIGNAL bug, we are golden
6519             SMB_IS_LIBPTHREAD_LINKED(
6520                 [
6521                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6522                 ])
6524         ],
6525         [
6526             # cross compiling, I hope you know what you are doing
6527             true
6528         ])
6532 m4_include(../lib/zlib/zlib.m4)
6534 if test x$smbtorture4_possible = xyes; then
6535         SMBTORTURE4="bin/smbtorture4"
6536         AC_SUBST(SMBTORTURE4)
6539 AC_SUBST(ZLIB_LIBS)
6540 AC_SUBST(ZLIB_OBJS)
6541 AC_ZLIB([ZLIB_OBJS=""], [
6542         ZLIB_LIBS=""
6543         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6544                      deflate.o trees.o zutil.o inflate.o infback.o \
6545                          inftrees.o inffast.o
6546         do
6547                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6548         done
6549         CFLAGS="-I../lib/zlib $CFLAGS"
6552 AC_DEFINE(STATIC_gensec_MODULES, [gensec_spnego_init,gensec_ntlmssp_init,NULL],[gensec modules])
6553 AC_DEFINE(STATIC_gensec_MODULES_PROTO, [_MODULE_PROTO(gensec_spnego_init)_MODULE_PROTO(gensec_ntlmssp_init)],[gensec protos])
6555 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6557 if test "x$enable_dmalloc" = xyes
6558 then
6559         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6560         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6561                   [Define to check invariants around some common functions])
6562         LIBS="$LIBS -ldmalloc"
6565 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6566 LIB_REMOVE_USR_LIB(LDFLAGS)
6567 LIB_REMOVE_USR_LIB(LIBS)
6569 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6570 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6571 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6573 #################################################
6574 # Display summary of libraries detected
6576 AC_MSG_RESULT([Using libraries:])
6577 AC_MSG_RESULT([    LIBS = $LIBS])
6578 if test x"$with_ads_support" != x"no"; then
6579     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6581 if test x"$with_ldap_support" != x"no"; then
6582     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6584 if test x"$have_dnssd_support" != x"no"; then
6585     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6587 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6589 #################################################
6590 # final configure stuff
6592 AC_MSG_CHECKING([configure summary])
6593 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6594            AC_MSG_RESULT(yes),
6595            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6596            AC_MSG_WARN([cannot run when cross-compiling]))
6598 dnl Merge in developer cflags from now on
6599 AC_SUBST(DEVELOPER_CFLAGS)
6600 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6601     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS) ${CFLAGS_APPEND}"
6604 # Stuff the smbd-only libraries at the end of the smbd link
6605 # path (if we have them).
6606 SMBD_LIBS="$samba_dmapi_libs"
6607 AC_SUBST(SMBD_LIBS)
6609 CFLAGS="${CFLAGS} \$(FLAGS)"
6610 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6612 # If we had to expand the includes, make tsure the output file is moved back
6613 AC_OUTPUT_COMMANDS([
6614 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
6615         ln -s Makefile-noincludes Makefile
6619 AC_OUTPUT(Makefile
6620           script/findsmb smbadduser script/installbin.sh script/uninstallbin.sh
6621           lib/netapi/examples/Makefile
6622           lib/netapi/tests/Makefile
6623           pkgconfig/smbclient.pc
6624           pkgconfig/wbclient.pc
6625           pkgconfig/netapi.pc
6626           pkgconfig/smbsharemodes.pc
6627           ../examples/libsmbclient/Makefile.internal
6628           )
6630 #################################################
6631 # Print very concise instructions on building/use
6632 if test "x$enable_dmalloc" = xyes
6633 then
6634         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6635         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])