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