build: autogenerate exports/libwbclient.syms
[Samba.git] / source / configure.in
blob451de890352a3bb6396673505758137e7409a8cb
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
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],SMB_BUILD_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         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
362 if test x"$SMB_BUILD_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
772                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
773                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
774                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
775                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
776         elif test x"$enable_cups" = x"yes"; then
777                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
778         fi
781 AC_ARG_ENABLE(iprint,
782 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
784 if test x$enable_iprint != xno; then
785         if test "x$CUPS_CONFIG" != x; then
786                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
787         elif test x"$enable_iprint" = x"yes"; then
788                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
789         fi
792 ############################################
793 # check if the compiler will optimize out function calls
794 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
795     AC_TRY_LINK([
796 #include <stdio.h>],
798                 if (0) {
799                    this_function_does_not_exist();
800                 } else {
801                   return 1;
802                 }
805         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
806 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
807    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
810 #############################################
811 # check for fd passing struct via msg_control
812 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
813     AC_TRY_COMPILE([
814 #include <sys/types.h>
815 #include <stdlib.h>
816 #include <stddef.h>
817 #include <sys/socket.h>
818 #include <sys/un.h>],
820         struct msghdr msg;
821         union {
822               struct cmsghdr cm;
823               char control[CMSG_SPACE(sizeof(int))];
824         } control_un;
825         msg.msg_control = control_un.control;
826         msg.msg_controllen = sizeof(control_un.control);
828         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
829 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
830    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
831              [If we can use msg_control for passing file descriptors])
834 #############################################
835 # check for fd passing struct via msg_acctrights
836 AC_CACHE_CHECK([for fd passing via msg_acctrights],
837                 samba_cv_msghdr_msg_acctrights, [
838     AC_TRY_COMPILE([
839 #include <sys/types.h>
840 #include <stdlib.h>
841 #include <stddef.h>
842 #include <sys/socket.h>
843 #include <sys/un.h>],
845         struct msghdr msg;
846         int fd;
847         msg.msg_acctrights = (caddr_t) &fd;
848         msg.msg_acctrightslen = sizeof(fd);
850         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
851 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
852    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
853              [If we can use msg_acctrights for passing file descriptors])
856 AC_CHECK_FUNCS(dirfd)
857 if test x"$ac_cv_func_dirfd" = x"yes"; then
858         default_shared_modules="$default_shared_modules vfs_syncops"
861 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
862     AC_TRY_COMPILE([
863 #include <sys/types.h>
864 #if STDC_HEADERS
865 #include <stdlib.h>
866 #include <stddef.h>
867 #endif
868 #include <signal.h>],[sig_atomic_t i = 0],
869         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
870 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
871    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
874 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
875     AC_TRY_COMPILE([
876 #include <sys/types.h>
877 #if STDC_HEADERS
878 #include <stdlib.h>
879 #include <stddef.h>
880 #endif
881 #if TIME_WITH_SYS_TIME
882 # include <sys/time.h>
883 # include <time.h>
884 #else
885 # if HAVE_SYS_TIME_H
886 #  include <sys/time.h>
887 # else
888 #  include <time.h>
889 # endif
890 #endif
891 ],[struct timespec ts;],
892         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
893 if test x"$samba_cv_struct_timespec" = x"yes"; then
894    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
897 # stupid headers have the functions but no declaration. grrrr.
898 AC_HAVE_DECL(errno, [#include <errno.h>])
899 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
900 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
902 # and glibc has setresuid under linux but the function does
903 # nothing until kernel 2.1.44! very dumb.
904 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
905     AC_TRY_RUN([#include <errno.h>
906 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
907         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
908 if test x"$samba_cv_have_setresuid" = x"yes"; then
909     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
912 # Do the same check for setresguid...
914 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
915     AC_TRY_RUN([#include <unistd.h>
916 #include <errno.h>
917 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
918         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
919 if test x"$samba_cv_have_setresgid" = x"yes"; then
920     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
923 AC_FUNC_MEMCMP
925 ###############################################
926 # Readline included by default unless explicitly asked not to
927 test "${with_readline+set}" != "set" && with_readline=yes
929 # test for where we get readline() from
930 AC_MSG_CHECKING(whether to use readline)
931 AC_ARG_WITH(readline,
932 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
933 [  case "$with_readline" in
934   yes)
935     AC_MSG_RESULT(yes)
937     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
938     AC_CHECK_HEADERS(readline/history.h)
940     AC_CHECK_HEADERS(readline.h readline/readline.h,[
941       for termlib in ncurses curses termcap terminfo termlib tinfo; do
942        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
943       done
944       AC_CHECK_LIB(readline, rl_callback_handler_install,
945        [TERMLIBS="-lreadline $TERMLIBS"
946        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
947        break], [TERMLIBS=], $TERMLIBS)])
948     ;;
949   no)
950     AC_MSG_RESULT(no)
951     ;;
952   *)
953     AC_MSG_RESULT(yes)
955     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
956     # alternate readline path
957     _ldflags=${LDFLAGS}
958     _cppflags=${CPPFLAGS}
960     # Add additional search path
961     LDFLAGS="-L$with_readline/lib $LDFLAGS"
962     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
964     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
965     AC_CHECK_HEADERS(readline/history.h)
967     AC_CHECK_HEADERS(readline.h readline/readline.h,[
968       for termlib in ncurses curses termcap terminfo termlib; do
969        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
970       done
971       AC_CHECK_LIB(readline, rl_callback_handler_install,
972        [TERMLDFLAGS="-L$with_readline/lib"
973        TERMCPPFLAGS="-I$with_readline/include"
974        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
975        TERMLIBS="-lreadline $TERMLIBS"
976        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
977        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
979     LDFLAGS=$_ldflags
980     ;;
981   esac],
982   AC_MSG_RESULT(no)
984 AC_SUBST(TERMLIBS)
985 AC_SUBST(TERMLDFLAGS)
987 # The readline API changed slightly from readline3 to readline4, so
988 # code will generate warnings on one of them unless we have a few
989 # special cases.
990 AC_CHECK_LIB(readline, rl_completion_matches,
991              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
992                         [Do we have rl_completion_matches?])],
993              [],
994              [$TERMLIBS])
996 # not all readline libs have rl_event_hook or history_list
997 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
998 AC_CHECK_LIB(readline, history_list,
999              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1000              [],
1001              [$TERMLIBS])
1003 ###############################################
1004 # test for where we get yp_get_default_domain() from
1005 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1006 AC_CHECK_FUNCS(yp_get_default_domain)
1008 # Check if we have execl, if not we need to compile smbrun.
1009 AC_CHECK_FUNCS(execl)
1010 if test x"$ac_cv_func_execl" = x"no"; then
1011     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1014 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1015 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1016 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1017 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1018 AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1019 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1020 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1021 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1022 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1023 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1024 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1025 AC_CHECK_FUNCS(getpwent_r)
1026 AC_CHECK_FUNCS(getdents getdents64)
1027 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1028 AC_CHECK_FUNCS(syslog vsyslog timegm)
1029 AC_CHECK_FUNCS(setlocale nl_langinfo)
1030 AC_CHECK_FUNCS(nanosleep)
1031 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1032 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1033 AC_CHECK_HEADERS(sys/mman.h)
1034 # setbuffer, shmget, shm_open are needed for smbtorture
1035 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1037 # Find a method of generating a stack trace
1038 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1039 AC_CHECK_FUNCS(backtrace_symbols)
1040 AC_CHECK_LIB(exc, trace_back_stack)
1042 printf "%s" "checking for GPFS GPL libs... "
1043 save_LIBS="$LIBS"
1044 LIBS="$LIBS -lgpfs_gpl"
1045 AC_TRY_LINK([#include <gpfs_gpl.h>],
1046           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1047           samba_cv_HAVE_GPFS=yes,
1048           samba_cv_HAVE_GPFS=no)
1049 echo $samba_cv_HAVE_GPFS
1050 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1051     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1052     default_shared_modules="$default_shared_modules vfs_gpfs"
1054 LIBS="$save_LIBS"
1056 # Note that all the libunwind symbols in the API are defined to internal
1057 # platform-specific version, so we must include libunwind.h before checking
1058 # any of them.
1059 AC_MSG_CHECKING([for libunwind])
1060 save_LIBS=$LIBS
1062 UNWIND_ARCH="unknown"
1063 if test x"$UNAME_I" != x"unknown"; then
1064         UNWIND_ARCH="$UNAME_I"
1065 elif test x"$UNAME_M" != x"unknown"; then
1066         UNWIND_ARCH="$UNAME_M"
1067 elif test x"$UNAME_P" != x"unknown"; then
1068         UNWIND_ARCH="$UNAME_P"
1071 case "$UNWIND_ARCH" in
1072         unknown)
1073                 # This probably won't link without
1074                 # the platform-specific libunwind.
1075                 LIBS="$LIBS -lunwind"
1076                 ;;
1077         i386|i586|i686)
1078                 # Add the platform-specific libunwind module.
1079                 LIBS="$LIBS -lunwind -lunwind-x86"
1080                 ;;
1081         *)
1082                 # Add the platform-specific libunwind module.
1083                 # based on uname -i, uname -m or uname -p
1084                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1085                 ;;
1086 esac
1088 AC_TRY_LINK(
1089     [
1090 #ifdef HAVE_LIBUNWIND_H
1091 #include <libunwind.h>
1092 #endif
1093     ],
1094     [
1095         unw_context_t ctx; unw_cursor_t cur;
1096         char buf[256]; unw_word_t off;
1097         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1098         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1099     ],
1100     [
1101         AC_MSG_RESULT(yes)
1102         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1104         # If we have libunwind, test whether we also have libunwind-ptrace
1105         # which would let us unwind arbitrary processes.
1106         save_LIBS=$LIBS
1107         AC_CHECK_HEADERS(libunwind-ptrace.h)
1108         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1109             [
1110                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1111                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1112                     [Whether libunwind-ptrace.a is available.])
1113             ],
1114             [ LIBUNWIND_PTRACE="" ])
1116         LIBS=$save_LIBS
1117     ],
1118     [
1119         AC_MSG_RESULT(no)
1120         LIBS=$save_LIBS
1121     ])
1123 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1124 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1125     AC_CHECK_HEADERS(sys/ptrace.h)
1126     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1127     AC_TRY_LINK(
1128             [
1129 #if HAVE_SYS_TYPES_H
1130 #include <sys/types.h>
1131 #endif
1132 #if HAVE_SYS_PTRACE_H
1133 #include <sys/ptrace.h>
1134 #endif
1135             ],
1136             [
1137                 int main(int argc, const char ** argv)
1138                 {
1139                         pid_t me = (pid_t)-1;
1140                         ptrace(PTRACE_ATTACH, me, 0, 0);
1141                         ptrace(PTRACE_DETACH, me, 0, 0);
1142                         return 0;
1143                 }
1144             ],
1145             [
1146                 AC_MSG_RESULT(yes)
1147                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1148                     [Whether the Linux ptrace(2) interface is available.])
1149             ],
1150             [
1151                 AC_MSG_RESULT(no)
1152                 LIBUNWIND_PTRACE=""
1153             ])
1156 AC_SUBST(LIBUNWIND_PTRACE)
1158 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1159 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1160 AC_CHECK_FUNCS(__getcwd _getcwd)
1161 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1162 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1163 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1164 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1165 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1166 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1167 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1168 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1169 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1170 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1171 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1172 AC_CHECK_FUNCS(prctl)
1174 AC_TRY_COMPILE([
1175 #ifdef HAVE_SYS_PRCTL_H
1176 #include <sys/prctl.h>
1177 #endif
1179 [int i; i = prtcl(0); ],
1180 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1185 case "$host_os" in
1186     *linux*)
1187        # glibc <= 2.3.2 has a broken getgrouplist
1188        AC_TRY_RUN([
1189 #include <unistd.h>
1190 #include <sys/utsname.h>
1191 main() {
1192        /* glibc up to 2.3 has a broken getgrouplist */
1193 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1194        int libc_major = __GLIBC__;
1195        int libc_minor = __GLIBC_MINOR__;
1197        if (libc_major < 2)
1198               exit(1);
1199        if ((libc_major == 2) && (libc_minor <= 3))
1200               exit(1);
1201 #endif
1202        exit(0);
1204 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1205        if test x"$linux_getgrouplist_ok" = x"yes"; then
1206           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1207        fi
1208        ;;
1209     *)
1210        AC_CHECK_FUNCS(getgrouplist)
1211        ;;
1212 esac
1215 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1218 if test x$ac_cv_func_stat64 = xno ; then
1219   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1220   AC_TRY_LINK([
1221 #if defined(HAVE_UNISTD_H)
1222 #include <unistd.h>
1223 #endif
1224 #include <sys/stat.h>
1225 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1226   AC_MSG_RESULT([$ac_cv_func_stat64])
1227   if test x$ac_cv_func_stat64 = xyes ; then
1228     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1229   fi
1232 if test x$ac_cv_func_lstat64 = xno ; then
1233   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1234   AC_TRY_LINK([
1235 #if defined(HAVE_UNISTD_H)
1236 #include <unistd.h>
1237 #endif
1238 #include <sys/stat.h>
1239 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1240   AC_MSG_RESULT([$ac_cv_func_lstat64])
1241   if test x$ac_cv_func_lstat64 = xyes ; then
1242     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1243   fi
1246 if test x$ac_cv_func_fstat64 = xno ; then
1247   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1248   AC_TRY_LINK([
1249 #if defined(HAVE_UNISTD_H)
1250 #include <unistd.h>
1251 #endif
1252 #include <sys/stat.h>
1253 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1254   AC_MSG_RESULT([$ac_cv_func_fstat64])
1255   if test x$ac_cv_func_fstat64 = xyes ; then
1256     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1257   fi
1260 #################################################
1261 # Check whether struct stat has timestamps with sub-second resolution.
1262 # At least IRIX and Solaris have these.
1264 # We check that
1265 #       all of st_mtim, st_atim and st_ctim exist
1266 #       all of the members are in fact of type struct timespec
1268 # There is some conflicting standards weirdness about whether we should use
1269 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1270 # prefer struct timespec.
1272 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1273     [
1274         AC_TRY_COMPILE(
1275             [
1276 #if TIME_WITH_SYS_TIME
1277 # include <sys/time.h>
1278 # include <time.h>
1279 #else
1280 # if HAVE_SYS_TIME_H
1281 #  include <sys/time.h>
1282 # else
1283 #  include <time.h>
1284 # endif
1285 #endif
1286 #ifdef HAVE_SYS_STAT_H
1287 #include <sys/stat.h>
1288 #endif
1289             ],
1290             [
1291                 struct timespec t;
1292                 struct stat s = {0};
1293                 t.tv_sec = s.st_mtim.tv_sec;
1294                 t.tv_nsec = s.st_mtim.tv_nsec;
1295                 t.tv_sec = s.st_ctim.tv_sec;
1296                 t.tv_nsec = s.st_ctim.tv_nsec;
1297                 t.tv_sec = s.st_atim.tv_sec;
1298                 t.tv_nsec = s.st_atim.tv_nsec;
1299             ],
1300             samba_stat_hires=yes, samba_stat_hires=no)
1301     ])
1303 if test x"$samba_stat_hires" = x"yes" ; then
1304     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1305     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1306     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1307     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1308             [whether struct stat has sub-second timestamps])
1311 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1312     [
1313         AC_TRY_COMPILE(
1314             [
1315 #if TIME_WITH_SYS_TIME
1316 # include <sys/time.h>
1317 # include <time.h>
1318 #else
1319 # if HAVE_SYS_TIME_H
1320 #  include <sys/time.h>
1321 # else
1322 #  include <time.h>
1323 # endif
1324 #endif
1325 #ifdef HAVE_SYS_STAT_H
1326 #include <sys/stat.h>
1327 #endif
1328             ],
1329             [
1330                 struct timespec t;
1331                 struct stat s = {0};
1332                 t.tv_sec = s.st_mtime;
1333                 t.tv_nsec = s.st_mtimensec;
1334                 t.tv_sec = s.st_ctime;
1335                 t.tv_nsec = s.st_ctimensec;
1336                 t.tv_sec = s.st_atime;
1337                 t.tv_nsec = s.st_atimensec;
1338             ],
1339             samba_stat_hires=yes, samba_stat_hires=no)
1340     ])
1342 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1343     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1344     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1345     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1346     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1347             [whether struct stat has sub-second timestamps without struct timespec])
1350 #####################################
1351 # needed for SRV lookups
1352 AC_CHECK_LIB(resolv, dn_expand)
1353 AC_CHECK_LIB(resolv, _dn_expand)
1354 AC_CHECK_LIB(resolv, __dn_expand)
1357 # Check for the functions putprpwnam, set_auth_parameters,
1358 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1359 # Needed for OSF1 and HPUX.
1362 AC_LIBTESTFUNC(security, putprpwnam)
1363 AC_LIBTESTFUNC(sec, putprpwnam)
1365 AC_LIBTESTFUNC(security, set_auth_parameters)
1366 AC_LIBTESTFUNC(sec, set_auth_parameters)
1368 # UnixWare 7.x has its getspnam in -lgen
1369 AC_LIBTESTFUNC(gen, getspnam)
1371 AC_LIBTESTFUNC(security, getspnam)
1372 AC_LIBTESTFUNC(sec, getspnam)
1374 AC_LIBTESTFUNC(security, bigcrypt)
1375 AC_LIBTESTFUNC(sec, bigcrypt)
1377 AC_LIBTESTFUNC(security, getprpwnam)
1378 AC_LIBTESTFUNC(sec, getprpwnam)
1380 AC_CHECK_FUNCS(strsignal)
1382 ############################################
1383 # Check if we have libattr
1384 case "$host_os" in
1385   *osf*)
1386         AC_SEARCH_LIBS(getproplist, [proplist])
1387         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1388         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1389         AC_CHECK_FUNCS(sizeof_proplist_entry)
1390   ;;
1391   *)
1392         AC_SEARCH_LIBS(getxattr, [attr])
1393         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1394         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1395         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1396         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1397         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1398         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1399         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1400   ;;
1401 esac
1403 ########################################################
1404 # Check if attropen() is present if this is Solaris
1405 case "$host_os" in
1406   *solaris*)
1407         AC_CHECK_FUNCS(attropen)
1408   ;;
1409 esac
1411 ########################################################
1412 # Do xattr functions take additional options like on Darwin?
1413 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1414         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1415                 old_LIBS=$LIBS
1416                 LIBS="$LIBS $ACL_LIBS"
1417                 AC_TRY_COMPILE([
1418                         #include <sys/types.h>
1419                         #if HAVE_ATTR_XATTR_H
1420                         #include <attr/xattr.h>
1421                         #elif HAVE_SYS_XATTR_H
1422                         #include <sys/xattr.h>
1423                         #endif
1424                 ],[
1425                         getxattr(0, 0, 0, 0, 0, 0);
1426                 ],
1427                 [smb_attr_cv_xattr_add_opt=yes],
1428                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1429         ])
1430         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1431                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1432         fi
1435 # Check if we have extattr
1436 case "$host_os" in
1437   *freebsd4* | *dragonfly* )
1438     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1439     ;;
1440   *)
1441     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1442     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1443     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1444     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1445     ;;
1446 esac
1448 AC_DISABLE_STATIC
1449 AC_ENABLE_SHARED
1451 # Set defaults
1452 PIE_CFLAGS=""
1453 PIE_LDFLAGS=""
1454 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1456 if test "x$enable_pie" != xno
1457 then
1458         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1459         [
1460                 cat > conftest.c <<EOF
1461 int foo;
1462 main () { return 0;}
1464                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1465                 then
1466                         samba_cv_fpie=yes
1467                 else
1468                         samba_cv_fpie=no
1469                 fi
1470                 rm -f conftest*
1471         ])
1472         if test x"${samba_cv_fpie}" = x"yes"
1473         then
1474                 PIE_CFLAGS="-fPIE"
1475                 PIE_LDFLAGS="-pie"
1476         fi
1479 # Set defaults
1480 RELRO_LDFLAGS=""
1481 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1483 if test "x$enable_relro" != xno
1484 then
1485         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1486         [
1487                 cat > conftest.c <<EOF
1488 int foo;
1489 main () { return 0;}
1491                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1492                 then
1493                         samba_cv_relro=yes
1494                 else
1495                         samba_cv_relro=no
1496                 fi
1497                 rm -f conftest*
1498         ])
1499         if test x"${samba_cv_relro}" = x"yes"
1500         then
1501                 RELRO_LDFLAGS="-Wl,-z,relro"
1502         fi
1505 # Set defaults
1506 SYMSEXT="syms"
1507 AC_SUBST(SYMSEXT)
1509 # Assume non-shared by default and override below
1510 BLDSHARED="false"
1512 # these are the defaults, good for lots of systems
1513 HOST_OS="$host_os"
1514 LDSHFLAGS="-shared"
1515 MODULE_EXPORTS=""
1516 SONAMEFLAG="#"
1517 SHLD="\${CC} \${CFLAGS}"
1518 PICFLAG="${PIE_CFLAGS}"
1519 SHLIBEXT="so"
1520 DSO_EXPORTS=""
1522 # this bit needs to be modified for each OS that supports share libs
1523 # You need to specify how to create a shared library and
1524   # how to compile C code to produce PIC object files
1526   AC_MSG_CHECKING([ability to build shared libraries])
1528   # and these are for particular systems
1529   case "$host_os" in
1530                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1531                         BLDSHARED="true"
1532                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1533                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1534                         else
1535                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1536                         fi
1537                         DYNEXP="-Wl,--export-dynamic"
1538                         PICFLAG="-fPIC"
1539                         SONAMEFLAG="-Wl,-soname="
1540                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1541                         ;;
1542                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1543                         BLDSHARED="true"
1544                         LDSHFLAGS="-G"
1545                         SONAMEFLAG="-h "
1546                         if test "${GCC}" = "yes"; then
1547                                 PICFLAG="-fPIC"
1548                                 SONAMEFLAG="-Wl,-soname="
1549                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1550                                         DYNEXP="-Wl,-E"
1551                                 fi
1552                         else
1553                                 PICFLAG="-KPIC"
1554                                 ## ${CFLAGS} added for building 64-bit shared
1555                                 ## libs using Sun's Compiler
1556                                 LDSHFLAGS="-G \${CFLAGS}"
1557                         fi
1558                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1559                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1560                         ;;
1561                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1562                         BLDSHARED="true"
1563                         LDSHFLAGS="-G"
1564                         SONAMEFLAG="-Wl,-h,"
1565                         PICFLAG="-KPIC"   # Is this correct for SunOS
1566                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1567                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1568                         ;;
1569                 *netbsd* | *freebsd* | *dragonfly* )
1570                         BLDSHARED="true"
1571                         LDSHFLAGS="-shared"
1572                         DYNEXP="-Wl,--export-dynamic"
1573                         SONAMEFLAG="-Wl,-soname,"
1574                         PICFLAG="-fPIC -DPIC"
1575                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1576                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1577                         ;;
1578                 *openbsd*)  BLDSHARED="true"
1579                         LDSHFLAGS="-shared"
1580                         DYNEXP="-Wl,-Bdynamic"
1581                         SONAMEFLAG="-Wl,-soname,"
1582                         PICFLAG="-fPIC"
1583                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1584                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1585                         ;;
1586                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1587                         case "$host_os" in
1588                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1589                         ;;
1590                         esac
1591                         BLDSHARED="true"
1592                         LDSHFLAGS="-set_version sgi1.0 -shared"
1593                         SONAMEFLAG="-soname "
1594                         SHLD="\${LD}"
1595                         if test "${GCC}" = "yes"; then
1596                                 PICFLAG="-fPIC"
1597                         else
1598                                 PICFLAG="-KPIC"
1599                         fi
1600                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1601                         ;;
1602                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1603                         BLDSHARED="true"
1604                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc"
1605                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1606                         PICFLAG="-O2"
1607                         # as AIX code is always position independent...
1608                         # .po will just create compile warnings, use po.o:
1609                         if test "${GCC}" != "yes"; then
1610                                 ## for funky AIX compiler using strncpy()
1611                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1612                         fi
1614                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1615                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1616                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1617                         ;;
1618                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1619                         # Use special PIC flags for the native HP-UX compiler.
1620                                 BLDSHARED="true"
1621                                 SHLD="cc"
1622                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1623                                 SONAMEFLAG="-Wl,+h "
1624                                 PICFLAG="+z"
1625                         if test "${GCC}" = "yes"; then
1626                                 PICFLAG="-fPIC"
1627                         else
1628                                 PICFLAG="+z +ESnolit"
1629                         fi
1630                         if test "$host_cpu" = "ia64"; then
1631                                 SHLIBEXT="so"
1632                               PICFLAG="+z"
1633                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1634                         else
1635                                 SHLIBEXT="sl"
1636                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1637                         fi
1638                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1639                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1640                         ;;
1641                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1642                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1643                         ;;
1644                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1645                         BLDSHARED="true"
1646                         LDSHFLAGS="-shared"
1647                         SONAMEFLAG="-Wl,-soname,"
1648                         PICFLAG="-fPIC"
1649                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1650                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1651                         ;;
1652                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1653                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1654                         ;;
1655                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1656                         BLDSHARED="true"
1657                         LDSHFLAGS="-shared"
1658                         SONAMEFLAG="-Wl,-soname,"
1659                         PICFLAG="-KPIC"
1660                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1661                         ;;
1662                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1663                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1664                         ;;
1665                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1666                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1667                         ;;
1668                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1669                         case "$host" in
1670                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1671                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1672                                         fi
1673                                         LDSHFLAGS="-G"
1674                                         DYNEXP="-Bexport"
1675                                 ;;
1676                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1677                         esac
1678                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1679                         ;;
1681                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1682                         if [ test "$GCC" != yes ]; then
1683                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1684                         fi
1685                         LDSHFLAGS="-G"
1686                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1687                         ;;
1688                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1689                         BLDSHARED="false"
1690                         LDSHFLAGS=""
1691                         ;;
1693                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1694                         BLDSHARED="true"
1695                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1696                         CFLAGS="$CFLAGS -fno-common"
1697                         SHLD="\${CC}"
1698                         SHLIBEXT="dylib"
1699                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1700                         SHLIBEXT="dylib"
1701                         # Since gcc doesn't fail on unrecognised options, the
1702                         # PIE test incorrectly succeeds. Darwin gcc does not
1703                         # actually support the PIE stuff.
1704                         PIE_LDFLAGS=
1705                         PIE_CFLAGS=
1706                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1707                         ;;
1709                 *)
1710                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1711                         ;;
1712   esac
1714 if test "$enable_shared" != "yes"; then
1715         BLDSHARED=false
1718 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1719         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1722 if test x"$BLDSHARED" = x"true" ; then
1723         LDFLAGS="$LDFLAGS -L./bin"
1726 AC_MSG_RESULT($BLDSHARED)
1728 AC_MSG_CHECKING([LDFLAGS])
1729 AC_MSG_RESULT([$LDFLAGS])
1730 AC_MSG_CHECKING([DYNEXP])
1731 AC_MSG_RESULT([$DYNEXP])
1733 #######################################################
1734 # test whether building a shared library actually works
1735 if test $BLDSHARED = true; then
1737 AC_MSG_CHECKING([SHLD])
1738 AC_MSG_RESULT([$SHLD])
1739 AC_MSG_CHECKING([LDSHFLAGS])
1740 AC_MSG_RESULT([$LDSHFLAGS])
1742 AC_MSG_CHECKING([SHLIBEXT])
1743 AC_MSG_RESULT([$SHLIBEXT])
1744 AC_MSG_CHECKING([SONAMEFLAG])
1745 AC_MSG_RESULT([$SONAMEFLAG])
1747 AC_MSG_CHECKING([PICFLAG])
1748 AC_MSG_RESULT([$PICFLAG])
1750 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1751 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1753 AC_CACHE_CHECK([whether building shared libraries actually works],
1754                [ac_cv_shlib_works],[
1755    # try building a trivial shared library
1756    ac_cv_shlib_works=no
1757    # The $SHLD and $LDSHFLAGS variables may contain references to other
1758    # variables so they need to be eval'ed.
1759    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1760         shlib.o ${srcdir-.}/tests/shlib.c && \
1761    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1762         shlib.o && ac_cv_shlib_works=yes
1763    rm -f "shlib.$SHLIBEXT" shlib.o
1766 if test $ac_cv_shlib_works = no; then
1767    BLDSHARED=false
1771 if test x"$BLDSHARED" != x"true"; then
1772         LDSHFLAGS="shared-libraries-disabled"
1773         SONAMEFLAG="shared-libraries-disabled"
1774         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1775         SHLD="shared-libraries-disabled"
1776         PICFLAG="${PIE_CFLAGS}"
1777         SHLIBEXT="shared_libraries_disabled"
1780 AC_MSG_CHECKING([used PICFLAG])
1781 AC_MSG_RESULT([$PICFLAG])
1783 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1785 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1787 ################
1789 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1790 AC_TRY_RUN([#include <stdio.h>
1791 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1792 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1793 if test x"$samba_cv_have_longlong" = x"yes"; then
1794     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1795     AC_CHECK_TYPE(intptr_t, unsigned long long)
1796 else
1797     AC_CHECK_TYPE(intptr_t, unsigned long)
1801 # Check if the compiler supports the LL prefix on long long integers.
1802 # AIX needs this.
1804 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1805     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1806         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1807 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1808    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1812 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1813 AC_TRY_RUN([#include <time.h>
1814 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1815 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1816 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1817     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1820 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1821 AC_TRY_RUN([#include <stdio.h>
1822 #include <sys/stat.h>
1823 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1824 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1825 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1826     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1829 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1830 AC_TRY_RUN([
1831 #if defined(HAVE_UNISTD_H)
1832 #include <unistd.h>
1833 #endif
1834 #include <stdio.h>
1835 #include <sys/stat.h>
1836 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1837 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1838 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1839     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1842 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1843 AC_TRY_RUN([
1844 #if defined(HAVE_UNISTD_H)
1845 #include <unistd.h>
1846 #endif
1847 #include <stdio.h>
1848 #include <sys/stat.h>
1849 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1850 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1851 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1852     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1855 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1856 AC_TRY_RUN([
1857 #if defined(HAVE_UNISTD_H)
1858 #include <unistd.h>
1859 #endif
1860 #include <stdio.h>
1861 #include <sys/stat.h>
1862 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1863 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1864 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1865     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1868 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1869 AC_TRY_RUN([
1870 #if defined(HAVE_UNISTD_H)
1871 #include <unistd.h>
1872 #endif
1873 #include <stdio.h>
1874 #include <sys/stat.h>
1875 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1876 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1877 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1878     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1881 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1882 AC_TRY_RUN([
1883 #if defined(HAVE_UNISTD_H)
1884 #include <unistd.h>
1885 #endif
1886 #include <stdio.h>
1887 #include <sys/stat.h>
1888 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1889 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1890 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1891     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1894 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1895 AC_TRY_COMPILE([
1896 #if defined(HAVE_UNISTD_H)
1897 #include <unistd.h>
1898 #endif
1899 #include <sys/types.h>
1900 #include <dirent.h>],
1901 [DIR64 de;],
1902 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1903 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1904     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1907 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1908 AC_TRY_COMPILE([
1909 #if defined(HAVE_UNISTD_H)
1910 #include <unistd.h>
1911 #endif
1912 #include <sys/types.h>
1913 #include <dirent.h>],
1914 [struct dirent64 de;],
1915 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1916 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1917     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1920 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1921 AC_TRY_RUN([
1922 #if defined(HAVE_UNISTD_H)
1923 #include <unistd.h>
1924 #endif
1925 #include <sys/types.h>
1926 main() { dev_t dev; int i = major(dev); return 0; }],
1927 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1928 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1929     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1932 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1933 AC_TRY_RUN([
1934 #if defined(HAVE_UNISTD_H)
1935 #include <unistd.h>
1936 #endif
1937 #include <sys/types.h>
1938 main() { dev_t dev; int i = minor(dev); return 0; }],
1939 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1940 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1941     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1944 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1945 AC_TRY_RUN([
1946 #if defined(HAVE_UNISTD_H)
1947 #include <unistd.h>
1948 #endif
1949 #include <sys/types.h>
1950 main() { dev_t dev = makedev(1,2); return 0; }],
1951 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1952 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1953     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1956 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1957 AC_TRY_RUN([#include <stdio.h>
1958 main() { char c; c=250; exit((c > 0)?0:1); }],
1959 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1960 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1961     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1964 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1965 AC_TRY_COMPILE([#include <sys/types.h>
1966 #include <dirent.h>
1967 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1968 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1969 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1970     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1973 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1974 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1975 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1976 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1977     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1980 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1981 AC_TRY_LINK([
1982 #include <sys/time.h>
1983 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
1984            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
1985            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
1986 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1987     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
1990 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
1992     # On some systems (eg. Linux) librt can pull in libpthread. We
1993     # don't want this to happen because libpthreads changes signal delivery
1994     # semantics in ways we are not prepared for. This breaks Linux oplocks
1995     # which rely on signals.
1997     AC_LIBTESTFUNC(rt, clock_gettime,
1998             [
1999                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2000                                 [Whether clock_gettime is available])
2001                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2002                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2003                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2004                         ])
2008 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2009 AC_TRY_RUN([#include <sys/types.h>
2010 #include <dirent.h>
2011 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2012 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2013 di->d_name[0] == 0) exit(0); exit(1);} ],
2014 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2015 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2016     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2019 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2020 AC_TRY_COMPILE([#include <sys/types.h>
2021 #include <utime.h>],
2022 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2023 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2024 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2025     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2028 ##############
2029 # Check utmp details, but only if our OS offers utmp.h
2030 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2031 dnl  utmp and utmpx come in many flavours
2032 dnl  We need to check for many of them
2033 dnl  But we don't need to do each and every one, because our code uses
2034 dnl  mostly just the utmp (not utmpx) fields.
2036 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2038 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2039 AC_TRY_COMPILE([#include <sys/types.h>
2040 #include <utmp.h>],
2041 [struct utmp ut;  ut.ut_name[0] = 'a';],
2042 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2043 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2044     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2047 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2048 AC_TRY_COMPILE([#include <sys/types.h>
2049 #include <utmp.h>],
2050 [struct utmp ut;  ut.ut_user[0] = 'a';],
2051 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2052 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2053     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2056 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2057 AC_TRY_COMPILE([#include <sys/types.h>
2058 #include <utmp.h>],
2059 [struct utmp ut;  ut.ut_id[0] = 'a';],
2060 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2061 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2062     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2065 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2066 AC_TRY_COMPILE([#include <sys/types.h>
2067 #include <utmp.h>],
2068 [struct utmp ut;  ut.ut_host[0] = 'a';],
2069 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2070 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2071     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2074 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2075 AC_TRY_COMPILE([#include <sys/types.h>
2076 #include <utmp.h>],
2077 [struct utmp ut;  time_t t; ut.ut_time = t;],
2078 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2079 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2080     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2083 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2084 AC_TRY_COMPILE([#include <sys/types.h>
2085 #include <utmp.h>],
2086 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2087 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2088 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2089     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2092 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2093 AC_TRY_COMPILE([#include <sys/types.h>
2094 #include <utmp.h>],
2095 [struct utmp ut;  ut.ut_type = 0;],
2096 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2097 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2098     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2101 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2102 AC_TRY_COMPILE([#include <sys/types.h>
2103 #include <utmp.h>],
2104 [struct utmp ut;  ut.ut_pid = 0;],
2105 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2106 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2107     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2110 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2111 AC_TRY_COMPILE([#include <sys/types.h>
2112 #include <utmp.h>],
2113 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2114 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2115 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2116     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2119 dnl Look for the IPv6 varient by preference. Many systems have both.
2120 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2121 AC_TRY_COMPILE([#include <sys/types.h>
2122 #include <utmp.h>],
2123 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2124 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2125 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2126     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2129 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2130 AC_TRY_COMPILE([#include <sys/types.h>
2131 #include <utmp.h>],
2132 [struct utmp ut;  ut.ut_addr = 0;],
2133 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2134 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2135     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2138 if test x$ac_cv_func_pututline = xyes ; then
2139   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2140   AC_TRY_COMPILE([#include <sys/types.h>
2141 #include <utmp.h>],
2142   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2143   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2144   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2145       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2146   fi
2149 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2150 AC_TRY_COMPILE([#include <sys/types.h>
2151 #include <utmpx.h>],
2152 [struct utmpx ux;  ux.ut_syslen = 0;],
2153 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2154 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2155     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2159 # end utmp details
2162 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2163 AC_ARG_WITH(libiconv,
2164 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2166   if test "$withval" = "no" ; then
2167     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2168   else
2169      if test "$withval" != "yes" ; then
2170         ICONV_PATH_SPEC=yes
2171         ICONV_LOOK_DIRS="$withval"
2172      fi
2173   fi
2176 for i in $ICONV_LOOK_DIRS ; do
2178     save_LIBS="$LIBS"
2179     save_LDFLAGS="$LDFLAGS"
2180     save_CPPFLAGS="$CPPFLAGS"
2182     iconv_current_LIBS=""
2183     iconv_current_LDFLAGS=""
2184     iconv_current_CPPFLAGS=""
2186     ICONV_FOUND="no"
2187     unset libext
2189     #  This is here to handle -withval stuff for --with-libiconv
2190     #  Perhaps we should always add a -L
2191     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2193     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2194     # installation paths. This gets a little tricky since we might have iconv
2195     # in both libiconv and in libc. In this case the jm_ICONV test will always
2196     # succeed when the header is found. To counter this, make sure the
2197     # library directory is there and check the ABI directory first (which
2198     # should be harmless on other systems, but causes tons of linker warnings on
2199     # 64bit Ubuntu systems).
2200     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2201     # installed, I've decided to fix the linker warnings.
2202     # -- Kai
2203     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2204     for l in "lib" "lib32" "lib/hpux32"; do
2205         if test -d "$i/$l" ; then
2206                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2207                 LIBS=
2208                 export LDFLAGS LIBS CPPFLAGS
2209                 # Try to find iconv(3)
2210                 jm_ICONV($i/$l)
2211                 if test x"$ICONV_FOUND" = "xyes" ; then
2212                     libext="$l"
2213                     break
2214                 fi
2215         fi
2216     done
2218     if test x"$ICONV_FOUND" = "xyes" ; then
2219         iconv_current_LDFLAGS="-L$i/$libext"
2220         iconv_current_CPPFLAGS="-I$i/include"
2222         if test x"$jm_cv_lib_iconv" != x; then
2223             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2224         else
2225             # We found iconv in libc.
2226             iconv_current_LIBS=""
2227         fi
2229     fi
2231     if test x"$ICONV_FOUND" = "xyes" ; then
2233         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2234         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2235         LIBS="$save_LIBS $iconv_current_LIBS"
2236         export LDFLAGS LIBS CPPFLAGS
2238         default_dos_charset=no
2239         default_display_charset=no
2240         default_unix_charset=no
2242         # check for default dos charset name
2243         for j in CP850 IBM850 ; do
2244             rjs_CHARSET($j)
2245             default_dos_charset="$ICONV_CHARSET"
2246             if test x"$default_dos_charset" = x"$j"; then
2247                 break
2248             fi
2249         done
2251         # check for default display charset name
2252         for j in ASCII 646 ; do
2253             rjs_CHARSET($j)
2254             default_display_charset="$ICONV_CHARSET"
2255             if test x"$default_display_charset" = x"$j"; then
2256                 break
2257             fi
2258         done
2260         # check for default unix charset name
2261         for j in UTF-8 UTF8 ; do
2262             rjs_CHARSET($j)
2263             default_unix_charset="$ICONV_CHARSET"
2264             if test x"$default_unix_charset" = x"$j"; then
2265                 break
2266             fi
2267         done
2269         if test "$default_dos_charset" != "no" -a \
2270                 "$default_dos_charset" != "cross" -a \
2271                 "$default_display_charset" != "no" -a \
2272                 "$default_display_charset" != "cross" -a \
2273                 "$default_unix_charset" != "no" -a \
2274                 "$default_unix_charset" != "cross"
2275         then
2276                 samba_cv_HAVE_NATIVE_ICONV=yes
2277         else
2278             if test "$default_dos_charset" = "cross" -o \
2279                      "$default_display_charset" = "cross" -o \
2280                      "$default_unix_charset" = "cross"
2281             then
2282                     samba_cv_HAVE_NATIVE_ICONV=cross
2283             else
2284                     samba_cv_HAVE_NATIVE_ICONV=no
2285             fi
2286         fi
2288         # At this point, we have a libiconv candidate. We know that
2289         # we have the right headers and libraries, but we don't know
2290         # whether it does the conversions we want. We can't test this
2291         # because we are cross-compiling. This is not necessarily a big
2292         # deal, since we can't guarantee that the results we get now will
2293         # match the results we get at runtime anyway.
2294         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2295             default_dos_charset="CP850"
2296             default_display_charset="ASCII"
2297             default_unix_charset="UTF-8"
2298             samba_cv_HAVE_NATIVE_ICONV=yes
2299             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2300             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2301         fi
2303         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2305             CPPFLAGS=$save_CPPFLAGS
2306             LDFLAGS=$save_LDFLAGS
2307             LIBS=$save_LIBS
2309             if test x"$iconv_current_LIBS" != x; then
2310                 LIBS="$LIBS $iconv_current_LIBS"
2311             fi
2313             # Add the flags we need to CPPFLAGS and LDFLAGS
2314             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2315             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2317             # Turn the #defines into string literals
2318             default_dos_charset="\"$default_dos_charset\""
2319             default_display_charset="\"$default_display_charset\""
2320             default_unix_charset="\"$default_unix_charset\""
2322             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2323             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2324             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2325             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2327            break
2328         fi
2330     # We didn't find a working iconv, so keep going
2331     fi
2333     #  We only need to clean these up here for the next pass through the loop
2334     CPPFLAGS=$save_CPPFLAGS
2335     LDFLAGS=$save_LDFLAGS
2336     LIBS=$save_LIBS
2337     export LDFLAGS LIBS CPPFLAGS
2338 done
2339 unset libext
2342 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2343     AC_MSG_WARN([Sufficient support for iconv function was not found.
2344     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2345    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2346    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2347    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2351 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2352 AC_TRY_RUN([
2353 #include <sys/types.h>
2354 #include <fcntl.h>
2355 #ifndef F_GETLEASE
2356 #define F_GETLEASE      1025
2357 #endif
2358 main() {
2359        int fd = open("/dev/null", O_RDONLY);
2360        return fcntl(fd, F_GETLEASE, 0) == -1;
2363 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2364 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2365     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2368 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2369 AC_TRY_RUN([
2370 #include <sys/types.h>
2371 #include <fcntl.h>
2372 #include <signal.h>
2373 #ifndef F_NOTIFY
2374 #define F_NOTIFY 1026
2375 #endif
2376 main() {
2377         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2380 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2381 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2382     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2385 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2386 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2387 AC_CHECK_FUNCS(inotify_init)
2388 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2390 samba_cv_HAVE_INOTIFY=yes,
2391 samba_cv_HAVE_INOTIFY=no,
2392 samba_cv_HAVE_INOTIFY=cross)
2394 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2395     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2398 #################################################
2399 # Check if FAM notifications are available. For FAM info, see
2400 #       http://oss.sgi.com/projects/fam/
2401 #       http://savannah.nongnu.org/projects/fam/
2402 AC_ARG_ENABLE(fam,
2403 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2405 if test x$enable_fam != xno; then
2406     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2407     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2408         # On IRIX, libfam requires libC, but other FAM implementations
2409         # might not need it.
2410         AC_CHECK_LIB(fam, FAMOpen2,
2411             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2412             [samba_cv_HAVE_LIBFAM=no])
2414         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2415             samba_fam_xtra=-lC
2416             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2417                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2418                 [samba_cv_HAVE_LIBFAM=no])
2419             unset samba_fam_xtra
2420         fi
2421     fi
2423     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2424         default_shared_modules="$default_shared_modules vfs_notify_fam"
2425         AC_TRY_COMPILE([#include <fam.h>],
2426                     [FAMCodes code = FAMChanged;],
2427                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2428                         [Whether fam.h contains a typedef for enum FAMCodes]),
2429                     [])
2430     fi
2432     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2433         AC_MSG_ERROR(FAM support requested but FAM library not available )
2434     fi
2437 AC_SUBST(SMB_FAM_LIBS)
2439 #################################################
2440 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2442 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2444 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2445 # Theoretically it should work with AIX JFS2 too but this needs testing
2446 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2447     default_shared_modules="$default_shared_modules vfs_tsmsm"
2450 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2451 AC_TRY_RUN([
2452 #include <sys/types.h>
2453 #include <fcntl.h>
2454 #include <signal.h>
2455 #include <sys/file.h>
2456 #ifndef LOCK_MAND
2457 #define LOCK_MAND       32
2458 #define LOCK_READ       64
2459 #endif
2460 main() {
2461         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2464 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2465 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2466     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2470 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2471 AC_TRY_COMPILE([#include <sys/types.h>
2472 #include <fcntl.h>],
2473 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2474 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2475 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2476     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2479 #################################################
2480 # Check for POSIX capability support
2482 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2483     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2484     [], [])
2486 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2488     ac_save_LIBS=$LIBS
2489     AC_LIBTESTFUNC(cap, cap_get_proc)
2491     AC_CACHE_CHECK([for POSIX capabilities],
2492             samba_cv_HAVE_POSIX_CAPABILITIES,
2493             [
2494                 AC_TRY_RUN([
2495 #include <sys/types.h>
2496 #include <sys/capability.h>
2497 main() {
2498  cap_t cap;
2499  cap_value_t vals[1];
2500  if (!(cap = cap_get_proc()))
2501    exit(1);
2502  vals[0] = CAP_CHOWN;
2503  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2504  cap_set_proc(cap);
2505  exit(0);
2507                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2508                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2509                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2510             ])
2512 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2513     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2514             [Whether POSIX capabilities are available])
2515 else
2516     LIBS=$ac_save_LIBS
2522 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2523 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2526 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2527 AC_TRY_COMPILE([#include <sys/types.h>
2528 #if defined(HAVE_RPC_RPC_H)
2529 #include <rpc/rpc.h>
2530 #endif],
2531 [int16 testvar;],
2532 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2533 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2534     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2537 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2538 AC_TRY_COMPILE([#include <sys/types.h>
2539 #if defined(HAVE_RPC_RPC_H)
2540 #include <rpc/rpc.h>
2541 #endif],
2542 [uint16 testvar;],
2543 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2544 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2545     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2548 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2549 AC_TRY_COMPILE([#include <sys/types.h>
2550 #if defined(HAVE_RPC_RPC_H)
2551 #include <rpc/rpc.h>
2552 #endif],
2553 [int32 testvar;],
2554 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2555 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2556     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2559 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2560 AC_TRY_COMPILE([#include <sys/types.h>
2561 #if defined(HAVE_RPC_RPC_H)
2562 #include <rpc/rpc.h>
2563 #endif],
2564 [uint32 testvar;],
2565 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2566 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2567     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2571 dnl Some systems (SCO) have a problem including
2572 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2573 dnl as a #define in <prot.h> and as part of an enum
2574 dnl in <rpc/rpc.h>.
2577 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2578 AC_TRY_COMPILE([#include <sys/types.h>
2579 #ifdef HAVE_SYS_SECURITY_H
2580 #include <sys/security.h>
2581 #include <prot.h>
2582 #endif  /* HAVE_SYS_SECURITY_H */
2583 #if defined(HAVE_RPC_RPC_H)
2584 #include <rpc/rpc.h>
2585 #endif],
2586 [int testvar;],
2587 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2588 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2589     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2592 AC_MSG_CHECKING([for test routines])
2593 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2594            AC_MSG_RESULT(yes),
2595            AC_MSG_ERROR([cant find test code. Aborting config]),
2596            AC_MSG_WARN([cannot run when cross-compiling]))
2598 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2599 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2600            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2601 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2602     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2605 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2606 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2607            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2608 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2609     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2612 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2613 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2614 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2615 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2616 AC_CHECK_FUNCS(getpagesize)
2618 ################################################
2619 # look for a method of setting the effective uid
2620 seteuid=no;
2621 if test $seteuid = no; then
2622 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2623 AC_TRY_RUN([
2624 #define AUTOCONF_TEST 1
2625 #define USE_SETRESUID 1
2626 #include "confdefs.h"
2627 #include "${srcdir-.}/lib/util_sec.c"],
2628            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2629 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2630     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2635 if test $seteuid = no; then
2636 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2637 AC_TRY_RUN([
2638 #define AUTOCONF_TEST 1
2639 #define USE_SETREUID 1
2640 #include "confdefs.h"
2641 #include "${srcdir-.}/lib/util_sec.c"],
2642            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2643 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2644     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2648 if test $seteuid = no; then
2649 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2650 AC_TRY_RUN([
2651 #define AUTOCONF_TEST 1
2652 #define USE_SETEUID 1
2653 #include "confdefs.h"
2654 #include "${srcdir-.}/lib/util_sec.c"],
2655            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2656 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2657     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2661 if test $seteuid = no; then
2662 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2663 AC_TRY_RUN([
2664 #define AUTOCONF_TEST 1
2665 #define USE_SETUIDX 1
2666 #include "confdefs.h"
2667 #include "${srcdir-.}/lib/util_sec.c"],
2668            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2669 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2670     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2674 AC_CACHE_CHECK([for the Darwin initgroups system call],
2675         samba_cv_DARWIN_INITGROUPS,
2676         AC_TRY_LINK([
2677 #include <sys/syscall.h>
2678 #include <unistd.h>
2679         ],
2680         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2681         samba_cv_DARWIN_INITGROUPS=yes,
2682         samba_cv_DARWIN_INITGROUPS=no)
2685 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2686     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2687         [Whether to use the Darwin-specific initgroups system call])
2690 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2691 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2692            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2693 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2694     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2697 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2698 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2699            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2700 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2701     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2703 else
2706 dnl Don't check for 64 bit fcntl locking if we know that the
2707 dnl glibc2.1 broken check has succeeded.
2710   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2711   AC_TRY_RUN([
2712 #if defined(HAVE_UNISTD_H)
2713 #include <unistd.h>
2714 #endif
2715 #include <stdio.h>
2716 #include <stdlib.h>
2718 #ifdef HAVE_FCNTL_H
2719 #include <fcntl.h>
2720 #endif
2722 #ifdef HAVE_SYS_FCNTL_H
2723 #include <sys/fcntl.h>
2724 #endif
2725 main() { struct flock64 fl64;
2726 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2727 exit(0);
2728 #else
2729 exit(1);
2730 #endif
2732        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2734   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2735       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2736   fi
2739 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2740 AC_TRY_COMPILE([#include <sys/types.h>
2741 #include <sys/stat.h>
2742 #include <unistd.h>],
2743 [struct stat st;  st.st_blocks = 0;],
2744 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2745 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2746     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2749 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2750 AC_TRY_COMPILE([#include <sys/types.h>
2751 #include <sys/stat.h>
2752 #include <unistd.h>],
2753 [struct stat st;  st.st_blksize = 0;],
2754 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2755 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2756     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2759 AC_CACHE_CHECK([for st_flags in struct stat],
2760         samba_cv_HAVE_STAT_ST_FLAGS,
2761         [
2762             AC_TRY_COMPILE([#include <sys/types.h>
2763 #include <sys/stat.h>
2764 #include <unistd.h>],
2765             [struct stat st;  st.st_flags = 0;],
2766             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2767             samba_cv_HAVE_STAT_ST_FLAGS=no,
2768             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2769         ])
2771 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2772     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2773                 [Whether the stat struct has a st_flags member])
2776 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2777 AC_TRY_COMPILE([
2778 #include <sys/types.h>
2779 #include <sys/acl.h>
2780 #if defined(HAVE_RPCSVC_NIS_H)
2781 #include <rpcsvc/nis.h>
2782 #endif],
2783 [int i;],
2784 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2785 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2786         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2789 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2790 AC_TRY_RUN([
2791 #include <stdio.h>
2792 #include <limits.h>
2793 main() {
2794         char *newpath = realpath("/tmp", NULL);
2795         exit ((newpath != NULL) ? 0 : 1);
2798 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2799 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2800     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2803 #################################################
2804 # check for AFS clear-text auth support
2805 samba_cv_WITH_AFS=no
2806 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2807 AC_ARG_WITH(afs,
2808 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2809 [ case "$withval" in
2810   yes|auto)
2811     AC_MSG_RESULT($withval)
2812     samba_cv_WITH_AFS=$withval
2813     ;;
2814   *)
2815     AC_MSG_RESULT(no)
2816     ;;
2817   esac ],
2818   AC_MSG_RESULT(no)
2821 ####################################################
2822 # check for Linux-specific AFS fake-kaserver support
2823 samba_cv_WITH_FAKE_KASERVER=no
2824 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2825 AC_ARG_WITH(fake-kaserver,
2826 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2827 [ case "$withval" in
2828   yes|auto)
2829     AC_MSG_RESULT($withval)
2830     samba_cv_WITH_FAKE_KASERVER=$withval
2831     ;;
2832   *)
2833     AC_MSG_RESULT(no)
2834     ;;
2835   esac ],
2836   AC_MSG_RESULT(no)
2839 #################################################
2840 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2841 if test x"$samba_cv_WITH_AFS" != x"no" ||
2842    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2844     # see if this box has the afs-headers in /usr/include/afs
2845     AC_MSG_CHECKING(for /usr/include/afs)
2846     if test -d /usr/include/afs; then
2847           CFLAGS="$CFLAGS -I/usr/include/afs"
2848           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2849           AC_MSG_RESULT(yes)
2850     else
2851       AC_MSG_RESULT(no)
2852     fi
2854     # check for afs.h
2855     have_afs_headers=no
2856     AC_CHECK_HEADERS(afs.h afs/afs.h)
2857     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2858         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2859            test x"$samba_cv_WITH_AFS" = x"auto"; then
2860                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2861         else
2862                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2863         fi
2864     else
2865         have_afs_headers=yes
2866     fi
2869 FAKE_KASERVER_OBJ=""
2870 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2871     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2872     FAKE_KASERVER_OBJ="utils/net_afs.o"
2874 AC_SUBST(FAKE_KASERVER_OBJ)
2876 #################################################
2877 # check whether to compile AFS/NT ACL mapping module
2878 samba_cv_WITH_VFS_AFSACL=no
2879 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2880 AC_ARG_WITH(vfs-afsacl,
2881 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2882 [ case "$withval" in
2883   yes|auto)
2884     AC_MSG_RESULT($withval)
2885     samba_cv_WITH_VFS_AFSACL=yes
2886     ;;
2887   *)
2888     AC_MSG_RESULT(no)
2889     ;;
2890   esac ],
2891   AC_MSG_RESULT(no)
2894 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2895    default_shared_modules="$default_shared_modules vfs_afsacl"
2897         
2898 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2899     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2902 #################################################
2903 # check for the DFS clear-text auth system
2904 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2905 AC_ARG_WITH(dfs,
2906 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2907 [ case "$withval" in
2908   yes)
2909     AC_MSG_RESULT(yes)
2910     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2911     ;;
2912   *)
2913     AC_MSG_RESULT(no)
2914     ;;
2915   esac ],
2916   AC_MSG_RESULT(no)
2919 ########################################################
2920 # Compile with LDAP support?
2922 with_ldap_support=auto
2923 AC_MSG_CHECKING([for LDAP support])
2925 AC_ARG_WITH(ldap,
2926 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2927 [ case "$withval" in
2928     yes|no)
2929         with_ldap_support=$withval
2930         ;;
2931   esac ])
2933 AC_MSG_RESULT($with_ldap_support)
2935 SMBLDAP=""
2936 AC_SUBST(SMBLDAP)
2937 SMBLDAPUTIL=""
2938 AC_SUBST(SMBLDAPUTIL)
2939 LDBLDAP=""
2940 AC_SUBST(LDBLDAP)
2942 if test x"$with_ldap_support" != x"no"; then
2944   ##################################################################
2945   # first test for ldap.h and lber.h
2946   # (ldap.h is required for this test)
2947   AC_CHECK_HEADERS(ldap.h lber.h)
2949   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2950         if test x"$with_ldap_support" = x"yes"; then
2951          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2952         else
2953          AC_MSG_WARN(ldap.h is needed for LDAP support)
2954         fi
2955         
2956         with_ldap_support=no
2957   fi
2959   ##################################################################
2960   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
2961   # unsigned int in include/includes.h
2962   case $host_os in
2963         *hpux*)
2964          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2965          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
2966         with_ldap_support=yes
2967         ;;
2968         *)
2969         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
2970         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
2971                 if test x"$with_ldap_support" = x"yes"; then
2972                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
2973                 else
2974                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2975                 fi
2976                 with_ldap_support=no
2977         fi
2978         ;;
2979   esac
2982 if test x"$with_ldap_support" != x"no"; then
2983   ac_save_LIBS=$LIBS
2985   ##################################################################
2986   # we might need the lber lib on some systems. To avoid link errors
2987   # this test must be before the libldap test
2988   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2990   ########################################################
2991   # If ber_sockbuf_add_io() is available we can add
2992   # SASL wrapping hooks
2993   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
2995   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
2996                  AC_TRY_COMPILE([#include <ldap.h>],
2997                                 [int val = LDAP_OPT_SOCKBUF;],
2998                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
2999                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3001   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3002           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3003         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3004   fi
3006   #######################################################
3007   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3008   # ldap logging and print it out in the samba logs
3009   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3010                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3011                  [AC_TRY_COMPILE([#include <lber.h>],
3012                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3013                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3014                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3016   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3017         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3018                   [Support for LDAP/LBER logging interception])
3019   fi
3021   ########################################################
3022   # now see if we can find the ldap libs in standard paths
3023   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3025   ########################################################
3026   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3027   # Check found in pam_ldap 145.
3028   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3030   LIBS="$LIBS $LDAP_LIBS"
3031   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3032     AC_TRY_COMPILE([
3033         #include <lber.h>
3034         #include <ldap.h>],
3035         [ldap_set_rebind_proc(0, 0, 0);],
3036         [smb_ldap_cv_ldap_set_rebind_proc=3],
3037         [smb_ldap_cv_ldap_set_rebind_proc=2]
3038     )
3039   ])
3041   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3043   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3045   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3046     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3047     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3048     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3049     default_shared_modules="$default_shared_modules";
3050     SMBLDAP="lib/smbldap.o"
3051     SMBLDAPUTIL="lib/smbldap_util.o"
3052     with_ldap_support=yes
3053     AC_MSG_CHECKING(whether LDAP support is used)
3054     AC_MSG_RESULT(yes)
3055   else
3056     if test x"$with_ldap_support" = x"yes"; then
3057         AC_MSG_ERROR(libldap is needed for LDAP support)
3058     else
3059         AC_MSG_WARN(libldap is needed for LDAP support)
3060     fi
3062     LDAP_LIBS=""
3063     with_ldap_support=no
3064   fi
3065   LIBS=$ac_save_LIBS
3069 #################################################
3070 # active directory support
3072 with_ads_support=auto
3073 AC_MSG_CHECKING([for Active Directory and krb5 support])
3075 AC_ARG_WITH(ads,
3076 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3077 [ case "$withval" in
3078     yes|no)
3079         with_ads_support="$withval"
3080         ;;
3081   esac ])
3083 AC_MSG_RESULT($with_ads_support)
3085 FOUND_KRB5=no
3086 KRB5_LIBS=""
3088 if test x"$with_ldap_support" != x"yes"; then
3090     if test x"$with_ads_support" = x"yes"; then
3091         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3092     elif test x"$with_ads_support" = x"auto"; then
3093         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3094         with_ads_support=no
3095     fi
3097 else
3099     # Check to see whether there is enough LDAP functionality to be able
3100     # to build AD support.
3102 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3103 case "$host_os" in
3104         *hpux*)
3105     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3107     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3108         if test x"$with_ads_support" = x"yes"; then
3109             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3110         elif test x"$with_ads_support" = x"auto"; then
3111             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3112             with_ads_support=no
3113         fi
3114     fi
3115     ;;
3116         *)
3117     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3119     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3120         if test x"$with_ads_support" = x"yes"; then
3121             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3122         elif test x"$with_ads_support" = x"auto"; then
3123             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3124             with_ads_support=no
3125         fi
3126     fi
3127     ;;
3128 esac
3131     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3133     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3134         if test x"$with_ads_support" = x"yes"; then
3135             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3136         elif test x"$with_ads_support" = x"auto"; then
3137             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3138             with_ads_support=no
3139         fi
3140     fi
3144 if test x"$with_ads_support" != x"no"; then
3146   # Do no harm to the values of CFLAGS and LIBS while testing for
3147   # Kerberos support.
3149   if test x$FOUND_KRB5 = x"no"; then
3150     #################################################
3151     # check for location of Kerberos 5 install
3152     AC_MSG_CHECKING(for kerberos 5 install path)
3153     AC_ARG_WITH(krb5,
3154     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3155     [ case "$withval" in
3156       no)
3157         AC_MSG_RESULT(no krb5-path given)
3158         ;;
3159       yes)
3160         AC_MSG_RESULT(/usr)
3161         FOUND_KRB5=yes
3162         ;;
3163       *)
3164         AC_MSG_RESULT($withval)
3165         KRB5_CFLAGS="-I$withval/include"
3166         KRB5_CPPFLAGS="-I$withval/include"
3167         KRB5_LDFLAGS="-L$withval/lib"
3168         FOUND_KRB5=yes
3169         if test -x "$withval/bin/krb5-config"; then
3170                 KRB5CONFIG=$withval/bin/krb5-config
3171         fi
3172         ;;
3173       esac ],
3174       AC_MSG_RESULT(no krb5-path given)
3175     )
3176   fi
3178   #################################################
3179   # check for krb5-config from recent MIT and Heimdal kerberos 5
3180   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3181   AC_MSG_CHECKING(for working krb5-config)
3182   if test -x "$KRB5CONFIG"; then
3183     ac_save_CFLAGS=$CFLAGS
3184     CFLAGS="";export CFLAGS
3185     ac_save_LDFLAGS=$LDFLAGS
3186     LDFLAGS="";export LDFLAGS
3187     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3188     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3189     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3190     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3191     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3192     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3193     FOUND_KRB5=yes
3194     AC_MSG_RESULT(yes)
3195   else
3196     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3197   fi
3199   if test x$FOUND_KRB5 = x"no"; then
3200     #################################################
3201     # see if this box has the SuSE location for the heimdal krb implementation
3202     AC_MSG_CHECKING(for /usr/include/heimdal)
3203     if test -d /usr/include/heimdal; then
3204       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3205           KRB5_CFLAGS="-I/usr/include/heimdal"
3206           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3207           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3208           FOUND_KRB5=yes
3209           AC_MSG_RESULT(yes)
3210       else
3211           KRB5_CFLAGS="-I/usr/include/heimdal"
3212           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3213           FOUND_KRB5=yes
3214           AC_MSG_RESULT(yes)
3215       fi
3216     else
3217       AC_MSG_RESULT(no)
3218     fi
3219   fi
3221   if test x$FOUND_KRB5 = x"no"; then
3222     #################################################
3223     # see if this box has the RedHat location for kerberos
3224     AC_MSG_CHECKING(for /usr/kerberos)
3225     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3226       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3227       KRB5_CFLAGS="-I/usr/kerberos/include"
3228       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3229       FOUND_KRB5=yes
3230       AC_MSG_RESULT(yes)
3231     else
3232       AC_MSG_RESULT(no)
3233     fi
3234   fi
3236   if test x$FOUND_KRB5 = x"no"; then
3237     #################################################
3238     # see if this box has the OpenBSD location for heimdal krb5
3239     AC_MSG_CHECKING(for /usr/include/kerberosV)
3240     if test -d /usr/include/kerberosV; then
3241       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3242       KRB5_LIBS="-lcrypto"
3243       FOUND_KRB5=yes
3244       AC_MSG_RESULT(yes)
3245     else
3246       AC_MSG_RESULT(no)
3247     fi
3248   fi
3250   ac_save_CFLAGS=$CFLAGS
3251   ac_save_CPPFLAGS=$CPPFLAGS
3252   ac_save_LDFLAGS=$LDFLAGS
3254   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3255   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3256   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3258   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3260   # now check for krb5.h. Some systems have the libraries without the headers!
3261   # note that this check is done here to allow for different kerberos
3262   # include paths
3263   AC_CHECK_HEADERS(krb5.h)
3265   if test x"$ac_cv_header_krb5_h" = x"no"; then
3267     # Give a warning if AD support was not explicitly requested,
3268     # i.e with_ads_support = auto, otherwise die with an error.
3270     if test x"$with_ads_support" = x"yes"; then
3271       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3272     else
3273       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3274     fi
3276     # Turn off AD support and restore CFLAGS and LIBS variables
3278     with_ads_support="no"
3280     CFLAGS=$ac_save_CFLAGS
3281     CPPFLAGS=$ac_save_CPPFLAGS
3282     LDFLAGS=$ac_save_LDFLAGS
3283   fi
3284   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3285   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3286         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3287         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3288   fi
3291 # Now we have determined whether we really want ADS support
3292 use_ads=no
3293 if test x"$with_ads_support" != x"no"; then
3294   use_ads=yes
3295   have_gssapi=no
3296   ac_save_LIBS=$LIBS
3298   # now check for gssapi headers.  This is also done here to allow for
3299   # different kerberos include paths
3300   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3302   ##################################################################
3303   # we might need the k5crypto and com_err libraries on some systems
3304   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3305   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3307   # Heimdal checks.
3308   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3309   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3310   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3312   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3313   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3315   ########################################################
3316   # now see if we can find the krb5 libs in standard paths
3317   # or as specified above
3318   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3319   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3321   ########################################################
3322   # now see if we can find the gssapi libs in standard paths
3323   if test x"$have_gssapi" != x"yes"; then
3324      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3325   fi
3327   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3328   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3329   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3330   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3331   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3332   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3333   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3334   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3335   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3336   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3337   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3338   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3339   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3340   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3341   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3342   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3343   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3344   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3345   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3346   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3347   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3348   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3349   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3350   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3351   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3352   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3353   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3354   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3355   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3356   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3357   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3358   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3359   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3360   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3361   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3362   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3363   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3364   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3365   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3366   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3367   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3369   LIBS="$KRB5_LIBS $LIBS"
3371   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3372         smb_krb5_ticket_has_keyinfo,
3373         [
3374             AC_TRY_COMPILE(
3375             [
3376                 #include <krb5.h>
3377             ],
3378             [
3379                 krb5_ticket ticket;
3380                 krb5_kvno kvno;
3381                 krb5_enctype enctype;
3383                 enctype = ticket.enc_part.enctype;
3384                 kvno = ticket.enc_part.kvno;
3385             ],
3386             [ smb_krb5_ticket_has_keyinfo=yes ],
3387             [ smb_krb5_ticket_has_keyinfo=no ])
3388         ])
3390   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3391         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3392             [Whether the krb5_ticket structure contains the kvno and enctype])
3393   fi
3395   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3396           smb_krb5_creds_opt_free_context,
3397           [
3398                 AC_TRY_COMPILE([
3399                     #include <krb5.h>],
3400                     [
3401                         krb5_context ctx;
3402                         krb5_get_init_creds_opt *opt = NULL;
3403                         krb5_get_init_creds_opt_free(ctx, opt);
3404                     ],
3405                     [smb_krb5_creds_opt_free_context=yes],
3406                     [smb_krb5_creds_opt_free_context=no]
3407                 )
3408           ])
3410   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3411         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3412             [Whether krb5_get_init_creds_opt_free takes a context argument])
3413   fi
3415   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3416     AC_TRY_COMPILE([
3417         #include <krb5.h>],
3418         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3419         [smb_krb5_verify_checksum=7],
3420         [smb_krb5_verify_checksum=6],
3421     )
3422   ])
3423   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3425   AC_CACHE_CHECK([for checksum in krb5_checksum],
3426                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3427     AC_TRY_COMPILE([#include <krb5.h>],
3428       [krb5_checksum cksum; cksum.checksum.length = 0;],
3429       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3430       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3432   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3433     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3434                [Whether the krb5_checksum struct has a checksum property])
3435   fi
3437   AC_CACHE_CHECK([for etype in EncryptedData],
3438                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3439     AC_TRY_COMPILE([#include <krb5.h>],
3440       [EncryptedData edata; edata.etype = 0;],
3441       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3442       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3444   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3445     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3446                [Whether the EncryptedData struct has a etype property])
3447   fi
3449   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3450                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3451     AC_TRY_COMPILE([#include <krb5.h>],
3452       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3453       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3454       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3456   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3457     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3458                [Whether the krb5_ap_req struct has a ticket pointer])
3459   fi
3461   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3462                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3463     AC_TRY_COMPILE([#include <krb5.h>],
3464       [krb5_error err; err.e_data = NULL;],
3465       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3466       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3468   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3469     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3470                [Whether the krb5_error struct has a e_data pointer])
3471   fi
3473   AC_CACHE_CHECK([for krb5_crypto type],
3474                 samba_cv_HAVE_KRB5_CRYPTO,[
3475     AC_TRY_COMPILE([#include <krb5.h>],
3476       [krb5_crypto crypto;],
3477       samba_cv_HAVE_KRB5_CRYPTO=yes,
3478       samba_cv_HAVE_KRB5_CRYPTO=no)])
3480   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3481     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3482                [Whether the type krb5_crypto exists])
3483   fi
3485   AC_CACHE_CHECK([for krb5_encrypt_block type],
3486                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3487     AC_TRY_COMPILE([#include <krb5.h>],
3488       [krb5_encrypt_block block;],
3489       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3490       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3492   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3493     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3494                [Whether the type krb5_encrypt_block exists])
3495   fi
3497   AC_CACHE_CHECK([for addrtype in krb5_address],
3498                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3499     AC_TRY_COMPILE([#include <krb5.h>],
3500       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3501       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3502       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3504   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3505     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3506                [Whether the krb5_address struct has a addrtype property])
3507   fi
3509   AC_CACHE_CHECK([for addr_type in krb5_address],
3510                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3511     AC_TRY_COMPILE([#include <krb5.h>],
3512       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3513       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3514       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3516   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3517     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3518               [Whether the krb5_address struct has a addr_type property])
3519   fi
3521   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3522                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3523                  [AC_TRY_COMPILE([#include <krb5.h>],
3524     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3525     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3527   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3528     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3529               [Whether the krb5_ticket struct has a enc_part2 property])
3530   fi
3532   AC_CACHE_CHECK([for keyblock in krb5_creds],
3533                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3534     AC_TRY_COMPILE([#include <krb5.h>],
3535       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3536       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3537       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3539   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3540     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3541               [Whether the krb5_creds struct has a keyblock property])
3542   fi
3544   AC_CACHE_CHECK([for session in krb5_creds],
3545                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3546     AC_TRY_COMPILE([#include <krb5.h>],
3547       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3548       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3549       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3551   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3552     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3553               [Whether the krb5_creds struct has a session property])
3554   fi
3556   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3557                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3558     AC_TRY_COMPILE([#include <krb5.h>],
3559       [krb5_keyblock key; key.keyvalue.data = NULL;],
3560       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3561       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3563   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3564     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3565               [Whether the krb5_keyblock struct has a keyvalue property])
3566   fi
3568   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3569                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3570     AC_TRY_COMPILE([#include <krb5.h>],
3571       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3572       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3573       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3574   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3575                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3576     AC_TRY_COMPILE([#include <krb5.h>],
3577       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3578       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3579       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3580 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3581 # w.r.t. arcfour and windows, so we must not enable it here
3582   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3583           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3584     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3585               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3586   fi
3588   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3589                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3590     AC_TRY_COMPILE([#include <krb5.h>],
3591       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3592       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3593       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3595   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3596     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3597               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3598   fi
3600   AC_CACHE_CHECK([for KV5M_KEYTAB],
3601                  samba_cv_HAVE_KV5M_KEYTAB,[
3602     AC_TRY_COMPILE([#include <krb5.h>],
3603       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3604       samba_cv_HAVE_KV5M_KEYTAB=yes,
3605       samba_cv_HAVE_KV5M_KEYTAB=no)])
3607   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3608       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3609              [Whether the KV5M_KEYTAB option is available])
3610   fi
3612   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3613                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3614     AC_TRY_COMPILE([#include <krb5.h>],
3615       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3616       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3617       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3619   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3620     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3621               [Whether KRB5_KU_OTHER_CKSUM is available])
3622   fi
3624   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3625                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3626     AC_TRY_COMPILE([#include <krb5.h>],
3627       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3628       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3629       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3631   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3632     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3633               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3634   fi
3636   AC_CACHE_CHECK([for the krb5_princ_component macro],
3637                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3638     AC_TRY_LINK([#include <krb5.h>],
3639       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3640       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3641       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3643   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3644     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3645                [Whether krb5_princ_component is available])
3646   fi
3648   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3649                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3650     AC_TRY_COMPILE([#include <krb5.h>],
3651       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3652       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3653       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3655   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3656     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3657               [Whether krb5_keytab_entry has key member])
3658   fi
3660   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3661                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3662     AC_TRY_COMPILE([#include <krb5.h>],
3663       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3664       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3665       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3667   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3668     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3669               [Whether krb5_keytab_entry has keyblock member])
3670   fi
3672   AC_CACHE_CHECK([for magic in krb5_address],
3673                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3674     AC_TRY_COMPILE([#include <krb5.h>],
3675       [krb5_address addr; addr.magic = 0;],
3676       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3677       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3679   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3680     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3681               [Whether the krb5_address struct has a magic property])
3682   fi
3684   AC_CACHE_CHECK([for WRFILE: keytab support],
3685                 samba_cv_HAVE_WRFILE_KEYTAB,[
3686     AC_TRY_RUN([
3687 #include<krb5.h>
3688   main()
3689   {
3690     krb5_context context;
3691     krb5_keytab keytab;
3693     krb5_init_context(&context);
3694     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3695   }],
3696   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3697   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3699   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3700       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3701                [Whether the WRFILE:-keytab is supported])
3702   fi
3704   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3705                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3706     AC_TRY_COMPILE([#include <krb5.h>],
3707     [
3708     krb5_context context;
3709     krb5_principal principal;
3710     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3711     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3712     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3714   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3715     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3716               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3717   fi
3719   AC_CACHE_CHECK([for krb5_addresses type],
3720                 samba_cv_HAVE_KRB5_ADDRESSES,[
3721     AC_TRY_COMPILE([#include <krb5.h>],
3722       [krb5_addresses addr;],
3723       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3724       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3726   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3727     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3728                [Whether the type krb5_addresses type exists])
3729   fi
3731   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3732                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3733     AC_TRY_COMPILE([#include <krb5.h>],
3734     [
3735     krb5_mk_error(0,0,0);],
3736     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3737     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3739   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3740     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3741               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3742   fi
3744   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3745     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3746         smb_krb5_enctype_to_string_takes_krb5_context_arg,[
3747         AC_TRY_RUN_STRICT([
3748                 #include <krb5.h>
3749                 int main(void) {
3750                         krb5_context context = NULL;
3751                         char *str = NULL;
3752                         krb5_enctype_to_string(context, 1, &str);
3753                         if (str) free (str); 
3754                         return 0;
3755                 }
3756                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3757                 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
3758                 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
3760     if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3761       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3762                 [whether krb5_enctype_to_string takes krb5_context argument])
3763     fi
3765     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3766         smb_krb5_enctype_to_string_takes_size_t_arg,[
3767         AC_TRY_RUN_STRICT([
3768                 #include <krb5.h>
3769                 int main(void) {
3770                         char buf[256];
3771                         krb5_enctype_to_string(1, buf, 256);
3772                         return 0;
3773                 }
3774                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3775                 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
3776                 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
3778     if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
3779       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3780                 [whether krb5_enctype_to_string takes size_t argument])
3781     fi
3782   fi
3784   AC_CACHE_CHECK([for krb5_principal_get_realm],
3785                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3786     AC_TRY_LINK([#include <krb5.h>],
3787       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3788       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3789       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3791   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3792     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3793                [Whether the function krb5_principal_get_realm is defined])
3794   fi
3796   AC_CACHE_CHECK([for krb5_princ_realm],
3797                 samba_cv_HAVE_KRB5_PRINC_REALM,[
3798     AC_TRY_LINK([#include <krb5.h>],
3799       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3800       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3801       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3803   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3804     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3805                [Whether the macro krb5_princ_realm is defined])
3806   fi
3808   #
3809   #
3810   # Now the decisions whether we can support krb5
3811   #
3812   # NOTE: all tests should be done before this block!
3813   #
3814   #
3815   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3816     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3817     use_ads=no
3818   fi
3820   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3821           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3822   then
3823     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3824     use_ads=no
3825   fi
3827   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3828           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3829   then
3830     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3831     use_ads=no
3832   fi
3834   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3835           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3836   then
3837     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3838     use_ads=no
3839   fi
3841   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3842           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3843   then
3844     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3845     use_ads=no
3846   fi
3848   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3850       # We only need the following functions if we can't get the enctype
3851       # and kvno out of the ticket directly (ie. on Heimdal).
3853       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3854       then
3855         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3856         use_ads=no
3857       fi
3859       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3860       then
3861         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3862         use_ads=no
3863       fi
3865   fi
3867   if test x"$use_ads" = x"yes"; then
3868     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3869     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3870     if test x"$have_gssapi" = x"yes"; then
3871       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3872     fi
3873   else
3874     if test x"$with_ads_support" = x"yes"; then
3875         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3876     else
3877         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3878     fi
3879     AC_REMOVE_DEFINE(HAVE_KRB5_H)
3880     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3881     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3882     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3883     KRB5_LIBS=""
3884     with_ads_support=no
3885   fi
3886   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3887   AC_MSG_RESULT([$use_ads])
3889 LIBS="$ac_save_LIBS"
3892 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3893 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3896 ########################################################
3897 # Compile with DNS Updates support?
3899 with_dnsupdate_support=no
3900 AC_MSG_CHECKING([whether to enable DNS Updates support])
3902 AC_ARG_WITH(dnsupdate,
3903 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
3904 [ case "$withval" in
3905     yes|no)
3906         with_dnsupdate_support=$withval
3907         ;;
3908   esac ])
3910 AC_MSG_RESULT($with_dnsupdate_support)
3912 if test x"$with_dnsupdate_support" != x"no"; then
3914   ################################################################
3915   # first test for Active Directory support being enabled
3916   #if test x"$with_ads_support" = x"no"; then
3917   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3918   #             with_dnsupdate_support=no
3919   #fi           
3920   ##################################################################
3921   # then test for uuid.h (necessary to generate unique DNS keynames
3922   # (uuid.h is required for this test)
3923   AC_CHECK_HEADERS(uuid/uuid.h)
3925   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3926         if test x"$with_dnsupdate_support" = x"yes"; then
3927          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3928         else
3929          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3930         fi
3931         with_dnsupdate_support=no
3932   fi
3935 if test x"$with_dnsupdate_support" != x"no"; then
3937   ########################################################
3938   # Now see if we can find the uuid libs in standard paths
3939   # On some systems, the uuid API is in libc, so we have to
3940   # be careful not to insert a spurious -luuid.
3942   UUID_LIBS=""
3943   AC_LIBTESTFUNC(uuid, uuid_generate,
3944           [
3945             case " $LIBS " in
3946                 *\ -luuid\ *)
3947                 UUID_LIBS="-luuid"
3948                 SMB_REMOVE_LIB(uuid)
3949                 ;;
3950             esac
3952             with_dnsupdate_support=yes
3953             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3954         ],
3955         [
3956             if test x"$with_dnsupdate_support" = x"yes"; then
3957                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
3958             else
3959                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
3960             fi
3961             with_dnsupdate_support=no
3962         ])
3965 #################################################
3966 # check for automount support
3967 AC_MSG_CHECKING(whether to use automount)
3968 AC_ARG_WITH(automount,
3969 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
3970 [ case "$withval" in
3971   yes)
3972     AC_MSG_RESULT(yes)
3973     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3974     ;;
3975   *)
3976     AC_MSG_RESULT(no)
3977     ;;
3978   esac ],
3979   AC_MSG_RESULT(no)
3982 #################################################
3983 # check for mount- and umount.cifs support
3984 CIFSMOUNT_PROGS=""
3985 INSTALL_CIFSMOUNT=""
3986 UNINSTALL_CIFSMOUNT=""
3987 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
3988 AC_ARG_WITH(cifsmount,
3989 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
3990 [ case "$withval" in
3991   no)
3992         AC_MSG_RESULT(no)
3993         ;;
3994   *)
3995         case "$host_os" in
3996         *linux*)
3997                 AC_MSG_RESULT(yes)
3998                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
3999                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4000                 INSTALL_CIFSMOUNT="installcifsmount"
4001                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4002                 ;;
4003         *)
4004                 AC_MSG_ERROR(not on a linux system!)
4005                 ;;
4006         esac
4007     ;;
4008   esac ],
4009 [ case "$host_os" in
4010   *linux*)
4011         AC_MSG_RESULT(yes)
4012         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4013         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4014         INSTALL_CIFSMOUNT="installcifsmount"
4015         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4016         ;;
4017   *)
4018         AC_MSG_RESULT(no)
4019         ;;
4020   esac ]
4023 #################################################
4024 # check for cifs.spnego support
4025 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4026 CIFSSPNEGO_PROGS=""
4027 INSTALL_CIFSSPNEGO=""
4028 UNINSTALL_CIFSSPNEGO=""
4029 AC_MSG_CHECKING(whether to build cifs.spnego)
4030 AC_ARG_WITH(cifsspnego,
4031 [AS_HELP_STRING([--with-cifsspnego], [Include cifs.spnego (Linux only) support (default=no)])],
4032 [ case "$withval" in
4033   no)
4034         AC_MSG_RESULT(no)
4035         ;;
4036   *)
4037         case "$host_os" in
4038         *linux*)
4039                 if test x"$use_ads" != x"yes"; then
4040                         AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4041                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4042                         AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4043                 else
4044                         AC_MSG_RESULT(yes)
4045                         AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4046                         CIFSSPNEGO_PROGS="bin/cifs.spnego"
4047                         INSTALL_CIFSSPNEGO="installcifsspnego"
4048                         UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4049                 fi
4050                 ;;
4051         *)
4052                 AC_MSG_ERROR(not on a linux system!)
4053                 ;;
4054         esac
4055     ;;
4056   esac ],
4058   AC_MSG_RESULT(no)
4059   ]
4063 #################################################
4064 # Check for a PAM clear-text auth, accounts, password
4065 # and session support. Most PAM implementations keep their
4066 # headers in /usr/include/security. Darwin keeps its in
4067 # /usr/include/pam.
4069 with_pam_for_crypt=no
4070 try_pam=no
4071 AC_MSG_CHECKING(whether to try PAM support)
4072 AC_ARG_WITH(pam,
4073 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4074 [ case "$withval" in
4075   yes|no)
4076     try_pam=$withval
4077     ;;
4078   esac
4080 AC_MSG_RESULT([$try_pam])
4082 use_pam=no
4083 create_pam_modules=no
4084 if test x"${try_pam}" != x"no";then
4085         use_pam=yes
4086         create_pam_modules=yes
4088         # Most systems have PAM headers in /usr/include/security, but Darwin
4089         # has them in /usr/include/pam.
4090         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4091         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4092                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4093                 if test x"${try_pam}" = x"yes";then
4094                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4095                 fi
4096                 use_pam=no
4097                 create_pam_modules=no
4098         fi
4100         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4101         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4102                 if test x"${try_pam}" = x"yes";then
4103                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4104                 fi
4105                 use_pam=no
4106                 create_pam_modules=no
4107         fi
4109         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4110                 #if HAVE_SECURITY_PAM_APPL_H
4111                 #include <security/pam_appl.h>
4112                 #endif
4113                 #if HAVE_PAM_PAM_APPL_H
4114                 #include <pam/pam_appl.h>
4115                 #endif
4116         ]])
4117         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4118                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4119                 if test x"${try_pam}" = x"yes";then
4120                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4121        fi
4122                 create_pam_modules=no
4123     fi
4125         if test x"$use_pam" = x"yes"; then
4126     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4127                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4128                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4129     with_pam_for_crypt=yes
4131                 if test x"$create_pam_modules" = x"yes"; then
4132                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4133                         # this checks are optional,
4134                         # we don't care about the results here
4135                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4136                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4137                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4138                 else
4139                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4140                 fi
4141         fi
4142         AC_MSG_CHECKING(whether to use PAM support)
4143         AC_MSG_RESULT([$use_pam])
4145         AC_MSG_CHECKING(whether to have PAM MODULES support)
4146         AC_MSG_RESULT([$create_pam_modules])
4147 fi # try_pam != no
4149 #################################################
4150 # check for pam_smbpass support
4151 PAM_MODULES=""
4152 INSTALL_PAM_MODULES=""
4153 UNINSTALL_PAM_MODULES=""
4154 AC_MSG_CHECKING(whether to use pam_smbpass)
4155 AC_ARG_WITH(pam_smbpass,
4156 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4157 [ case "$withval" in
4158   yes)
4159     AC_MSG_RESULT(yes)
4161        # Conditions under which pam_smbpass should not be built.
4163        if test x"$BLDSHARED" != x"true"; then
4164           AC_MSG_ERROR([No support for shared modules])
4165        elif test x"$create_pam_modules" != x"yes"; then
4166           AC_MSG_ERROR([No support for PAM MODULES])
4167        else
4168           PAM_MODULES="pam_smbpass"
4169           INSTALL_PAM_MODULES="installpammodules"
4170           UNINSTALL_PAM_MODULES="uninstallpammodules"
4171        fi
4172     ;;
4173   *)
4174     AC_MSG_RESULT(no)
4175     ;;
4176   esac ],
4177   AC_MSG_RESULT(no)
4181 ###############################################
4182 # test for where we get crypt() from
4183 AC_SEARCH_LIBS(crypt, [crypt],
4184   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4185   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4188 ## moved after the check for -lcrypt in order to
4189 ## ensure that the necessary libraries are included
4190 ## check checking for truncated salt.  Wrapped by the
4191 ## $with_pam_for_crypt variable as above   --jerry
4193 if test $with_pam_for_crypt = no; then
4194 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4195 crypt_LIBS="$LIBS"
4196 LIBS="$AUTH_LIBS $LIBS"
4197 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4198         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4199 LIBS="$crypt_LIBS"])
4200 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4201         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4205 #################################################
4206 # check for a NISPLUS_HOME support
4207 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4208 AC_ARG_WITH(nisplus-home,
4209 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4210 [ case "$withval" in
4211   yes)
4212     AC_MSG_RESULT(yes)
4213     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4214     ;;
4215   *)
4216     AC_MSG_RESULT(no)
4217     ;;
4218   esac ],
4219   AC_MSG_RESULT(no)
4222 #################################################
4223 # check for syslog logging
4224 AC_MSG_CHECKING(whether to use syslog logging)
4225 AC_ARG_WITH(syslog,
4226 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4227 [ case "$withval" in
4228   yes)
4229     AC_MSG_RESULT(yes)
4230     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4231     ;;
4232   *)
4233     AC_MSG_RESULT(no)
4234     ;;
4235   esac ],
4236   AC_MSG_RESULT(no)
4239 #################################################
4240 # check for experimental disk-quotas support
4242 samba_cv_WITH_QUOTAS=auto
4243 samba_cv_TRY_QUOTAS=no
4244 samba_cv_RUN_QUOTA_TESTS=auto
4245 samba_cv_WITH_SYS_QUOTAS=auto
4246 samba_cv_TRY_SYS_QUOTAS=auto
4247 samba_cv_SYSQUOTA_FOUND=no
4249 AC_MSG_CHECKING(whether to try disk-quotas support)
4250 AC_ARG_WITH(quotas,
4251 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4252 [ case "$withval" in
4253   yes)
4254     AC_MSG_RESULT(yes)
4255     samba_cv_WITH_QUOTAS=yes
4256     samba_cv_TRY_QUOTAS=yes
4257     samba_cv_RUN_QUOTA_TESTS=yes
4258     #set sys quotas to auto in this case
4259     samba_cv_TRY_SYS_QUOTAS=auto
4260     ;;
4261   auto)
4262     AC_MSG_RESULT(auto)
4263     samba_cv_WITH_QUOTAS=auto
4264     samba_cv_TRY_QUOTAS=auto
4265     samba_cv_RUN_QUOTA_TESTS=auto
4266     #set sys quotas to auto in this case
4267     samba_cv_TRY_SYS_QUOTAS=auto
4268     ;;
4269   no)
4270     AC_MSG_RESULT(no)
4271     samba_cv_WITH_QUOTAS=no
4272     samba_cv_TRY_QUOTAS=no
4273     samba_cv_RUN_QUOTA_TESTS=no
4274     ;;
4275   *)
4276     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4277     ;;
4278   esac ],
4279   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4282 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4283 AC_ARG_WITH(sys-quotas,
4284 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4285 [ case "$withval" in
4286   yes)
4287     AC_MSG_RESULT(yes)
4288     samba_cv_WITH_SYS_QUOTAS=yes
4289     samba_cv_TRY_SYS_QUOTAS=yes
4290     samba_cv_RUN_QUOTA_TESTS=yes
4291     ;;
4292   auto)
4293     AC_MSG_RESULT(auto)
4294     samba_cv_WITH_SYS_QUOTAS=auto
4295     samba_cv_TRY_SYS_QUOTAS=auto
4296     samba_cv_RUN_QUOTA_TESTS=auto
4297     ;;
4298   no)
4299     AC_MSG_RESULT(no)
4300     samba_cv_WITH_SYS_QUOTAS=no
4301     samba_cv_TRY_SYS_QUOTAS=no
4302     ;;
4303   *)
4304     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4305     ;;
4306   esac ],
4307   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4310 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4311 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4312   case "$host_os" in
4313         *linux*)
4314             AC_MSG_RESULT(yes)
4315             samba_cv_TRY_SYS_QUOTAS=yes
4316             samba_cv_RUN_QUOTA_TESTS=yes
4317             ;;
4318         *)
4319             AC_MSG_RESULT(no)
4320             samba_cv_TRY_SYS_QUOTAS=no
4321             ;;
4322   esac
4325 #############################################
4326 # only check for quota stuff if --with-quotas
4327 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4329 case "$host_os" in
4330         # on linux we didn't need to test we have builtin support
4331         *linux*)
4332             samba_cv_SYSQUOTA_FOUND=yes
4333             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4334             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4335             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4336             AC_MSG_RESULT(yes)
4338             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4339             samba_cv_found_xfs_header=yes
4340             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4341             AC_MSG_RESULT(yes)
4342             ;;
4343         *solaris*)
4344             # need to set this define when using static linking (BUG 1473)
4345             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4346             ;;
4347         *)
4348             ;;
4349 esac
4351 # some broken header files need this
4352 AC_CHECK_HEADER(asm/types.h,[
4353             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4354             AC_ADD_INCLUDE(<asm/types.h>)
4355             ])
4357 # For quotas on Veritas VxFS filesystems
4358 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4360 # For quotas on Linux XFS filesystems
4361 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4363 # For sys/quota.h and linux/quota.h
4364 AC_CHECK_HEADERS(sys/quota.h)
4366 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4367 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4368 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4369 AC_TRY_COMPILE([
4370 #include "confdefs.h"
4371 #ifdef HAVE_SYS_TYPES_H
4372 #include <sys/types.h>
4373 #endif
4374 #ifdef HAVE_ASM_TYPES_H
4375 #include <asm/types.h>
4376 #endif
4377 #include <sys/quota.h>
4378 ],[int i = Q_XGETQUOTA;],
4379 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4380 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4381         samba_cv_found_xfs_header=yes
4385 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4386 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4387 AC_TRY_COMPILE([
4388 #include "confdefs.h"
4389 #ifdef HAVE_SYS_QUOTA_H
4390 #include <sys/quota.h>
4391 #endif
4393 struct dqblk D;
4394 D.dqb_fsoftlimit = 0;],
4395 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4396 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4397         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4400 ##################
4401 # look for a working quota system
4403 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4404 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4405 AC_TRY_RUN_STRICT([
4406 #define HAVE_QUOTACTL_4A 1
4407 #define AUTOCONF_TEST 1
4408 #include "confdefs.h"
4409 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4410            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4411 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4412     samba_cv_SYSQUOTA_FOUND=yes;
4413     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4414     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4418 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4419 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4420 AC_TRY_RUN_STRICT([
4421 #define HAVE_QUOTACTL_4B 1
4422 #define AUTOCONF_TEST 1
4423 #include "confdefs.h"
4424 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4425            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4426 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4427     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4428     samba_cv_SYSQUOTA_FOUND=yes;
4429     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4430     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4434 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4435 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4436 AC_TRY_RUN_STRICT([
4437 #define HAVE_QUOTACTL_3 1
4438 #define AUTOCONF_TEST 1
4439 #include "confdefs.h"
4440 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4441            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4442 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4443     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4444     samba_cv_SYSQUOTA_FOUND=yes;
4445     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4446     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4450 #################################################
4451 # check for mntent.h and struct mntent
4452 AC_CHECK_HEADERS(mntent.h)
4453 #################################################
4454 # check for setmntent,getmntent,endmntent
4455 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4457 #################################################
4458 # check for devnm.h and struct mntent
4459 AC_CHECK_HEADERS(devnm.h)
4460 #################################################
4461 # check for devnm
4462 AC_CHECK_FUNCS(devnm)
4464 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4465     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4466         # if --with-sys-quotas=yes then build it
4467         # you have can use the get/set quota command smb.conf
4468         # options then
4469         samba_cv_SYSQUOTA_FOUND=auto
4470     fi
4471     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4472         # if --with-sys-quotas=yes then build it
4473         # you have can use the get/set quota command smb.conf
4474         # options then
4475         samba_cv_TRY_SYS_QUOTAS=auto
4476     fi
4479 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4480 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4481 SAVE_CPPFLAGS="$CPPFLAGS"
4482 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4483 AC_TRY_COMPILE([
4484 #include "confdefs.h"
4485 #define NO_PROTO_H 1
4486 #define NO_CONFIG_H 1
4487 #define HAVE_SYS_QUOTAS 1
4488 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4489 #include "${srcdir-.}/lib/sysquotas.c"
4490 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4491 CPPFLAGS="$SAVE_CPPFLAGS"
4493 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4494 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4495     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4496         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4497         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4498         samba_cv_WE_USE_SYS_QUOTAS=yes
4499         AC_MSG_RESULT(yes)
4500     else
4501         AC_MSG_RESULT(no)
4502     fi
4506 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4507 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4508 SAVE_CPPFLAGS="$CPPFLAGS"
4509 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4510 AC_TRY_COMPILE([
4511 #include "confdefs.h"
4512 #define NO_PROTO_H 1
4513 #define NO_CONFIG_H 1
4514 #define HAVE_SYS_QUOTAS 1
4515 #define HAVE_XFS_QUOTAS 1
4516 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4517 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4518 CPPFLAGS="$SAVE_CPPFLAGS"
4520 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4521     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4522         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4523     fi
4527 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4528 SAVE_CPPFLAGS="$CPPFLAGS"
4529 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4530 AC_TRY_COMPILE([
4531 #include "confdefs.h"
4532 #define NO_PROTO_H 1
4533 #define NO_CONFIG_H 1
4534 #include "${srcdir-.}/smbd/quotas.c"
4535 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4536 CPPFLAGS="$SAVE_CPPFLAGS"
4538 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4539 AC_MSG_CHECKING(whether to use the old quota support)
4540     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4541       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4542         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4543         AC_MSG_RESULT(yes)
4544       else
4545         AC_MSG_RESULT(no)
4546       fi
4547     else
4548       AC_MSG_RESULT(no)
4549     fi
4552 ####################
4553 # End of quota check samba_cv_RUN_QUOTA_TESTS
4556 #################################################
4557 # check for experimental utmp accounting
4559 AC_MSG_CHECKING(whether to support utmp accounting)
4560 WITH_UTMP=yes
4561 AC_ARG_WITH(utmp,
4562 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4563 [ case "$withval" in
4564   no)
4565                 WITH_UTMP=no
4566                 ;;
4567   *)
4568                 WITH_UTMP=yes
4569                 ;;
4570   esac ],
4573 # utmp requires utmp.h
4574 # Note similar check earlier, when checking utmp details.
4576 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4577         utmp_no_reason=", no utmp.h on $host_os"
4578         WITH_UTMP=no
4581 # Display test results
4583 if test x"$WITH_UTMP" = x"yes"; then
4584         AC_MSG_RESULT(yes)
4585         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4586 else
4587         AC_MSG_RESULT(no$utmp_no_reason)
4590 INSTALLLIBCMD_SH=:
4591 INSTALLLIBCMD_A=:
4592 UNINSTALLLIBCMD_SH=:
4593 UNINSTALLLIBCMD_A=:
4595 if test $BLDSHARED = true; then
4596         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4597         UNINSTALLLIBCMD_SH="rm -f"
4599 if test $enable_static = yes; then
4600         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4601         UNINSTALLLIBCMD_A="rm -f"
4604 #################################################
4605 # --disable-shared-libs
4606 # can be used to disable the internal use of shared libs altogether
4607 # (this only has an effect when building shared libs is enabled)
4609 USESHARED=false
4610 AC_SUBST(USESHARED)
4612 AC_MSG_CHECKING(whether to use shared libraries internally)
4613 AC_ARG_ENABLE([shared-libs],
4614         AS_HELP_STRING([--enable-shared-libs],
4615                 [Use shared libraries internally (default=yes)]),
4616         [enable_shared_libs=$enableval],
4617         [enable_shared_libs=yes])
4619 if test x"$enable_shared_libs" != x"no" ; then
4620         USESHARED=$BLDSHARED
4623 AC_MSG_RESULT([$USESHARED])
4625 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4626         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4629 #################################################
4630 # --with-static-libs=LIBS:
4631 #   link (internal) libs dynamically or statically?
4633 # If a subsystem is built as a library then this controls whether they are
4634 # linked into Samba targets statically or dynamically:
4636 # * If we build the shared library at all, we link dynamically by default.
4638 # * We only link statically if we don't build shared or if the library
4639 #   appears in the --with-static-libs configure option.
4641 # Example:
4642 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4643 #   of linking the dynamic variant with -ltalloc.
4645 # NOTE: This option only affects libraries that we do not only build
4646 # but that samba also links against as libraries (as opposed to linking
4647 # the plain object files. - This has to be configured in Makefile.in.
4648 # So in particular it does not harm to give invalid or unknown names here.
4651 AC_ARG_WITH([static-libs],
4652         [AS_HELP_STRING([--with-static-libs=LIBS],
4653                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4654         [AS_IF([test $withval],
4655                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4656                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4657                         eval LINK_$lib=STATIC
4658                 done], [])],
4659         [])
4662 # WORKAROUND:
4663 #   until we have organized other internal subsystems (as util, registry
4664 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
4665 #   dynamically to samba programs.
4667 LINK_LIBNETAPI=STATIC
4669 SMB_LIBRARY(talloc)
4670 SMB_LIBRARY(tdb)
4671 SMB_LIBRARY(netapi)
4674 #################################################
4675 # should we build libaddns?
4676 INSTALL_LIBADDNS=
4677 UNINSTALL_LIBADDNS=
4678 LIBADDNS_SHARED=
4679 LIBADDNS=
4680 AC_MSG_CHECKING(whether to build the libaddns shared library)
4681 AC_ARG_WITH(libaddns,
4682 [AS_HELP_STRING([--with-libaddns], [Build the libaddns shared library (default=no undefined API)])],
4683 [ case "$withval" in
4684   *)
4685      AC_MSG_RESULT(no)
4686      ;;
4687   yes)
4688      if test $BLDSHARED = true; then
4689         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4690         LIBADDNS=libaddns
4691         AC_MSG_RESULT(yes)
4692      else
4693         enable_static=yes
4694         AC_MSG_RESULT(no shared library support -- will supply static library)
4695      fi
4696      if test $enable_static = yes; then
4697         LIBADDNS=libaddns
4698      fi
4699      INSTALL_LIBADDNS=installlibaddns
4700      UNINSTALL_LIBADDNS=uninstalllibaddns
4701      ;;
4702   esac ],
4703 [AC_MSG_RESULT(no)]
4706 #################################################
4707 # should we build libsmbclient?
4709 INSTALL_LIBSMBCLIENT=
4710 UNINSTALL_LIBSMBCLIENT=
4711 LIBSMBCLIENT_SHARED=
4712 LIBSMBCLIENT=
4713 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4714 AC_ARG_WITH(libsmbclient,
4715 [AS_HELP_STRING([--with-libsmbclient], [Build the libsmbclient shared library (default=yes if shared libs supported)])],
4716 [ case "$withval" in
4717   no)
4718      AC_MSG_RESULT(no)
4719      ;;
4720   *)
4721      if test $BLDSHARED = true; then
4722         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4723         LIBSMBCLIENT=libsmbclient
4724         AC_MSG_RESULT(yes)
4725      else
4726         enable_static=yes
4727         AC_MSG_RESULT(no shared library support -- will supply static library)
4728      fi
4729      if test $enable_static = yes; then
4730         LIBSMBCLIENT=libsmbclient
4731      fi
4732      INSTALL_LIBSMBCLIENT=installclientlib
4733      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4734      ;;
4735   esac ],
4737 # if unspecified, default is to build it if possible.
4738   if test $BLDSHARED = true; then
4739      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4740      LIBSMBCLIENT=libsmbclient
4741      AC_MSG_RESULT(yes)
4742    else
4743      enable_static=yes
4744      AC_MSG_RESULT(no shared library support -- will supply static library)
4745    fi
4746    if test $enable_static = yes; then
4747      LIBSMBCLIENT=libsmbclient
4748   fi]
4749   INSTALL_LIBSMBCLIENT=installclientlib
4750   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4753 INSTALL_LIBSMBSHAREMODES=
4754 LIBSMBSHAREMODES_SHARED=
4755 LIBSMBSHAREMODES=
4756 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4757 AC_ARG_WITH(libsmbsharemodes,
4758 [AS_HELP_STRING([--with-libsmbsharemodes], [Build the libsmbsharemodes shared library (default=yes if shared libs supported)])],
4759 [ case "$withval" in
4760   no)
4761      AC_MSG_RESULT(no)
4762      ;;
4763   *)
4764      if test $BLDSHARED = true; then
4765         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4766         LIBSMBSHAREMODES=libsmbsharemodes
4767         AC_MSG_RESULT(yes)
4768      else
4769         enable_static=yes
4770         AC_MSG_RESULT(no shared library support -- will supply static library)
4771      fi
4772      if test $enable_static = yes; then
4773         LIBSMBSHAREMODES=libsmbsharemodes
4774      fi
4775      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4776      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4777      ;;
4778   esac ],
4780 # if unspecified, default is to build it if possible.
4781   if test $BLDSHARED = true; then
4782      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4783      LIBSMBSHAREMODES=libsmbsharemodes
4784      AC_MSG_RESULT(yes)
4785    else
4786      enable_static=yes
4787      AC_MSG_RESULT(no shared library support -- will supply static library)
4788    fi
4789    if test $enable_static = yes; then
4790      LIBSMBSHAREMODES=libsmbsharemodes
4791   fi]
4792   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4796 #################################################
4797 # these tests are taken from the GNU fileutils package
4798 AC_CHECKING(how to get filesystem space usage)
4799 space=no
4801 # Test for statvfs64.
4802 if test $space = no; then
4803   # SVR4
4804   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4805   [AC_TRY_RUN([
4806 #if defined(HAVE_UNISTD_H)
4807 #include <unistd.h>
4808 #endif
4809 #include <sys/types.h>
4810 #include <sys/statvfs.h>
4811   main ()
4812   {
4813     struct statvfs64 fsd;
4814     exit (statvfs64 (".", &fsd));
4815   }],
4816   fu_cv_sys_stat_statvfs64=yes,
4817   fu_cv_sys_stat_statvfs64=no,
4818   fu_cv_sys_stat_statvfs64=cross)])
4819   if test $fu_cv_sys_stat_statvfs64 = yes; then
4820     space=yes
4821     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4822   fi
4825 # Perform only the link test since it seems there are no variants of the
4826 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4827 # because that got a false positive on SCO OSR5.  Adding the declaration
4828 # of a `struct statvfs' causes this test to fail (as it should) on such
4829 # systems.  That system is reported to work fine with STAT_STATFS4 which
4830 # is what it gets when this test fails.
4831 if test $space = no; then
4832   # SVR4
4833   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4834                  [AC_TRY_LINK([#include <sys/types.h>
4835 #include <sys/statvfs.h>],
4836                               [struct statvfs fsd; statvfs (0, &fsd);],
4837                               fu_cv_sys_stat_statvfs=yes,
4838                               fu_cv_sys_stat_statvfs=no)])
4839   if test $fu_cv_sys_stat_statvfs = yes; then
4840     space=yes
4841     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4842   fi
4845 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4846 # This is not the case on ancient Linux systems.
4848 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4849     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4850         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4851 if test x"$samba_cv_fsid_int" = x"yes"; then
4852     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4855 if test $space = no; then
4856   # DEC Alpha running OSF/1
4857   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4858   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4859   [AC_TRY_RUN([
4860 #include <sys/param.h>
4861 #include <sys/types.h>
4862 #include <sys/mount.h>
4863   main ()
4864   {
4865     struct statfs fsd;
4866     fsd.f_fsize = 0;
4867     exit (statfs (".", &fsd, sizeof (struct statfs)));
4868   }],
4869   fu_cv_sys_stat_statfs3_osf1=yes,
4870   fu_cv_sys_stat_statfs3_osf1=no,
4871   fu_cv_sys_stat_statfs3_osf1=no)])
4872   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4873   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4874     space=yes
4875     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4876   fi
4879 if test $space = no; then
4880 # AIX
4881   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4882 member (AIX, 4.3BSD)])
4883   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4884   [AC_TRY_RUN([
4885 #ifdef HAVE_SYS_PARAM_H
4886 #include <sys/param.h>
4887 #endif
4888 #ifdef HAVE_SYS_MOUNT_H
4889 #include <sys/mount.h>
4890 #endif
4891 #ifdef HAVE_SYS_VFS_H
4892 #include <sys/vfs.h>
4893 #endif
4894   main ()
4895   {
4896   struct statfs fsd;
4897   fsd.f_bsize = 0;
4898   exit (statfs (".", &fsd));
4899   }],
4900   fu_cv_sys_stat_statfs2_bsize=yes,
4901   fu_cv_sys_stat_statfs2_bsize=no,
4902   fu_cv_sys_stat_statfs2_bsize=no)])
4903   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4904   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4905     space=yes
4906     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4907   fi
4910 if test $space = no; then
4911 # SVR3
4912   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4913   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4914   [AC_TRY_RUN([#include <sys/types.h>
4915 #include <sys/statfs.h>
4916   main ()
4917   {
4918   struct statfs fsd;
4919   exit (statfs (".", &fsd, sizeof fsd, 0));
4920   }],
4921     fu_cv_sys_stat_statfs4=yes,
4922     fu_cv_sys_stat_statfs4=no,
4923     fu_cv_sys_stat_statfs4=no)])
4924   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4925   if test $fu_cv_sys_stat_statfs4 = yes; then
4926     space=yes
4927     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4928   fi
4931 if test $space = no; then
4932 # 4.4BSD and NetBSD
4933   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4934 member (4.4BSD and NetBSD)])
4935   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4936   [AC_TRY_RUN([#include <sys/types.h>
4937 #ifdef HAVE_SYS_PARAM_H
4938 #include <sys/param.h>
4939 #endif
4940 #ifdef HAVE_SYS_MOUNT_H
4941 #include <sys/mount.h>
4942 #endif
4943   main ()
4944   {
4945   struct statfs fsd;
4946   fsd.f_fsize = 0;
4947   exit (statfs (".", &fsd));
4948   }],
4949   fu_cv_sys_stat_statfs2_fsize=yes,
4950   fu_cv_sys_stat_statfs2_fsize=no,
4951   fu_cv_sys_stat_statfs2_fsize=no)])
4952   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4953   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4954     space=yes
4955         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4956   fi
4959 if test $space = no; then
4960   # Ultrix
4961   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4962   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4963   [AC_TRY_RUN([#include <sys/types.h>
4964 #ifdef HAVE_SYS_PARAM_H
4965 #include <sys/param.h>
4966 #endif
4967 #ifdef HAVE_SYS_MOUNT_H
4968 #include <sys/mount.h>
4969 #endif
4970 #ifdef HAVE_SYS_FS_TYPES_H
4971 #include <sys/fs_types.h>
4972 #endif
4973   main ()
4974   {
4975   struct fs_data fsd;
4976   /* Ultrix's statfs returns 1 for success,
4977      0 for not mounted, -1 for failure.  */
4978   exit (statfs (".", &fsd) != 1);
4979   }],
4980   fu_cv_sys_stat_fs_data=yes,
4981   fu_cv_sys_stat_fs_data=no,
4982   fu_cv_sys_stat_fs_data=no)])
4983   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4984   if test $fu_cv_sys_stat_fs_data = yes; then
4985     space=yes
4986     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4987   fi
4991 # As a gating factor for large file support, in order to
4992 # use <4GB files we must have the following minimal support
4993 # available.
4994 # long long, and a 64 bit off_t or off64_t.
4995 # If we don't have all of these then disable large
4996 # file support.
4998 AC_MSG_CHECKING([if large file support can be enabled])
4999 AC_TRY_COMPILE([
5000 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5001 #include <sys/types.h>
5002 #else
5003 __COMPILE_ERROR_
5004 #endif
5006 [int i],
5007 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5008 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5009         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5011 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5013 #################################################
5014 # check for cluster extensions
5016 AC_MSG_CHECKING(whether to include cluster support)
5017 AC_ARG_WITH(cluster-support,
5018 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5019 if test "x$with_cluster_support" = "xyes"; then
5020     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5021     AC_MSG_RESULT(yes)
5022 else
5023     AC_MSG_RESULT(no)
5027 #################################################
5028 # check for ACL support
5030 AC_MSG_CHECKING(whether to support ACLs)
5031 AC_ARG_WITH(acl-support,
5032 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5033 [ case "$withval" in
5034         yes|no)
5035                 with_acl_support="$withval"
5036                 ;;
5037   esac ])
5039 if test x"$with_acl_support" = x ; then
5040         with_acl_support="auto"
5043 AC_MSG_RESULT($with_acl_support)
5045 if test x"$with_acl_support" = x"no"; then
5046         AC_MSG_RESULT(Disabling ACL support)
5047         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5048 else
5049         AC_MSG_NOTICE(checking whether ACL support is available:)
5050         case "$host_os" in
5051         *sysv5*)
5052                 AC_MSG_NOTICE(Using UnixWare ACLs)
5053                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5054                 default_static_modules="$default_static_modules vfs_solarisacl"
5055                 ;;
5056         *solaris*)
5057                 AC_MSG_NOTICE(Using solaris ACLs)
5058                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5059                 ACL_LIBS="$ACL_LIBS -lsec"
5060                 default_static_modules="$default_static_modules vfs_solarisacl"
5061                 ;;
5062         *hpux*)
5063                 AC_MSG_NOTICE(Using HPUX ACLs)
5064                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5065                 default_static_modules="$default_static_modules vfs_hpuxacl"
5066                 ;;
5067         *irix*)
5068                 AC_MSG_NOTICE(Using IRIX ACLs)
5069                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5070                 default_static_modules="$default_static_modules vfs_irixacl"
5071                 ;;
5072         *aix*)
5073                 AC_MSG_NOTICE(Using AIX ACLs)
5074                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5075                 default_static_modules="$default_static_modules vfs_aixacl"
5076                 ;;
5077         *osf*)
5078                 AC_MSG_NOTICE(Using Tru64 ACLs)
5079                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5080                 ACL_LIBS="$ACL_LIBS -lpacl"
5081                 default_static_modules="$default_static_modules vfs_tru64acl"
5082                 ;;
5083         *darwin*)
5084                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5085                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5086                 ;;
5087         *)
5088                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5089                 case "$host_os" in
5090                 *linux*)
5091                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5092                         ;;
5093                 esac
5094                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5095                         acl_LIBS=$LIBS
5096                         LIBS="$LIBS $ACL_LIBS"
5097                         AC_TRY_LINK([
5098                                 #include <sys/types.h>
5099                                 #include <sys/acl.h>
5100                         ],[
5101                                 acl_t acl;
5102                                 int entry_id;
5103                                 acl_entry_t *entry_p;
5104                                 return acl_get_entry(acl, entry_id, entry_p);
5105                         ],
5106                         [samba_cv_HAVE_POSIX_ACLS=yes],
5107                         [samba_cv_HAVE_POSIX_ACLS=no])
5108                         LIBS=$acl_LIBS
5109                 ])
5110                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5111                         AC_MSG_NOTICE(Using posix ACLs)
5112                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5113                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5114                                 acl_LIBS=$LIBS
5115                                 LIBS="$LIBS $ACL_LIBS"
5116                                 AC_TRY_LINK([
5117                                         #include <sys/types.h>
5118                                         #include <sys/acl.h>
5119                                 ],[
5120                                         acl_permset_t permset_d;
5121                                         acl_perm_t perm;
5122                                         return acl_get_perm_np(permset_d, perm);
5123                                 ],
5124                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5125                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5126                                 LIBS=$acl_LIBS
5127                         ])
5128                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5129                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5130                         fi
5131                         default_static_modules="$default_static_modules vfs_posixacl"
5132                 else
5133                         AC_MSG_NOTICE(ACL support is not avaliable)
5134                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5135                 fi
5136                 ;;
5137         esac
5138 fi # with_acl_support
5142 #################################################
5143 # check for AIO support
5145 AC_MSG_CHECKING(whether to support asynchronous io)
5146 AC_ARG_WITH(aio-support,
5147 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5148 [ case "$withval" in
5149   yes)
5151         AC_MSG_RESULT(yes)
5152         case "$host_os" in
5153         *)
5154                 AIO_LIBS=$LIBS
5155                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5156                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5157                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5158                 aio_LIBS=$LIBS
5159                 LIBS=$AIO_LIBS
5160                 AC_TRY_LINK([#include <sys/types.h>
5161 #include <aio.h>],
5162 [ struct aiocb a; return aio_read(&a);],
5163 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5164                 LIBS=$aio_LIBS])
5165                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5166                 aio_LIBS=$LIBS
5167                 LIBS=$AIO_LIBS
5168                 AC_TRY_LINK([#include <sys/types.h>
5169 #include <aio.h>],
5170 [ struct aiocb64 a; return aio_read64(&a);],
5171 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5172                 LIBS=$aio_LIBS])
5173                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5174                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5175                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5176                         LIBS=$AIO_LIBS
5177                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5178                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5179                         LIBS=$AIO_LIBS
5180                 fi
5182                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5183                         AC_MSG_CHECKING(for aio_read)
5184                         AC_LINK_IFELSE([#include <aio.h>
5185 int main() { struct aiocb a; return aio_read(&a); }],
5186 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5187 [AC_MSG_RESULT(no)])
5189                         AC_MSG_CHECKING(for aio_write)
5190                         AC_LINK_IFELSE([#include <aio.h>
5191 int main() { struct aiocb a; return aio_write(&a); }],
5192 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5193 [AC_MSG_RESULT(no)])
5195                         AC_MSG_CHECKING(for aio_fsync)
5196                         AC_LINK_IFELSE([#include <aio.h>
5197 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5198 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5199 [AC_MSG_RESULT(no)])
5201                         AC_MSG_CHECKING(for aio_return)
5202                         AC_LINK_IFELSE([#include <aio.h>
5203 int main() { struct aiocb a; return aio_return(&a); }],
5204 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5205 [AC_MSG_RESULT(no)])
5207                         AC_MSG_CHECKING(for aio_error)
5208                         AC_LINK_IFELSE([#include <aio.h>
5209 int main() { struct aiocb a; return aio_error(&a); }],
5210 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5211 [AC_MSG_RESULT(no)])
5213                         AC_MSG_CHECKING(for aio_cancel)
5214                         AC_LINK_IFELSE([#include <aio.h>
5215 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5216 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5217 [AC_MSG_RESULT(no)])
5219                         AC_MSG_CHECKING(for aio_suspend)
5220                         AC_LINK_IFELSE([#include <aio.h>
5221 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5222 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5223 [AC_MSG_RESULT(no)])
5224                 fi
5226                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5227                         AC_MSG_CHECKING(for aio_read64)
5228                         AC_LINK_IFELSE([#include <aio.h>
5229 int main() { struct aiocb a; return aio_read64(&a); }],
5230 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5231 [AC_MSG_RESULT(no)])
5233                         AC_MSG_CHECKING(for aio_write64)
5234                         AC_LINK_IFELSE([#include <aio.h>
5235 int main() { struct aiocb a; return aio_write64(&a); }],
5236 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5237 [AC_MSG_RESULT(no)])
5239                         AC_MSG_CHECKING(for aio_fsync64)
5240                         AC_LINK_IFELSE([#include <aio.h>
5241 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5242 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5243 [AC_MSG_RESULT(no)])
5245                         AC_MSG_CHECKING(for aio_return64)
5246                         AC_LINK_IFELSE([#include <aio.h>
5247 int main() { struct aiocb a; return aio_return64(&a); }],
5248 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5249 [AC_MSG_RESULT(no)])
5251                         AC_MSG_CHECKING(for aio_error64)
5252                         AC_LINK_IFELSE([#include <aio.h>
5253 int main() { struct aiocb a; return aio_error64(&a); }],
5254 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5255 [AC_MSG_RESULT(no)])
5257                         AC_MSG_CHECKING(for aio_cancel64)
5258                         AC_LINK_IFELSE([#include <aio.h>
5259 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5260 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5261 [AC_MSG_RESULT(no)])
5263                         AC_MSG_CHECKING(for aio_suspend64)
5264                         AC_LINK_IFELSE([#include <aio.h>
5265 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5266 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5267 [AC_MSG_RESULT(no)])
5268                 fi
5269             ;;
5270         esac
5271         ;;
5272   *)
5273     AC_MSG_RESULT(no)
5274     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5275     ;;
5276   esac ],
5277   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5278   AC_MSG_RESULT(no)
5281 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5282         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5283                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5284                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5285         fi
5288 #################################################
5289 # check for sendfile support
5291 with_sendfile_support=yes
5292 AC_MSG_CHECKING(whether to check to support sendfile)
5293 AC_ARG_WITH(sendfile-support,
5294 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5295 [ case "$withval" in
5296   yes)
5298         AC_MSG_RESULT(yes);
5300         case "$host_os" in
5301         *linux*)
5302                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5303                 AC_TRY_LINK([#include <sys/sendfile.h>],
5305 int tofd, fromfd;
5306 off64_t offset;
5307 size_t total;
5308 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5310 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5312                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5313                 AC_TRY_LINK([#include <sys/sendfile.h>],
5315 int tofd, fromfd;
5316 off_t offset;
5317 size_t total;
5318 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5320 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5322 # Try and cope with broken Linux sendfile....
5323                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5324                 AC_TRY_LINK([\
5325 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5326 #undef _FILE_OFFSET_BITS
5327 #endif
5328 #include <sys/sendfile.h>],
5330 int tofd, fromfd;
5331 off_t offset;
5332 size_t total;
5333 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5335 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5337         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5338                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5339                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5340                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5341         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5342                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5343                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5344                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5345         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5346                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5347                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5348         else
5349                 AC_MSG_RESULT(no);
5350         fi
5352         ;;
5353         *freebsd* | *dragonfly* )
5354                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5355                 AC_TRY_LINK([\
5356 #include <sys/types.h>
5357 #include <unistd.h>
5358 #include <sys/socket.h>
5359 #include <sys/uio.h>],
5361         int fromfd, tofd, ret, total=0;
5362         off_t offset, nwritten;
5363         struct sf_hdtr hdr;
5364         struct iovec hdtrl;
5365         hdr.headers = &hdtrl;
5366         hdr.hdr_cnt = 1;
5367         hdr.trailers = NULL;
5368         hdr.trl_cnt = 0;
5369         hdtrl.iov_base = NULL;
5370         hdtrl.iov_len = 0;
5371         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5373 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5375         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5376                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5377                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5378                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5379         else
5380                 AC_MSG_RESULT(no);
5381         fi
5382         ;;
5384         *hpux*)
5385                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5386                 AC_TRY_LINK([\
5387 #include <sys/socket.h>
5388 #include <sys/uio.h>],
5390         int fromfd, tofd;
5391         size_t total=0;
5392         struct iovec hdtrl[2];
5393         ssize_t nwritten;
5394         off64_t offset;
5396         hdtrl[0].iov_base = 0;
5397         hdtrl[0].iov_len = 0;
5399         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5401 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5402         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5403                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5404                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5405                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5406         else
5407                 AC_MSG_RESULT(no);
5408         fi
5410                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5411                 AC_TRY_LINK([\
5412 #include <sys/socket.h>
5413 #include <sys/uio.h>],
5415         int fromfd, tofd;
5416         size_t total=0;
5417         struct iovec hdtrl[2];
5418         ssize_t nwritten;
5419         off_t offset;
5421         hdtrl[0].iov_base = 0;
5422         hdtrl[0].iov_len = 0;
5424         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5426 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5427         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5428                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5429                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5430                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5431         else
5432                 AC_MSG_RESULT(no);
5433         fi
5434         ;;
5436         *solaris*)
5437                 AC_CHECK_LIB(sendfile,sendfilev)
5438                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5439                 AC_TRY_LINK([\
5440 #include <sys/sendfile.h>],
5442         int sfvcnt;
5443         size_t xferred;
5444         struct sendfilevec vec[2];
5445         ssize_t nwritten;
5446         int tofd;
5448         sfvcnt = 2;
5450         vec[0].sfv_fd = SFV_FD_SELF;
5451         vec[0].sfv_flag = 0;
5452         vec[0].sfv_off = 0;
5453         vec[0].sfv_len = 0;
5455         vec[1].sfv_fd = 0;
5456         vec[1].sfv_flag = 0;
5457         vec[1].sfv_off = 0;
5458         vec[1].sfv_len = 0;
5459         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5461 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5463         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5464                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5465                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5466                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5467         else
5468                 AC_MSG_RESULT(no);
5469         fi
5471                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5472                 AC_TRY_LINK([\
5473 #include <sys/sendfile.h>],
5475         int sfvcnt;
5476         size_t xferred;
5477         struct sendfilevec vec[2];
5478         ssize_t nwritten;
5479         int tofd;
5481         sfvcnt = 2;
5483         vec[0].sfv_fd = SFV_FD_SELF;
5484         vec[0].sfv_flag = 0;
5485         vec[0].sfv_off = 0;
5486         vec[0].sfv_len = 0;
5488         vec[1].sfv_fd = 0;
5489         vec[1].sfv_flag = 0;
5490         vec[1].sfv_off = 0;
5491         vec[1].sfv_len = 0;
5492         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5494 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5496         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5497                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5498                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5499                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5500         else
5501                 AC_MSG_RESULT(no);
5502         fi
5503         ;;
5504         *aix*)
5505                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5506                 AC_TRY_LINK([\
5507 #include <sys/socket.h>],
5509         int fromfd, tofd;
5510         size_t total=0;
5511         struct sf_parms hdtrl;
5512         ssize_t nwritten;
5513         off64_t offset;
5515         hdtrl.header_data = 0;
5516         hdtrl.header_length = 0;
5517         hdtrl.file_descriptor = fromfd;
5518         hdtrl.file_offset = 0;
5519         hdtrl.file_bytes = 0;
5520         hdtrl.trailer_data = 0;
5521         hdtrl.trailer_length = 0;
5523         nwritten = send_file(&tofd, &hdtrl, 0);
5525 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5526         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5527                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5528                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5529                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5530         else
5531                 AC_MSG_RESULT(no);
5532         fi
5533         ;;
5534         *)
5535         ;;
5536         esac
5537         ;;
5538   *)
5539     AC_MSG_RESULT(no)
5540     ;;
5541   esac ],
5542   AC_MSG_RESULT(yes)
5545 ############################################
5546 # See if we have the Linux readahead syscall.
5548 AC_CACHE_CHECK([for Linux readahead],
5549                 samba_cv_HAVE_LINUX_READAHEAD,[
5550     AC_TRY_LINK([
5551 #if defined(HAVE_UNISTD_H)
5552 #include <unistd.h>
5553 #endif
5554 #include <fcntl.h>],
5555     [ssize_t err = readahead(0,0,0x80000);],
5556     samba_cv_HAVE_LINUX_READAHEAD=yes,
5557     samba_cv_HAVE_LINUX_READAHEAD=no)])
5559 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5560   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5561              [Whether Linux readahead is available])
5564 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5566 ############################################
5567 # See if we have the posix_fadvise syscall.
5569 AC_CACHE_CHECK([for posix_fadvise],
5570                 samba_cv_HAVE_POSIX_FADVISE,[
5571     AC_TRY_LINK([
5572 #if defined(HAVE_UNISTD_H)
5573 #include <unistd.h>
5574 #endif
5575 #include <fcntl.h>],
5576     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5577     samba_cv_HAVE_POSIX_FADVISE=yes,
5578     samba_cv_HAVE_POSIX_FADVISE=no)])
5580 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5581   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5582              [Whether posix_fadvise is available])
5585 ############################################
5586 # See if we have the Linux splice syscall.
5588 AC_CACHE_CHECK([for Linux splice],
5589                 samba_cv_HAVE_LINUX_SPLICE,[
5590     AC_TRY_LINK([
5591 #if defined(HAVE_UNISTD_H)
5592 #include <unistd.h>
5593 #endif
5594 #include <fcntl.h>],
5595     [long ret = splice(0,0,1,0,400,0);],
5596     samba_cv_HAVE_LINUX_SPLICE=yes,
5597     samba_cv_HAVE_LINUX_SPLICE=no)])
5599 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5600   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5601              [Whether Linux splice is available])
5604 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5607 #################################################
5608 # Check whether winbind is supported on this platform.  If so we need to
5609 # build and install client programs, sbin programs and shared libraries
5611 AC_MSG_CHECKING(whether to build winbind)
5613 # Initially, the value of $host_os decides whether winbind is supported
5615 HAVE_WINBIND=yes
5617 # Define the winbind shared library name and any specific linker flags
5618 # it needs to be built with.
5620 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5621 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5622 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5623 NSSSONAMEVERSIONSUFFIX=""
5624 WINBIND_NSS_PTHREAD=""
5626 case "$host_os" in
5627         *linux*)
5628                 NSSSONAMEVERSIONSUFFIX=".2"
5629                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5630                 ;;
5631         *freebsd[[5-9]]*)
5632                 # FreeBSD winbind client is implemented as a wrapper around
5633                 # the Linux version.
5634                 NSSSONAMEVERSIONSUFFIX=".1"
5635                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5636                     nsswitch/winbind_nss_linux.o"
5637                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5638                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5639                 ;;
5641         *netbsd*[[3-9]]*)
5642                 # NetBSD winbind client is implemented as a wrapper
5643                 # around the Linux version. It needs getpwent_r() to
5644                 # indicate libc's use of the correct nsdispatch API.
5645                 #
5646                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5647                         WINBIND_NSS_EXTRA_OBJS="\
5648                             nsswitch/winbind_nss_netbsd.o \
5649                             nsswitch/winbind_nss_linux.o"
5650                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5651                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5652                 else
5653                         HAVE_WINBIND=no
5654                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5655                 fi
5656                 ;;
5657         *irix*)
5658                 # IRIX has differently named shared libraries
5659                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5660                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5661                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5662                 ;;
5663         *solaris*)
5664                 # Solaris winbind client is implemented as a wrapper around
5665                 # the Linux version.
5666                 NSSSONAMEVERSIONSUFFIX=".1"
5667                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5668                     nsswitch/winbind_nss_linux.o"
5669                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5670                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5671                 ;;
5672         *hpux11*)
5673                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5674                 ;;
5675         *aix*)
5676                 # AIX has even differently named shared libraries.  No
5677                 # WINS support has been implemented yet.
5678                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5679                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5680                 WINBIND_NSS="nsswitch/WINBIND"
5681                 WINBIND_WINS_NSS=""
5682                 ;;
5683         *)
5684                 HAVE_WINBIND=no
5685                 winbind_no_reason=", unsupported on $host_os"
5686                 ;;
5687 esac
5689 # Check the setting of --with-winbind
5691 AC_ARG_WITH(winbind,
5692 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5694   case "$withval" in
5695         yes)
5696                 HAVE_WINBIND=yes
5697                 ;;
5698         no)
5699                 HAVE_WINBIND=no
5700                 winbind_reason=""
5701                 ;;
5702   esac ],
5705 # We need unix domain sockets for winbind
5707 if test x"$HAVE_WINBIND" = x"yes"; then
5708         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5709                 winbind_no_reason=", no unix domain socket support on $host_os"
5710                 HAVE_WINBIND=no
5711         fi
5714 # Display test results
5716 if test x"$HAVE_WINBIND" = x"no"; then
5717         WINBIND_NSS=""
5718         WINBIND_WINS_NSS=""
5721 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5722         BUILD_LIBWBCLIENT_SHARED=no
5723 else
5724         BUILD_LIBWBCLIENT_SHARED=yes
5727 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5728         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5729         ## Only worry about libwbclient if we have shared library support
5730         ## and winbindd
5731         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5732         LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
5733         LIBWBCLIENT=libwbclient
5734         INSTALL_LIBWBCLIENT=installlibwbclient
5735         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5736         WINBIND_LIBS="-lwbclient"
5737 else
5738         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5739         LIBWBCLIENT_STATIC=bin/libwbclient.a
5742 if test x"$HAVE_WINBIND" = x"yes"; then
5743         AC_MSG_RESULT(yes)
5744         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5746         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5747         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5748         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5749                 PAM_MODULES="$PAM_MODULES pam_winbind"
5750                 INSTALL_PAM_MODULES="installpammodules"
5751                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5752         fi
5753 else
5754         AC_MSG_RESULT(no$winbind_no_reason)
5757 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5758                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5760 AC_SUBST(WINBIND_NSS_PTHREAD)
5761 AC_SUBST(WINBIND_NSS)
5762 AC_SUBST(WINBIND_WINS_NSS)
5763 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5764 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5765 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5766 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5767 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5769 AC_SUBST(WINBIND_KRB5_LOCATOR)
5771 # Solaris 10 does have new member in nss_XbyY_key
5772 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5773                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5774                 [#include <nss_dbdefs.h>])
5776 # Solaris has some extra fields in struct passwd that need to be
5777 # initialised otherwise nscd crashes.
5779 AC_CHECK_MEMBER(struct passwd.pw_comment,
5780                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5781                 [#include <pwd.h>])
5783 AC_CHECK_MEMBER(struct passwd.pw_age,
5784                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5785                 [#include <pwd.h>])
5787 # AIX 4.3.x and 5.1 do not have as many members in
5788 # struct secmethod_table as AIX 5.2
5789 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5790        [#include <usersec.h>])
5791 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5792        [#include <usersec.h>])
5794 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5795 AC_TRY_COMPILE([#include <sys/types.h>
5796 #include <sys/socket.h>],
5797 [struct ucred cred;
5798  socklen_t cred_len;
5799  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5801 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5802 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5803     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5807 #################################################
5808 # Check to see if we should use the included popt
5810 AC_ARG_WITH(included-popt,
5811 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5813   case "$withval" in
5814         yes)
5815                 INCLUDED_POPT=yes
5816                 ;;
5817         no)
5818                 INCLUDED_POPT=no
5819                 ;;
5820   esac ],
5822 if test x"$INCLUDED_POPT" != x"yes"; then
5823     AC_CHECK_LIB(popt, poptGetContext,
5824                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5827 AC_MSG_CHECKING(whether to use included popt)
5828 if test x"$INCLUDED_POPT" = x"yes"; then
5829     AC_MSG_RESULT(yes)
5830     BUILD_POPT='$(POPT_OBJ)'
5831     POPTLIBS='$(POPT_OBJ)'
5832     FLAGS1="-I\$(srcdir)/popt"
5833 else
5834     AC_MSG_RESULT(no)
5835         BUILD_POPT=""
5836     POPTLIBS="-lpopt"
5838 AC_SUBST(BUILD_POPT)
5839 AC_SUBST(POPTLIBS)
5840 AC_SUBST(FLAGS1)
5842 #################################################
5843 # Check if user wants DNS service discovery support
5845 AC_ARG_ENABLE(dnssd,
5846 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5848 AC_SUBST(DNSSD_LIBS)
5849 if test x"$enable_dnssd" != x"no"; then
5850     have_dnssd_support=yes
5852     AC_CHECK_HEADERS(dns_sd.h)
5853     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5854         have_dnssd_support=no
5855     fi
5857     # On Darwin the DNSSD API is in libc, but on other platforms it's
5858     # probably in -ldns_sd
5859     AC_CHECK_FUNCS(DNSServiceRegister)
5860     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5861     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5862             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5863         have_dnssd_support=no
5864     fi
5866     if test x"$have_dnssd_support" = x"yes"; then
5867         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5868                 [Whether to enable DNS service discovery support])
5869     else
5870         if test x"$enable_dnssd" = x"yes"; then
5871             AC_MSG_ERROR(DNS service discovery support not available)
5872         fi
5873     fi
5877 #################################################
5878 # Check to see if we should use the included iniparser
5880 AC_ARG_WITH(included-iniparser,
5881 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5883   case "$withval" in
5884         yes)
5885                 INCLUDED_INIPARSER=yes
5886                 ;;
5887         no)
5888                 INCLUDED_INIPARSER=no
5889                 ;;
5890   esac ],
5892 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5893     AC_CHECK_LIB(iniparser, iniparser_load,
5894                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5897 AC_MSG_CHECKING(whether to use included iniparser)
5898 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5899     AC_MSG_RESULT(yes)
5900     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5901         INIPARSERLIBS=""
5902     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5903 else
5904     AC_MSG_RESULT(no)
5905         BUILD_INIPARSER=""
5906     INIPARSERLIBS="-liniparser"
5908 AC_SUBST(BUILD_INIPARSER)
5909 AC_SUBST(INIPARSERLIBS)
5910 AC_SUBST(FLAGS1)
5914 # Checks for the vfs_fileid module
5915 # Start
5916 AC_CHECK_FUNC(getmntent)
5918 AC_CHECK_HEADERS(sys/statfs.h)
5920 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
5921 AC_CACHE_VAL(vfsfileid_cv_statfs,[
5922              AC_TRY_RUN([
5923                 #include <sys/types.h>
5924                 #include <sys/statfs.h>
5925                 int main(void)
5926                 {
5927                         struct statfs fsd;
5928                         fsid_t fsid = fsd.f_fsid;
5929                         return statfs (".", &fsd);
5930                 }],
5931                 vfsfileid_cv_statfs=yes,
5932                 vfsfileid_cv_statfs=no,
5933                 vfsfileid_cv_statfs=cross)
5935 AC_MSG_RESULT($vfsfileid_cv_statfs)
5937 if test x"$ac_cv_func_getmntent" = x"yes" -a \
5938         x"$vfsfileid_cv_statfs" = x"yes"; then
5939         default_shared_modules="$default_shared_modules vfs_fileid"
5941 # End
5942 # Checks for the vfs_fileid module
5945 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5947         eval MODULE_DEFAULT_$i=STATIC
5948 done
5950 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5952         dnl Fall back to static if we cannot build shared libraries
5953         eval MODULE_DEFAULT_$i=STATIC
5955         if test $BLDSHARED = true; then
5956                 eval MODULE_DEFAULT_$i=SHARED
5957         fi
5958 done
5960 dnl Always build these modules static
5961 MODULE_rpc_spoolss=STATIC
5962 MODULE_rpc_srvsvc=STATIC
5963 MODULE_idmap_tdb=STATIC
5964 MODULE_idmap_passdb=STATIC
5965 MODULE_idmap_nss=STATIC
5967 MODULE_nss_info_template=STATIC
5969 AC_ARG_WITH(static-modules,
5970 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
5971 [ if test $withval; then
5972         for i in `echo $withval | sed -e 's/,/ /g'`
5973         do
5974                 eval MODULE_$i=STATIC
5975         done
5976 fi ])
5978 AC_ARG_WITH(shared-modules,
5979 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
5980 [ if test $withval; then
5981         for i in `echo $withval | sed -e 's/,/ /g'`
5982         do
5983                         eval MODULE_$i=SHARED
5984         done
5985 fi ])
5987 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
5988                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5989 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5990 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5991 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5994 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5995 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5996 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
5997 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
5998 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5999 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6000 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
6001 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6002 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6003 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6004 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6005 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6006 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6007 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6008 SMB_SUBSYSTEM(RPC,smbd/server.o)
6010 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6011 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6012 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6013 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6014 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6015 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6016 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6017 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6019 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6020 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6022 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6023 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6024 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6025 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6026 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6028 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6029 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6030 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6031 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6032 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6033 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6034 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6035 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6037 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6038 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6039 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6040 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6041 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6042 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6043 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6044 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6045 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6046 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6047 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6048 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6049 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6050 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6051 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6052 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6053 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6054 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6055 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6056 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6057 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6058 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6059 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6060 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6061 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6062 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6063 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6064 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6065 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6066 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6067 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6068 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6069 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6070 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6071 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6072 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6075 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6077 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6078 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6079 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6081 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6083 #################################################
6084 # do extra things if we are running insure
6086 if test "${ac_cv_prog_CC}" = "insure"; then
6087         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6090 #################################################
6091 # If run from the build farm, enable NASTY hacks
6092 #################################################
6093 AC_MSG_CHECKING(whether to enable build farm hacks)
6094 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6095         AC_MSG_RESULT(yes)
6096         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6097 else
6098         AC_MSG_RESULT(no)
6101 #################################################
6102 # check for bad librt/libpthread interactions
6104 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6105     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6106     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6107     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6109 SMB_IF_RTSIGNAL_BUG(
6110         [
6111             # Have RT_SIGNAL bug, need to check whether the problem will
6112             # affect anything we have configured.
6114             rt_do_error=no
6115             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6116                 if test x"$rt_signal_lease_ok" = x"no" ; then
6117                     rt_do_error=yes
6118                 fi
6119             fi
6121             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6122                 if test x"$rt_signal_notify_ok" = x"no" ; then
6123                     rt_do_error=yes
6124                 fi
6125             fi
6127             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6128                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6129                 if test x"$rt_signal_aio_ok" = x"no" ; then
6130                     rt_do_error=yes
6131                 fi
6132             fi
6134             if test x"$rt_do_error" = x"yes" ; then
6135                 SMB_IS_LIBPTHREAD_LINKED(
6136                     [
6137                         cat<<MSG
6139 *** On this platforms, linking Samba against pthreads causes problems
6140 *** with the oplock and change notification mechanisms. You may be
6141 *** using pthreads as a side-effect of using the --with-aio-support
6142 *** or --with-profiling-data options. Please remove these and try again.
6145                     ],
6146                     [
6147                         cat<<MSG
6149 *** On this platform, the oplock and change notification mechanisms do not
6150 *** appear to work. Please report this problem to samba-technical@samba.org
6151 *** and attach the config.log file from this directory.
6154                     ])
6155                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6156             fi
6157         ],
6158         [
6159             # no RT_SIGNAL bug, we are golden
6160             SMB_IS_LIBPTHREAD_LINKED(
6161                 [
6162                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6163                 ])
6165         ],
6166         [
6167             # cross compiling, I hope you know what you are doing
6168             true
6169         ])
6173 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6174 LIB_REMOVE_USR_LIB(LDFLAGS)
6175 LIB_REMOVE_USR_LIB(LIBS)
6176 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6178 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6179 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6180 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6182 #################################################
6183 # Display summary of libraries detected
6185 AC_MSG_RESULT([Using libraries:])
6186 AC_MSG_RESULT([    LIBS = $LIBS])
6187 if test x"$with_ads_support" != x"no"; then
6188     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6190 if test x"$with_ldap_support" != x"no"; then
6191     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6193 if test x"$with_dnsupdate_support" != x"no"; then
6194     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6196 if test x"$have_dnssd_support" != x"no"; then
6197     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6199 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6201 #################################################
6202 # final configure stuff
6204 AC_MSG_CHECKING([configure summary])
6205 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6206            AC_MSG_RESULT(yes),
6207            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6208            AC_MSG_WARN([cannot run when cross-compiling]))
6210 dnl Merge in developer cflags from now on
6211 AC_SUBST(DEVELOPER_CFLAGS)
6212 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6213     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6216 # Stuff the smbd-only libraries at the end of the smbd link
6217 # path (if we have them).
6218 SMBD_LIBS="$samba_dmapi_libs"
6219 AC_SUBST(SMBD_LIBS)
6221 AC_OUTPUT(Makefile library-versions
6222           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6223           lib/netapi/examples/Makefile
6224           pkgconfig/smbclient.pc
6225           pkgconfig/wbclient.pc
6226           pkgconfig/netapi.pc
6227           pkgconfig/smbsharemodes.pc
6228           )
6230 #################################################
6231 # Print very concise instructions on building/use
6232 if test "x$enable_dmalloc" = xyes
6233 then
6234         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6235         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])