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