Revert "build: add symbol versioning when we build with gnu ld"
[Samba/bb.git] / source3 / configure.in
blob8d837eee6f670f3d640f60047e615142819962c5
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(lib/talloc/libtalloc.m4)
28 TALLOC_OBJS=""
29 for obj in ${TALLOC_OBJ}; do
30         TALLOC_OBJS="${TALLOC_OBJS} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(TALLOC_OBJS)
34 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35 # but currently this fails: things have to get merged from s4.
36 tdbdir="lib/tdb"
37 AC_SUBST(tdbdir)
38 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
39 AC_SUBST(TDB_CFLAGS)
40 TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
41 TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o"
42 AC_SUBST(TDB_OBJ)
44 TDB_OBJS=""
45 for obj in ${TDB_OBJ}; do
46         TDB_OBJS="${TDB_OBJS} ${tdbdir}/${obj}"
47 done
48 AC_SUBST(TDB_OBJS)
50 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
51 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
52 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
57 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
59 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60 if test "x${srcdir-.}" != "x."; then
61         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
64 dnl Unique-to-Samba variables we'll be playing with.
65 AC_SUBST(SAMBA_CPPFLAGS)
66 AC_SUBST(SHELL)
67 AC_SUBST(LDSHFLAGS)
68 AC_SUBST(SONAMEFLAG)
69 AC_SUBST(SHLD)
70 AC_SUBST(MODULE_EXPORTS)
71 AC_SUBST(DSO_EXPORTS)
72 AC_SUBST(HOST_OS)
73 AC_SUBST(PICFLAG)
74 AC_SUBST(PIE_CFLAGS)
75 AC_SUBST(PIE_LDFLAGS)
76 AC_SUBST(RELRO_LDFLAGS)
77 AC_SUBST(SHLIBEXT)
78 AC_SUBST(INSTALLLIBCMD_SH)
79 AC_SUBST(INSTALLLIBCMD_A)
80 AC_SUBST(UNINSTALLLIBCMD_SH)
81 AC_SUBST(UNINSTALLLIBCMD_A)
82 AC_SUBST(INSTALL_LIBADDNS)
83 AC_SUBST(UNINSTALL_LIBADDNS)
84 AC_SUBST(LIBADDNS_SHARED)
85 AC_SUBST(LIBADDNS)
87 AC_SUBST(INSTALL_LIBWBCLIENT)
88 AC_SUBST(UNINSTALL_LIBWBCLIENT)
89 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
90 AC_SUBST(LIBWBCLIENT_SHARED)
91 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
92 AC_SUBST(LIBWBCLIENT_STATIC)
93 AC_SUBST(LIBWBCLIENT)
94 AC_SUBST(WINBIND_LIBS)
96 AC_SUBST(LIBSAMBAUTIL_SHARED)
98 AC_SUBST(INSTALL_LIBSMBCLIENT)
99 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
100 AC_SUBST(LIBSMBCLIENT_SHARED)
101 AC_SUBST(LIBSMBCLIENT)
102 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
103 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
104 AC_SUBST(LIBSMBSHAREMODES_SHARED)
105 AC_SUBST(LIBSMBSHAREMODES)
107 AC_SUBST(PRINT_LIBS)
108 AC_SUBST(AUTH_LIBS)
109 AC_SUBST(ACL_LIBS)
110 AC_SUBST(PASSDB_LIBS)
111 AC_SUBST(IDMAP_LIBS)
112 AC_SUBST(KRB5_LIBS)
113 AC_SUBST(UUID_LIBS)
114 AC_SUBST(LDAP_LIBS)
115 AC_SUBST(GPEXT_LIBS)
116 AC_SUBST(PAM_MODULES)
117 AC_SUBST(INSTALL_PAM_MODULES)
118 AC_SUBST(UNINSTALL_PAM_MODULES)
119 AC_SUBST(NSS_MODULES)
120 AC_SUBST(EXTRA_BIN_PROGS)
121 AC_SUBST(CIFSMOUNT_PROGS)
122 AC_SUBST(INSTALL_CIFSMOUNT)
123 AC_SUBST(UNINSTALL_CIFSMOUNT)
124 AC_SUBST(CIFSSPNEGO_PROGS)
125 AC_SUBST(INSTALL_CIFSSPNEGO)
126 AC_SUBST(UNINSTALL_CIFSSPNEGO)
127 AC_SUBST(EXTRA_SBIN_PROGS)
128 AC_SUBST(EXTRA_ALL_TARGETS)
129 AC_SUBST(CONFIG_LIBS)
130 AC_SUBST(NSCD_LIBS)
132 # compile with optimization and without debugging by default, but
133 # allow people to set their own preference.
134 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
135 # if it has no value.  This prevent *very* large debug binaries from occurring
136 # by default.
137 if test "x$CFLAGS" = x; then
138   CFLAGS="-O"
140 if test "x$debug" = "xyes" ; then
141         CFLAGS="${CFLAGS} -g"
142 else
143         CFLAGS="-O"
146 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
148 m4_include(lib/socket_wrapper/config.m4)
149 m4_include(lib/nss_wrapper/config.m4)
151 m4_include(m4/swat.m4)
153 # Probe the gcc version for extra CFLAGS. We always stash these in
154 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
155 # Makefile edit, avoiding the need to re-run configure.
156 if test x"$ac_cv_prog_gcc" = x"yes" ; then
157         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
158         # Add -Wdeclaration-after-statement if compiler supports it
159         AC_CACHE_CHECK(
160           [that the C compiler understands -Wdeclaration-after-statement],
161           samba_cv_HAVE_Wdeclaration_after_statement, [
162           AC_TRY_RUN_STRICT([
163             int main(void)
164             {
165                 return 0;
166             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
167             samba_cv_HAVE_Wdeclaration_after_statement=yes,
168             samba_cv_HAVE_Wdeclaration_after_statement=no,
169             samba_cv_HAVE_Wdeclaration_after_statement=cross)
170        ])
172         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
173             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
174         fi
176         #-Werror-implicit-function-declaration
177         AC_CACHE_CHECK(
178           [that the C compiler understands -Werror-implicit-function-declaration],
179           samba_cv_HAVE_Werror_implicit_function_declaration, [
180           AC_TRY_RUN_STRICT([
181             int main(void)
182             {
183                 return 0;
184             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
185             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
186             samba_cv_HAVE_Werror_implicit_function_declaration=no,
187             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
188        ])
189        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
190             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
191        fi
193         # krb5developer is like developer, except we don't get
194         # -Wstrict-prototypes.
195        if test x"$krb5_developer" != x"$yes" ; then
196             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
197        fi
200 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
202 if test "x$enable_dmalloc" = xyes
203 then
204         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
205         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
206                   [Define to check invariants around some common functions])
207         LIBS="$LIBS -ldmalloc"  
210 #################################################
211 # check for a shared memory profiling support
212 AC_MSG_CHECKING(whether to use profiling)
213 AC_ARG_WITH(profiling-data,
214 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
215 [ case "$withval" in
216   yes)
217     AC_MSG_RESULT(yes)
218     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
219     samba_cv_WITH_PROFILE=yes
220     ;;
221   *)
222     AC_MSG_RESULT(no)
223     samba_cv_WITH_PROFILE=no
224     ;;
225   esac ],
226   AC_MSG_RESULT(no)
229 dnl Checks for programs.
231 AC_PROG_INSTALL
232 AC_PROG_AWK
233 AC_PATH_PROG(PERL, perl)
235 AC_CHECK_TOOL(AR, ar)
237 dnl Check if we use GNU ld
238 LD=ld
239 AC_PROG_LD_GNU
241 dnl Certain versions of GNU ld the default is not to have the
242 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
243 dnl warnings when building modules.
244 if test "$ac_cv_prog_gnu_ld" = "yes"; then
245         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
246         AC_MSG_CHECKING(GNU ld release date)
247         changequote(,)dnl
248         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'`
249         changequote([,])dnl
250         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
251         if test -n "$ac_cv_gnu_ld_date"; then
252         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
253                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
254         fi
255         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
256                 ac_cv_gnu_ld_version_script=yes
257         fi
258         else
259            AC_MSG_CHECKING(GNU ld release version)
260            changequote(,)dnl
261            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
262            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
263            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
264            changequote([,])dnl
265            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
266            AC_MSG_CHECKING(GNU ld release version major)
267            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
268            AC_MSG_CHECKING(GNU ld release version minor)
269            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
270            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
271              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
272            fi
273            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
274              ac_cv_gnu_ld_version_script=yes
275            fi
276         fi
279 dnl look for executable suffix
280 AC_EXEEXT
282 dnl Check if C compiler understands -c and -o at the same time
283 AC_PROG_CC_C_O
284 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
285       BROKEN_CC=
286 else
287       BROKEN_CC=#
289 AC_SUBST(BROKEN_CC)
291 dnl Check if the C compiler understands -Werror
292 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
293  AC_TRY_RUN_STRICT([
294   int main(void)
295   {
296         return 0;
297   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
298   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
299 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
300    Werror_FLAGS="-Werror"
301 else
302 dnl Check if the C compiler understands -w2
303 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
304  AC_TRY_RUN_STRICT([
305   int main(void)
306   {
307         return 0;
308   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
309   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
310 if test x"$samba_cv_HAVE_w2" = x"yes"; then
311    Werror_FLAGS="-w2"
312 else
313 dnl Check if the C compiler understands -errwarn
314 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
315   AC_TRY_RUN_STRICT([
316    int main(void)
317    {
318         return 0;
319    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
320    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
321 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
322    Werror_FLAGS="-errwarn=%all"
327 dnl Check if the C compiler understands volatile (it should, being ANSI).
328 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
329     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
330         samba_cv_volatile=yes,samba_cv_volatile=no)])
331 if test x"$samba_cv_volatile" = x"yes"; then
332    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
335 ############################################
336 # check if the compiler can handle negative enum values
337 # and don't truncate the values to INT_MAX
338 # a runtime test is needed here
339 AC_SUBST(PIDL_ARGS)
340 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
341     AC_TRY_RUN(
343         #include <stdio.h>
344         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
345         int main(void) {
346                 enum negative_values v1 = NEGATIVE_VALUE;
347                 unsigned v2 = NEGATIVE_VALUE;
349                 if (v1 != 0xFFFFFFFF) {
350                         printf("%u != 0xFFFFFFFF\n", v1);
351                         return 1;
352                 }
353                 if (v2 != 0xFFFFFFFF) {
354                         printf("%u != 0xFFFFFFFF\n", v2);
355                         return 1;
356                 }
358                 return 0;
359         }
361         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
362 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
363         AC_MSG_WARN([using --unit-enums for pidl])
364         PIDL_ARGS="$PIDL_ARGS --uint-enums"
367 dnl Figure out the flags to support named structure initializers
369 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
371 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
372 AC_MSG_CHECKING(uname -s)
373 AC_MSG_RESULT(${UNAME_S})
375 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
376 AC_MSG_CHECKING(uname -r)
377 AC_MSG_RESULT(${UNAME_R})
379 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
380 AC_MSG_CHECKING(uname -m)
381 AC_MSG_RESULT(${UNAME_M})
383 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
384 AC_MSG_CHECKING(uname -p)
385 AC_MSG_RESULT(${UNAME_P})
387 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
388 AC_MSG_CHECKING(uname -i)
389 AC_MSG_RESULT(${UNAME_I})
391 dnl Add #include for broken IRIX header files
392   case "$host_os" in
393         *irix6*)
394                 #TODO add to libreplace
395                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
396                         dnl Fix sensible defaults for MIPSPro compilers. The
397                         dnl error numbers are valid for the 7.3 compilers,
398                         dnl hopefully also valid for the 7.4 series.
399                         dnl
400                         dnl Bugzilla 3801. Force an error on warning 1035
401                         dnl so we don't incorrectly detect stdint.h. This
402                         dnl warning is emitted for #error directives.
403                         CFLAGS="$CFLAGS -diag_error 1035"
404                         dnl 1209: Controlling expression is constant
405                         dnl 1174: Function foo declared but never referenced
406                         dnl 3201: Parameter foo was never referenced
407                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
408                 fi
409         ;;
410 esac
412 DYNEXP=
413 AC_SUBST(DYNEXP)
415 dnl Add modules that have to be built by default here
416 dnl These have to be built static:
417 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
419 dnl These are preferably build shared, and static if dlopen() is not available
420 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr"
422 if test "x$developer" = xyes; then
423    default_static_modules="$default_static_modules rpc_rpcecho"
424    default_shared_modules="$default_shared_modules charset_weird"
428 # Config CPPFLAG settings for strange OS's that must be set
429 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
430 # case statement; its first reference must be unconditional.
432 case "$host_os" in
433     *hpux*)
435 # Defines needed for HPUX support.
436 # HPUX has bigcrypt but (sometimes?) doesn't use it for
437 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
439       case `uname -r` in
440                 *9*|*10*|*11)
441                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
442                 ;;
443       esac
444       ;;
447 # CRAY Unicos has broken const handling
448        *unicos*)
449           AC_MSG_RESULT([disabling const])
450           CPPFLAGS="$CPPFLAGS -Dconst="
451           ;;
452         
454 # AIX4.x doesn't even admit to having large
455 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
457     *aix4*)
458           AC_MSG_RESULT([enabling large file support])
459       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
460           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
461       ;;
463 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
464 # to the existance of large files..
465 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
466 # recommendations on large file support, however it makes the
467 # compile work using gcc 2.7 and 2.8, whereas using the Sun
468 # recommendation makes the compile fail on gcc2.7. JRA.
470 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
472         *solaris*)
473                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
474                 case `uname -r` in
475                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
476                                 AC_MSG_RESULT([no large file support])
477                                 ;;
478                         5.*)
479                         AC_MSG_RESULT([enabling large file support])
480                         if test "$ac_cv_prog_gcc" = yes; then
481                                 ${CC-cc} -v >conftest.c 2>&1
482                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
483                                 rm -fr conftest.c
484                                 case "$ac_cv_gcc_compiler_version_number" in
485                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
486                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
487                                                 LDFLAGS="$LDFLAGS -lthread"
488                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
489                                                 ;;
490                                         *)
491                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
492                                                 LDFLAGS="$LDFLAGS -lthread"
493                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
494                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
495                                                 ;;
496                                 esac
497                         else
498                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
499                                 LDFLAGS="$LDFLAGS -lthread"
500                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
501                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
502                         fi
503                         ;;
504                 esac
505                 ;;
507 # IRIX uses SYSV printing.  Make sure to set that here
509         *irix*)
510                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
511                 ;;
512         *freebsd*|*dragonfly*)
513                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
514                 ;;
516 # VOS may need to have POSIX support and System V compatibility enabled.
518     *vos*)
519     case "$CPPFLAGS" in
520           *-D_POSIX_C_SOURCE*)
521                 ;;
522           *)
523                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
524                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
525                 ;;
526     esac
527     case "$CPPFLAGS" in
528           *-D_SYSV*|*-D_SVID_SOURCE*)
529                 ;;
530           *)
531                 CPPFLAGS="$CPPFLAGS -D_SYSV"
532                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
533     esac
534     ;;
536 # Tests needed for SINIX large file support.
538     *sysv4*)
539       if test $host = mips-sni-sysv4 ; then
540         AC_MSG_CHECKING([for LFS support])
541         old_CPPFLAGS="$CPPFLAGS"
542         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
543         AC_TRY_RUN([
544 #include <unistd.h>
545 main () {
546 #if _LFS64_LARGEFILE == 1
547 exit(0);
548 #else
549 exit(1);
550 #endif
551 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
552         CPPFLAGS="$old_CPPFLAGS"
553         if test x$SINIX_LFS_SUPPORT = xyes ; then
554           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
555                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
556           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
557           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
558           LIBS="`getconf LFS64_LIBS` $LIBS"
559         fi
560       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
561       fi
562     ;;
564 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
566     *linux*)
567         AC_MSG_CHECKING([for LFS support])
568         old_CPPFLAGS="$CPPFLAGS"
569         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
570        AC_TRY_RUN([
571 #include <unistd.h>
572 #include <sys/utsname.h>
573 #include <string.h>
574 #include <stdlib.h>
575 main() {
576 #if _LFS64_LARGEFILE == 1
577        struct utsname uts;
578        char *release;
579        int major, minor;
581        /* Ensure this is glibc 2.2 or higher */
582 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
583        int libc_major = __GLIBC__;
584        int libc_minor = __GLIBC_MINOR__;
586        if (libc_major < 2)
587               exit(1);
588        if (libc_minor < 2)
589               exit(1);
590 #endif
592        /* Ensure this is kernel 2.4 or higher */
594        uname(&uts);
595        release = strdup(uts.release);
596        major = atoi(strsep(&release, "."));
597        minor = atoi(strsep(&release, "."));
599        if (major > 2 || (major == 2 && minor > 3))
600                exit(0);
601        exit(1);
602 #else
603        exit(1);
604 #endif
606 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
607         CPPFLAGS="$old_CPPFLAGS"
608         if test x$LINUX_LFS_SUPPORT = xyes ; then
609                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
610                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
611                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
612                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
613         fi
614         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
615         ;;
618 # MacOS X is the *only* system that uses compose character in utf8. This
619 # is so horribly broken....
621     *darwin*)
622         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
624 # Add a system specific charset module.
625         default_shared_modules="$default_shared_modules charset_macosxfs"
627         ;;
628     *hurd*)
629         AC_MSG_CHECKING([for LFS support])
630         old_CPPFLAGS="$CPPFLAGS"
631         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
632         AC_TRY_RUN([
633 #include <unistd.h>
634 main () {
635 #if _LFS64_LARGEFILE == 1
636 exit(0);
637 #else
638 exit(1);
639 #endif
640 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
641         CPPFLAGS="$old_CPPFLAGS"
642         if test x$GLIBC_LFS_SUPPORT = xyes ; then
643           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
644                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
645           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
646         fi
647       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
648     ;;
650 esac
652 SAVE_CPPFLAGS="${CPPFLAGS}"
653 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
655 AC_LIBREPLACE_BROKEN_CHECKS
656 AC_LIBREPLACE_NETWORK_CHECKS
658 CPPFLAGS="${SAVE_CPPFLAGS}"
660 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
662 LIBREPLACE_OBJS=""
663 for obj in ${LIBREPLACEOBJ}; do
664         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
665 done
666 AC_SUBST(LIBREPLACE_OBJS)
668 # add -ldl to the global LIBS
669 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
671 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
672 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
673 AC_CHECK_HEADERS(limits.h float.h pthread.h)
674 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
675 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
676 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
677 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
678 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
679 AC_CHECK_HEADERS(sys/sysmacros.h)
680 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
681 AC_CHECK_HEADERS(langinfo.h locale.h)
682 AC_CHECK_HEADERS(xfs/libxfs.h)
683 AC_CHECK_HEADERS(netgroup.h)
685 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
686 #if HAVE_RPC_RPC_H
687 #include <rpc/rpc.h>
688 #endif
691 ## These fail to compile on IRIX so just check for their presence
692 AC_CHECK_HEADERS(sys/mode.h,,,)
694 # Look for Darwin headers
695 old_CPPFLAGS="$CPPFLAGS"
696 CPPFLAGS="-Iinclude $CPPFLAGS"
697 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
698 CPPFLAGS="$old_CPPFLAGS"
700 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
701 # subdirectory of headers.
702 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
704 # check for linux on amd64 since valgrind is not quite there yet
705 case "$host_os" in
706         *linux*)
707                 case "$UNAME_P" in
708                         *x86_64*)
709                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
710                                 ;;
711                 esac
712                 ;;
713 esac
717 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
718 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
720 case "$host_os" in
721     *hpux*)
722                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
723                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
724                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
725                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
726                 fi
727         ;;
728 esac
729 AC_CHECK_HEADERS(shadow.h)
730 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
731 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
733 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
734 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
736 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
738 # For experimental utmp support (lastlog on some BSD-like systems)
739 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
741 AC_CHECK_SIZEOF(int,cross)
742 AC_CHECK_SIZEOF(long,cross)
743 AC_CHECK_SIZEOF(long long,cross)
744 AC_CHECK_SIZEOF(short,cross)
746 AC_C_CONST
747 AC_C_INLINE
748 AC_C_BIGENDIAN
749 AC_C_CHAR_UNSIGNED
751 AC_TYPE_SIGNAL
752 AC_TYPE_UID_T
753 AC_TYPE_MODE_T
754 AC_TYPE_OFF_T
755 AC_TYPE_SIZE_T
756 AC_TYPE_PID_T
757 AC_STRUCT_ST_RDEV
758 AC_DIRENT_D_OFF
759 AC_CHECK_TYPE(ssize_t, int)
760 AC_CHECK_TYPE(wchar_t, unsigned short)
762 ############################################
763 # for cups support we need libcups, and a handful of header files
765 AC_ARG_ENABLE(cups,
766 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
768 if test x$enable_cups != xno; then
769         AC_PATH_PROG(CUPS_CONFIG, cups-config)
771         if test "x$CUPS_CONFIG" != x; then
773                 ac_save_CFLAGS=$CFLAGS
774                 ac_save_LDFLAGS=$LDFLAGS
775                 ac_save_PRINT_LIBS=$PRINT_LIBS
776                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
777                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
778                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
779                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
780                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
781                         x"$ac_cv_header_cups_language_h" = xyes; then
782                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
783                         samba_cv_HAVE_CUPS=yes
784                 else
785                         AC_MSG_WARN([cups-config around but cups-devel not installed])
786                         CFLAGS=$ac_save_CFLAGS
787                         LDFLAGS=$ac_save_LDFLAGS
788                         PRINT_LIBS=$ac_save_PRINT_LIBS
789                 fi
791         elif test x"$enable_cups" = x"yes"; then
792                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
793         fi
796 AC_ARG_ENABLE(iprint,
797 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
799 if test x$enable_iprint != xno; then
800         if test x"$samba_cv_HAVE_CUPS" = xyes; then
801                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
802         elif test x"$enable_iprint" = x"yes"; then
803                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
804         fi
807 ############################################
808 # check if the compiler will optimize out function calls
809 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
810     AC_TRY_LINK([
811 #include <stdio.h>],
813                 if (0) {
814                    this_function_does_not_exist();
815                 } else {
816                   return 1;
817                 }
820         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
821 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
822    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
825 #############################################
826 # check for fd passing struct via msg_control
827 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
828     AC_TRY_COMPILE([
829 #include <sys/types.h>
830 #include <stdlib.h>
831 #include <stddef.h>
832 #include <sys/socket.h>
833 #include <sys/un.h>],
835         struct msghdr msg;
836         union {
837               struct cmsghdr cm;
838               char control[CMSG_SPACE(sizeof(int))];
839         } control_un;
840         msg.msg_control = control_un.control;
841         msg.msg_controllen = sizeof(control_un.control);
843         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
844 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
845    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
846              [If we can use msg_control for passing file descriptors])
849 #############################################
850 # check for fd passing struct via msg_acctrights
851 AC_CACHE_CHECK([for fd passing via msg_acctrights],
852                 samba_cv_msghdr_msg_acctrights, [
853     AC_TRY_COMPILE([
854 #include <sys/types.h>
855 #include <stdlib.h>
856 #include <stddef.h>
857 #include <sys/socket.h>
858 #include <sys/un.h>],
860         struct msghdr msg;
861         int fd;
862         msg.msg_acctrights = (caddr_t) &fd;
863         msg.msg_acctrightslen = sizeof(fd);
865         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
866 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
867    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
868              [If we can use msg_acctrights for passing file descriptors])
871 AC_CHECK_FUNCS(dirfd)
872 if test x"$ac_cv_func_dirfd" = x"yes"; then
873         default_shared_modules="$default_shared_modules vfs_syncops"
876 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
877     AC_TRY_COMPILE([
878 #include <sys/types.h>
879 #if STDC_HEADERS
880 #include <stdlib.h>
881 #include <stddef.h>
882 #endif
883 #include <signal.h>],[sig_atomic_t i = 0],
884         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
885 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
886    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
889 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
890     AC_TRY_COMPILE([
891 #include <sys/types.h>
892 #if STDC_HEADERS
893 #include <stdlib.h>
894 #include <stddef.h>
895 #endif
896 #if TIME_WITH_SYS_TIME
897 # include <sys/time.h>
898 # include <time.h>
899 #else
900 # if HAVE_SYS_TIME_H
901 #  include <sys/time.h>
902 # else
903 #  include <time.h>
904 # endif
905 #endif
906 ],[struct timespec ts;],
907         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
908 if test x"$samba_cv_struct_timespec" = x"yes"; then
909    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
912 # stupid headers have the functions but no declaration. grrrr.
913 AC_HAVE_DECL(errno, [#include <errno.h>])
914 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
915 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
917 # and glibc has setresuid under linux but the function does
918 # nothing until kernel 2.1.44! very dumb.
919 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
920     AC_TRY_RUN([#include <errno.h>
921 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
922         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
923 if test x"$samba_cv_have_setresuid" = x"yes"; then
924     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
927 # Do the same check for setresguid...
929 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
930     AC_TRY_RUN([#include <unistd.h>
931 #include <errno.h>
932 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
933         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
934 if test x"$samba_cv_have_setresgid" = x"yes"; then
935     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
938 AC_FUNC_MEMCMP
940 ###############################################
941 # Readline included by default unless explicitly asked not to
942 test "${with_readline+set}" != "set" && with_readline=yes
944 # test for where we get readline() from
945 AC_MSG_CHECKING(whether to use readline)
946 AC_ARG_WITH(readline,
947 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
948 [  case "$with_readline" in
949   yes)
950     AC_MSG_RESULT(yes)
952     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
953     AC_CHECK_HEADERS(readline/history.h)
955     AC_CHECK_HEADERS(readline.h readline/readline.h,[
956       for termlib in ncurses curses termcap terminfo termlib tinfo; do
957        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
958       done
959       AC_CHECK_LIB(readline, rl_callback_handler_install,
960        [TERMLIBS="-lreadline $TERMLIBS"
961        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
962        break], [TERMLIBS=], $TERMLIBS)])
963     ;;
964   no)
965     AC_MSG_RESULT(no)
966     ;;
967   *)
968     AC_MSG_RESULT(yes)
970     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
971     # alternate readline path
972     _ldflags=${LDFLAGS}
973     _cppflags=${CPPFLAGS}
975     # Add additional search path
976     LDFLAGS="-L$with_readline/lib $LDFLAGS"
977     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
979     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
980     AC_CHECK_HEADERS(readline/history.h)
982     AC_CHECK_HEADERS(readline.h readline/readline.h,[
983       for termlib in ncurses curses termcap terminfo termlib; do
984        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
985       done
986       AC_CHECK_LIB(readline, rl_callback_handler_install,
987        [TERMLDFLAGS="-L$with_readline/lib"
988        TERMCPPFLAGS="-I$with_readline/include"
989        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
990        TERMLIBS="-lreadline $TERMLIBS"
991        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
992        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
994     LDFLAGS=$_ldflags
995     ;;
996   esac],
997   AC_MSG_RESULT(no)
999 AC_SUBST(TERMLIBS)
1000 AC_SUBST(TERMLDFLAGS)
1002 # The readline API changed slightly from readline3 to readline4, so
1003 # code will generate warnings on one of them unless we have a few
1004 # special cases.
1005 AC_CHECK_LIB(readline, rl_completion_matches,
1006              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1007                         [Do we have rl_completion_matches?])],
1008              [],
1009              [$TERMLIBS])
1011 # not all readline libs have rl_event_hook or history_list
1012 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1013 AC_CHECK_LIB(readline, history_list,
1014              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1015              [],
1016              [$TERMLIBS])
1018 ###############################################
1019 # test for where we get yp_get_default_domain() from
1020 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1021 AC_CHECK_FUNCS(yp_get_default_domain)
1023 # Check if we have execl, if not we need to compile smbrun.
1024 AC_CHECK_FUNCS(execl)
1025 if test x"$ac_cv_func_execl" = x"no"; then
1026     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1029 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1030 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1031 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1032 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1033 AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1034 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1035 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1036 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1037 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1038 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1039 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1040 AC_CHECK_FUNCS(getpwent_r)
1041 AC_CHECK_FUNCS(getdents getdents64)
1042 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1043 AC_CHECK_FUNCS(syslog vsyslog timegm)
1044 AC_CHECK_FUNCS(setlocale nl_langinfo)
1045 AC_CHECK_FUNCS(nanosleep)
1046 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1047 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1048 AC_CHECK_HEADERS(sys/mman.h)
1049 # setbuffer, shmget, shm_open are needed for smbtorture
1050 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1052 # Find a method of generating a stack trace
1053 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1054 AC_CHECK_FUNCS(backtrace_symbols)
1055 AC_CHECK_LIB(exc, trace_back_stack)
1057 printf "%s" "checking for GPFS GPL libs... "
1058 save_LIBS="$LIBS"
1059 LIBS="$LIBS -lgpfs_gpl"
1060 AC_TRY_LINK([#include <gpfs_gpl.h>],
1061           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1062           samba_cv_HAVE_GPFS=yes,
1063           samba_cv_HAVE_GPFS=no)
1064 echo $samba_cv_HAVE_GPFS
1065 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1066     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1067     default_shared_modules="$default_shared_modules vfs_gpfs"
1069 LIBS="$save_LIBS"
1071 # Note that all the libunwind symbols in the API are defined to internal
1072 # platform-specific version, so we must include libunwind.h before checking
1073 # any of them.
1074 AC_MSG_CHECKING([for libunwind])
1075 save_LIBS=$LIBS
1077 UNWIND_ARCH="unknown"
1078 if test x"$UNAME_I" != x"unknown"; then
1079         UNWIND_ARCH="$UNAME_I"
1080 elif test x"$UNAME_M" != x"unknown"; then
1081         UNWIND_ARCH="$UNAME_M"
1082 elif test x"$UNAME_P" != x"unknown"; then
1083         UNWIND_ARCH="$UNAME_P"
1086 case "$UNWIND_ARCH" in
1087         unknown)
1088                 # This probably won't link without
1089                 # the platform-specific libunwind.
1090                 LIBS="$LIBS -lunwind"
1091                 ;;
1092         i386|i586|i686)
1093                 # Add the platform-specific libunwind module.
1094                 LIBS="$LIBS -lunwind -lunwind-x86"
1095                 ;;
1096         *)
1097                 # Add the platform-specific libunwind module.
1098                 # based on uname -i, uname -m or uname -p
1099                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1100                 ;;
1101 esac
1103 AC_TRY_LINK(
1104     [
1105 #ifdef HAVE_LIBUNWIND_H
1106 #include <libunwind.h>
1107 #endif
1108     ],
1109     [
1110         unw_context_t ctx; unw_cursor_t cur;
1111         char buf[256]; unw_word_t off;
1112         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1113         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1114     ],
1115     [
1116         AC_MSG_RESULT(yes)
1117         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1119         # If we have libunwind, test whether we also have libunwind-ptrace
1120         # which would let us unwind arbitrary processes.
1121         save_LIBS=$LIBS
1122         AC_CHECK_HEADERS(libunwind-ptrace.h)
1123         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1124             [
1125                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1126                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1127                     [Whether libunwind-ptrace.a is available.])
1128             ],
1129             [ LIBUNWIND_PTRACE="" ])
1131         LIBS=$save_LIBS
1132     ],
1133     [
1134         AC_MSG_RESULT(no)
1135         LIBS=$save_LIBS
1136     ])
1138 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1139 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1140     AC_CHECK_HEADERS(sys/ptrace.h)
1141     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1142     AC_TRY_LINK(
1143             [
1144 #if HAVE_SYS_TYPES_H
1145 #include <sys/types.h>
1146 #endif
1147 #if HAVE_SYS_PTRACE_H
1148 #include <sys/ptrace.h>
1149 #endif
1150             ],
1151             [
1152                 int main(int argc, const char ** argv)
1153                 {
1154                         pid_t me = (pid_t)-1;
1155                         ptrace(PTRACE_ATTACH, me, 0, 0);
1156                         ptrace(PTRACE_DETACH, me, 0, 0);
1157                         return 0;
1158                 }
1159             ],
1160             [
1161                 AC_MSG_RESULT(yes)
1162                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1163                     [Whether the Linux ptrace(2) interface is available.])
1164             ],
1165             [
1166                 AC_MSG_RESULT(no)
1167                 LIBUNWIND_PTRACE=""
1168             ])
1171 AC_SUBST(LIBUNWIND_PTRACE)
1173 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1174 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1175 AC_CHECK_FUNCS(__getcwd _getcwd)
1176 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1177 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1178 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1179 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1180 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1181 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1182 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1183 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1184 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1185 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1186 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1187 AC_CHECK_FUNCS(prctl)
1189 AC_TRY_COMPILE([
1190 #ifdef HAVE_SYS_PRCTL_H
1191 #include <sys/prctl.h>
1192 #endif
1194 [int i; i = prtcl(0); ],
1195 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1200 case "$host_os" in
1201     *linux*)
1202        # glibc <= 2.3.2 has a broken getgrouplist
1203        AC_TRY_RUN([
1204 #include <unistd.h>
1205 #include <sys/utsname.h>
1206 main() {
1207        /* glibc up to 2.3 has a broken getgrouplist */
1208 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1209        int libc_major = __GLIBC__;
1210        int libc_minor = __GLIBC_MINOR__;
1212        if (libc_major < 2)
1213               exit(1);
1214        if ((libc_major == 2) && (libc_minor <= 3))
1215               exit(1);
1216 #endif
1217        exit(0);
1219 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1220        if test x"$linux_getgrouplist_ok" = x"yes"; then
1221           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1222        fi
1223        ;;
1224     *)
1225        AC_CHECK_FUNCS(getgrouplist)
1226        ;;
1227 esac
1230 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1233 if test x$ac_cv_func_stat64 = xno ; then
1234   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1235   AC_TRY_LINK([
1236 #if defined(HAVE_UNISTD_H)
1237 #include <unistd.h>
1238 #endif
1239 #include <sys/stat.h>
1240 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1241   AC_MSG_RESULT([$ac_cv_func_stat64])
1242   if test x$ac_cv_func_stat64 = xyes ; then
1243     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1244   fi
1247 if test x$ac_cv_func_lstat64 = xno ; then
1248   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1249   AC_TRY_LINK([
1250 #if defined(HAVE_UNISTD_H)
1251 #include <unistd.h>
1252 #endif
1253 #include <sys/stat.h>
1254 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1255   AC_MSG_RESULT([$ac_cv_func_lstat64])
1256   if test x$ac_cv_func_lstat64 = xyes ; then
1257     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1258   fi
1261 if test x$ac_cv_func_fstat64 = xno ; then
1262   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1263   AC_TRY_LINK([
1264 #if defined(HAVE_UNISTD_H)
1265 #include <unistd.h>
1266 #endif
1267 #include <sys/stat.h>
1268 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1269   AC_MSG_RESULT([$ac_cv_func_fstat64])
1270   if test x$ac_cv_func_fstat64 = xyes ; then
1271     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1272   fi
1275 #################################################
1276 # Check whether struct stat has timestamps with sub-second resolution.
1277 # At least IRIX and Solaris have these.
1279 # We check that
1280 #       all of st_mtim, st_atim and st_ctim exist
1281 #       all of the members are in fact of type struct timespec
1283 # There is some conflicting standards weirdness about whether we should use
1284 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1285 # prefer struct timespec.
1287 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1288     [
1289         AC_TRY_COMPILE(
1290             [
1291 #if TIME_WITH_SYS_TIME
1292 # include <sys/time.h>
1293 # include <time.h>
1294 #else
1295 # if HAVE_SYS_TIME_H
1296 #  include <sys/time.h>
1297 # else
1298 #  include <time.h>
1299 # endif
1300 #endif
1301 #ifdef HAVE_SYS_STAT_H
1302 #include <sys/stat.h>
1303 #endif
1304             ],
1305             [
1306                 struct timespec t;
1307                 struct stat s = {0};
1308                 t.tv_sec = s.st_mtim.tv_sec;
1309                 t.tv_nsec = s.st_mtim.tv_nsec;
1310                 t.tv_sec = s.st_ctim.tv_sec;
1311                 t.tv_nsec = s.st_ctim.tv_nsec;
1312                 t.tv_sec = s.st_atim.tv_sec;
1313                 t.tv_nsec = s.st_atim.tv_nsec;
1314             ],
1315             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1316     ])
1318 if test x"$samba_cv_stat_hires" = x"yes" ; then
1319     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1320     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1321     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1322     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1323             [whether struct stat has sub-second timestamps])
1326 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_cv_stat_hires_notimespec,
1327     [
1328         AC_TRY_COMPILE(
1329             [
1330 #if TIME_WITH_SYS_TIME
1331 # include <sys/time.h>
1332 # include <time.h>
1333 #else
1334 # if HAVE_SYS_TIME_H
1335 #  include <sys/time.h>
1336 # else
1337 #  include <time.h>
1338 # endif
1339 #endif
1340 #ifdef HAVE_SYS_STAT_H
1341 #include <sys/stat.h>
1342 #endif
1343             ],
1344             [
1345                 struct timespec t;
1346                 struct stat s = {0};
1347                 t.tv_sec = s.st_mtime;
1348                 t.tv_nsec = s.st_mtimensec;
1349                 t.tv_sec = s.st_ctime;
1350                 t.tv_nsec = s.st_ctimensec;
1351                 t.tv_sec = s.st_atime;
1352                 t.tv_nsec = s.st_atimensec;
1353             ],
1354             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1355     ])
1357 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1358     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1359     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1360     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1361     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1362             [whether struct stat has sub-second timestamps without struct timespec])
1365 #####################################
1366 # needed for SRV lookups
1367 AC_CHECK_LIB(resolv, dn_expand)
1368 AC_CHECK_LIB(resolv, _dn_expand)
1369 AC_CHECK_LIB(resolv, __dn_expand)
1372 # Check for the functions putprpwnam, set_auth_parameters,
1373 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1374 # Needed for OSF1 and HPUX.
1377 AC_LIBTESTFUNC(security, putprpwnam)
1378 AC_LIBTESTFUNC(sec, putprpwnam)
1380 AC_LIBTESTFUNC(security, set_auth_parameters)
1381 AC_LIBTESTFUNC(sec, set_auth_parameters)
1383 # UnixWare 7.x has its getspnam in -lgen
1384 AC_LIBTESTFUNC(gen, getspnam)
1386 AC_LIBTESTFUNC(security, getspnam)
1387 AC_LIBTESTFUNC(sec, getspnam)
1389 AC_LIBTESTFUNC(security, bigcrypt)
1390 AC_LIBTESTFUNC(sec, bigcrypt)
1392 AC_LIBTESTFUNC(security, getprpwnam)
1393 AC_LIBTESTFUNC(sec, getprpwnam)
1395 AC_CHECK_FUNCS(strsignal)
1397 ############################################
1398 # Check if we have libattr
1399 case "$host_os" in
1400   *osf*)
1401         AC_SEARCH_LIBS(getproplist, [proplist])
1402         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1403         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1404         AC_CHECK_FUNCS(sizeof_proplist_entry)
1405   ;;
1406   *)
1407         AC_SEARCH_LIBS(getxattr, [attr])
1408         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1409         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1410         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1411         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1412         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1413         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1414         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1415   ;;
1416 esac
1418 ########################################################
1419 # Check if attropen() is present if this is Solaris
1420 case "$host_os" in
1421   *solaris*)
1422         AC_CHECK_FUNCS(attropen)
1423   ;;
1424 esac
1426 ########################################################
1427 # Do xattr functions take additional options like on Darwin?
1428 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1429         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1430                 old_LIBS=$LIBS
1431                 LIBS="$LIBS $ACL_LIBS"
1432                 AC_TRY_COMPILE([
1433                         #include <sys/types.h>
1434                         #if HAVE_ATTR_XATTR_H
1435                         #include <attr/xattr.h>
1436                         #elif HAVE_SYS_XATTR_H
1437                         #include <sys/xattr.h>
1438                         #endif
1439                 ],[
1440                         getxattr(0, 0, 0, 0, 0, 0);
1441                 ],
1442                 [smb_attr_cv_xattr_add_opt=yes],
1443                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1444         ])
1445         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1446                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1447         fi
1450 # Check if we have extattr
1451 case "$host_os" in
1452   *freebsd4* | *dragonfly* )
1453     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1454     ;;
1455   *)
1456     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1457     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1458     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1459     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1460     ;;
1461 esac
1463 AC_DISABLE_STATIC
1464 AC_ENABLE_SHARED
1466 # Set defaults
1467 PIE_CFLAGS=""
1468 PIE_LDFLAGS=""
1469 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1471 if test "x$enable_pie" != xno
1472 then
1473         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1474         [
1475                 cat > conftest.c <<EOF
1476 int foo;
1477 main () { return 0;}
1479                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1480                 then
1481                         samba_cv_fpie=yes
1482                 else
1483                         samba_cv_fpie=no
1484                 fi
1485                 rm -f conftest*
1486         ])
1487         if test x"${samba_cv_fpie}" = x"yes"
1488         then
1489                 PIE_CFLAGS="-fPIE"
1490                 PIE_LDFLAGS="-pie"
1491         fi
1494 # Set defaults
1495 RELRO_LDFLAGS=""
1496 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1498 if test "x$enable_relro" != xno
1499 then
1500         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1501         [
1502                 cat > conftest.c <<EOF
1503 int foo;
1504 main () { return 0;}
1506                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1507                 then
1508                         samba_cv_relro=yes
1509                 else
1510                         samba_cv_relro=no
1511                 fi
1512                 rm -f conftest*
1513         ])
1514         if test x"${samba_cv_relro}" = x"yes"
1515         then
1516                 RELRO_LDFLAGS="-Wl,-z,relro"
1517         fi
1520 # Set defaults
1521 SYMSEXT="syms"
1522 AC_SUBST(SYMSEXT)
1524 # Assume non-shared by default and override below
1525 BLDSHARED="false"
1527 # these are the defaults, good for lots of systems
1528 HOST_OS="$host_os"
1529 LDSHFLAGS="-shared"
1530 MODULE_EXPORTS=""
1531 SONAMEFLAG="#"
1532 SHLD="\${CC} \${CFLAGS}"
1533 PICFLAG="${PIE_CFLAGS}"
1534 SHLIBEXT="so"
1535 DSO_EXPORTS=""
1537 # this bit needs to be modified for each OS that supports share libs
1538 # You need to specify how to create a shared library and
1539   # how to compile C code to produce PIC object files
1541   AC_MSG_CHECKING([ability to build shared libraries])
1543   # and these are for particular systems
1544   case "$host_os" in
1545                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1546                         BLDSHARED="true"
1547                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1548                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1549                         else
1550                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1551                         fi
1552                         DYNEXP="-Wl,--export-dynamic"
1553                         PICFLAG="-fPIC"
1554                         SONAMEFLAG="-Wl,-soname="
1555                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1556                         ;;
1557                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1558                         BLDSHARED="true"
1559                         LDSHFLAGS="-G"
1560                         SONAMEFLAG="-h "
1561                         if test "${GCC}" = "yes"; then
1562                                 PICFLAG="-fPIC"
1563                                 SONAMEFLAG="-Wl,-soname="
1564                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1565                                         DYNEXP="-Wl,-E"
1566                                 fi
1567                         else
1568                                 PICFLAG="-KPIC"
1569                                 ## ${CFLAGS} added for building 64-bit shared
1570                                 ## libs using Sun's Compiler
1571                                 LDSHFLAGS="-G \${CFLAGS}"
1572                         fi
1573                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1574                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1575                         ;;
1576                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1577                         BLDSHARED="true"
1578                         LDSHFLAGS="-G"
1579                         SONAMEFLAG="-Wl,-h,"
1580                         PICFLAG="-KPIC"   # Is this correct for SunOS
1581                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1582                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1583                         ;;
1584                 *netbsd* | *freebsd* | *dragonfly* )
1585                         BLDSHARED="true"
1586                         LDSHFLAGS="-shared"
1587                         DYNEXP="-Wl,--export-dynamic"
1588                         SONAMEFLAG="-Wl,-soname,"
1589                         PICFLAG="-fPIC -DPIC"
1590                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1591                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1592                         ;;
1593                 *openbsd*)  BLDSHARED="true"
1594                         LDSHFLAGS="-shared"
1595                         DYNEXP="-Wl,-Bdynamic"
1596                         SONAMEFLAG="-Wl,-soname,"
1597                         PICFLAG="-fPIC"
1598                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1599                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1600                         ;;
1601                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1602                         case "$host_os" in
1603                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1604                         ;;
1605                         esac
1606                         BLDSHARED="true"
1607                         LDSHFLAGS="-set_version sgi1.0 -shared"
1608                         SONAMEFLAG="-soname "
1609                         SHLD="\${LD}"
1610                         if test "${GCC}" = "yes"; then
1611                                 PICFLAG="-fPIC"
1612                         else
1613                                 PICFLAG="-KPIC"
1614                         fi
1615                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1616                         ;;
1617                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1618                         BLDSHARED="true"
1619                         # use expfull to export underscored symbols
1620                         # add rtl to remove /lib/crt0.o warning
1621                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1622                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1623                         PICFLAG="-O2"
1624                         # as AIX code is always position independent...
1625                         # .po will just create compile warnings, use po.o:
1626                         if test "${GCC}" != "yes"; then
1627                                 ## for funky AIX compiler using strncpy()
1628                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1629                         fi
1631                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1632                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1633                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1634                         ;;
1635                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1636                         # Use special PIC flags for the native HP-UX compiler.
1637                                 BLDSHARED="true"
1638                                 SHLD="cc"
1639                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1640                                 SONAMEFLAG="-Wl,+h "
1641                                 PICFLAG="+z"
1642                         if test "${GCC}" = "yes"; then
1643                                 PICFLAG="-fPIC"
1644                         else
1645                                 PICFLAG="+z +ESnolit"
1646                         fi
1647                         if test "$host_cpu" = "ia64"; then
1648                                 SHLIBEXT="so"
1649                               PICFLAG="+z"
1650                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1651                         else
1652                                 SHLIBEXT="sl"
1653                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1654                         fi
1655                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1656                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1657                         ;;
1658                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1659                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1660                         ;;
1661                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1662                         BLDSHARED="true"
1663                         LDSHFLAGS="-shared"
1664                         SONAMEFLAG="-Wl,-soname,"
1665                         PICFLAG="-fPIC"
1666                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1667                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1668                         ;;
1669                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1670                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1671                         ;;
1672                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1673                         BLDSHARED="true"
1674                         LDSHFLAGS="-shared"
1675                         SONAMEFLAG="-Wl,-soname,"
1676                         PICFLAG="-KPIC"
1677                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1678                         ;;
1679                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1680                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1681                         ;;
1682                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1683                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1684                         ;;
1685                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1686                         case "$host" in
1687                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1688                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1689                                         fi
1690                                         LDSHFLAGS="-G"
1691                                         DYNEXP="-Bexport"
1692                                 ;;
1693                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1694                         esac
1695                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1696                         ;;
1698                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1699                         if [ test "$GCC" != yes ]; then
1700                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1701                         fi
1702                         LDSHFLAGS="-G"
1703                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1704                         ;;
1705                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1706                         BLDSHARED="false"
1707                         LDSHFLAGS=""
1708                         ;;
1710                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1711                         BLDSHARED="true"
1712                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1713                         CFLAGS="$CFLAGS -fno-common"
1714                         SHLD="\${CC}"
1715                         SHLIBEXT="dylib"
1716                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1717                         SHLIBEXT="dylib"
1718                         # Since gcc doesn't fail on unrecognised options, the
1719                         # PIE test incorrectly succeeds. Darwin gcc does not
1720                         # actually support the PIE stuff.
1721                         PIE_LDFLAGS=
1722                         PIE_CFLAGS=
1723                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1724                         ;;
1726                 *)
1727                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1728                         ;;
1729   esac
1731 if test "$enable_shared" != "yes"; then
1732         BLDSHARED=false
1735 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1736         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1739 if test x"$BLDSHARED" = x"true" ; then
1740         LDFLAGS="$LDFLAGS -L./bin"
1743 AC_MSG_RESULT($BLDSHARED)
1745 AC_MSG_CHECKING([LDFLAGS])
1746 AC_MSG_RESULT([$LDFLAGS])
1747 AC_MSG_CHECKING([DYNEXP])
1748 AC_MSG_RESULT([$DYNEXP])
1750 #######################################################
1751 # test whether building a shared library actually works
1752 if test $BLDSHARED = true; then
1754 AC_MSG_CHECKING([SHLD])
1755 AC_MSG_RESULT([$SHLD])
1756 AC_MSG_CHECKING([LDSHFLAGS])
1757 AC_MSG_RESULT([$LDSHFLAGS])
1759 AC_MSG_CHECKING([SHLIBEXT])
1760 AC_MSG_RESULT([$SHLIBEXT])
1761 AC_MSG_CHECKING([SONAMEFLAG])
1762 AC_MSG_RESULT([$SONAMEFLAG])
1764 AC_MSG_CHECKING([PICFLAG])
1765 AC_MSG_RESULT([$PICFLAG])
1767 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1768 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1770 AC_CACHE_CHECK([whether building shared libraries actually works],
1771                [ac_cv_shlib_works],[
1772    # try building a trivial shared library
1773    ac_cv_shlib_works=no
1774    # The $SHLD and $LDSHFLAGS variables may contain references to other
1775    # variables so they need to be eval'ed.
1776    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1777         shlib.o ${srcdir-.}/tests/shlib.c && \
1778    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1779         shlib.o && ac_cv_shlib_works=yes
1780    rm -f "shlib.$SHLIBEXT" shlib.o
1783 if test $ac_cv_shlib_works = no; then
1784    BLDSHARED=false
1788 if test x"$BLDSHARED" != x"true"; then
1789         LDSHFLAGS="shared-libraries-disabled"
1790         SONAMEFLAG="shared-libraries-disabled"
1791         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1792         SHLD="shared-libraries-disabled"
1793         PICFLAG="${PIE_CFLAGS}"
1794         SHLIBEXT="shared_libraries_disabled"
1797 AC_MSG_CHECKING([used PICFLAG])
1798 AC_MSG_RESULT([$PICFLAG])
1800 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1802 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1804 ################
1806 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1807 AC_TRY_RUN([#include <stdio.h>
1808 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1809 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1810 if test x"$samba_cv_have_longlong" = x"yes"; then
1811     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1812     AC_CHECK_TYPE(intptr_t, unsigned long long)
1813 else
1814     AC_CHECK_TYPE(intptr_t, unsigned long)
1818 # Check if the compiler supports the LL prefix on long long integers.
1819 # AIX needs this.
1821 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1822     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1823         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1824 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1825    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1829 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1830 AC_TRY_RUN([#include <time.h>
1831 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1832 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1833 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1834     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1837 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1838 AC_TRY_RUN([#include <stdio.h>
1839 #include <sys/stat.h>
1840 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1841 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1842 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1843     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1846 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1847 AC_TRY_RUN([
1848 #if defined(HAVE_UNISTD_H)
1849 #include <unistd.h>
1850 #endif
1851 #include <stdio.h>
1852 #include <sys/stat.h>
1853 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1854 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1855 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1856     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1859 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1860 AC_TRY_RUN([
1861 #if defined(HAVE_UNISTD_H)
1862 #include <unistd.h>
1863 #endif
1864 #include <stdio.h>
1865 #include <sys/stat.h>
1866 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1867 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1868 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1869     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1872 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1873 AC_TRY_RUN([
1874 #if defined(HAVE_UNISTD_H)
1875 #include <unistd.h>
1876 #endif
1877 #include <stdio.h>
1878 #include <sys/stat.h>
1879 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1880 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1881 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1882     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1885 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1886 AC_TRY_RUN([
1887 #if defined(HAVE_UNISTD_H)
1888 #include <unistd.h>
1889 #endif
1890 #include <stdio.h>
1891 #include <sys/stat.h>
1892 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1893 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1894 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1895     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1898 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1899 AC_TRY_RUN([
1900 #if defined(HAVE_UNISTD_H)
1901 #include <unistd.h>
1902 #endif
1903 #include <stdio.h>
1904 #include <sys/stat.h>
1905 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1906 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1907 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1908     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1911 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1912 AC_TRY_COMPILE([
1913 #if defined(HAVE_UNISTD_H)
1914 #include <unistd.h>
1915 #endif
1916 #include <sys/types.h>
1917 #include <dirent.h>],
1918 [DIR64 de;],
1919 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1920 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1921     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1924 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1925 AC_TRY_COMPILE([
1926 #if defined(HAVE_UNISTD_H)
1927 #include <unistd.h>
1928 #endif
1929 #include <sys/types.h>
1930 #include <dirent.h>],
1931 [struct dirent64 de;],
1932 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1933 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1934     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1937 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1938 AC_TRY_RUN([
1939 #if defined(HAVE_UNISTD_H)
1940 #include <unistd.h>
1941 #endif
1942 #include <sys/types.h>
1943 main() { dev_t dev; int i = major(dev); return 0; }],
1944 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1945 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1946     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1949 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1950 AC_TRY_RUN([
1951 #if defined(HAVE_UNISTD_H)
1952 #include <unistd.h>
1953 #endif
1954 #include <sys/types.h>
1955 main() { dev_t dev; int i = minor(dev); return 0; }],
1956 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1957 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1958     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1961 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1962 AC_TRY_RUN([
1963 #if defined(HAVE_UNISTD_H)
1964 #include <unistd.h>
1965 #endif
1966 #include <sys/types.h>
1967 main() { dev_t dev = makedev(1,2); return 0; }],
1968 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1969 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1970     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1973 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1974 AC_TRY_RUN([#include <stdio.h>
1975 main() { char c; c=250; exit((c > 0)?0:1); }],
1976 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1977 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1978     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1981 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1982 AC_TRY_COMPILE([#include <sys/types.h>
1983 #include <dirent.h>
1984 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1985 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1986 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1987     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1990 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1991 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1992 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1993 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1994     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1997 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1998 AC_TRY_LINK([
1999 #include <sys/time.h>
2000 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2001            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2002            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2003 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2004     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2007 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2009     # On some systems (eg. Linux) librt can pull in libpthread. We
2010     # don't want this to happen because libpthreads changes signal delivery
2011     # semantics in ways we are not prepared for. This breaks Linux oplocks
2012     # which rely on signals.
2014     AC_LIBTESTFUNC(rt, clock_gettime,
2015             [
2016                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2017                                 [Whether clock_gettime is available])
2018                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2019                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2020                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2021                         ])
2025 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2026 AC_TRY_RUN([#include <sys/types.h>
2027 #include <dirent.h>
2028 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2029 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2030 di->d_name[0] == 0) exit(0); exit(1);} ],
2031 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2032 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2033     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2036 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2037 AC_TRY_COMPILE([#include <sys/types.h>
2038 #include <utime.h>],
2039 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2040 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2041 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2042     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2045 ##############
2046 # Check utmp details, but only if our OS offers utmp.h
2047 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2048 dnl  utmp and utmpx come in many flavours
2049 dnl  We need to check for many of them
2050 dnl  But we don't need to do each and every one, because our code uses
2051 dnl  mostly just the utmp (not utmpx) fields.
2053 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2055 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2056 AC_TRY_COMPILE([#include <sys/types.h>
2057 #include <utmp.h>],
2058 [struct utmp ut;  ut.ut_name[0] = 'a';],
2059 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2060 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2061     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2064 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2065 AC_TRY_COMPILE([#include <sys/types.h>
2066 #include <utmp.h>],
2067 [struct utmp ut;  ut.ut_user[0] = 'a';],
2068 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2069 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2070     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2073 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2074 AC_TRY_COMPILE([#include <sys/types.h>
2075 #include <utmp.h>],
2076 [struct utmp ut;  ut.ut_id[0] = 'a';],
2077 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2078 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2079     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2082 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2083 AC_TRY_COMPILE([#include <sys/types.h>
2084 #include <utmp.h>],
2085 [struct utmp ut;  ut.ut_host[0] = 'a';],
2086 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2087 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2088     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2091 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2092 AC_TRY_COMPILE([#include <sys/types.h>
2093 #include <utmp.h>],
2094 [struct utmp ut;  time_t t; ut.ut_time = t;],
2095 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2096 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2097     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2100 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2101 AC_TRY_COMPILE([#include <sys/types.h>
2102 #include <utmp.h>],
2103 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2104 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2105 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2106     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2109 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2110 AC_TRY_COMPILE([#include <sys/types.h>
2111 #include <utmp.h>],
2112 [struct utmp ut;  ut.ut_type = 0;],
2113 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2114 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2115     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2118 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2119 AC_TRY_COMPILE([#include <sys/types.h>
2120 #include <utmp.h>],
2121 [struct utmp ut;  ut.ut_pid = 0;],
2122 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2123 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2124     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2127 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2128 AC_TRY_COMPILE([#include <sys/types.h>
2129 #include <utmp.h>],
2130 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2131 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2132 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2133     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2136 dnl Look for the IPv6 varient by preference. Many systems have both.
2137 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2138 AC_TRY_COMPILE([#include <sys/types.h>
2139 #include <utmp.h>],
2140 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2141 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2142 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2143     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2146 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2147 AC_TRY_COMPILE([#include <sys/types.h>
2148 #include <utmp.h>],
2149 [struct utmp ut;  ut.ut_addr = 0;],
2150 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2151 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2152     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2155 if test x$ac_cv_func_pututline = xyes ; then
2156   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2157   AC_TRY_COMPILE([#include <sys/types.h>
2158 #include <utmp.h>],
2159   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2160   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2161   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2162       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2163   fi
2166 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2167 AC_TRY_COMPILE([#include <sys/types.h>
2168 #include <utmpx.h>],
2169 [struct utmpx ux;  ux.ut_syslen = 0;],
2170 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2171 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2172     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2176 # end utmp details
2179 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2180 AC_ARG_WITH(libiconv,
2181 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2183   if test "$withval" = "no" ; then
2184     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2185   else
2186      if test "$withval" != "yes" ; then
2187         ICONV_PATH_SPEC=yes
2188         ICONV_LOOK_DIRS="$withval"
2189      fi
2190   fi
2193 for i in $ICONV_LOOK_DIRS ; do
2195     save_LIBS="$LIBS"
2196     save_LDFLAGS="$LDFLAGS"
2197     save_CPPFLAGS="$CPPFLAGS"
2199     iconv_current_LIBS=""
2200     iconv_current_LDFLAGS=""
2201     iconv_current_CPPFLAGS=""
2203     ICONV_FOUND="no"
2204     unset libext
2206     #  This is here to handle -withval stuff for --with-libiconv
2207     #  Perhaps we should always add a -L
2208     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2210     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2211     # installation paths. This gets a little tricky since we might have iconv
2212     # in both libiconv and in libc. In this case the jm_ICONV test will always
2213     # succeed when the header is found. To counter this, make sure the
2214     # library directory is there and check the ABI directory first (which
2215     # should be harmless on other systems, but causes tons of linker warnings on
2216     # 64bit Ubuntu systems).
2217     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2218     # installed, I've decided to fix the linker warnings.
2219     # -- Kai
2220     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2221     for l in "lib" "lib32" "lib/hpux32"; do
2222         if test -d "$i/$l" ; then
2223                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2224                 LIBS=
2225                 export LDFLAGS LIBS CPPFLAGS
2226                 # Try to find iconv(3)
2227                 jm_ICONV($i/$l)
2228                 if test x"$ICONV_FOUND" = "xyes" ; then
2229                     libext="$l"
2230                     break
2231                 fi
2232         fi
2233     done
2235     if test x"$ICONV_FOUND" = "xyes" ; then
2236         iconv_current_LDFLAGS="-L$i/$libext"
2237         iconv_current_CPPFLAGS="-I$i/include"
2239         if test x"$jm_cv_lib_iconv" != x; then
2240             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2241         else
2242             # We found iconv in libc.
2243             iconv_current_LIBS=""
2244         fi
2246     fi
2248     if test x"$ICONV_FOUND" = "xyes" ; then
2250         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2251         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2252         LIBS="$save_LIBS $iconv_current_LIBS"
2253         export LDFLAGS LIBS CPPFLAGS
2255         default_dos_charset=no
2256         default_display_charset=no
2257         default_unix_charset=no
2259         # check for default dos charset name
2260         for j in CP850 IBM850 ; do
2261             rjs_CHARSET($j)
2262             default_dos_charset="$ICONV_CHARSET"
2263             if test x"$default_dos_charset" = x"$j"; then
2264                 break
2265             fi
2266         done
2268         # check for default display charset name
2269         for j in ASCII 646 ; do
2270             rjs_CHARSET($j)
2271             default_display_charset="$ICONV_CHARSET"
2272             if test x"$default_display_charset" = x"$j"; then
2273                 break
2274             fi
2275         done
2277         # check for default unix charset name
2278         for j in UTF-8 UTF8 ; do
2279             rjs_CHARSET($j)
2280             default_unix_charset="$ICONV_CHARSET"
2281             if test x"$default_unix_charset" = x"$j"; then
2282                 break
2283             fi
2284         done
2286         if test "$default_dos_charset" != "no" -a \
2287                 "$default_dos_charset" != "cross" -a \
2288                 "$default_display_charset" != "no" -a \
2289                 "$default_display_charset" != "cross" -a \
2290                 "$default_unix_charset" != "no" -a \
2291                 "$default_unix_charset" != "cross"
2292         then
2293                 samba_cv_HAVE_NATIVE_ICONV=yes
2294         else
2295             if test "$default_dos_charset" = "cross" -o \
2296                      "$default_display_charset" = "cross" -o \
2297                      "$default_unix_charset" = "cross"
2298             then
2299                     samba_cv_HAVE_NATIVE_ICONV=cross
2300             else
2301                     samba_cv_HAVE_NATIVE_ICONV=no
2302             fi
2303         fi
2305         # At this point, we have a libiconv candidate. We know that
2306         # we have the right headers and libraries, but we don't know
2307         # whether it does the conversions we want. We can't test this
2308         # because we are cross-compiling. This is not necessarily a big
2309         # deal, since we can't guarantee that the results we get now will
2310         # match the results we get at runtime anyway.
2311         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2312             default_dos_charset="CP850"
2313             default_display_charset="ASCII"
2314             default_unix_charset="UTF-8"
2315             samba_cv_HAVE_NATIVE_ICONV=yes
2316             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2317             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2318         fi
2320         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2322             CPPFLAGS=$save_CPPFLAGS
2323             LDFLAGS=$save_LDFLAGS
2324             LIBS=$save_LIBS
2326             if test x"$iconv_current_LIBS" != x; then
2327                 LIBS="$LIBS $iconv_current_LIBS"
2328             fi
2330             # Add the flags we need to CPPFLAGS and LDFLAGS
2331             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2332             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2334             # Turn the #defines into string literals
2335             default_dos_charset="\"$default_dos_charset\""
2336             default_display_charset="\"$default_display_charset\""
2337             default_unix_charset="\"$default_unix_charset\""
2339             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2340             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2341             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2342             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2344            break
2345         fi
2347     # We didn't find a working iconv, so keep going
2348     fi
2350     #  We only need to clean these up here for the next pass through the loop
2351     CPPFLAGS=$save_CPPFLAGS
2352     LDFLAGS=$save_LDFLAGS
2353     LIBS=$save_LIBS
2354     export LDFLAGS LIBS CPPFLAGS
2355 done
2356 unset libext
2359 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2360     AC_MSG_WARN([Sufficient support for iconv function was not found.
2361     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2362    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2363    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2364    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2368 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2369 AC_TRY_RUN([
2370 #include <sys/types.h>
2371 #include <fcntl.h>
2372 #ifndef F_GETLEASE
2373 #define F_GETLEASE      1025
2374 #endif
2375 main() {
2376        int fd = open("/dev/null", O_RDONLY);
2377        return fcntl(fd, F_GETLEASE, 0) == -1;
2380 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2381 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2382     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2385 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2386 AC_TRY_RUN([
2387 #include <sys/types.h>
2388 #include <fcntl.h>
2389 #include <signal.h>
2390 #ifndef F_NOTIFY
2391 #define F_NOTIFY 1026
2392 #endif
2393 main() {
2394         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2397 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2398 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2399     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2402 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2403 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2404 AC_CHECK_FUNCS(inotify_init)
2405 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2407 samba_cv_HAVE_INOTIFY=yes,
2408 samba_cv_HAVE_INOTIFY=no,
2409 samba_cv_HAVE_INOTIFY=cross)
2411 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2412     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2415 #################################################
2416 # Check if FAM notifications are available. For FAM info, see
2417 #       http://oss.sgi.com/projects/fam/
2418 #       http://savannah.nongnu.org/projects/fam/
2419 AC_ARG_ENABLE(fam,
2420 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2422 if test x$enable_fam != xno; then
2423     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2424     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2425         # On IRIX, libfam requires libC, but other FAM implementations
2426         # might not need it.
2427         AC_CHECK_LIB(fam, FAMOpen2,
2428             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2429             [samba_cv_HAVE_LIBFAM=no])
2431         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2432             samba_fam_xtra=-lC
2433             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2434                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2435                 [samba_cv_HAVE_LIBFAM=no])
2436             unset samba_fam_xtra
2437         fi
2438     fi
2440     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2441         default_shared_modules="$default_shared_modules vfs_notify_fam"
2442         AC_TRY_COMPILE([#include <fam.h>],
2443                     [FAMCodes code = FAMChanged;],
2444                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2445                         [Whether fam.h contains a typedef for enum FAMCodes]),
2446                     [])
2447     fi
2449     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2450         AC_MSG_ERROR(FAM support requested but FAM library not available )
2451     fi
2454 AC_SUBST(SMB_FAM_LIBS)
2456 #################################################
2457 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2459 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2461 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2462 # Theoretically it should work with AIX JFS2 too but this needs testing
2463 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2464     default_shared_modules="$default_shared_modules vfs_tsmsm"
2467 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2468 AC_TRY_RUN([
2469 #include <sys/types.h>
2470 #include <fcntl.h>
2471 #include <signal.h>
2472 #include <sys/file.h>
2473 #ifndef LOCK_MAND
2474 #define LOCK_MAND       32
2475 #define LOCK_READ       64
2476 #endif
2477 main() {
2478         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2481 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2482 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2483     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2487 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2488 AC_TRY_COMPILE([#include <sys/types.h>
2489 #include <fcntl.h>],
2490 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2491 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2492 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2493     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2496 #################################################
2497 # Check for POSIX capability support
2499 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2500     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2501     [], [])
2503 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2505     ac_save_LIBS=$LIBS
2506     AC_LIBTESTFUNC(cap, cap_get_proc)
2508     AC_CACHE_CHECK([for POSIX capabilities],
2509             samba_cv_HAVE_POSIX_CAPABILITIES,
2510             [
2511                 AC_TRY_RUN([
2512 #include <sys/types.h>
2513 #include <sys/capability.h>
2514 main() {
2515  cap_t cap;
2516  cap_value_t vals[1];
2517  if (!(cap = cap_get_proc()))
2518    exit(1);
2519  vals[0] = CAP_CHOWN;
2520  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2521  cap_set_proc(cap);
2522  exit(0);
2524                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2525                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2526                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2527             ])
2529 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2530     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2531             [Whether POSIX capabilities are available])
2532 else
2533     LIBS=$ac_save_LIBS
2539 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2540 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2543 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2544 AC_TRY_COMPILE([#include <sys/types.h>
2545 #if defined(HAVE_RPC_RPC_H)
2546 #include <rpc/rpc.h>
2547 #endif],
2548 [int16 testvar;],
2549 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2550 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2551     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2554 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2555 AC_TRY_COMPILE([#include <sys/types.h>
2556 #if defined(HAVE_RPC_RPC_H)
2557 #include <rpc/rpc.h>
2558 #endif],
2559 [uint16 testvar;],
2560 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2561 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2562     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2565 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2566 AC_TRY_COMPILE([#include <sys/types.h>
2567 #if defined(HAVE_RPC_RPC_H)
2568 #include <rpc/rpc.h>
2569 #endif],
2570 [int32 testvar;],
2571 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2572 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2573     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2576 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2577 AC_TRY_COMPILE([#include <sys/types.h>
2578 #if defined(HAVE_RPC_RPC_H)
2579 #include <rpc/rpc.h>
2580 #endif],
2581 [uint32 testvar;],
2582 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2583 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2584     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2588 dnl Some systems (SCO) have a problem including
2589 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2590 dnl as a #define in <prot.h> and as part of an enum
2591 dnl in <rpc/rpc.h>.
2594 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2595 AC_TRY_COMPILE([#include <sys/types.h>
2596 #ifdef HAVE_SYS_SECURITY_H
2597 #include <sys/security.h>
2598 #include <prot.h>
2599 #endif  /* HAVE_SYS_SECURITY_H */
2600 #if defined(HAVE_RPC_RPC_H)
2601 #include <rpc/rpc.h>
2602 #endif],
2603 [int testvar;],
2604 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2605 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2606     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2609 AC_MSG_CHECKING([for test routines])
2610 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2611            AC_MSG_RESULT(yes),
2612            AC_MSG_ERROR([cant find test code. Aborting config]),
2613            AC_MSG_WARN([cannot run when cross-compiling]))
2615 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2616 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2617            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2618 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2619     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2622 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2623 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2624            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2625 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2626     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2629 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2630 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2631 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2632 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2633 AC_CHECK_FUNCS(getpagesize)
2635 ################################################
2636 # look for a method of setting the effective uid
2637 seteuid=no;
2638 if test $seteuid = no; then
2639 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2640 AC_TRY_RUN([
2641 #define AUTOCONF_TEST 1
2642 #define USE_SETRESUID 1
2643 #include "confdefs.h"
2644 #include "${srcdir-.}/lib/util_sec.c"],
2645            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2646 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2647     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2652 if test $seteuid = no; then
2653 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2654 AC_TRY_RUN([
2655 #define AUTOCONF_TEST 1
2656 #define USE_SETREUID 1
2657 #include "confdefs.h"
2658 #include "${srcdir-.}/lib/util_sec.c"],
2659            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2660 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2661     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2665 if test $seteuid = no; then
2666 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2667 AC_TRY_RUN([
2668 #define AUTOCONF_TEST 1
2669 #define USE_SETEUID 1
2670 #include "confdefs.h"
2671 #include "${srcdir-.}/lib/util_sec.c"],
2672            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2673 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2674     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2678 if test $seteuid = no; then
2679 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2680 AC_TRY_RUN([
2681 #define AUTOCONF_TEST 1
2682 #define USE_SETUIDX 1
2683 #include "confdefs.h"
2684 #include "${srcdir-.}/lib/util_sec.c"],
2685            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2686 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2687     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2691 AC_CACHE_CHECK([for the Darwin initgroups system call],
2692         samba_cv_DARWIN_INITGROUPS,
2693         AC_TRY_LINK([
2694 #include <sys/syscall.h>
2695 #include <unistd.h>
2696         ],
2697         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2698         samba_cv_DARWIN_INITGROUPS=yes,
2699         samba_cv_DARWIN_INITGROUPS=no)
2702 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2703     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2704         [Whether to use the Darwin-specific initgroups system call])
2707 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2708 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2709            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2710 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2711     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2714 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2715 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2716            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2717 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2718     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2720 else
2723 dnl Don't check for 64 bit fcntl locking if we know that the
2724 dnl glibc2.1 broken check has succeeded.
2727   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2728   AC_TRY_RUN([
2729 #if defined(HAVE_UNISTD_H)
2730 #include <unistd.h>
2731 #endif
2732 #include <stdio.h>
2733 #include <stdlib.h>
2735 #ifdef HAVE_FCNTL_H
2736 #include <fcntl.h>
2737 #endif
2739 #ifdef HAVE_SYS_FCNTL_H
2740 #include <sys/fcntl.h>
2741 #endif
2742 main() { struct flock64 fl64;
2743 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2744 exit(0);
2745 #else
2746 exit(1);
2747 #endif
2749        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2751   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2752       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2753   fi
2756 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2757 AC_TRY_COMPILE([#include <sys/types.h>
2758 #include <sys/stat.h>
2759 #include <unistd.h>],
2760 [struct stat st;  st.st_blocks = 0;],
2761 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2762 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2763     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2766 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2767 AC_TRY_COMPILE([#include <sys/types.h>
2768 #include <sys/stat.h>
2769 #include <unistd.h>],
2770 [struct stat st;  st.st_blksize = 0;],
2771 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2772 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2773     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2776 AC_CACHE_CHECK([for st_flags in struct stat],
2777         samba_cv_HAVE_STAT_ST_FLAGS,
2778         [
2779             AC_TRY_COMPILE([#include <sys/types.h>
2780 #include <sys/stat.h>
2781 #include <unistd.h>],
2782             [struct stat st;  st.st_flags = 0;],
2783             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2784             samba_cv_HAVE_STAT_ST_FLAGS=no,
2785             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2786         ])
2788 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2789     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2790                 [Whether the stat struct has a st_flags member])
2793 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2794 AC_TRY_COMPILE([
2795 #include <sys/types.h>
2796 #include <sys/acl.h>
2797 #if defined(HAVE_RPCSVC_NIS_H)
2798 #include <rpcsvc/nis.h>
2799 #endif],
2800 [int i;],
2801 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2802 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2803         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2806 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2807 AC_TRY_RUN([
2808 #include <stdio.h>
2809 #include <limits.h>
2810 main() {
2811         char *newpath = realpath("/tmp", NULL);
2812         exit ((newpath != NULL) ? 0 : 1);
2815 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2816 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2817     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2820 #################################################
2821 # check for AFS clear-text auth support
2822 samba_cv_WITH_AFS=no
2823 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2824 AC_ARG_WITH(afs,
2825 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2826 [ case "$withval" in
2827   yes|auto)
2828     AC_MSG_RESULT($withval)
2829     samba_cv_WITH_AFS=$withval
2830     ;;
2831   *)
2832     AC_MSG_RESULT(no)
2833     ;;
2834   esac ],
2835   AC_MSG_RESULT(no)
2838 ####################################################
2839 # check for Linux-specific AFS fake-kaserver support
2840 samba_cv_WITH_FAKE_KASERVER=no
2841 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2842 AC_ARG_WITH(fake-kaserver,
2843 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2844 [ case "$withval" in
2845   yes|auto)
2846     AC_MSG_RESULT($withval)
2847     samba_cv_WITH_FAKE_KASERVER=$withval
2848     ;;
2849   *)
2850     AC_MSG_RESULT(no)
2851     ;;
2852   esac ],
2853   AC_MSG_RESULT(no)
2856 #################################################
2857 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2858 if test x"$samba_cv_WITH_AFS" != x"no" ||
2859    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2861     # see if this box has the afs-headers in /usr/include/afs
2862     AC_MSG_CHECKING(for /usr/include/afs)
2863     if test -d /usr/include/afs; then
2864           CFLAGS="$CFLAGS -I/usr/include/afs"
2865           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2866           AC_MSG_RESULT(yes)
2867     else
2868       AC_MSG_RESULT(no)
2869     fi
2871     # check for afs.h
2872     have_afs_headers=no
2873     AC_CHECK_HEADERS(afs.h afs/afs.h)
2874     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2875         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2876            test x"$samba_cv_WITH_AFS" = x"auto"; then
2877                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2878         else
2879                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2880         fi
2881     else
2882         have_afs_headers=yes
2883     fi
2886 FAKE_KASERVER_OBJ=""
2887 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2888     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2889     FAKE_KASERVER_OBJ="utils/net_afs.o"
2891 AC_SUBST(FAKE_KASERVER_OBJ)
2893 #################################################
2894 # check whether to compile AFS/NT ACL mapping module
2895 samba_cv_WITH_VFS_AFSACL=no
2896 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2897 AC_ARG_WITH(vfs-afsacl,
2898 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2899 [ case "$withval" in
2900   yes|auto)
2901     AC_MSG_RESULT($withval)
2902     samba_cv_WITH_VFS_AFSACL=yes
2903     ;;
2904   *)
2905     AC_MSG_RESULT(no)
2906     ;;
2907   esac ],
2908   AC_MSG_RESULT(no)
2911 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2912    default_shared_modules="$default_shared_modules vfs_afsacl"
2914         
2915 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2916     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2919 #################################################
2920 # check for the DFS clear-text auth system
2921 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2922 AC_ARG_WITH(dfs,
2923 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2924 [ case "$withval" in
2925   yes)
2926     AC_MSG_RESULT(yes)
2927     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2928     ;;
2929   *)
2930     AC_MSG_RESULT(no)
2931     ;;
2932   esac ],
2933   AC_MSG_RESULT(no)
2936 ########################################################
2937 # Compile with LDAP support?
2939 with_ldap_support=auto
2940 AC_MSG_CHECKING([for LDAP support])
2942 AC_ARG_WITH(ldap,
2943 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2944 [ case "$withval" in
2945     yes|no)
2946         with_ldap_support=$withval
2947         ;;
2948   esac ])
2950 AC_MSG_RESULT($with_ldap_support)
2952 SMBLDAP=""
2953 AC_SUBST(SMBLDAP)
2954 SMBLDAPUTIL=""
2955 AC_SUBST(SMBLDAPUTIL)
2956 LDBLDAP=""
2957 AC_SUBST(LDBLDAP)
2959 if test x"$with_ldap_support" != x"no"; then
2961   ##################################################################
2962   # first test for ldap.h and lber.h
2963   # (ldap.h is required for this test)
2964   AC_CHECK_HEADERS(ldap.h lber.h)
2966   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2967         if test x"$with_ldap_support" = x"yes"; then
2968          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2969         else
2970          AC_MSG_WARN(ldap.h is needed for LDAP support)
2971         fi
2972         
2973         with_ldap_support=no
2974   fi
2976   ##################################################################
2977   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
2978   # unsigned int in include/includes.h
2979   case $host_os in
2980         *hpux*)
2981          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2982          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
2983         with_ldap_support=yes
2984         ;;
2985         *)
2986         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
2987         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
2988                 if test x"$with_ldap_support" = x"yes"; then
2989                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
2990                 else
2991                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2992                 fi
2993                 with_ldap_support=no
2994         fi
2995         ;;
2996   esac
2999 if test x"$with_ldap_support" != x"no"; then
3000   ac_save_LIBS=$LIBS
3002   ##################################################################
3003   # we might need the lber lib on some systems. To avoid link errors
3004   # this test must be before the libldap test
3005   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3007   ########################################################
3008   # If ber_sockbuf_add_io() is available we can add
3009   # SASL wrapping hooks
3010   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3012   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3013                  AC_TRY_COMPILE([#include <ldap.h>],
3014                                 [int val = LDAP_OPT_SOCKBUF;],
3015                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3016                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3018   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3019           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3020         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3021   fi
3023   #######################################################
3024   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3025   # ldap logging and print it out in the samba logs
3026   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3027                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3028                  [AC_TRY_COMPILE([#include <lber.h>],
3029                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3030                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3031                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3033   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3034         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3035                   [Support for LDAP/LBER logging interception])
3036   fi
3038   ########################################################
3039   # now see if we can find the ldap libs in standard paths
3040   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3042   ########################################################
3043   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3044   # Check found in pam_ldap 145.
3045   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3047   LIBS="$LIBS $LDAP_LIBS"
3048   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3049     AC_TRY_COMPILE([
3050         #include <lber.h>
3051         #include <ldap.h>],
3052         [ldap_set_rebind_proc(0, 0, 0);],
3053         [smb_ldap_cv_ldap_set_rebind_proc=3],
3054         [smb_ldap_cv_ldap_set_rebind_proc=2]
3055     )
3056   ])
3058   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3060   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3062   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3063     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3064     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3065     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3066     default_shared_modules="$default_shared_modules";
3067     SMBLDAP="lib/smbldap.o"
3068     SMBLDAPUTIL="lib/smbldap_util.o"
3069     with_ldap_support=yes
3070     AC_MSG_CHECKING(whether LDAP support is used)
3071     AC_MSG_RESULT(yes)
3072   else
3073     if test x"$with_ldap_support" = x"yes"; then
3074         AC_MSG_ERROR(libldap is needed for LDAP support)
3075     else
3076         AC_MSG_WARN(libldap is needed for LDAP support)
3077     fi
3079     LDAP_LIBS=""
3080     with_ldap_support=no
3081   fi
3082   LIBS=$ac_save_LIBS
3086 #################################################
3087 # active directory support
3089 with_ads_support=auto
3090 AC_MSG_CHECKING([for Active Directory and krb5 support])
3092 AC_ARG_WITH(ads,
3093 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3094 [ case "$withval" in
3095     yes|no)
3096         with_ads_support="$withval"
3097         ;;
3098   esac ])
3100 AC_MSG_RESULT($with_ads_support)
3102 FOUND_KRB5=no
3103 KRB5_LIBS=""
3105 if test x"$with_ldap_support" != x"yes"; then
3107     if test x"$with_ads_support" = x"yes"; then
3108         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3109     elif test x"$with_ads_support" = x"auto"; then
3110         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3111         with_ads_support=no
3112     fi
3114 else
3116     # Check to see whether there is enough LDAP functionality to be able
3117     # to build AD support.
3119 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3120 case "$host_os" in
3121         *hpux*)
3122     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3124     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3125         if test x"$with_ads_support" = x"yes"; then
3126             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3127         elif test x"$with_ads_support" = x"auto"; then
3128             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3129             with_ads_support=no
3130         fi
3131     fi
3132     ;;
3133         *)
3134     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3136     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3137         if test x"$with_ads_support" = x"yes"; then
3138             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3139         elif test x"$with_ads_support" = x"auto"; then
3140             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3141             with_ads_support=no
3142         fi
3143     fi
3144     ;;
3145 esac
3148     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3150     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3151         if test x"$with_ads_support" = x"yes"; then
3152             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3153         elif test x"$with_ads_support" = x"auto"; then
3154             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3155             with_ads_support=no
3156         fi
3157     fi
3161 if test x"$with_ads_support" != x"no"; then
3163   # Do no harm to the values of CFLAGS and LIBS while testing for
3164   # Kerberos support.
3166   if test x$FOUND_KRB5 = x"no"; then
3167     #################################################
3168     # check for location of Kerberos 5 install
3169     AC_MSG_CHECKING(for kerberos 5 install path)
3170     AC_ARG_WITH(krb5,
3171     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3172     [ case "$withval" in
3173       no)
3174         AC_MSG_RESULT(no krb5-path given)
3175         ;;
3176       yes)
3177         AC_MSG_RESULT(/usr)
3178         FOUND_KRB5=yes
3179         ;;
3180       *)
3181         AC_MSG_RESULT($withval)
3182         KRB5_CFLAGS="-I$withval/include"
3183         KRB5_CPPFLAGS="-I$withval/include"
3184         KRB5_LDFLAGS="-L$withval/lib"
3185         FOUND_KRB5=yes
3186         if test -x "$withval/bin/krb5-config"; then
3187                 KRB5CONFIG=$withval/bin/krb5-config
3188         fi
3189         ;;
3190       esac ],
3191       AC_MSG_RESULT(no krb5-path given)
3192     )
3193   fi
3195   #################################################
3196   # check for krb5-config from recent MIT and Heimdal kerberos 5
3197   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3198   AC_MSG_CHECKING(for working krb5-config)
3199   if test -x "$KRB5CONFIG"; then
3200     ac_save_CFLAGS=$CFLAGS
3201     CFLAGS="";export CFLAGS
3202     ac_save_LDFLAGS=$LDFLAGS
3203     LDFLAGS="";export LDFLAGS
3204     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3205     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3206     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3207     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3208     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3209     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3210     FOUND_KRB5=yes
3211     AC_MSG_RESULT(yes)
3212   else
3213     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3214   fi
3216   if test x$FOUND_KRB5 = x"no"; then
3217     #################################################
3218     # see if this box has the SuSE location for the heimdal krb implementation
3219     AC_MSG_CHECKING(for /usr/include/heimdal)
3220     if test -d /usr/include/heimdal; then
3221       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3222           KRB5_CFLAGS="-I/usr/include/heimdal"
3223           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3224           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3225           FOUND_KRB5=yes
3226           AC_MSG_RESULT(yes)
3227       else
3228           KRB5_CFLAGS="-I/usr/include/heimdal"
3229           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3230           FOUND_KRB5=yes
3231           AC_MSG_RESULT(yes)
3232       fi
3233     else
3234       AC_MSG_RESULT(no)
3235     fi
3236   fi
3238   if test x$FOUND_KRB5 = x"no"; then
3239     #################################################
3240     # see if this box has the RedHat location for kerberos
3241     AC_MSG_CHECKING(for /usr/kerberos)
3242     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3243       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3244       KRB5_CFLAGS="-I/usr/kerberos/include"
3245       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3246       FOUND_KRB5=yes
3247       AC_MSG_RESULT(yes)
3248     else
3249       AC_MSG_RESULT(no)
3250     fi
3251   fi
3253   if test x$FOUND_KRB5 = x"no"; then
3254     #################################################
3255     # see if this box has the OpenBSD location for heimdal krb5
3256     AC_MSG_CHECKING(for /usr/include/kerberosV)
3257     if test -d /usr/include/kerberosV; then
3258       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3259       KRB5_LIBS="-lcrypto"
3260       FOUND_KRB5=yes
3261       AC_MSG_RESULT(yes)
3262     else
3263       AC_MSG_RESULT(no)
3264     fi
3265   fi
3267   ac_save_CFLAGS=$CFLAGS
3268   ac_save_CPPFLAGS=$CPPFLAGS
3269   ac_save_LDFLAGS=$LDFLAGS
3271   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3272   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3273   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3275   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3277   # now check for krb5.h. Some systems have the libraries without the headers!
3278   # note that this check is done here to allow for different kerberos
3279   # include paths
3280   AC_CHECK_HEADERS(krb5.h)
3282   if test x"$ac_cv_header_krb5_h" = x"no"; then
3284     # Give a warning if AD support was not explicitly requested,
3285     # i.e with_ads_support = auto, otherwise die with an error.
3287     if test x"$with_ads_support" = x"yes"; then
3288       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3289     else
3290       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3291     fi
3293     # Turn off AD support and restore CFLAGS and LIBS variables
3295     with_ads_support="no"
3297     CFLAGS=$ac_save_CFLAGS
3298     CPPFLAGS=$ac_save_CPPFLAGS
3299     LDFLAGS=$ac_save_LDFLAGS
3300   fi
3301   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3302   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3303         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3304         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3305   fi
3308 # Now we have determined whether we really want ADS support
3309 use_ads=no
3310 if test x"$with_ads_support" != x"no"; then
3311   use_ads=yes
3312   have_gssapi=no
3313   ac_save_LIBS=$LIBS
3315   # now check for gssapi headers.  This is also done here to allow for
3316   # different kerberos include paths
3317   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3319   ##################################################################
3320   # we might need the k5crypto and com_err libraries on some systems
3321   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3322   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3324   # Heimdal checks.
3325   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3326   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3327   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3329   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3330   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3332   ########################################################
3333   # now see if we can find the krb5 libs in standard paths
3334   # or as specified above
3335   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3336   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3338   ########################################################
3339   # now see if we can find the gssapi libs in standard paths
3340   if test x"$have_gssapi" != x"yes"; then
3341      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3342   fi
3344   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3345   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3346   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3347   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3348   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3349   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3350   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3351   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3352   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3353   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3354   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3355   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3356   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3357   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3358   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3359   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3360   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3361   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3362   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3363   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3364   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3365   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3366   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3367   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3368   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3369   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3370   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3371   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3372   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3373   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3374   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3375   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3376   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3377   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3378   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3379   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3380   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3381   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3382   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3383   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3384   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3386   LIBS="$KRB5_LIBS $LIBS"
3388   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3389         smb_krb5_cv_ticket_has_keyinfo,
3390         [
3391             AC_TRY_COMPILE(
3392             [
3393                 #include <krb5.h>
3394             ],
3395             [
3396                 krb5_ticket ticket;
3397                 krb5_kvno kvno;
3398                 krb5_enctype enctype;
3400                 enctype = ticket.enc_part.enctype;
3401                 kvno = ticket.enc_part.kvno;
3402             ],
3403             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3404             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3405         ])
3407   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3408         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3409             [Whether the krb5_ticket structure contains the kvno and enctype])
3410   fi
3412   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3413           smb_krb5_cv_creds_opt_free_context,
3414           [
3415                 AC_TRY_COMPILE([
3416                     #include <krb5.h>],
3417                     [
3418                         krb5_context ctx;
3419                         krb5_get_init_creds_opt *opt = NULL;
3420                         krb5_get_init_creds_opt_free(ctx, opt);
3421                     ],
3422                     [smb_krb5_cv_creds_opt_free_context=yes],
3423                     [smb_krb5_cv_creds_opt_free_context=no]
3424                 )
3425           ])
3427   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3428         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3429             [Whether krb5_get_init_creds_opt_free takes a context argument])
3430   fi
3432   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3433     AC_TRY_COMPILE([
3434         #include <krb5.h>],
3435         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3436         [smb_krb5_cv_verify_checksum=7],
3437         [smb_krb5_cv_verify_checksum=6],
3438     )
3439   ])
3440   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3442   AC_CACHE_CHECK([for checksum in krb5_checksum],
3443                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3444     AC_TRY_COMPILE([#include <krb5.h>],
3445       [krb5_checksum cksum; cksum.checksum.length = 0;],
3446       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3447       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3449   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3450     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3451                [Whether the krb5_checksum struct has a checksum property])
3452   fi
3454   AC_CACHE_CHECK([for etype in EncryptedData],
3455                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3456     AC_TRY_COMPILE([#include <krb5.h>],
3457       [EncryptedData edata; edata.etype = 0;],
3458       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3459       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3461   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3462     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3463                [Whether the EncryptedData struct has a etype property])
3464   fi
3466   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3467                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3468     AC_TRY_COMPILE([#include <krb5.h>],
3469       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3470       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3471       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3473   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3474     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3475                [Whether the krb5_ap_req struct has a ticket pointer])
3476   fi
3478   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3479                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3480     AC_TRY_COMPILE([#include <krb5.h>],
3481       [krb5_error err; err.e_data = NULL;],
3482       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3483       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3485   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3486     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3487                [Whether the krb5_error struct has a e_data pointer])
3488   fi
3490   AC_CACHE_CHECK([for krb5_crypto type],
3491                 samba_cv_HAVE_KRB5_CRYPTO,[
3492     AC_TRY_COMPILE([#include <krb5.h>],
3493       [krb5_crypto crypto;],
3494       samba_cv_HAVE_KRB5_CRYPTO=yes,
3495       samba_cv_HAVE_KRB5_CRYPTO=no)])
3497   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3498     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3499                [Whether the type krb5_crypto exists])
3500   fi
3502   AC_CACHE_CHECK([for krb5_encrypt_block type],
3503                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3504     AC_TRY_COMPILE([#include <krb5.h>],
3505       [krb5_encrypt_block block;],
3506       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3507       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3509   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3510     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3511                [Whether the type krb5_encrypt_block exists])
3512   fi
3514   AC_CACHE_CHECK([for addrtype in krb5_address],
3515                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3516     AC_TRY_COMPILE([#include <krb5.h>],
3517       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3518       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3519       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3521   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3522     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3523                [Whether the krb5_address struct has a addrtype property])
3524   fi
3526   AC_CACHE_CHECK([for addr_type in krb5_address],
3527                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3528     AC_TRY_COMPILE([#include <krb5.h>],
3529       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3530       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3531       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3533   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3534     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3535               [Whether the krb5_address struct has a addr_type property])
3536   fi
3538   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3539                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3540                  [AC_TRY_COMPILE([#include <krb5.h>],
3541     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3542     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3544   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3545     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3546               [Whether the krb5_ticket struct has a enc_part2 property])
3547   fi
3549   AC_CACHE_CHECK([for keyblock in krb5_creds],
3550                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3551     AC_TRY_COMPILE([#include <krb5.h>],
3552       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3553       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3554       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3556   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3557     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3558               [Whether the krb5_creds struct has a keyblock property])
3559   fi
3561   AC_CACHE_CHECK([for session in krb5_creds],
3562                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3563     AC_TRY_COMPILE([#include <krb5.h>],
3564       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3565       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3566       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3568   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3569     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3570               [Whether the krb5_creds struct has a session property])
3571   fi
3573   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3574                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3575     AC_TRY_COMPILE([#include <krb5.h>],
3576       [krb5_keyblock key; key.keyvalue.data = NULL;],
3577       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3578       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3580   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3581     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3582               [Whether the krb5_keyblock struct has a keyvalue property])
3583   fi
3585   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3586                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3587     AC_TRY_COMPILE([#include <krb5.h>],
3588       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3589       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3590       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3591   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3592                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3593     AC_TRY_COMPILE([#include <krb5.h>],
3594       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3595       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3596       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3597 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3598 # w.r.t. arcfour and windows, so we must not enable it here
3599   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3600           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3601     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3602               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3603   fi
3605   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3606                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3607     AC_TRY_COMPILE([#include <krb5.h>],
3608       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3609       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3610       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3612   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3613     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3614               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3615   fi
3617   AC_CACHE_CHECK([for KV5M_KEYTAB],
3618                  samba_cv_HAVE_KV5M_KEYTAB,[
3619     AC_TRY_COMPILE([#include <krb5.h>],
3620       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3621       samba_cv_HAVE_KV5M_KEYTAB=yes,
3622       samba_cv_HAVE_KV5M_KEYTAB=no)])
3624   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3625       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3626              [Whether the KV5M_KEYTAB option is available])
3627   fi
3629   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3630                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3631     AC_TRY_COMPILE([#include <krb5.h>],
3632       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3633       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3634       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3636   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3637     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3638               [Whether KRB5_KU_OTHER_CKSUM is available])
3639   fi
3641   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3642                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3643     AC_TRY_COMPILE([#include <krb5.h>],
3644       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3645       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3646       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3648   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3649     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3650               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3651   fi
3653   AC_CACHE_CHECK([for the krb5_princ_component macro],
3654                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3655     AC_TRY_LINK([#include <krb5.h>],
3656       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3657       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3658       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3660   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3661     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3662                [Whether krb5_princ_component is available])
3663   fi
3665   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3666                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3667     AC_TRY_COMPILE([#include <krb5.h>],
3668       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3669       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3670       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3672   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3673     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3674               [Whether krb5_keytab_entry has key member])
3675   fi
3677   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3678                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3679     AC_TRY_COMPILE([#include <krb5.h>],
3680       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3681       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3682       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3684   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3685     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3686               [Whether krb5_keytab_entry has keyblock member])
3687   fi
3689   AC_CACHE_CHECK([for magic in krb5_address],
3690                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3691     AC_TRY_COMPILE([#include <krb5.h>],
3692       [krb5_address addr; addr.magic = 0;],
3693       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3694       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3696   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3697     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3698               [Whether the krb5_address struct has a magic property])
3699   fi
3701   AC_CACHE_CHECK([for WRFILE: keytab support],
3702                 samba_cv_HAVE_WRFILE_KEYTAB,[
3703     AC_TRY_RUN([
3704 #include<krb5.h>
3705   main()
3706   {
3707     krb5_context context;
3708     krb5_keytab keytab;
3710     krb5_init_context(&context);
3711     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3712   }],
3713   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3714   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3716   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3717       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3718                [Whether the WRFILE:-keytab is supported])
3719   fi
3721   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3722                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3723     AC_TRY_COMPILE([#include <krb5.h>],
3724     [
3725     krb5_context context;
3726     krb5_principal principal;
3727     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3728     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3729     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3731   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3732     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3733               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3734   fi
3736   AC_CACHE_CHECK([for krb5_addresses type],
3737                 samba_cv_HAVE_KRB5_ADDRESSES,[
3738     AC_TRY_COMPILE([#include <krb5.h>],
3739       [krb5_addresses addr;],
3740       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3741       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3743   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3744     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3745                [Whether the type krb5_addresses type exists])
3746   fi
3748   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3749                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3750     AC_TRY_COMPILE([#include <krb5.h>],
3751     [
3752     krb5_mk_error(0,0,0);],
3753     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3754     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3756   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3757     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3758               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3759   fi
3761   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3762     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3763         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3764         AC_TRY_RUN_STRICT([
3765                 #include <stdlib.h>
3766                 #include <krb5.h>
3767                 int main(void) {
3768                         krb5_context context = NULL;
3769                         char *str = NULL;
3770                         krb5_enctype_to_string(context, 1, &str);
3771                         if (str) free (str); 
3772                         return 0;
3773                 }
3774                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3775                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3776                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3778     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3779       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3780                 [whether krb5_enctype_to_string takes krb5_context argument])
3781     fi
3783     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3784         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
3785         AC_TRY_RUN_STRICT([
3786                 #include <krb5.h>
3787                 int main(void) {
3788                         char buf[256];
3789                         krb5_enctype_to_string(1, buf, 256);
3790                         return 0;
3791                 }
3792                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3793                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
3794                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
3796     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
3797       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3798                 [whether krb5_enctype_to_string takes size_t argument])
3799     fi
3800   fi
3802   AC_CACHE_CHECK([for krb5_principal_get_realm],
3803                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3804     AC_TRY_LINK([#include <krb5.h>],
3805       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3806       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3807       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3809   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3810     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3811                [Whether the function krb5_principal_get_realm is defined])
3812   fi
3814   AC_CACHE_CHECK([for krb5_princ_realm],
3815                 samba_cv_HAVE_KRB5_PRINC_REALM,[
3816     AC_TRY_LINK([#include <krb5.h>],
3817       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3818       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3819       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3821   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3822     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3823                [Whether the macro krb5_princ_realm is defined])
3824   fi
3826   #
3827   #
3828   # Now the decisions whether we can support krb5
3829   #
3830   # NOTE: all tests should be done before this block!
3831   #
3832   #
3833   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3834     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3835     use_ads=no
3836   fi
3838   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3839           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3840   then
3841     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3842     use_ads=no
3843   fi
3845   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3846           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3847   then
3848     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3849     use_ads=no
3850   fi
3852   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3853           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3854   then
3855     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3856     use_ads=no
3857   fi
3859   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3860           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3861   then
3862     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3863     use_ads=no
3864   fi
3866   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
3868       # We only need the following functions if we can't get the enctype
3869       # and kvno out of the ticket directly (ie. on Heimdal).
3871       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3872       then
3873         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3874         use_ads=no
3875       fi
3877       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3878       then
3879         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3880         use_ads=no
3881       fi
3883   fi
3885   if test x"$use_ads" = x"yes"; then
3886     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3887     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3888     if test x"$have_gssapi" = x"yes"; then
3889       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3890     fi
3891   else
3892     if test x"$with_ads_support" = x"yes"; then
3893         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3894     else
3895         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3896     fi
3897     AC_REMOVE_DEFINE(HAVE_KRB5_H)
3898     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3899     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3900     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3901     KRB5_LIBS=""
3902     with_ads_support=no
3903   fi
3904   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3905   AC_MSG_RESULT([$use_ads])
3907 LIBS="$ac_save_LIBS"
3910 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3911 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3914 ########################################################
3915 # Compile with DNS Updates support?
3917 with_dnsupdate_support=no
3918 AC_MSG_CHECKING([whether to enable DNS Updates support])
3920 AC_ARG_WITH(dnsupdate,
3921 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
3922 [ case "$withval" in
3923     yes|no)
3924         with_dnsupdate_support=$withval
3925         ;;
3926   esac ])
3928 AC_MSG_RESULT($with_dnsupdate_support)
3930 if test x"$with_dnsupdate_support" != x"no"; then
3932   ################################################################
3933   # first test for Active Directory support being enabled
3934   #if test x"$with_ads_support" = x"no"; then
3935   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3936   #             with_dnsupdate_support=no
3937   #fi           
3938   ##################################################################
3939   # then test for uuid.h (necessary to generate unique DNS keynames
3940   # (uuid.h is required for this test)
3941   AC_CHECK_HEADERS(uuid/uuid.h)
3943   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3944         if test x"$with_dnsupdate_support" = x"yes"; then
3945          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3946         else
3947          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3948         fi
3949         with_dnsupdate_support=no
3950   fi
3953 if test x"$with_dnsupdate_support" != x"no"; then
3955   ########################################################
3956   # Now see if we can find the uuid libs in standard paths
3957   # On some systems, the uuid API is in libc, so we have to
3958   # be careful not to insert a spurious -luuid.
3960   UUID_LIBS=""
3961   AC_LIBTESTFUNC(uuid, uuid_generate,
3962           [
3963             case " $LIBS " in
3964                 *\ -luuid\ *)
3965                 UUID_LIBS="-luuid"
3966                 SMB_REMOVE_LIB(uuid)
3967                 ;;
3968             esac
3970             with_dnsupdate_support=yes
3971             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3972         ],
3973         [
3974             if test x"$with_dnsupdate_support" = x"yes"; then
3975                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
3976             else
3977                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
3978             fi
3979             with_dnsupdate_support=no
3980         ])
3983 #################################################
3984 # check for automount support
3985 AC_MSG_CHECKING(whether to use automount)
3986 AC_ARG_WITH(automount,
3987 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
3988 [ case "$withval" in
3989   yes)
3990     AC_MSG_RESULT(yes)
3991     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3992     ;;
3993   *)
3994     AC_MSG_RESULT(no)
3995     ;;
3996   esac ],
3997   AC_MSG_RESULT(no)
4000 #################################################
4001 # check for mount- and umount.cifs support
4002 CIFSMOUNT_PROGS=""
4003 INSTALL_CIFSMOUNT=""
4004 UNINSTALL_CIFSMOUNT=""
4005 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4006 AC_ARG_WITH(cifsmount,
4007 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4008 [ case "$withval" in
4009   no)
4010         AC_MSG_RESULT(no)
4011         ;;
4012   *)
4013         case "$host_os" in
4014         *linux*)
4015                 AC_MSG_RESULT(yes)
4016                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4017                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4018                 INSTALL_CIFSMOUNT="installcifsmount"
4019                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4020                 ;;
4021         *)
4022                 AC_MSG_ERROR(not on a linux system!)
4023                 ;;
4024         esac
4025     ;;
4026   esac ],
4027 [ case "$host_os" in
4028   *linux*)
4029         AC_MSG_RESULT(yes)
4030         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4031         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4032         INSTALL_CIFSMOUNT="installcifsmount"
4033         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4034         ;;
4035   *)
4036         AC_MSG_RESULT(no)
4037         ;;
4038   esac ]
4041 #################################################
4042 # check for cifs.spnego support
4043 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4044 CIFSSPNEGO_PROGS=""
4045 INSTALL_CIFSSPNEGO=""
4046 UNINSTALL_CIFSSPNEGO=""
4047 AC_MSG_CHECKING(whether to build cifs.spnego)
4048 AC_ARG_WITH(cifsspnego,
4049 [AS_HELP_STRING([--with-cifsspnego], [Include cifs.spnego (Linux only) support (default=no)])],
4050 [ case "$withval" in
4051   no)
4052         AC_MSG_RESULT(no)
4053         ;;
4054   *)
4055         case "$host_os" in
4056         *linux*)
4057                 if test x"$use_ads" != x"yes"; then
4058                         AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4059                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4060                         AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4061                 else
4062                         AC_MSG_RESULT(yes)
4063                         AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4064                         CIFSSPNEGO_PROGS="bin/cifs.spnego"
4065                         INSTALL_CIFSSPNEGO="installcifsspnego"
4066                         UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4067                 fi
4068                 ;;
4069         *)
4070                 AC_MSG_ERROR(not on a linux system!)
4071                 ;;
4072         esac
4073     ;;
4074   esac ],
4076   AC_MSG_RESULT(no)
4077   ]
4081 #################################################
4082 # Check for a PAM clear-text auth, accounts, password
4083 # and session support. Most PAM implementations keep their
4084 # headers in /usr/include/security. Darwin keeps its in
4085 # /usr/include/pam.
4087 with_pam_for_crypt=no
4088 try_pam=no
4089 AC_MSG_CHECKING(whether to try PAM support)
4090 AC_ARG_WITH(pam,
4091 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4092 [ case "$withval" in
4093   yes|no)
4094     try_pam=$withval
4095     ;;
4096   esac
4098 AC_MSG_RESULT([$try_pam])
4100 use_pam=no
4101 create_pam_modules=no
4102 if test x"${try_pam}" != x"no";then
4103         use_pam=yes
4104         create_pam_modules=yes
4106         # Most systems have PAM headers in /usr/include/security, but Darwin
4107         # has them in /usr/include/pam.
4108         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4109         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4110                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4111                 if test x"${try_pam}" = x"yes";then
4112                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4113                 fi
4114                 use_pam=no
4115                 create_pam_modules=no
4116         fi
4118         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4119         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4120                 if test x"${try_pam}" = x"yes";then
4121                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4122                 fi
4123                 use_pam=no
4124                 create_pam_modules=no
4125         fi
4127         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4128                 #if HAVE_SECURITY_PAM_APPL_H
4129                 #include <security/pam_appl.h>
4130                 #endif
4131                 #if HAVE_PAM_PAM_APPL_H
4132                 #include <pam/pam_appl.h>
4133                 #endif
4134         ]])
4135         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4136                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4137                 if test x"${try_pam}" = x"yes";then
4138                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4139        fi
4140                 create_pam_modules=no
4141     fi
4143         if test x"$use_pam" = x"yes"; then
4144     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4145                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4146                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4147     with_pam_for_crypt=yes
4149                 if test x"$create_pam_modules" = x"yes"; then
4150                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4151                         # this checks are optional,
4152                         # we don't care about the results here
4153                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4154                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4155                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4156                 else
4157                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4158                 fi
4159         fi
4160         AC_MSG_CHECKING(whether to use PAM support)
4161         AC_MSG_RESULT([$use_pam])
4163         AC_MSG_CHECKING(whether to have PAM MODULES support)
4164         AC_MSG_RESULT([$create_pam_modules])
4165 fi # try_pam != no
4167 #################################################
4168 # check for pam_smbpass support
4169 PAM_MODULES=""
4170 INSTALL_PAM_MODULES=""
4171 UNINSTALL_PAM_MODULES=""
4172 AC_MSG_CHECKING(whether to use pam_smbpass)
4173 AC_ARG_WITH(pam_smbpass,
4174 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4175 [ case "$withval" in
4176   yes)
4177     AC_MSG_RESULT(yes)
4179        # Conditions under which pam_smbpass should not be built.
4181        if test x"$BLDSHARED" != x"true"; then
4182           AC_MSG_ERROR([No support for shared modules])
4183        elif test x"$create_pam_modules" != x"yes"; then
4184           AC_MSG_ERROR([No support for PAM MODULES])
4185        else
4186           PAM_MODULES="pam_smbpass"
4187           INSTALL_PAM_MODULES="installpammodules"
4188           UNINSTALL_PAM_MODULES="uninstallpammodules"
4189        fi
4190     ;;
4191   *)
4192     AC_MSG_RESULT(no)
4193     ;;
4194   esac ],
4195   AC_MSG_RESULT(no)
4199 ###############################################
4200 # test for where we get crypt() from
4201 AC_SEARCH_LIBS(crypt, [crypt],
4202   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4203   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4206 ## moved after the check for -lcrypt in order to
4207 ## ensure that the necessary libraries are included
4208 ## check checking for truncated salt.  Wrapped by the
4209 ## $with_pam_for_crypt variable as above   --jerry
4211 if test $with_pam_for_crypt = no; then
4212 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4213 crypt_LIBS="$LIBS"
4214 LIBS="$AUTH_LIBS $LIBS"
4215 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4216         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4217 LIBS="$crypt_LIBS"])
4218 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4219         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4223 #################################################
4224 # check for a NISPLUS_HOME support
4225 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4226 AC_ARG_WITH(nisplus-home,
4227 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4228 [ case "$withval" in
4229   yes)
4230     AC_MSG_RESULT(yes)
4231     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4232     ;;
4233   *)
4234     AC_MSG_RESULT(no)
4235     ;;
4236   esac ],
4237   AC_MSG_RESULT(no)
4240 #################################################
4241 # check for syslog logging
4242 AC_MSG_CHECKING(whether to use syslog logging)
4243 AC_ARG_WITH(syslog,
4244 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4245 [ case "$withval" in
4246   yes)
4247     AC_MSG_RESULT(yes)
4248     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4249     ;;
4250   *)
4251     AC_MSG_RESULT(no)
4252     ;;
4253   esac ],
4254   AC_MSG_RESULT(no)
4257 #################################################
4258 # check for experimental disk-quotas support
4260 samba_cv_WITH_QUOTAS=auto
4261 samba_cv_TRY_QUOTAS=no
4262 samba_cv_RUN_QUOTA_TESTS=auto
4263 samba_cv_WITH_SYS_QUOTAS=auto
4264 samba_cv_TRY_SYS_QUOTAS=auto
4265 samba_cv_SYSQUOTA_FOUND=no
4267 AC_MSG_CHECKING(whether to try disk-quotas support)
4268 AC_ARG_WITH(quotas,
4269 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4270 [ case "$withval" in
4271   yes)
4272     AC_MSG_RESULT(yes)
4273     samba_cv_WITH_QUOTAS=yes
4274     samba_cv_TRY_QUOTAS=yes
4275     samba_cv_RUN_QUOTA_TESTS=yes
4276     #set sys quotas to auto in this case
4277     samba_cv_TRY_SYS_QUOTAS=auto
4278     ;;
4279   auto)
4280     AC_MSG_RESULT(auto)
4281     samba_cv_WITH_QUOTAS=auto
4282     samba_cv_TRY_QUOTAS=auto
4283     samba_cv_RUN_QUOTA_TESTS=auto
4284     #set sys quotas to auto in this case
4285     samba_cv_TRY_SYS_QUOTAS=auto
4286     ;;
4287   no)
4288     AC_MSG_RESULT(no)
4289     samba_cv_WITH_QUOTAS=no
4290     samba_cv_TRY_QUOTAS=no
4291     samba_cv_RUN_QUOTA_TESTS=no
4292     ;;
4293   *)
4294     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4295     ;;
4296   esac ],
4297   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4300 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4301 AC_ARG_WITH(sys-quotas,
4302 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4303 [ case "$withval" in
4304   yes)
4305     AC_MSG_RESULT(yes)
4306     samba_cv_WITH_SYS_QUOTAS=yes
4307     samba_cv_TRY_SYS_QUOTAS=yes
4308     samba_cv_RUN_QUOTA_TESTS=yes
4309     ;;
4310   auto)
4311     AC_MSG_RESULT(auto)
4312     samba_cv_WITH_SYS_QUOTAS=auto
4313     samba_cv_TRY_SYS_QUOTAS=auto
4314     samba_cv_RUN_QUOTA_TESTS=auto
4315     ;;
4316   no)
4317     AC_MSG_RESULT(no)
4318     samba_cv_WITH_SYS_QUOTAS=no
4319     samba_cv_TRY_SYS_QUOTAS=no
4320     ;;
4321   *)
4322     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4323     ;;
4324   esac ],
4325   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4328 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4329 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4330   case "$host_os" in
4331         *linux*)
4332             AC_MSG_RESULT(yes)
4333             samba_cv_TRY_SYS_QUOTAS=yes
4334             samba_cv_RUN_QUOTA_TESTS=yes
4335             ;;
4336         *)
4337             AC_MSG_RESULT(no)
4338             samba_cv_TRY_SYS_QUOTAS=no
4339             ;;
4340   esac
4343 #############################################
4344 # only check for quota stuff if --with-quotas
4345 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4347 case "$host_os" in
4348         # on linux we didn't need to test we have builtin support
4349         *linux*)
4350             samba_cv_SYSQUOTA_FOUND=yes
4351             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4352             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4353             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4354             AC_MSG_RESULT(yes)
4356             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4357             samba_cv_found_xfs_header=yes
4358             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4359             AC_MSG_RESULT(yes)
4360             ;;
4361         *solaris*)
4362             # need to set this define when using static linking (BUG 1473)
4363             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4364             ;;
4365         *)
4366             ;;
4367 esac
4369 # some broken header files need this
4370 AC_CHECK_HEADER(asm/types.h,[
4371             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4372             AC_ADD_INCLUDE(<asm/types.h>)
4373             ])
4375 # For quotas on Veritas VxFS filesystems
4376 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4378 # For quotas on Linux XFS filesystems
4379 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4381 # For sys/quota.h and linux/quota.h
4382 AC_CHECK_HEADERS(sys/quota.h)
4384 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4385 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4386 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4387 AC_TRY_COMPILE([
4388 #include "confdefs.h"
4389 #ifdef HAVE_SYS_TYPES_H
4390 #include <sys/types.h>
4391 #endif
4392 #ifdef HAVE_ASM_TYPES_H
4393 #include <asm/types.h>
4394 #endif
4395 #include <sys/quota.h>
4396 ],[int i = Q_XGETQUOTA;],
4397 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4398 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4399         samba_cv_found_xfs_header=yes
4403 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4404 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4405 AC_TRY_COMPILE([
4406 #include "confdefs.h"
4407 #ifdef HAVE_SYS_QUOTA_H
4408 #include <sys/quota.h>
4409 #endif
4411 struct dqblk D;
4412 D.dqb_fsoftlimit = 0;],
4413 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4414 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4415         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4418 ##################
4419 # look for a working quota system
4421 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4422 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4423 AC_TRY_RUN_STRICT([
4424 #define HAVE_QUOTACTL_4A 1
4425 #define AUTOCONF_TEST 1
4426 #include "confdefs.h"
4427 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4428            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4429 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4430     samba_cv_SYSQUOTA_FOUND=yes;
4431     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4432     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4436 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4437 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4438 AC_TRY_RUN_STRICT([
4439 #define HAVE_QUOTACTL_4B 1
4440 #define AUTOCONF_TEST 1
4441 #include "confdefs.h"
4442 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4443            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4444 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4445     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4446     samba_cv_SYSQUOTA_FOUND=yes;
4447     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4448     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4452 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4453 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4454 AC_TRY_RUN_STRICT([
4455 #define HAVE_QUOTACTL_3 1
4456 #define AUTOCONF_TEST 1
4457 #include "confdefs.h"
4458 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4459            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4460 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4461     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4462     samba_cv_SYSQUOTA_FOUND=yes;
4463     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4464     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4468 #################################################
4469 # check for mntent.h and struct mntent
4470 AC_CHECK_HEADERS(mntent.h)
4471 #################################################
4472 # check for setmntent,getmntent,endmntent
4473 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4475 #################################################
4476 # check for devnm.h and struct mntent
4477 AC_CHECK_HEADERS(devnm.h)
4478 #################################################
4479 # check for devnm
4480 AC_CHECK_FUNCS(devnm)
4482 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4483     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4484         # if --with-sys-quotas=yes then build it
4485         # you have can use the get/set quota command smb.conf
4486         # options then
4487         samba_cv_SYSQUOTA_FOUND=auto
4488     fi
4489     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4490         # if --with-sys-quotas=yes then build it
4491         # you have can use the get/set quota command smb.conf
4492         # options then
4493         samba_cv_TRY_SYS_QUOTAS=auto
4494     fi
4497 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4498 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4499 SAVE_CPPFLAGS="$CPPFLAGS"
4500 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4501 AC_TRY_COMPILE([
4502 #include "confdefs.h"
4503 #define NO_PROTO_H 1
4504 #define NO_CONFIG_H 1
4505 #define HAVE_SYS_QUOTAS 1
4506 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4507 #include "${srcdir-.}/lib/sysquotas.c"
4508 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4509 CPPFLAGS="$SAVE_CPPFLAGS"
4511 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4512 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4513     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4514         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4515         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4516         samba_cv_WE_USE_SYS_QUOTAS=yes
4517         AC_MSG_RESULT(yes)
4518     else
4519         AC_MSG_RESULT(no)
4520     fi
4524 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4525 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4526 SAVE_CPPFLAGS="$CPPFLAGS"
4527 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4528 AC_TRY_COMPILE([
4529 #include "confdefs.h"
4530 #define NO_PROTO_H 1
4531 #define NO_CONFIG_H 1
4532 #define HAVE_SYS_QUOTAS 1
4533 #define HAVE_XFS_QUOTAS 1
4534 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4535 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4536 CPPFLAGS="$SAVE_CPPFLAGS"
4538 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4539     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4540         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4541     fi
4545 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4546 SAVE_CPPFLAGS="$CPPFLAGS"
4547 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4548 AC_TRY_COMPILE([
4549 #include "confdefs.h"
4550 #define NO_PROTO_H 1
4551 #define NO_CONFIG_H 1
4552 #include "${srcdir-.}/smbd/quotas.c"
4553 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4554 CPPFLAGS="$SAVE_CPPFLAGS"
4556 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4557 AC_MSG_CHECKING(whether to use the old quota support)
4558     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4559       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4560         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4561         AC_MSG_RESULT(yes)
4562       else
4563         AC_MSG_RESULT(no)
4564       fi
4565     else
4566       AC_MSG_RESULT(no)
4567     fi
4570 ####################
4571 # End of quota check samba_cv_RUN_QUOTA_TESTS
4574 #################################################
4575 # check for experimental utmp accounting
4577 AC_MSG_CHECKING(whether to support utmp accounting)
4578 WITH_UTMP=yes
4579 AC_ARG_WITH(utmp,
4580 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4581 [ case "$withval" in
4582   no)
4583                 WITH_UTMP=no
4584                 ;;
4585   *)
4586                 WITH_UTMP=yes
4587                 ;;
4588   esac ],
4591 # utmp requires utmp.h
4592 # Note similar check earlier, when checking utmp details.
4594 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4595         utmp_no_reason=", no utmp.h on $host_os"
4596         WITH_UTMP=no
4599 # Display test results
4601 if test x"$WITH_UTMP" = x"yes"; then
4602         AC_MSG_RESULT(yes)
4603         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4604 else
4605         AC_MSG_RESULT(no$utmp_no_reason)
4608 INSTALLLIBCMD_SH=:
4609 INSTALLLIBCMD_A=:
4610 UNINSTALLLIBCMD_SH=:
4611 UNINSTALLLIBCMD_A=:
4613 if test $BLDSHARED = true; then
4614         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4615         UNINSTALLLIBCMD_SH="rm -f"
4617 if test $enable_static = yes; then
4618         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4619         UNINSTALLLIBCMD_A="rm -f"
4622 #################################################
4623 # --disable-shared-libs
4624 # can be used to disable the internal use of shared libs altogether
4625 # (this only has an effect when building shared libs is enabled)
4627 USESHARED=false
4628 AC_SUBST(USESHARED)
4630 AC_MSG_CHECKING(whether to use shared libraries internally)
4631 AC_ARG_ENABLE([shared-libs],
4632         AS_HELP_STRING([--enable-shared-libs],
4633                 [Use shared libraries internally (default=yes)]),
4634         [enable_shared_libs=$enableval],
4635         [enable_shared_libs=yes])
4637 if test x"$enable_shared_libs" != x"no" ; then
4638         USESHARED=$BLDSHARED
4641 AC_MSG_RESULT([$USESHARED])
4643 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4644         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4647 #################################################
4648 # --with-static-libs=LIBS:
4649 #   link (internal) libs dynamically or statically?
4651 # If a subsystem is built as a library then this controls whether they are
4652 # linked into Samba targets statically or dynamically:
4654 # * If we build the shared library at all, we link dynamically by default.
4656 # * We only link statically if we don't build shared or if the library
4657 #   appears in the --with-static-libs configure option.
4659 # Example:
4660 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4661 #   of linking the dynamic variant with -ltalloc.
4663 # NOTE: This option only affects libraries that we do not only build
4664 # but that samba also links against as libraries (as opposed to linking
4665 # the plain object files. - This has to be configured in Makefile.in.
4666 # So in particular it does not harm to give invalid or unknown names here.
4669 AC_ARG_WITH([static-libs],
4670         [AS_HELP_STRING([--with-static-libs=LIBS],
4671                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4672         [AS_IF([test $withval],
4673                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4674                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4675                         eval LINK_$lib=STATIC
4676                 done], [])],
4677         [])
4680 # WORKAROUND:
4681 #   until we have organized other internal subsystems (as util, registry
4682 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
4683 #   dynamically to samba programs.
4685 LINK_LIBNETAPI=STATIC
4687 SMB_LIBRARY(talloc)
4688 SMB_LIBRARY(tdb)
4689 SMB_LIBRARY(netapi)
4692 #################################################
4693 # should we build libaddns?
4694 INSTALL_LIBADDNS=
4695 UNINSTALL_LIBADDNS=
4696 LIBADDNS_SHARED=
4697 LIBADDNS=
4698 AC_MSG_CHECKING(whether to build the libaddns shared library)
4699 AC_ARG_WITH(libaddns,
4700 [AS_HELP_STRING([--with-libaddns], [Build the libaddns shared library (default=no undefined API)])],
4701 [ case "$withval" in
4702   *)
4703      AC_MSG_RESULT(no)
4704      ;;
4705   yes)
4706      if test $BLDSHARED = true; then
4707         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4708         LIBADDNS=libaddns
4709         AC_MSG_RESULT(yes)
4710      else
4711         enable_static=yes
4712         AC_MSG_RESULT(no shared library support -- will supply static library)
4713      fi
4714      if test $enable_static = yes; then
4715         LIBADDNS=libaddns
4716      fi
4717      INSTALL_LIBADDNS=installlibaddns
4718      UNINSTALL_LIBADDNS=uninstalllibaddns
4719      ;;
4720   esac ],
4721 [AC_MSG_RESULT(no)]
4724 #################################################
4725 # should we build libsmbclient?
4727 INSTALL_LIBSMBCLIENT=
4728 UNINSTALL_LIBSMBCLIENT=
4729 LIBSMBCLIENT_SHARED=
4730 LIBSMBCLIENT=
4731 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4732 AC_ARG_WITH(libsmbclient,
4733 [AS_HELP_STRING([--with-libsmbclient], [Build the libsmbclient shared library (default=yes if shared libs supported)])],
4734 [ case "$withval" in
4735   no)
4736      AC_MSG_RESULT(no)
4737      ;;
4738   *)
4739      if test $BLDSHARED = true; then
4740         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4741         LIBSMBCLIENT=libsmbclient
4742         AC_MSG_RESULT(yes)
4743      else
4744         enable_static=yes
4745         AC_MSG_RESULT(no shared library support -- will supply static library)
4746      fi
4747      if test $enable_static = yes; then
4748         LIBSMBCLIENT=libsmbclient
4749      fi
4750      INSTALL_LIBSMBCLIENT=installclientlib
4751      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4752      ;;
4753   esac ],
4755 # if unspecified, default is to build it if possible.
4756   if test $BLDSHARED = true; then
4757      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4758      LIBSMBCLIENT=libsmbclient
4759      AC_MSG_RESULT(yes)
4760    else
4761      enable_static=yes
4762      AC_MSG_RESULT(no shared library support -- will supply static library)
4763    fi
4764    if test $enable_static = yes; then
4765      LIBSMBCLIENT=libsmbclient
4766   fi]
4767   INSTALL_LIBSMBCLIENT=installclientlib
4768   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4771 INSTALL_LIBSMBSHAREMODES=
4772 LIBSMBSHAREMODES_SHARED=
4773 LIBSMBSHAREMODES=
4774 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4775 AC_ARG_WITH(libsmbsharemodes,
4776 [AS_HELP_STRING([--with-libsmbsharemodes], [Build the libsmbsharemodes shared library (default=yes if shared libs supported)])],
4777 [ case "$withval" in
4778   no)
4779      AC_MSG_RESULT(no)
4780      ;;
4781   *)
4782      if test $BLDSHARED = true; then
4783         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4784         LIBSMBSHAREMODES=libsmbsharemodes
4785         AC_MSG_RESULT(yes)
4786      else
4787         enable_static=yes
4788         AC_MSG_RESULT(no shared library support -- will supply static library)
4789      fi
4790      if test $enable_static = yes; then
4791         LIBSMBSHAREMODES=libsmbsharemodes
4792      fi
4793      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4794      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4795      ;;
4796   esac ],
4798 # if unspecified, default is to build it if possible.
4799   if test $BLDSHARED = true; then
4800      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4801      LIBSMBSHAREMODES=libsmbsharemodes
4802      AC_MSG_RESULT(yes)
4803    else
4804      enable_static=yes
4805      AC_MSG_RESULT(no shared library support -- will supply static library)
4806    fi
4807    if test $enable_static = yes; then
4808      LIBSMBSHAREMODES=libsmbsharemodes
4809   fi]
4810   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4814 #################################################
4815 # these tests are taken from the GNU fileutils package
4816 AC_CHECKING(how to get filesystem space usage)
4817 space=no
4819 # Test for statvfs64.
4820 if test $space = no; then
4821   # SVR4
4822   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4823   [AC_TRY_RUN([
4824 #if defined(HAVE_UNISTD_H)
4825 #include <unistd.h>
4826 #endif
4827 #include <sys/types.h>
4828 #include <sys/statvfs.h>
4829   main ()
4830   {
4831     struct statvfs64 fsd;
4832     exit (statvfs64 (".", &fsd));
4833   }],
4834   fu_cv_sys_stat_statvfs64=yes,
4835   fu_cv_sys_stat_statvfs64=no,
4836   fu_cv_sys_stat_statvfs64=cross)])
4837   if test $fu_cv_sys_stat_statvfs64 = yes; then
4838     space=yes
4839     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4840   fi
4843 # Perform only the link test since it seems there are no variants of the
4844 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4845 # because that got a false positive on SCO OSR5.  Adding the declaration
4846 # of a `struct statvfs' causes this test to fail (as it should) on such
4847 # systems.  That system is reported to work fine with STAT_STATFS4 which
4848 # is what it gets when this test fails.
4849 if test $space = no; then
4850   # SVR4
4851   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4852                  [AC_TRY_LINK([#include <sys/types.h>
4853 #include <sys/statvfs.h>],
4854                               [struct statvfs fsd; statvfs (0, &fsd);],
4855                               fu_cv_sys_stat_statvfs=yes,
4856                               fu_cv_sys_stat_statvfs=no)])
4857   if test $fu_cv_sys_stat_statvfs = yes; then
4858     space=yes
4859     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4860   fi
4863 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4864 # This is not the case on ancient Linux systems.
4866 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4867     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4868         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4869 if test x"$samba_cv_fsid_int" = x"yes"; then
4870     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4873 if test $space = no; then
4874   # DEC Alpha running OSF/1
4875   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4876   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4877   [AC_TRY_RUN([
4878 #include <sys/param.h>
4879 #include <sys/types.h>
4880 #include <sys/mount.h>
4881   main ()
4882   {
4883     struct statfs fsd;
4884     fsd.f_fsize = 0;
4885     exit (statfs (".", &fsd, sizeof (struct statfs)));
4886   }],
4887   fu_cv_sys_stat_statfs3_osf1=yes,
4888   fu_cv_sys_stat_statfs3_osf1=no,
4889   fu_cv_sys_stat_statfs3_osf1=no)])
4890   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4891   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4892     space=yes
4893     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4894   fi
4897 if test $space = no; then
4898 # AIX
4899   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4900 member (AIX, 4.3BSD)])
4901   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4902   [AC_TRY_RUN([
4903 #ifdef HAVE_SYS_PARAM_H
4904 #include <sys/param.h>
4905 #endif
4906 #ifdef HAVE_SYS_MOUNT_H
4907 #include <sys/mount.h>
4908 #endif
4909 #ifdef HAVE_SYS_VFS_H
4910 #include <sys/vfs.h>
4911 #endif
4912   main ()
4913   {
4914   struct statfs fsd;
4915   fsd.f_bsize = 0;
4916   exit (statfs (".", &fsd));
4917   }],
4918   fu_cv_sys_stat_statfs2_bsize=yes,
4919   fu_cv_sys_stat_statfs2_bsize=no,
4920   fu_cv_sys_stat_statfs2_bsize=no)])
4921   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4922   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4923     space=yes
4924     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4925   fi
4928 if test $space = no; then
4929 # SVR3
4930   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4931   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4932   [AC_TRY_RUN([#include <sys/types.h>
4933 #include <sys/statfs.h>
4934   main ()
4935   {
4936   struct statfs fsd;
4937   exit (statfs (".", &fsd, sizeof fsd, 0));
4938   }],
4939     fu_cv_sys_stat_statfs4=yes,
4940     fu_cv_sys_stat_statfs4=no,
4941     fu_cv_sys_stat_statfs4=no)])
4942   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4943   if test $fu_cv_sys_stat_statfs4 = yes; then
4944     space=yes
4945     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4946   fi
4949 if test $space = no; then
4950 # 4.4BSD and NetBSD
4951   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4952 member (4.4BSD and NetBSD)])
4953   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4954   [AC_TRY_RUN([#include <sys/types.h>
4955 #ifdef HAVE_SYS_PARAM_H
4956 #include <sys/param.h>
4957 #endif
4958 #ifdef HAVE_SYS_MOUNT_H
4959 #include <sys/mount.h>
4960 #endif
4961   main ()
4962   {
4963   struct statfs fsd;
4964   fsd.f_fsize = 0;
4965   exit (statfs (".", &fsd));
4966   }],
4967   fu_cv_sys_stat_statfs2_fsize=yes,
4968   fu_cv_sys_stat_statfs2_fsize=no,
4969   fu_cv_sys_stat_statfs2_fsize=no)])
4970   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4971   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4972     space=yes
4973         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4974   fi
4977 if test $space = no; then
4978   # Ultrix
4979   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4980   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4981   [AC_TRY_RUN([#include <sys/types.h>
4982 #ifdef HAVE_SYS_PARAM_H
4983 #include <sys/param.h>
4984 #endif
4985 #ifdef HAVE_SYS_MOUNT_H
4986 #include <sys/mount.h>
4987 #endif
4988 #ifdef HAVE_SYS_FS_TYPES_H
4989 #include <sys/fs_types.h>
4990 #endif
4991   main ()
4992   {
4993   struct fs_data fsd;
4994   /* Ultrix's statfs returns 1 for success,
4995      0 for not mounted, -1 for failure.  */
4996   exit (statfs (".", &fsd) != 1);
4997   }],
4998   fu_cv_sys_stat_fs_data=yes,
4999   fu_cv_sys_stat_fs_data=no,
5000   fu_cv_sys_stat_fs_data=no)])
5001   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5002   if test $fu_cv_sys_stat_fs_data = yes; then
5003     space=yes
5004     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5005   fi
5009 # As a gating factor for large file support, in order to
5010 # use <4GB files we must have the following minimal support
5011 # available.
5012 # long long, and a 64 bit off_t or off64_t.
5013 # If we don't have all of these then disable large
5014 # file support.
5016 AC_MSG_CHECKING([if large file support can be enabled])
5017 AC_TRY_COMPILE([
5018 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5019 #include <sys/types.h>
5020 #else
5021 __COMPILE_ERROR_
5022 #endif
5024 [int i],
5025 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5026 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5027         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5029 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5031 #################################################
5032 # check for cluster extensions
5034 AC_MSG_CHECKING(whether to include cluster support)
5035 AC_ARG_WITH(cluster-support,
5036 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5037 if test "x$with_cluster_support" = "xyes"; then
5038     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5039     AC_MSG_RESULT(yes)
5040 else
5041     AC_MSG_RESULT(no)
5045 #################################################
5046 # check for ACL support
5048 AC_MSG_CHECKING(whether to support ACLs)
5049 AC_ARG_WITH(acl-support,
5050 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5051 [ case "$withval" in
5052         yes|no)
5053                 with_acl_support="$withval"
5054                 ;;
5055   esac ])
5057 if test x"$with_acl_support" = x ; then
5058         with_acl_support="auto"
5061 AC_MSG_RESULT($with_acl_support)
5063 if test x"$with_acl_support" = x"no"; then
5064         AC_MSG_RESULT(Disabling ACL support)
5065         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5066 else
5067         AC_MSG_NOTICE(checking whether ACL support is available:)
5068         case "$host_os" in
5069         *sysv5*)
5070                 AC_MSG_NOTICE(Using UnixWare ACLs)
5071                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5072                 default_static_modules="$default_static_modules vfs_solarisacl"
5073                 ;;
5074         *solaris*)
5075                 AC_MSG_NOTICE(Using solaris ACLs)
5076                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5077                 ACL_LIBS="$ACL_LIBS -lsec"
5078                 default_static_modules="$default_static_modules vfs_solarisacl"
5079                 ;;
5080         *hpux*)
5081                 AC_MSG_NOTICE(Using HPUX ACLs)
5082                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5083                 default_static_modules="$default_static_modules vfs_hpuxacl"
5084                 ;;
5085         *irix*)
5086                 AC_MSG_NOTICE(Using IRIX ACLs)
5087                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5088                 default_static_modules="$default_static_modules vfs_irixacl"
5089                 ;;
5090         *aix*)
5091                 AC_MSG_NOTICE(Using AIX ACLs)
5092                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5093                 default_static_modules="$default_static_modules vfs_aixacl"
5094                 ;;
5095         *osf*)
5096                 AC_MSG_NOTICE(Using Tru64 ACLs)
5097                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5098                 ACL_LIBS="$ACL_LIBS -lpacl"
5099                 default_static_modules="$default_static_modules vfs_tru64acl"
5100                 ;;
5101         *darwin*)
5102                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5103                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5104                 ;;
5105         *)
5106                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5107                 case "$host_os" in
5108                 *linux*)
5109                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5110                         ;;
5111                 esac
5112                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5113                         acl_LIBS=$LIBS
5114                         LIBS="$LIBS $ACL_LIBS"
5115                         AC_TRY_LINK([
5116                                 #include <sys/types.h>
5117                                 #include <sys/acl.h>
5118                         ],[
5119                                 acl_t acl;
5120                                 int entry_id;
5121                                 acl_entry_t *entry_p;
5122                                 return acl_get_entry(acl, entry_id, entry_p);
5123                         ],
5124                         [samba_cv_HAVE_POSIX_ACLS=yes],
5125                         [samba_cv_HAVE_POSIX_ACLS=no])
5126                         LIBS=$acl_LIBS
5127                 ])
5128                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5129                         AC_MSG_NOTICE(Using posix ACLs)
5130                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5131                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5132                                 acl_LIBS=$LIBS
5133                                 LIBS="$LIBS $ACL_LIBS"
5134                                 AC_TRY_LINK([
5135                                         #include <sys/types.h>
5136                                         #include <sys/acl.h>
5137                                 ],[
5138                                         acl_permset_t permset_d;
5139                                         acl_perm_t perm;
5140                                         return acl_get_perm_np(permset_d, perm);
5141                                 ],
5142                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5143                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5144                                 LIBS=$acl_LIBS
5145                         ])
5146                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5147                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5148                         fi
5149                         default_static_modules="$default_static_modules vfs_posixacl"
5150                 else
5151                         AC_MSG_NOTICE(ACL support is not avaliable)
5152                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5153                 fi
5154                 ;;
5155         esac
5156 fi # with_acl_support
5160 #################################################
5161 # check for AIO support
5163 AC_MSG_CHECKING(whether to support asynchronous io)
5164 AC_ARG_WITH(aio-support,
5165 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5166 [ case "$withval" in
5167   yes)
5169         AC_MSG_RESULT(yes)
5170         case "$host_os" in
5171         *)
5172                 AIO_LIBS=$LIBS
5173                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5174                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5175                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5176                 aio_LIBS=$LIBS
5177                 LIBS=$AIO_LIBS
5178                 AC_TRY_LINK([#include <sys/types.h>
5179 #include <aio.h>],
5180 [ struct aiocb a; return aio_read(&a);],
5181 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5182                 LIBS=$aio_LIBS])
5183                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5184                 aio_LIBS=$LIBS
5185                 LIBS=$AIO_LIBS
5186                 AC_TRY_LINK([#include <sys/types.h>
5187 #include <aio.h>],
5188 [ struct aiocb64 a; return aio_read64(&a);],
5189 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5190                 LIBS=$aio_LIBS])
5191                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5192                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5193                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5194                         LIBS=$AIO_LIBS
5195                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5196                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5197                         LIBS=$AIO_LIBS
5198                 fi
5200                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5201                         AC_MSG_CHECKING(for aio_read)
5202                         AC_LINK_IFELSE([#include <aio.h>
5203 int main() { struct aiocb a; return aio_read(&a); }],
5204 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5205 [AC_MSG_RESULT(no)])
5207                         AC_MSG_CHECKING(for aio_write)
5208                         AC_LINK_IFELSE([#include <aio.h>
5209 int main() { struct aiocb a; return aio_write(&a); }],
5210 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5211 [AC_MSG_RESULT(no)])
5213                         AC_MSG_CHECKING(for aio_fsync)
5214                         AC_LINK_IFELSE([#include <aio.h>
5215 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5216 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5217 [AC_MSG_RESULT(no)])
5219                         AC_MSG_CHECKING(for aio_return)
5220                         AC_LINK_IFELSE([#include <aio.h>
5221 int main() { struct aiocb a; return aio_return(&a); }],
5222 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5223 [AC_MSG_RESULT(no)])
5225                         AC_MSG_CHECKING(for aio_error)
5226                         AC_LINK_IFELSE([#include <aio.h>
5227 int main() { struct aiocb a; return aio_error(&a); }],
5228 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5229 [AC_MSG_RESULT(no)])
5231                         AC_MSG_CHECKING(for aio_cancel)
5232                         AC_LINK_IFELSE([#include <aio.h>
5233 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5234 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5235 [AC_MSG_RESULT(no)])
5237                         AC_MSG_CHECKING(for aio_suspend)
5238                         AC_LINK_IFELSE([#include <aio.h>
5239 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5240 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5241 [AC_MSG_RESULT(no)])
5242                 fi
5244                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5245                         AC_MSG_CHECKING(for aio_read64)
5246                         AC_LINK_IFELSE([#include <aio.h>
5247 int main() { struct aiocb a; return aio_read64(&a); }],
5248 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5249 [AC_MSG_RESULT(no)])
5251                         AC_MSG_CHECKING(for aio_write64)
5252                         AC_LINK_IFELSE([#include <aio.h>
5253 int main() { struct aiocb a; return aio_write64(&a); }],
5254 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5255 [AC_MSG_RESULT(no)])
5257                         AC_MSG_CHECKING(for aio_fsync64)
5258                         AC_LINK_IFELSE([#include <aio.h>
5259 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5260 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5261 [AC_MSG_RESULT(no)])
5263                         AC_MSG_CHECKING(for aio_return64)
5264                         AC_LINK_IFELSE([#include <aio.h>
5265 int main() { struct aiocb a; return aio_return64(&a); }],
5266 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5267 [AC_MSG_RESULT(no)])
5269                         AC_MSG_CHECKING(for aio_error64)
5270                         AC_LINK_IFELSE([#include <aio.h>
5271 int main() { struct aiocb a; return aio_error64(&a); }],
5272 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5273 [AC_MSG_RESULT(no)])
5275                         AC_MSG_CHECKING(for aio_cancel64)
5276                         AC_LINK_IFELSE([#include <aio.h>
5277 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5278 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5279 [AC_MSG_RESULT(no)])
5281                         AC_MSG_CHECKING(for aio_suspend64)
5282                         AC_LINK_IFELSE([#include <aio.h>
5283 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5284 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5285 [AC_MSG_RESULT(no)])
5286                 fi
5287             ;;
5288         esac
5289         ;;
5290   *)
5291     AC_MSG_RESULT(no)
5292     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5293     ;;
5294   esac ],
5295   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5296   AC_MSG_RESULT(no)
5299 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5300         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5301                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5302                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5303         fi
5306 #################################################
5307 # check for sendfile support
5309 with_sendfile_support=yes
5310 AC_MSG_CHECKING(whether to check to support sendfile)
5311 AC_ARG_WITH(sendfile-support,
5312 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5313 [ case "$withval" in
5314   yes)
5316         AC_MSG_RESULT(yes);
5318         case "$host_os" in
5319         *linux*)
5320                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5321                 AC_TRY_LINK([#include <sys/sendfile.h>],
5323 int tofd, fromfd;
5324 off64_t offset;
5325 size_t total;
5326 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5328 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5330                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5331                 AC_TRY_LINK([#include <sys/sendfile.h>],
5333 int tofd, fromfd;
5334 off_t offset;
5335 size_t total;
5336 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5338 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5340 # Try and cope with broken Linux sendfile....
5341                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5342                 AC_TRY_LINK([\
5343 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5344 #undef _FILE_OFFSET_BITS
5345 #endif
5346 #include <sys/sendfile.h>],
5348 int tofd, fromfd;
5349 off_t offset;
5350 size_t total;
5351 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5353 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5355         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5356                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5357                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5358                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5359         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5360                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5361                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5362                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5363         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5364                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5365                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5366         else
5367                 AC_MSG_RESULT(no);
5368         fi
5370         ;;
5371         *freebsd* | *dragonfly* )
5372                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5373                 AC_TRY_LINK([\
5374 #include <sys/types.h>
5375 #include <unistd.h>
5376 #include <sys/socket.h>
5377 #include <sys/uio.h>],
5379         int fromfd, tofd, ret, total=0;
5380         off_t offset, nwritten;
5381         struct sf_hdtr hdr;
5382         struct iovec hdtrl;
5383         hdr.headers = &hdtrl;
5384         hdr.hdr_cnt = 1;
5385         hdr.trailers = NULL;
5386         hdr.trl_cnt = 0;
5387         hdtrl.iov_base = NULL;
5388         hdtrl.iov_len = 0;
5389         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5391 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5393         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5394                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5395                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5396                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5397         else
5398                 AC_MSG_RESULT(no);
5399         fi
5400         ;;
5402         *hpux*)
5403                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5404                 AC_TRY_LINK([\
5405 #include <sys/socket.h>
5406 #include <sys/uio.h>],
5408         int fromfd, tofd;
5409         size_t total=0;
5410         struct iovec hdtrl[2];
5411         ssize_t nwritten;
5412         off64_t offset;
5414         hdtrl[0].iov_base = 0;
5415         hdtrl[0].iov_len = 0;
5417         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5419 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5420         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5421                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5422                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5423                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5424         else
5425                 AC_MSG_RESULT(no);
5426         fi
5428                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5429                 AC_TRY_LINK([\
5430 #include <sys/socket.h>
5431 #include <sys/uio.h>],
5433         int fromfd, tofd;
5434         size_t total=0;
5435         struct iovec hdtrl[2];
5436         ssize_t nwritten;
5437         off_t offset;
5439         hdtrl[0].iov_base = 0;
5440         hdtrl[0].iov_len = 0;
5442         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5444 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5445         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5446                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5447                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5448                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5449         else
5450                 AC_MSG_RESULT(no);
5451         fi
5452         ;;
5454         *solaris*)
5455                 AC_CHECK_LIB(sendfile,sendfilev)
5456                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5457                 AC_TRY_LINK([\
5458 #include <sys/sendfile.h>],
5460         int sfvcnt;
5461         size_t xferred;
5462         struct sendfilevec vec[2];
5463         ssize_t nwritten;
5464         int tofd;
5466         sfvcnt = 2;
5468         vec[0].sfv_fd = SFV_FD_SELF;
5469         vec[0].sfv_flag = 0;
5470         vec[0].sfv_off = 0;
5471         vec[0].sfv_len = 0;
5473         vec[1].sfv_fd = 0;
5474         vec[1].sfv_flag = 0;
5475         vec[1].sfv_off = 0;
5476         vec[1].sfv_len = 0;
5477         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5479 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5481         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5482                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5483                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5484                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5485         else
5486                 AC_MSG_RESULT(no);
5487         fi
5489                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5490                 AC_TRY_LINK([\
5491 #include <sys/sendfile.h>],
5493         int sfvcnt;
5494         size_t xferred;
5495         struct sendfilevec vec[2];
5496         ssize_t nwritten;
5497         int tofd;
5499         sfvcnt = 2;
5501         vec[0].sfv_fd = SFV_FD_SELF;
5502         vec[0].sfv_flag = 0;
5503         vec[0].sfv_off = 0;
5504         vec[0].sfv_len = 0;
5506         vec[1].sfv_fd = 0;
5507         vec[1].sfv_flag = 0;
5508         vec[1].sfv_off = 0;
5509         vec[1].sfv_len = 0;
5510         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5512 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5514         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5515                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5516                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5517                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5518         else
5519                 AC_MSG_RESULT(no);
5520         fi
5521         ;;
5522         *aix*)
5523                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5524                 AC_TRY_LINK([\
5525 #include <sys/socket.h>],
5527         int fromfd, tofd;
5528         size_t total=0;
5529         struct sf_parms hdtrl;
5530         ssize_t nwritten;
5531         off64_t offset;
5533         hdtrl.header_data = 0;
5534         hdtrl.header_length = 0;
5535         hdtrl.file_descriptor = fromfd;
5536         hdtrl.file_offset = 0;
5537         hdtrl.file_bytes = 0;
5538         hdtrl.trailer_data = 0;
5539         hdtrl.trailer_length = 0;
5541         nwritten = send_file(&tofd, &hdtrl, 0);
5543 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5544         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5545                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5546                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5547                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5548         else
5549                 AC_MSG_RESULT(no);
5550         fi
5551         ;;
5552         *)
5553         ;;
5554         esac
5555         ;;
5556   *)
5557     AC_MSG_RESULT(no)
5558     ;;
5559   esac ],
5560   AC_MSG_RESULT(yes)
5563 ############################################
5564 # See if we have the Linux readahead syscall.
5566 AC_CACHE_CHECK([for Linux readahead],
5567                 samba_cv_HAVE_LINUX_READAHEAD,[
5568     AC_TRY_LINK([
5569 #if defined(HAVE_UNISTD_H)
5570 #include <unistd.h>
5571 #endif
5572 #include <fcntl.h>],
5573     [ssize_t err = readahead(0,0,0x80000);],
5574     samba_cv_HAVE_LINUX_READAHEAD=yes,
5575     samba_cv_HAVE_LINUX_READAHEAD=no)])
5577 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5578   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5579              [Whether Linux readahead is available])
5582 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5584 ############################################
5585 # See if we have the posix_fadvise syscall.
5587 AC_CACHE_CHECK([for posix_fadvise],
5588                 samba_cv_HAVE_POSIX_FADVISE,[
5589     AC_TRY_LINK([
5590 #if defined(HAVE_UNISTD_H)
5591 #include <unistd.h>
5592 #endif
5593 #include <fcntl.h>],
5594     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5595     samba_cv_HAVE_POSIX_FADVISE=yes,
5596     samba_cv_HAVE_POSIX_FADVISE=no)])
5598 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5599   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5600              [Whether posix_fadvise is available])
5603 ############################################
5604 # See if we have the Linux splice syscall.
5606 AC_CACHE_CHECK([for Linux splice],
5607                 samba_cv_HAVE_LINUX_SPLICE,[
5608     AC_TRY_LINK([
5609 #if defined(HAVE_UNISTD_H)
5610 #include <unistd.h>
5611 #endif
5612 #include <fcntl.h>],
5613     [long ret = splice(0,0,1,0,400,0);],
5614     samba_cv_HAVE_LINUX_SPLICE=yes,
5615     samba_cv_HAVE_LINUX_SPLICE=no)])
5617 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5618   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5619              [Whether Linux splice is available])
5622 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5625 #################################################
5626 # Check whether winbind is supported on this platform.  If so we need to
5627 # build and install client programs, sbin programs and shared libraries
5629 AC_MSG_CHECKING(whether to build winbind)
5631 # Initially, the value of $host_os decides whether winbind is supported
5633 HAVE_WINBIND=yes
5635 # Define the winbind shared library name and any specific linker flags
5636 # it needs to be built with.
5638 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5639 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5640 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5641 NSSSONAMEVERSIONSUFFIX=""
5642 WINBIND_NSS_PTHREAD=""
5644 case "$host_os" in
5645         *linux*)
5646                 NSSSONAMEVERSIONSUFFIX=".2"
5647                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5648                 ;;
5649         *freebsd[[5-9]]*)
5650                 # FreeBSD winbind client is implemented as a wrapper around
5651                 # the Linux version.
5652                 NSSSONAMEVERSIONSUFFIX=".1"
5653                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5654                     nsswitch/winbind_nss_linux.o"
5655                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5656                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5657                 ;;
5659         *netbsd*[[3-9]]*)
5660                 # NetBSD winbind client is implemented as a wrapper
5661                 # around the Linux version. It needs getpwent_r() to
5662                 # indicate libc's use of the correct nsdispatch API.
5663                 #
5664                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5665                         WINBIND_NSS_EXTRA_OBJS="\
5666                             nsswitch/winbind_nss_netbsd.o \
5667                             nsswitch/winbind_nss_linux.o"
5668                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5669                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5670                 else
5671                         HAVE_WINBIND=no
5672                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5673                 fi
5674                 ;;
5675         *irix*)
5676                 # IRIX has differently named shared libraries
5677                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5678                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5679                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5680                 ;;
5681         *solaris*)
5682                 # Solaris winbind client is implemented as a wrapper around
5683                 # the Linux version.
5684                 NSSSONAMEVERSIONSUFFIX=".1"
5685                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5686                     nsswitch/winbind_nss_linux.o"
5687                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5688                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5689                 ;;
5690         *hpux11*)
5691                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5692                 ;;
5693         *aix*)
5694                 # AIX has even differently named shared libraries.  No
5695                 # WINS support has been implemented yet.
5696                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5697                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5698                 WINBIND_NSS="nsswitch/WINBIND"
5699                 WINBIND_WINS_NSS=""
5700                 ;;
5701         *)
5702                 HAVE_WINBIND=no
5703                 winbind_no_reason=", unsupported on $host_os"
5704                 ;;
5705 esac
5707 # Check the setting of --with-winbind
5709 AC_ARG_WITH(winbind,
5710 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5712   case "$withval" in
5713         yes)
5714                 HAVE_WINBIND=yes
5715                 ;;
5716         no)
5717                 HAVE_WINBIND=no
5718                 winbind_reason=""
5719                 ;;
5720   esac ],
5723 # We need unix domain sockets for winbind
5725 if test x"$HAVE_WINBIND" = x"yes"; then
5726         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5727                 winbind_no_reason=", no unix domain socket support on $host_os"
5728                 HAVE_WINBIND=no
5729         fi
5732 # Display test results
5734 if test x"$HAVE_WINBIND" = x"no"; then
5735         WINBIND_NSS=""
5736         WINBIND_WINS_NSS=""
5739 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5740         BUILD_LIBWBCLIENT_SHARED=no
5741 else
5742         BUILD_LIBWBCLIENT_SHARED=yes
5745 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5746 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5747 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5748         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5749         ## Only worry about libwbclient if we have shared library support
5750         ## and winbindd
5751         LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5752         LIBWBCLIENT=libwbclient
5753         INSTALL_LIBWBCLIENT=installlibwbclient
5754         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5755         WINBIND_LIBS="-lwbclient"
5756 else
5757         LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5760 if test x"$HAVE_WINBIND" = x"yes"; then
5761         AC_MSG_RESULT(yes)
5762         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5764         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5765         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5766         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5767                 PAM_MODULES="$PAM_MODULES pam_winbind"
5768                 INSTALL_PAM_MODULES="installpammodules"
5769                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5770         fi
5771 else
5772         AC_MSG_RESULT(no$winbind_no_reason)
5775 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5776                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5778 AC_SUBST(WINBIND_NSS_PTHREAD)
5779 AC_SUBST(WINBIND_NSS)
5780 AC_SUBST(WINBIND_WINS_NSS)
5781 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5782 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5783 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5784 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5785 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5787 AC_SUBST(WINBIND_KRB5_LOCATOR)
5789 # Solaris 10 does have new member in nss_XbyY_key
5790 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5791                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5792                 [#include <nss_dbdefs.h>])
5794 # Solaris has some extra fields in struct passwd that need to be
5795 # initialised otherwise nscd crashes.
5797 AC_CHECK_MEMBER(struct passwd.pw_comment,
5798                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5799                 [#include <pwd.h>])
5801 AC_CHECK_MEMBER(struct passwd.pw_age,
5802                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5803                 [#include <pwd.h>])
5805 # AIX 4.3.x and 5.1 do not have as many members in
5806 # struct secmethod_table as AIX 5.2
5807 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5808        [#include <usersec.h>])
5809 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5810        [#include <usersec.h>])
5812 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5813 AC_TRY_COMPILE([#include <sys/types.h>
5814 #include <sys/socket.h>],
5815 [struct ucred cred;
5816  socklen_t cred_len;
5817  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5819 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5820 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5821     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5825 #################################################
5826 # Check to see if we should use the included popt
5828 AC_ARG_WITH(included-popt,
5829 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5831   case "$withval" in
5832         yes)
5833                 INCLUDED_POPT=yes
5834                 ;;
5835         no)
5836                 INCLUDED_POPT=no
5837                 ;;
5838   esac ],
5840 if test x"$INCLUDED_POPT" != x"yes"; then
5841     AC_CHECK_LIB(popt, poptGetContext,
5842                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5845 AC_MSG_CHECKING(whether to use included popt)
5846 if test x"$INCLUDED_POPT" = x"yes"; then
5847     AC_MSG_RESULT(yes)
5848     BUILD_POPT='$(POPT_OBJ)'
5849     POPTLIBS='$(POPT_OBJ)'
5850     FLAGS1="-I\$(srcdir)/popt"
5851 else
5852     AC_MSG_RESULT(no)
5853         BUILD_POPT=""
5854     POPTLIBS="-lpopt"
5856 AC_SUBST(BUILD_POPT)
5857 AC_SUBST(POPTLIBS)
5858 AC_SUBST(FLAGS1)
5860 #################################################
5861 # Check if user wants DNS service discovery support
5863 AC_ARG_ENABLE(dnssd,
5864 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5866 AC_SUBST(DNSSD_LIBS)
5867 if test x"$enable_dnssd" != x"no"; then
5868     have_dnssd_support=yes
5870     AC_CHECK_HEADERS(dns_sd.h)
5871     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5872         have_dnssd_support=no
5873     fi
5875     # On Darwin the DNSSD API is in libc, but on other platforms it's
5876     # probably in -ldns_sd
5877     AC_CHECK_FUNCS(DNSServiceRegister)
5878     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5879     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5880             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5881         have_dnssd_support=no
5882     fi
5884     if test x"$have_dnssd_support" = x"yes"; then
5885         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5886                 [Whether to enable DNS service discovery support])
5887     else
5888         if test x"$enable_dnssd" = x"yes"; then
5889             AC_MSG_ERROR(DNS service discovery support not available)
5890         fi
5891     fi
5895 #################################################
5896 # Check to see if we should use the included iniparser
5898 AC_ARG_WITH(included-iniparser,
5899 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5901   case "$withval" in
5902         yes)
5903                 INCLUDED_INIPARSER=yes
5904                 ;;
5905         no)
5906                 INCLUDED_INIPARSER=no
5907                 ;;
5908   esac ],
5910 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5911     AC_CHECK_LIB(iniparser, iniparser_load,
5912                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5915 AC_MSG_CHECKING(whether to use included iniparser)
5916 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5917     AC_MSG_RESULT(yes)
5918     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5919         INIPARSERLIBS=""
5920     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5921 else
5922     AC_MSG_RESULT(no)
5923         BUILD_INIPARSER=""
5924     INIPARSERLIBS="-liniparser"
5926 AC_SUBST(BUILD_INIPARSER)
5927 AC_SUBST(INIPARSERLIBS)
5928 AC_SUBST(FLAGS1)
5932 # Checks for the vfs_fileid module
5933 # Start
5934 AC_CHECK_FUNC(getmntent)
5936 AC_CHECK_HEADERS(sys/statfs.h)
5938 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
5939 AC_CACHE_VAL(vfsfileid_cv_statfs,[
5940              AC_TRY_RUN([
5941                 #include <sys/types.h>
5942                 #include <sys/statfs.h>
5943                 int main(void)
5944                 {
5945                         struct statfs fsd;
5946                         fsid_t fsid = fsd.f_fsid;
5947                         return statfs (".", &fsd);
5948                 }],
5949                 vfsfileid_cv_statfs=yes,
5950                 vfsfileid_cv_statfs=no,
5951                 vfsfileid_cv_statfs=cross)
5953 AC_MSG_RESULT($vfsfileid_cv_statfs)
5955 if test x"$ac_cv_func_getmntent" = x"yes" -a \
5956         x"$vfsfileid_cv_statfs" = x"yes"; then
5957         default_shared_modules="$default_shared_modules vfs_fileid"
5959 # End
5960 # Checks for the vfs_fileid module
5963 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5965         eval MODULE_DEFAULT_$i=STATIC
5966 done
5968 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5970         dnl Fall back to static if we cannot build shared libraries
5971         eval MODULE_DEFAULT_$i=STATIC
5973         if test $BLDSHARED = true; then
5974                 eval MODULE_DEFAULT_$i=SHARED
5975         fi
5976 done
5978 dnl Always build these modules static
5979 MODULE_rpc_spoolss=STATIC
5980 MODULE_rpc_srvsvc=STATIC
5981 MODULE_idmap_tdb=STATIC
5982 MODULE_idmap_passdb=STATIC
5983 MODULE_idmap_nss=STATIC
5985 MODULE_nss_info_template=STATIC
5987 AC_ARG_WITH(static-modules,
5988 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
5989 [ if test $withval; then
5990         for i in `echo $withval | sed -e 's/,/ /g'`
5991         do
5992                 eval MODULE_$i=STATIC
5993         done
5994 fi ])
5996 AC_ARG_WITH(shared-modules,
5997 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
5998 [ if test $withval; then
5999         for i in `echo $withval | sed -e 's/,/ /g'`
6000         do
6001                         eval MODULE_$i=SHARED
6002         done
6003 fi ])
6005 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6006                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6007 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6008 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6009 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6012 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6013 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6014 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6015 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6016 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6017 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6018 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
6019 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6020 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6021 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6022 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6023 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6024 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6025 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6026 SMB_SUBSYSTEM(RPC,smbd/server.o)
6028 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6029 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6030 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6031 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6032 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6033 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6034 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6035 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6037 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6038 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6040 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6041 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6042 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6043 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6044 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6046 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6047 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6048 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6049 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6050 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6051 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6052 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6053 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6055 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6056 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6057 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6058 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6059 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6060 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6061 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6062 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6063 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6064 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6065 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6066 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6067 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6068 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6069 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6070 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6071 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6072 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6073 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6074 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6075 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6076 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6077 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6078 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6079 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6080 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6081 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6082 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6083 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6084 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6085 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6086 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6087 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6088 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6089 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6090 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6093 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6095 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6096 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6097 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6099 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6101 #################################################
6102 # do extra things if we are running insure
6104 if test "${ac_cv_prog_CC}" = "insure"; then
6105         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6108 #################################################
6109 # If run from the build farm, enable NASTY hacks
6110 #################################################
6111 AC_MSG_CHECKING(whether to enable build farm hacks)
6112 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6113         AC_MSG_RESULT(yes)
6114         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6115 else
6116         AC_MSG_RESULT(no)
6119 #################################################
6120 # check for bad librt/libpthread interactions
6122 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6123     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6124     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6125     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6127 SMB_IF_RTSIGNAL_BUG(
6128         [
6129             # Have RT_SIGNAL bug, need to check whether the problem will
6130             # affect anything we have configured.
6132             rt_do_error=no
6133             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6134                 if test x"$rt_signal_lease_ok" = x"no" ; then
6135                     rt_do_error=yes
6136                 fi
6137             fi
6139             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6140                 if test x"$rt_signal_notify_ok" = x"no" ; then
6141                     rt_do_error=yes
6142                 fi
6143             fi
6145             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6146                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6147                 if test x"$rt_signal_aio_ok" = x"no" ; then
6148                     rt_do_error=yes
6149                 fi
6150             fi
6152             if test x"$rt_do_error" = x"yes" ; then
6153                 SMB_IS_LIBPTHREAD_LINKED(
6154                     [
6155                         cat<<MSG
6157 *** On this platforms, linking Samba against pthreads causes problems
6158 *** with the oplock and change notification mechanisms. You may be
6159 *** using pthreads as a side-effect of using the --with-aio-support
6160 *** or --with-profiling-data options. Please remove these and try again.
6163                     ],
6164                     [
6165                         cat<<MSG
6167 *** On this platform, the oplock and change notification mechanisms do not
6168 *** appear to work. Please report this problem to samba-technical@samba.org
6169 *** and attach the config.log file from this directory.
6172                     ])
6173                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6174             fi
6175         ],
6176         [
6177             # no RT_SIGNAL bug, we are golden
6178             SMB_IS_LIBPTHREAD_LINKED(
6179                 [
6180                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6181                 ])
6183         ],
6184         [
6185             # cross compiling, I hope you know what you are doing
6186             true
6187         ])
6191 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6192 LIB_REMOVE_USR_LIB(LDFLAGS)
6193 LIB_REMOVE_USR_LIB(LIBS)
6194 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6196 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6197 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6198 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6200 #################################################
6201 # Display summary of libraries detected
6203 AC_MSG_RESULT([Using libraries:])
6204 AC_MSG_RESULT([    LIBS = $LIBS])
6205 if test x"$with_ads_support" != x"no"; then
6206     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6208 if test x"$with_ldap_support" != x"no"; then
6209     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6211 if test x"$with_dnsupdate_support" != x"no"; then
6212     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6214 if test x"$have_dnssd_support" != x"no"; then
6215     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6217 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6219 #################################################
6220 # final configure stuff
6222 AC_MSG_CHECKING([configure summary])
6223 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6224            AC_MSG_RESULT(yes),
6225            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6226            AC_MSG_WARN([cannot run when cross-compiling]))
6228 dnl Merge in developer cflags from now on
6229 AC_SUBST(DEVELOPER_CFLAGS)
6230 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6231     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6234 # Stuff the smbd-only libraries at the end of the smbd link
6235 # path (if we have them).
6236 SMBD_LIBS="$samba_dmapi_libs"
6237 AC_SUBST(SMBD_LIBS)
6239 AC_OUTPUT(Makefile library-versions
6240           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6241           lib/netapi/examples/Makefile
6242           pkgconfig/smbclient.pc
6243           pkgconfig/wbclient.pc
6244           pkgconfig/netapi.pc
6245           pkgconfig/smbsharemodes.pc
6246           )
6248 #################################################
6249 # Print very concise instructions on building/use
6250 if test "x$enable_dmalloc" = xyes
6251 then
6252         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6253         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])