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