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