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