s3/docs: Fix typo in man mount.cifs.
[Samba/gebeck_regimport.git] / source3 / configure.in
blobbd3d4af40b6290baf776730741a9ee8b84c13805
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(../lib/talloc/libtalloc.m4)
28 LIBTALLOC_OBJ0=""
29 for obj in ${TALLOC_OBJ}; do
30         LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(LIBTALLOC_OBJ0)
34 m4_include(../lib/tevent/libtevent.m4)
36 LIBTEVENT_OBJ0=""
37 for obj in ${TEVENT_OBJ}; do
38         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
39 done
40 AC_SUBST(LIBTEVENT_OBJ0)
41 LIBS="${LIBS} ${TEVENT_LIBS}"
43 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
44 # but currently this fails: things have to get merged from s4.
45 tdbdir="../lib/tdb"
46 AC_SUBST(tdbdir)
47 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
48 AC_SUBST(TDB_CFLAGS)
50 LIBTDB_OBJ0=""
51 for o in common/tdb.o common/dump.o common/transaction.o common/error.o \
52              common/traverse.o common/freelist.o common/freelistcheck.o \
53                  common/io.o common/lock.o common/open.o; 
54 do 
55         LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o"
56 done
58 AC_SUBST(LIBTDB_OBJ0)
59 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
60 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
61 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
62 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
63 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
64 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
65 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
66 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
68 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
70 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
71 if test "x${srcdir-.}" != "x."; then
72         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
75 dnl Unique-to-Samba variables we'll be playing with.
76 AC_SUBST(SAMBA_CPPFLAGS)
77 AC_SUBST(SHELL)
78 AC_SUBST(LDSHFLAGS)
79 AC_SUBST(SONAMEFLAG)
80 AC_SUBST(SHLD)
81 AC_SUBST(MODULE_EXPORTS)
82 AC_SUBST(DSO_EXPORTS)
83 AC_SUBST(HOST_OS)
84 AC_SUBST(PICFLAG)
85 AC_SUBST(PIE_CFLAGS)
86 AC_SUBST(PIE_LDFLAGS)
87 AC_SUBST(RELRO_LDFLAGS)
88 AC_SUBST(SHLIBEXT)
89 AC_SUBST(INSTALLLIBCMD_SH)
90 AC_SUBST(INSTALLLIBCMD_A)
91 AC_SUBST(UNINSTALLLIBCMD_SH)
92 AC_SUBST(UNINSTALLLIBCMD_A)
94 AC_SUBST(INSTALL_LIBWBCLIENT)
95 AC_SUBST(UNINSTALL_LIBWBCLIENT)
96 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
97 AC_SUBST(LIBWBCLIENT_SHARED)
98 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
99 AC_SUBST(LIBWBCLIENT_STATIC)
100 AC_SUBST(LIBWBCLIENT_SOVER)
101 AC_SUBST(LIBWBCLIENT)
102 AC_SUBST(WINBIND_LIBS)
104 AC_SUBST(LIBSAMBAUTIL_SHARED)
106 AC_SUBST(PRINT_LIBS)
107 AC_SUBST(AUTH_LIBS)
108 AC_SUBST(ACL_LIBS)
109 AC_SUBST(PASSDB_LIBS)
110 AC_SUBST(IDMAP_LIBS)
111 AC_SUBST(KRB5_LIBS)
112 AC_SUBST(UUID_LIBS)
113 AC_SUBST(LDAP_LIBS)
114 AC_SUBST(GPEXT_LIBS)
115 AC_SUBST(PAM_MODULES)
116 AC_SUBST(INSTALL_PAM_MODULES)
117 AC_SUBST(UNINSTALL_PAM_MODULES)
118 AC_SUBST(NSS_MODULES)
119 AC_SUBST(EXTRA_BIN_PROGS)
120 AC_SUBST(CIFSMOUNT_PROGS)
121 AC_SUBST(INSTALL_CIFSMOUNT)
122 AC_SUBST(UNINSTALL_CIFSMOUNT)
123 AC_SUBST(CIFSUPCALL_PROGS)
124 AC_SUBST(INSTALL_CIFSUPCALL)
125 AC_SUBST(UNINSTALL_CIFSUPCALL)
126 AC_SUBST(EXTRA_SBIN_PROGS)
127 AC_SUBST(EXTRA_ALL_TARGETS)
128 AC_SUBST(CONFIG_LIBS)
129 AC_SUBST(NSCD_LIBS)
131 # compile with optimization and without debugging by default, but
132 # allow people to set their own preference.
133 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
134 # if it has no value.  This prevent *very* large debug binaries from occurring
135 # by default.
136 if test "x$CFLAGS" = x; then
137   CFLAGS="-O"
139 if test "x$debug" = "xyes" ; then
140         CFLAGS="${CFLAGS} -g"
141 else
142         CFLAGS="${CFLAGS} -O"
145 m4_include(../lib/socket_wrapper/config.m4)
146 m4_include(../lib/nss_wrapper/config.m4)
148 m4_include(m4/swat.m4)
150 # Probe the gcc version for extra CFLAGS. We always stash these in
151 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
152 # Makefile edit, avoiding the need to re-run configure.
153 if test x"$ac_cv_prog_gcc" = x"yes" ; then
154         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
155         # Add -Wdeclaration-after-statement if compiler supports it
156         AC_CACHE_CHECK(
157           [that the C compiler understands -Wdeclaration-after-statement],
158           samba_cv_HAVE_Wdeclaration_after_statement, [
159           AC_TRY_RUN_STRICT([
160             int main(void)
161             {
162                 return 0;
163             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
164             samba_cv_HAVE_Wdeclaration_after_statement=yes,
165             samba_cv_HAVE_Wdeclaration_after_statement=no,
166             samba_cv_HAVE_Wdeclaration_after_statement=cross)
167        ])
169         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
170             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
171         fi
173         #-Werror-implicit-function-declaration
174         AC_CACHE_CHECK(
175           [that the C compiler understands -Werror-implicit-function-declaration],
176           samba_cv_HAVE_Werror_implicit_function_declaration, [
177           AC_TRY_RUN_STRICT([
178             int main(void)
179             {
180                 return 0;
181             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
182             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
183             samba_cv_HAVE_Werror_implicit_function_declaration=no,
184             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
185        ])
186        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
187             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
188        fi
190         # krb5developer is like developer, except we don't get
191         # -Wstrict-prototypes.
192        if test x"$krb5_developer" != x"$yes" ; then
193             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
194        fi
196        if test x"$picky_developer" = x"yes"; then
197             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
198        fi
201 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
203 if test "x$enable_dmalloc" = xyes
204 then
205         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
206         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
207                   [Define to check invariants around some common functions])
208         LIBS="$LIBS -ldmalloc"  
211 #################################################
212 # check for a shared memory profiling support
213 AC_MSG_CHECKING(whether to use profiling)
214 AC_ARG_WITH(profiling-data,
215 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
216 [ case "$withval" in
217   yes)
218     AC_MSG_RESULT(yes)
219     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
220     samba_cv_WITH_PROFILE=yes
221     ;;
222   *)
223     AC_MSG_RESULT(no)
224     samba_cv_WITH_PROFILE=no
225     ;;
226   esac ],
227   AC_MSG_RESULT(no)
230 dnl Checks for programs.
231 merged_build_possible=yes
233 AC_PROG_INSTALL
234 AC_PROG_AWK
235 # Check for GNU make
236 m4_include(../m4/check_make.m4)
237 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
239 # Check for perl
240 m4_include(../m4/check_perl.m4)
241 AC_SAMBA_PERL([true], [merged_build_possible=no])
243 AC_CHECK_TOOL(AR, ar)
245 dnl Check if we use GNU ld
246 LD=ld
247 AC_PROG_LD_GNU
249 dnl Certain versions of GNU ld the default is not to have the
250 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
251 dnl warnings when building modules.
252 if test "$ac_cv_prog_gnu_ld" = "yes"; then
253         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
254         AC_MSG_CHECKING(GNU ld release date)
255         changequote(,)dnl
256         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'`
257         changequote([,])dnl
258         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
259         if test -n "$ac_cv_gnu_ld_date"; then
260         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
261                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
262         fi
263         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
264                 ac_cv_gnu_ld_version_script=yes
265         fi
266         else
267            AC_MSG_CHECKING(GNU ld release version)
268            changequote(,)dnl
269            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
270            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
271            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
272            changequote([,])dnl
273            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
274            AC_MSG_CHECKING(GNU ld release version major)
275            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
276            AC_MSG_CHECKING(GNU ld release version minor)
277            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
278            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
279              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
280            fi
281            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
282              ac_cv_gnu_ld_version_script=yes
283            fi
284         fi
287 dnl look for executable suffix
288 AC_EXEEXT
290 dnl Check if C compiler understands -c and -o at the same time
291 AC_PROG_CC_C_O
292 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
293       BROKEN_CC=
294 else
295       BROKEN_CC=#
297 AC_SUBST(BROKEN_CC)
299 dnl Check if the C compiler understands -Werror
300 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
301  AC_TRY_RUN_STRICT([
302   int main(void)
303   {
304         return 0;
305   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
306   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
307 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
308    Werror_FLAGS="-Werror"
309 else
310 dnl Check if the C compiler understands -w2
311 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
312  AC_TRY_RUN_STRICT([
313   int main(void)
314   {
315         return 0;
316   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
317   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
318 if test x"$samba_cv_HAVE_w2" = x"yes"; then
319    Werror_FLAGS="-w2"
320 else
321 dnl Check if the C compiler understands -errwarn
322 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
323   AC_TRY_RUN_STRICT([
324    int main(void)
325    {
326         return 0;
327    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
328    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
329 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
330    Werror_FLAGS="-errwarn=%all"
335 ############################################
336 # check if the compiler can handle negative enum values
337 # and don't truncate the values to INT_MAX
338 # a runtime test is needed here
339 AC_SUBST(PIDL_ARGS)
340 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
341     AC_TRY_RUN(
343         #include <stdio.h>
344         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
345         int main(void) {
346                 enum negative_values v1 = NEGATIVE_VALUE;
347                 unsigned v2 = NEGATIVE_VALUE;
349                 if (v1 != 0xFFFFFFFF) {
350                         printf("%u != 0xFFFFFFFF\n", v1);
351                         return 1;
352                 }
353                 if (v2 != 0xFFFFFFFF) {
354                         printf("%u != 0xFFFFFFFF\n", v2);
355                         return 1;
356                 }
358                 return 0;
359         }
361         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
362 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
363         AC_MSG_WARN([using --uint-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_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss2 rpc_eventlog auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin auth_netlogond 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 vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer"
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 perfcount_test"
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}"
670 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
673 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
674 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
675 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
676 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
677 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
678 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
679 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
680 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
681 AC_CHECK_HEADERS(sys/sysmacros.h)
682 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
683 AC_CHECK_HEADERS(langinfo.h locale.h)
684 AC_CHECK_HEADERS(xfs/libxfs.h)
685 AC_CHECK_HEADERS(netgroup.h)
687 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
688 #if HAVE_RPC_RPC_H
689 #include <rpc/rpc.h>
690 #endif
693 ## These fail to compile on IRIX so just check for their presence
694 AC_CHECK_HEADERS(sys/mode.h,,,)
696 # Look for Darwin headers
697 old_CPPFLAGS="$CPPFLAGS"
698 CPPFLAGS="-Iinclude $CPPFLAGS"
699 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
700 CPPFLAGS="$old_CPPFLAGS"
702 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
703 # subdirectory of headers.
704 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
707 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
708 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
710 case "$host_os" in
711     *hpux*)
712                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
713                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
714                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
715                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
716                 fi
717         ;;
718 esac
719 AC_CHECK_HEADERS(shadow.h)
720 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
721 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
723 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
724 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
726 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
728 # For experimental utmp support (lastlog on some BSD-like systems)
729 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
731 AC_CHECK_SIZEOF(int,cross)
732 AC_CHECK_SIZEOF(long,cross)
733 AC_CHECK_SIZEOF(long long,cross)
734 AC_CHECK_SIZEOF(short,cross)
736 AC_C_CONST
737 AC_C_INLINE
738 AC_C_BIGENDIAN
739 AC_C_CHAR_UNSIGNED
741 AC_TYPE_SIGNAL
742 AC_TYPE_UID_T
743 AC_TYPE_MODE_T
744 AC_TYPE_OFF_T
745 AC_TYPE_SIZE_T
746 AC_TYPE_PID_T
747 AC_STRUCT_ST_RDEV
748 AC_DIRENT_D_OFF
749 AC_CHECK_TYPE(ssize_t, int)
750 AC_CHECK_TYPE(wchar_t, unsigned short)
752 ############################################
753 # for cups support we need libcups, and a handful of header files
755 AC_ARG_ENABLE(cups,
756 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
758 if test x$enable_cups != xno; then
759         AC_PATH_PROG(CUPS_CONFIG, cups-config)
761         if test "x$CUPS_CONFIG" != x; then
763                 ac_save_CFLAGS=$CFLAGS
764                 ac_save_LDFLAGS=$LDFLAGS
765                 ac_save_PRINT_LIBS=$PRINT_LIBS
766                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
767                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
768                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
769                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
770                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
771                         x"$ac_cv_header_cups_language_h" = xyes; then
772                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
773                         samba_cv_HAVE_CUPS=yes
774                 else
775                         AC_MSG_WARN([cups-config around but cups-devel not installed])
776                         CFLAGS=$ac_save_CFLAGS
777                         LDFLAGS=$ac_save_LDFLAGS
778                         PRINT_LIBS=$ac_save_PRINT_LIBS
779                 fi
781         elif test x"$enable_cups" = x"yes"; then
782                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
783         fi
786 AC_ARG_ENABLE(iprint,
787 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
789 if test x$enable_iprint != xno; then
790         if test x"$samba_cv_HAVE_CUPS" = xyes; then
791                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
792         elif test x"$enable_iprint" = x"yes"; then
793                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
794         fi
797 ############################################
798 # check if the compiler will optimize out function calls
799 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
800     AC_TRY_LINK([
801 #include <stdio.h>],
803                 if (0) {
804                    this_function_does_not_exist();
805                 } else {
806                   return 1;
807                 }
810         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
811 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
812    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
815 #############################################
816 # check for fd passing struct via msg_control
817 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
818     AC_TRY_COMPILE([
819 #include <sys/types.h>
820 #include <stdlib.h>
821 #include <stddef.h>
822 #include <sys/socket.h>
823 #include <sys/un.h>],
825         struct msghdr msg;
826         union {
827               struct cmsghdr cm;
828               char control[CMSG_SPACE(sizeof(int))];
829         } control_un;
830         msg.msg_control = control_un.control;
831         msg.msg_controllen = sizeof(control_un.control);
833         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
834 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
835    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
836              [If we can use msg_control for passing file descriptors])
839 #############################################
840 # check for fd passing struct via msg_acctrights
841 AC_CACHE_CHECK([for fd passing via msg_acctrights],
842                 samba_cv_msghdr_msg_acctrights, [
843     AC_TRY_COMPILE([
844 #include <sys/types.h>
845 #include <stdlib.h>
846 #include <stddef.h>
847 #include <sys/socket.h>
848 #include <sys/un.h>],
850         struct msghdr msg;
851         int fd;
852         msg.msg_acctrights = (caddr_t) &fd;
853         msg.msg_acctrightslen = sizeof(fd);
855         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
856 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
857    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
858              [If we can use msg_acctrights for passing file descriptors])
861 AC_CHECK_FUNCS(dirfd)
862 if test x"$ac_cv_func_dirfd" = x"yes"; then
863         default_shared_modules="$default_shared_modules vfs_syncops"
866 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
867     AC_TRY_COMPILE([
868 #include <sys/types.h>
869 #if STDC_HEADERS
870 #include <stdlib.h>
871 #include <stddef.h>
872 #endif
873 #include <signal.h>],[struct sigevent s;],
874         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
875 if test x"$samba_cv_struct_sigevent" = x"yes"; then
876    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
877    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
878         [#include <signal.h>])
881 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
882     AC_TRY_COMPILE([
883 #include <sys/types.h>
884 #if STDC_HEADERS
885 #include <stdlib.h>
886 #include <stddef.h>
887 #endif
888 #if TIME_WITH_SYS_TIME
889 # include <sys/time.h>
890 # include <time.h>
891 #else
892 # if HAVE_SYS_TIME_H
893 #  include <sys/time.h>
894 # else
895 #  include <time.h>
896 # endif
897 #endif
898 ],[struct timespec ts;],
899         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
900 if test x"$samba_cv_struct_timespec" = x"yes"; then
901    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
904 # and glibc has setresuid under linux but the function does
905 # nothing until kernel 2.1.44! very dumb.
906 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
907     AC_TRY_RUN([#include <errno.h>
908 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
909         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
910 if test x"$samba_cv_have_setresuid" = x"yes"; then
911     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
914 # Do the same check for setresguid...
916 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
917     AC_TRY_RUN([#include <unistd.h>
918 #include <errno.h>
919 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
920         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
921 if test x"$samba_cv_have_setresgid" = x"yes"; then
922     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
925 AC_FUNC_MEMCMP
927 ###############################################
928 # Readline included by default unless explicitly asked not to
929 test "${with_readline+set}" != "set" && with_readline=yes
931 # test for where we get readline() from
932 AC_MSG_CHECKING(whether to use readline)
933 AC_ARG_WITH(readline,
934 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
935 [  case "$with_readline" in
936   yes)
937     AC_MSG_RESULT(yes)
939     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
940     AC_CHECK_HEADERS(readline/history.h)
942     AC_CHECK_HEADERS(readline.h readline/readline.h,[
943       for termlib in ncurses curses termcap terminfo termlib tinfo; do
944        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
945       done
946       AC_CHECK_LIB(readline, rl_callback_handler_install,
947        [TERMLIBS="-lreadline $TERMLIBS"
948        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
949        break], [TERMLIBS=], $TERMLIBS)])
950     ;;
951   no)
952     AC_MSG_RESULT(no)
953     ;;
954   *)
955     AC_MSG_RESULT(yes)
957     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
958     # alternate readline path
959     _ldflags=${LDFLAGS}
960     _cppflags=${CPPFLAGS}
962     # Add additional search path
963     LDFLAGS="-L$with_readline/lib $LDFLAGS"
964     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
966     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
967     AC_CHECK_HEADERS(readline/history.h)
969     AC_CHECK_HEADERS(readline.h readline/readline.h,[
970       for termlib in ncurses curses termcap terminfo termlib; do
971        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
972       done
973       AC_CHECK_LIB(readline, rl_callback_handler_install,
974        [TERMLDFLAGS="-L$with_readline/lib"
975        TERMCPPFLAGS="-I$with_readline/include"
976        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
977        TERMLIBS="-lreadline $TERMLIBS"
978        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
979        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
981     LDFLAGS=$_ldflags
982     ;;
983   esac],
984   AC_MSG_RESULT(no)
986 AC_SUBST(TERMLIBS)
987 AC_SUBST(TERMLDFLAGS)
989 # The readline API changed slightly from readline3 to readline4, so
990 # code will generate warnings on one of them unless we have a few
991 # special cases.
992 AC_CHECK_LIB(readline, rl_completion_matches,
993              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
994                         [Do we have rl_completion_matches?])],
995              [],
996              [$TERMLIBS])
998 # not all readline libs have rl_event_hook or history_list
999 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1000 AC_CHECK_LIB(readline, history_list,
1001              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1002              [],
1003              [$TERMLIBS])
1005 ###############################################
1006 # test for where we get yp_get_default_domain() from
1007 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1008 AC_CHECK_FUNCS(yp_get_default_domain)
1010 # Check if we have execl, if not we need to compile smbrun.
1011 AC_CHECK_FUNCS(execl)
1012 if test x"$ac_cv_func_execl" = x"no"; then
1013     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1016 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1017 AC_CHECK_FUNCS(strtol)
1018 AC_CHECK_FUNCS(strchr chflags)
1019 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1020 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1021 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1022 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1023 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1024 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1025 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1026 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1027 AC_CHECK_FUNCS(getpwent_r)
1028 AC_CHECK_FUNCS(getdents64)
1029 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1030 AC_CHECK_FUNCS(syslog vsyslog timegm)
1031 AC_CHECK_FUNCS(setlocale nl_langinfo)
1032 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1033 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1034 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1035 AC_CHECK_HEADERS(sys/mman.h)
1036 # setbuffer, shmget, shm_open are needed for smbtorture
1037 AC_CHECK_FUNCS(shmget shm_open)
1038 AC_CHECK_FUNCS(gettext dgettext)
1040 # Find a method of generating a stack trace
1041 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1042 # libexecinfo provides backtrace_symbols on FreeBSD
1043 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1044 AC_CHECK_FUNCS(backtrace_symbols)
1045 AC_CHECK_LIB(exc, trace_back_stack)
1047 # check for sysctlbyname for BSD systems
1048 AC_CHECK_FUNCS(sysctlbyname)
1050 printf "%s" "checking for GPFS GPL libs... "
1051 save_LIBS="$LIBS"
1052 LIBS="$LIBS -lgpfs_gpl"
1053 AC_TRY_LINK([#include <gpfs_gpl.h>],
1054           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1055           samba_cv_HAVE_GPFS=yes,
1056           samba_cv_HAVE_GPFS=no)
1057 echo $samba_cv_HAVE_GPFS
1058 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1059     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1060     default_shared_modules="$default_shared_modules vfs_gpfs"
1062 LIBS="$save_LIBS"
1064 printf "%s" "checking for GPFS libs (with 3.2.1 PTF8 available as GPL)... "
1065 save_LIBS="$LIBS"
1066 LIBS="$LIBS -lgpfs"
1067 AC_TRY_LINK([#include <gpfs.h>],
1068           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1069           samba_cv_HAVE_GPFS=yes,
1070           samba_cv_HAVE_GPFS=no)
1071 echo $samba_cv_HAVE_GPFS
1072 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1073     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1074     default_shared_modules="$default_shared_modules vfs_gpfs"
1076 LIBS="$save_LIBS"
1078 #############################################
1079 # check if building on Isilon OneFS
1080 printf "%s" "checking for Isilon OneFS... "
1081 save_LIBS="$LIBS"
1082 LIBS="$LIBS -lisi_version"
1083 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1084           [get_isilon_copyright()],
1085           samba_cv_HAVE_ONEFS=yes,
1086           samba_cv_HAVE_ONEFS=no)
1087 echo $samba_cv_HAVE_ONEFS
1088 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1089     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1090     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1091     default_static_modules="$default_static_modules auth_onefs_wb pdb_onefs_sam"
1092     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1093     # Need to also add general libs for oplocks support
1094     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1096 AC_SUBST(ONEFS_LIBS)
1097 LIBS="$save_LIBS"
1099 # Note that all the libunwind symbols in the API are defined to internal
1100 # platform-specific version, so we must include libunwind.h before checking
1101 # any of them.
1102 AC_MSG_CHECKING([for libunwind])
1103 save_LIBS=$LIBS
1105 UNWIND_ARCH="unknown"
1106 if test x"$UNAME_I" != x"unknown"; then
1107         UNWIND_ARCH="$UNAME_I"
1108 elif test x"$UNAME_M" != x"unknown"; then
1109         UNWIND_ARCH="$UNAME_M"
1110 elif test x"$UNAME_P" != x"unknown"; then
1111         UNWIND_ARCH="$UNAME_P"
1114 case "$UNWIND_ARCH" in
1115         unknown)
1116                 # This probably won't link without
1117                 # the platform-specific libunwind.
1118                 LIBS="$LIBS -lunwind"
1119                 ;;
1120         i386|i586|i686)
1121                 # Add the platform-specific libunwind module.
1122                 LIBS="$LIBS -lunwind -lunwind-x86"
1123                 ;;
1124         *)
1125                 # Add the platform-specific libunwind module.
1126                 # based on uname -i, uname -m or uname -p
1127                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1128                 ;;
1129 esac
1131 AC_TRY_LINK(
1132     [
1133 #ifdef HAVE_LIBUNWIND_H
1134 #include <libunwind.h>
1135 #endif
1136     ],
1137     [
1138         unw_context_t ctx; unw_cursor_t cur;
1139         char buf[256]; unw_word_t off;
1140         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1141         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1142     ],
1143     [
1144         AC_MSG_RESULT(yes)
1145         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1147         # If we have libunwind, test whether we also have libunwind-ptrace
1148         # which would let us unwind arbitrary processes.
1149         save_LIBS=$LIBS
1150         AC_CHECK_HEADERS(libunwind-ptrace.h)
1151         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1152             [
1153                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1154                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1155                     [Whether libunwind-ptrace.a is available.])
1156             ],
1157             [ LIBUNWIND_PTRACE="" ])
1159         LIBS=$save_LIBS
1160     ],
1161     [
1162         AC_MSG_RESULT(no)
1163         LIBS=$save_LIBS
1164     ])
1166 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1167 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1168     AC_CHECK_HEADERS(sys/ptrace.h)
1169     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1170     AC_TRY_LINK(
1171             [
1172 #if HAVE_SYS_TYPES_H
1173 #include <sys/types.h>
1174 #endif
1175 #if HAVE_SYS_PTRACE_H
1176 #include <sys/ptrace.h>
1177 #endif
1178             ],
1179             [
1180                 int main(int argc, const char ** argv)
1181                 {
1182                         pid_t me = (pid_t)-1;
1183                         ptrace(PTRACE_ATTACH, me, 0, 0);
1184                         ptrace(PTRACE_DETACH, me, 0, 0);
1185                         return 0;
1186                 }
1187             ],
1188             [
1189                 AC_MSG_RESULT(yes)
1190                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1191                     [Whether the Linux ptrace(2) interface is available.])
1192             ],
1193             [
1194                 AC_MSG_RESULT(no)
1195                 LIBUNWIND_PTRACE=""
1196             ])
1199 AC_SUBST(LIBUNWIND_PTRACE)
1201 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1202 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1203 AC_CHECK_FUNCS(__getcwd _getcwd)
1204 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1205 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1206 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1207 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1208 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1209 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1210 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1211 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1212 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1213 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1214 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1215 AC_CHECK_FUNCS(prctl)
1217 AC_TRY_COMPILE([
1218 #ifdef HAVE_SYS_PRCTL_H
1219 #include <sys/prctl.h>
1220 #endif
1222 [int i; i = prtcl(0); ],
1223 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1228 case "$host_os" in
1229     *linux*)
1230        # glibc <= 2.3.2 has a broken getgrouplist
1231        AC_TRY_RUN([
1232 #include <unistd.h>
1233 #include <sys/utsname.h>
1234 main() {
1235        /* glibc up to 2.3 has a broken getgrouplist */
1236 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1237        int libc_major = __GLIBC__;
1238        int libc_minor = __GLIBC_MINOR__;
1240        if (libc_major < 2)
1241               exit(1);
1242        if ((libc_major == 2) && (libc_minor <= 3))
1243               exit(1);
1244 #endif
1245        exit(0);
1247 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1248        if test x"$linux_getgrouplist_ok" = x"yes"; then
1249           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1250        fi
1251        ;;
1252     *)
1253        AC_CHECK_FUNCS(getgrouplist)
1254        ;;
1255 esac
1258 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1261 if test x$ac_cv_func_stat64 = xno ; then
1262   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1263   AC_TRY_LINK([
1264 #if defined(HAVE_UNISTD_H)
1265 #include <unistd.h>
1266 #endif
1267 #include <sys/stat.h>
1268 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1269   AC_MSG_RESULT([$ac_cv_func_stat64])
1270   if test x$ac_cv_func_stat64 = xyes ; then
1271     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1272   fi
1275 if test x$ac_cv_func_lstat64 = xno ; then
1276   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1277   AC_TRY_LINK([
1278 #if defined(HAVE_UNISTD_H)
1279 #include <unistd.h>
1280 #endif
1281 #include <sys/stat.h>
1282 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1283   AC_MSG_RESULT([$ac_cv_func_lstat64])
1284   if test x$ac_cv_func_lstat64 = xyes ; then
1285     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1286   fi
1289 if test x$ac_cv_func_fstat64 = xno ; then
1290   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1291   AC_TRY_LINK([
1292 #if defined(HAVE_UNISTD_H)
1293 #include <unistd.h>
1294 #endif
1295 #include <sys/stat.h>
1296 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1297   AC_MSG_RESULT([$ac_cv_func_fstat64])
1298   if test x$ac_cv_func_fstat64 = xyes ; then
1299     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1300   fi
1303 #################################################
1304 # Check whether struct stat has timestamps with sub-second resolution.
1307 samba_cv_stat_hires=no
1308 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1309         [samba_cv_stat_hires=yes])
1310 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1311         [samba_cv_stat_hires=yes])
1312 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1313         [samba_cv_stat_hires=yes])
1314 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1315         [samba_cv_stat_hires=yes])
1316 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1317         [samba_cv_stat_hires=yes])
1319 if test x"$samba_cv_stat_hires" = x"yes" ; then
1320     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1321             [whether struct stat has sub-second timestamps])
1324 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1325 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1326 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1329 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1330     [
1331         AC_TRY_COMPILE(
1332             [#include <sys/stat.h>],
1333             [
1334                 int a = UF_DOS_ARCHIVE;
1335                 int h = UF_DOS_HIDDEN;
1336                 int r = UF_DOS_RO;
1337                 int s = UF_DOS_SYSTEM;
1338                 int i = UF_DOS_NOINDEX;
1339                 int f = UF_DOS_FLAGS;
1340             ],
1341             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1342     ])
1344 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1345     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1348 #####################################
1349 # needed for SRV lookups
1350 AC_CHECK_LIB(resolv, dn_expand)
1351 AC_CHECK_LIB(resolv, _dn_expand)
1352 AC_CHECK_LIB(resolv, __dn_expand)
1355 # Check for the functions putprpwnam, set_auth_parameters,
1356 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1357 # Needed for OSF1 and HPUX.
1360 AC_LIBTESTFUNC(security, putprpwnam)
1361 AC_LIBTESTFUNC(sec, putprpwnam)
1363 AC_LIBTESTFUNC(security, set_auth_parameters)
1364 AC_LIBTESTFUNC(sec, set_auth_parameters)
1366 # UnixWare 7.x has its getspnam in -lgen
1367 AC_LIBTESTFUNC(gen, getspnam)
1369 AC_LIBTESTFUNC(security, getspnam)
1370 AC_LIBTESTFUNC(sec, getspnam)
1372 AC_LIBTESTFUNC(security, bigcrypt)
1373 AC_LIBTESTFUNC(sec, bigcrypt)
1375 AC_LIBTESTFUNC(security, getprpwnam)
1376 AC_LIBTESTFUNC(sec, getprpwnam)
1378 AC_CHECK_FUNCS(strsignal)
1380 ############################################
1381 # Check if we have libattr
1382 case "$host_os" in
1383   *osf*)
1384         AC_SEARCH_LIBS(getproplist, [proplist])
1385         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1386         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1387         AC_CHECK_FUNCS(sizeof_proplist_entry)
1388   ;;
1389   *)
1390         AC_SEARCH_LIBS(getxattr, [attr])
1391         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1392         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1393         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1394         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1395         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1396         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1397         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1398   ;;
1399 esac
1401 ########################################################
1402 # Check if attropen() is present if this is Solaris
1403 case "$host_os" in
1404   *solaris*)
1405         AC_CHECK_FUNCS(attropen)
1406   ;;
1407 esac
1409 ########################################################
1410 # Do xattr functions take additional options like on Darwin?
1411 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1412         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1413                 old_LIBS=$LIBS
1414                 LIBS="$LIBS $ACL_LIBS"
1415                 AC_TRY_COMPILE([
1416                         #include <sys/types.h>
1417                         #if HAVE_ATTR_XATTR_H
1418                         #include <attr/xattr.h>
1419                         #elif HAVE_SYS_XATTR_H
1420                         #include <sys/xattr.h>
1421                         #endif
1422                 ],[
1423                         getxattr(0, 0, 0, 0, 0, 0);
1424                 ],
1425                 [smb_attr_cv_xattr_add_opt=yes],
1426                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1427         ])
1428         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1429                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1430         fi
1433 # Check if we have extattr
1434 case "$host_os" in
1435   *freebsd4* | *dragonfly* )
1436     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1437     ;;
1438   *)
1439     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1440     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1441     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1442     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1443     ;;
1444 esac
1446 AC_DISABLE_STATIC
1447 AC_ENABLE_SHARED
1449 # Set defaults
1450 PIE_CFLAGS=""
1451 PIE_LDFLAGS=""
1452 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1454 if test "x$enable_pie" != xno
1455 then
1456         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1457         [
1458                 cat > conftest.c <<EOF
1459 int foo;
1460 main () { return 0;}
1462                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1463                 then
1464                         samba_cv_fpie=yes
1465                 else
1466                         samba_cv_fpie=no
1467                 fi
1468                 rm -f conftest*
1469         ])
1470         if test x"${samba_cv_fpie}" = x"yes"
1471         then
1472                 PIE_CFLAGS="-fPIE"
1473                 PIE_LDFLAGS="-pie"
1474         fi
1477 # Set defaults
1478 RELRO_LDFLAGS=""
1479 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1481 if test "x$enable_relro" != xno
1482 then
1483         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1484         [
1485                 cat > conftest.c <<EOF
1486 int foo;
1487 main () { return 0;}
1489                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1490                 then
1491                         samba_cv_relro=yes
1492                 else
1493                         samba_cv_relro=no
1494                 fi
1495                 rm -f conftest*
1496         ])
1497         if test x"${samba_cv_relro}" = x"yes"
1498         then
1499                 RELRO_LDFLAGS="-Wl,-z,relro"
1500         fi
1503 # Set defaults
1504 SYMSEXT="syms"
1505 AC_SUBST(SYMSEXT)
1507 # Assume non-shared by default and override below
1508 BLDSHARED="false"
1510 # these are the defaults, good for lots of systems
1511 HOST_OS="$host_os"
1512 LDSHFLAGS="-shared"
1513 MODULE_EXPORTS=""
1514 SONAMEFLAG="#"
1515 SHLD="\${CC} \${CFLAGS}"
1516 PICFLAG="${PIE_CFLAGS}"
1517 SHLIBEXT="so"
1518 DSO_EXPORTS=""
1520 # this bit needs to be modified for each OS that supports share libs
1521 # You need to specify how to create a shared library and
1522   # how to compile C code to produce PIC object files
1524   AC_MSG_CHECKING([ability to build shared libraries])
1526   # and these are for particular systems
1527   case "$host_os" in
1528                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1529                         BLDSHARED="true"
1530                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1531                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1532                         else
1533                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1534                         fi
1535                         DYNEXP="-Wl,--export-dynamic"
1536                         PICFLAG="-fPIC"
1537                         SONAMEFLAG="-Wl,-soname="
1538                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1539                         ;;
1540                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1541                         BLDSHARED="true"
1542                         LDSHFLAGS="-G"
1543                         SONAMEFLAG="-h "
1544                         if test "${GCC}" = "yes"; then
1545                                 PICFLAG="-fPIC"
1546                                 SONAMEFLAG="-Wl,-soname="
1547                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1548                                         DYNEXP="-Wl,-E"
1549                                 fi
1550                         else
1551                                 PICFLAG="-KPIC"
1552                                 ## ${CFLAGS} added for building 64-bit shared
1553                                 ## libs using Sun's Compiler
1554                                 LDSHFLAGS="-G \${CFLAGS}"
1555                         fi
1556                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1557                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1558                         ;;
1559                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1560                         BLDSHARED="true"
1561                         LDSHFLAGS="-G"
1562                         SONAMEFLAG="-Wl,-h,"
1563                         PICFLAG="-KPIC"   # Is this correct for SunOS
1564                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1565                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1566                         ;;
1567                 *netbsd* | *freebsd* | *dragonfly* )
1568                         BLDSHARED="true"
1569                         LDSHFLAGS="-shared"
1570                         DYNEXP="-Wl,--export-dynamic"
1571                         SONAMEFLAG="-Wl,-soname,"
1572                         PICFLAG="-fPIC -DPIC"
1573                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1574                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1575                         ;;
1576                 *openbsd*)  BLDSHARED="true"
1577                         LDSHFLAGS="-shared"
1578                         DYNEXP="-Wl,-Bdynamic"
1579                         SONAMEFLAG="-Wl,-soname,"
1580                         PICFLAG="-fPIC"
1581                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1582                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1583                         ;;
1584                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1585                         case "$host_os" in
1586                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1587                         ;;
1588                         esac
1589                         BLDSHARED="true"
1590                         LDSHFLAGS="-set_version sgi1.0 -shared"
1591                         SONAMEFLAG="-soname "
1592                         SHLD="\${LD}"
1593                         if test "${GCC}" = "yes"; then
1594                                 PICFLAG="-fPIC"
1595                         else
1596                                 PICFLAG="-KPIC"
1597                         fi
1598                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1599                         ;;
1600                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1601                         BLDSHARED="true"
1602                         # use expfull to export underscored symbols
1603                         # add rtl to remove /lib/crt0.o warning
1604                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
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 sys/inotify.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;
2622 if test $seteuid = no; then
2623 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2624 AC_TRY_RUN([
2625 #define AUTOCONF_TEST 1
2626 #define USE_SETREUID 1
2627 #include "confdefs.h"
2628 #include "${srcdir-.}/lib/util_sec.c"],
2629            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2630 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2631     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2635 # we check for setresuid second as it conflicts with AIO on Linux. 
2636 # see http://samba.org/~tridge/junkcode/aio_uid.c
2637 if test $seteuid = no; then
2638 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2639 AC_TRY_RUN([
2640 #define AUTOCONF_TEST 1
2641 #define USE_SETRESUID 1
2642 #include "confdefs.h"
2643 #include "${srcdir-.}/lib/util_sec.c"],
2644            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2645 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2646     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2650 if test $seteuid = no; then
2651 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2652 AC_TRY_RUN([
2653 #define AUTOCONF_TEST 1
2654 #define USE_SETEUID 1
2655 #include "confdefs.h"
2656 #include "${srcdir-.}/lib/util_sec.c"],
2657            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2658 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2659     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2663 if test $seteuid = no; then
2664 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2665 AC_TRY_RUN([
2666 #define AUTOCONF_TEST 1
2667 #define USE_SETUIDX 1
2668 #include "confdefs.h"
2669 #include "${srcdir-.}/lib/util_sec.c"],
2670            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2671 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2672     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2676 AC_CACHE_CHECK([for the Darwin initgroups system call],
2677         samba_cv_DARWIN_INITGROUPS,
2678         AC_TRY_LINK([
2679 #include <sys/syscall.h>
2680 #include <unistd.h>
2681         ],
2682         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2683         samba_cv_DARWIN_INITGROUPS=yes,
2684         samba_cv_DARWIN_INITGROUPS=no)
2687 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2688     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2689         [Whether to use the Darwin-specific initgroups system call])
2692 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2693 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2694            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2695 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2696     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2699 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2700 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2701            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2702 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2703     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2705 else
2708 dnl Don't check for 64 bit fcntl locking if we know that the
2709 dnl glibc2.1 broken check has succeeded.
2712   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2713   AC_TRY_RUN([
2714 #if defined(HAVE_UNISTD_H)
2715 #include <unistd.h>
2716 #endif
2717 #include <stdio.h>
2718 #include <stdlib.h>
2720 #ifdef HAVE_FCNTL_H
2721 #include <fcntl.h>
2722 #endif
2724 #ifdef HAVE_SYS_FCNTL_H
2725 #include <sys/fcntl.h>
2726 #endif
2727 main() { struct flock64 fl64;
2728 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2729 exit(0);
2730 #else
2731 exit(1);
2732 #endif
2734        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2736   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2737       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2738   fi
2741 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2742 AC_TRY_COMPILE([#include <sys/types.h>
2743 #include <sys/stat.h>
2744 #include <unistd.h>],
2745 [struct stat st;  st.st_blocks = 0;],
2746 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2747 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2748     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2751 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2752 AC_TRY_COMPILE([#include <sys/types.h>
2753 #include <sys/stat.h>
2754 #include <unistd.h>],
2755 [struct stat st;  st.st_blksize = 0;],
2756 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2757 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2758     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2761 AC_CACHE_CHECK([for st_flags in struct stat],
2762         samba_cv_HAVE_STAT_ST_FLAGS,
2763         [
2764             AC_TRY_COMPILE([#include <sys/types.h>
2765 #include <sys/stat.h>
2766 #include <unistd.h>],
2767             [struct stat st;  st.st_flags = 0;],
2768             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2769             samba_cv_HAVE_STAT_ST_FLAGS=no,
2770             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2771         ])
2773 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2774     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2775                 [Whether the stat struct has a st_flags member])
2778 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2779 AC_TRY_COMPILE([
2780 #include <sys/types.h>
2781 #include <sys/acl.h>
2782 #if defined(HAVE_RPCSVC_NIS_H)
2783 #include <rpcsvc/nis.h>
2784 #endif],
2785 [int i;],
2786 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2787 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2788         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2791 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2792 AC_TRY_RUN([
2793 #include <stdio.h>
2794 #include <limits.h>
2795 #include <signal.h>
2797 void exit_on_core(int ignored) {
2798         exit(1);
2801 main() {
2802         char *newpath;
2803         signal(SIGSEGV, exit_on_core);
2804         newpath = realpath("/tmp", NULL);
2805         exit((newpath != NULL) ? 0 : 1);
2808 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2809 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2810     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2813 #################################################
2814 # check for AFS clear-text auth support
2815 samba_cv_WITH_AFS=no
2816 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2817 AC_ARG_WITH(afs,
2818 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2819 [ case "$withval" in
2820   yes|auto)
2821     AC_MSG_RESULT($withval)
2822     samba_cv_WITH_AFS=$withval
2823     ;;
2824   *)
2825     AC_MSG_RESULT(no)
2826     ;;
2827   esac ],
2828   AC_MSG_RESULT(no)
2831 ####################################################
2832 # check for Linux-specific AFS fake-kaserver support
2833 samba_cv_WITH_FAKE_KASERVER=no
2834 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2835 AC_ARG_WITH(fake-kaserver,
2836 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2837 [ case "$withval" in
2838   yes|auto)
2839     AC_MSG_RESULT($withval)
2840     samba_cv_WITH_FAKE_KASERVER=$withval
2841     ;;
2842   *)
2843     AC_MSG_RESULT(no)
2844     ;;
2845   esac ],
2846   AC_MSG_RESULT(no)
2849 #################################################
2850 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2851 if test x"$samba_cv_WITH_AFS" != x"no" ||
2852    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2854     # see if this box has the afs-headers in /usr/include/afs
2855     AC_MSG_CHECKING(for /usr/include/afs)
2856     if test -d /usr/include/afs; then
2857           CFLAGS="$CFLAGS -I/usr/include/afs"
2858           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2859           AC_MSG_RESULT(yes)
2860     else
2861       AC_MSG_RESULT(no)
2862     fi
2864     # check for afs.h
2865     have_afs_headers=no
2866     AC_CHECK_HEADERS(afs.h afs/afs.h)
2867     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2868         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2869            test x"$samba_cv_WITH_AFS" = x"auto"; then
2870                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2871         else
2872                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2873         fi
2874     else
2875         have_afs_headers=yes
2876     fi
2879 FAKE_KASERVER_OBJ=""
2880 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2881     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2882     FAKE_KASERVER_OBJ="utils/net_afs.o"
2884 AC_SUBST(FAKE_KASERVER_OBJ)
2886 #################################################
2887 # check whether to compile AFS/NT ACL mapping module
2888 samba_cv_WITH_VFS_AFSACL=no
2889 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2890 AC_ARG_WITH(vfs-afsacl,
2891 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
2892 [ case "$withval" in
2893   yes|auto)
2894     AC_MSG_RESULT($withval)
2895     samba_cv_WITH_VFS_AFSACL=yes
2896     ;;
2897   *)
2898     AC_MSG_RESULT(no)
2899     ;;
2900   esac ],
2901   AC_MSG_RESULT(no)
2904 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2905    default_shared_modules="$default_shared_modules vfs_afsacl"
2907         
2908 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2909     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2912 #################################################
2913 # check for the DFS clear-text auth system
2914 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2915 AC_ARG_WITH(dfs,
2916 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
2917 [ case "$withval" in
2918   yes)
2919     AC_MSG_RESULT(yes)
2920     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2921     ;;
2922   *)
2923     AC_MSG_RESULT(no)
2924     ;;
2925   esac ],
2926   AC_MSG_RESULT(no)
2929 ########################################################
2930 # Compile with LDAP support?
2932 with_ldap_support=auto
2933 AC_MSG_CHECKING([for LDAP support])
2935 AC_ARG_WITH(ldap,
2936 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
2937 [ case "$withval" in
2938     yes|no)
2939         with_ldap_support=$withval
2940         ;;
2941   esac ])
2943 AC_MSG_RESULT($with_ldap_support)
2945 SMBLDAP=""
2946 AC_SUBST(SMBLDAP)
2947 SMBLDAPUTIL=""
2948 AC_SUBST(SMBLDAPUTIL)
2949 LDBLDAP=""
2950 AC_SUBST(LDBLDAP)
2952 if test x"$with_ldap_support" != x"no"; then
2954   ##################################################################
2955   # first test for ldap.h and lber.h
2956   # (ldap.h is required for this test)
2957   AC_CHECK_HEADERS(ldap.h lber.h)
2959   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2960         if test x"$with_ldap_support" = x"yes"; then
2961          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2962         else
2963          AC_MSG_WARN(ldap.h is needed for LDAP support)
2964         fi
2965         
2966         with_ldap_support=no
2967   fi
2969   ##################################################################
2970   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
2971   # unsigned int in include/includes.h
2972   case $host_os in
2973         *hpux*)
2974          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2975          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
2976         with_ldap_support=yes
2977         ;;
2978         *)
2979         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
2980         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
2981                 if test x"$with_ldap_support" = x"yes"; then
2982                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
2983                 else
2984                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
2985                 fi
2986                 with_ldap_support=no
2987         fi
2988         ;;
2989   esac
2992 if test x"$with_ldap_support" != x"no"; then
2993   ac_save_LIBS=$LIBS
2995   ##################################################################
2996   # we might need the lber lib on some systems. To avoid link errors
2997   # this test must be before the libldap test
2998   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3000   ########################################################
3001   # If ber_sockbuf_add_io() is available we can add
3002   # SASL wrapping hooks
3003   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3005   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3006                  AC_TRY_COMPILE([#include <ldap.h>],
3007                                 [int val = LDAP_OPT_SOCKBUF;],
3008                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3009                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3011   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3012           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3013         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3014   fi
3016   #######################################################
3017   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3018   # ldap logging and print it out in the samba logs
3019   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3020                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3021                  [AC_TRY_COMPILE([#include <lber.h>],
3022                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3023                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3024                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3026   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3027         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3028                   [Support for LDAP/LBER logging interception])
3029   fi
3031   ########################################################
3032   # now see if we can find the ldap libs in standard paths
3033   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3035   ########################################################
3036   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3037   # Check found in pam_ldap 145.
3038   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3040   LIBS="$LIBS $LDAP_LIBS"
3041   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3042     AC_TRY_COMPILE([
3043         #include <lber.h>
3044         #include <ldap.h>],
3045         [ldap_set_rebind_proc(0, 0, 0);],
3046         [smb_ldap_cv_ldap_set_rebind_proc=3],
3047         [smb_ldap_cv_ldap_set_rebind_proc=2]
3048     )
3049   ])
3051   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3053   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3055   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3056     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3057     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3058     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3059     default_shared_modules="$default_shared_modules";
3060     SMBLDAP="lib/smbldap.o"
3061     SMBLDAPUTIL="lib/smbldap_util.o"
3062     with_ldap_support=yes
3063     AC_MSG_CHECKING(whether LDAP support is used)
3064     AC_MSG_RESULT(yes)
3065   else
3066     if test x"$with_ldap_support" = x"yes"; then
3067         AC_MSG_ERROR(libldap is needed for LDAP support)
3068     else
3069         AC_MSG_WARN(libldap is needed for LDAP support)
3070     fi
3072     LDAP_LIBS=""
3073     with_ldap_support=no
3074   fi
3075   LIBS=$ac_save_LIBS
3079 #################################################
3080 # active directory support
3082 with_ads_support=auto
3083 AC_MSG_CHECKING([for Active Directory and krb5 support])
3085 AC_ARG_WITH(ads,
3086 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3087 [ case "$withval" in
3088     yes|no)
3089         with_ads_support="$withval"
3090         ;;
3091   esac ])
3093 AC_MSG_RESULT($with_ads_support)
3095 FOUND_KRB5=no
3096 KRB5_LIBS=""
3098 if test x"$with_ldap_support" != x"yes"; then
3100     if test x"$with_ads_support" = x"yes"; then
3101         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3102     elif test x"$with_ads_support" = x"auto"; then
3103         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3104         with_ads_support=no
3105     fi
3107 else
3109     # Check to see whether there is enough LDAP functionality to be able
3110     # to build AD support.
3112 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3113 case "$host_os" in
3114         *hpux*)
3115     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3117     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3118         if test x"$with_ads_support" = x"yes"; then
3119             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3120         elif test x"$with_ads_support" = x"auto"; then
3121             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3122             with_ads_support=no
3123         fi
3124     fi
3125     ;;
3126         *)
3127     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3129     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3130         if test x"$with_ads_support" = x"yes"; then
3131             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3132         elif test x"$with_ads_support" = x"auto"; then
3133             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3134             with_ads_support=no
3135         fi
3136     fi
3137     ;;
3138 esac
3141     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3143     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3144         if test x"$with_ads_support" = x"yes"; then
3145             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3146         elif test x"$with_ads_support" = x"auto"; then
3147             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3148             with_ads_support=no
3149         fi
3150     fi
3154 if test x"$with_ads_support" != x"no"; then
3156   # Do no harm to the values of CFLAGS and LIBS while testing for
3157   # Kerberos support.
3159   if test x$FOUND_KRB5 = x"no"; then
3160     #################################################
3161     # check for location of Kerberos 5 install
3162     AC_MSG_CHECKING(for kerberos 5 install path)
3163     AC_ARG_WITH(krb5,
3164     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3165     [ case "$withval" in
3166       no)
3167         AC_MSG_RESULT(no krb5-path given)
3168         ;;
3169       yes)
3170         AC_MSG_RESULT(/usr)
3171         FOUND_KRB5=yes
3172         ;;
3173       *)
3174         AC_MSG_RESULT($withval)
3175         KRB5_CFLAGS="-I$withval/include"
3176         KRB5_CPPFLAGS="-I$withval/include"
3177         KRB5_LDFLAGS="-L$withval/lib"
3178         FOUND_KRB5=yes
3179         if test -x "$withval/bin/krb5-config"; then
3180                 KRB5CONFIG=$withval/bin/krb5-config
3181         fi
3182         ;;
3183       esac ],
3184       AC_MSG_RESULT(no krb5-path given)
3185     )
3186   fi
3188   #################################################
3189   # check for krb5-config from recent MIT and Heimdal kerberos 5
3190   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3191   AC_MSG_CHECKING(for working krb5-config)
3192   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3193     ac_save_CFLAGS=$CFLAGS
3194     CFLAGS="";export CFLAGS
3195     ac_save_LDFLAGS=$LDFLAGS
3196     LDFLAGS="";export LDFLAGS
3197     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3198     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3199     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3200     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3201     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3202     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3203     FOUND_KRB5=yes
3204     AC_MSG_RESULT(yes)
3205   else
3206     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3207   fi
3209   if test x$FOUND_KRB5 = x"no"; then
3210     #################################################
3211     # see if this box has the SuSE location for the heimdal krb implementation
3212     AC_MSG_CHECKING(for /usr/include/heimdal)
3213     if test -d /usr/include/heimdal; then
3214       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3215           KRB5_CFLAGS="-I/usr/include/heimdal"
3216           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3217           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3218           FOUND_KRB5=yes
3219           AC_MSG_RESULT(yes)
3220       else
3221           KRB5_CFLAGS="-I/usr/include/heimdal"
3222           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3223           FOUND_KRB5=yes
3224           AC_MSG_RESULT(yes)
3225       fi
3226     else
3227       AC_MSG_RESULT(no)
3228     fi
3229   fi
3231   if test x$FOUND_KRB5 = x"no"; then
3232     #################################################
3233     # see if this box has the RedHat location for kerberos
3234     AC_MSG_CHECKING(for /usr/kerberos)
3235     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3236       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3237       KRB5_CFLAGS="-I/usr/kerberos/include"
3238       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3239       FOUND_KRB5=yes
3240       AC_MSG_RESULT(yes)
3241     else
3242       AC_MSG_RESULT(no)
3243     fi
3244   fi
3246   if test x$FOUND_KRB5 = x"no"; then
3247     #################################################
3248     # see if this box has the OpenBSD location for heimdal krb5
3249     AC_MSG_CHECKING(for /usr/include/kerberosV)
3250     if test -d /usr/include/kerberosV; then
3251       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3252       KRB5_LIBS="-lcrypto"
3253       FOUND_KRB5=yes
3254       AC_MSG_RESULT(yes)
3255     else
3256       AC_MSG_RESULT(no)
3257     fi
3258   fi
3260   ac_save_CFLAGS=$CFLAGS
3261   ac_save_CPPFLAGS=$CPPFLAGS
3262   ac_save_LDFLAGS=$LDFLAGS
3264   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3265   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3266   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3268   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3270   # now check for krb5.h. Some systems have the libraries without the headers!
3271   # note that this check is done here to allow for different kerberos
3272   # include paths
3273   AC_CHECK_HEADERS(krb5.h)
3275   if test x"$ac_cv_header_krb5_h" = x"no"; then
3277     # Give a warning if AD support was not explicitly requested,
3278     # i.e with_ads_support = auto, otherwise die with an error.
3280     if test x"$with_ads_support" = x"yes"; then
3281       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3282     else
3283       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3284     fi
3286     # Turn off AD support and restore CFLAGS and LIBS variables
3288     with_ads_support="no"
3290     CFLAGS=$ac_save_CFLAGS
3291     CPPFLAGS=$ac_save_CPPFLAGS
3292     LDFLAGS=$ac_save_LDFLAGS
3293   fi
3294   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3295   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3296         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3297         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3298   fi
3301 # Now we have determined whether we really want ADS support
3302 use_ads=no
3303 if test x"$with_ads_support" != x"no"; then
3304   use_ads=yes
3305   have_gssapi=no
3306   ac_save_LIBS=$LIBS
3308   # now check for gssapi headers.  This is also done here to allow for
3309   # different kerberos include paths
3310   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3312   ##################################################################
3313   # we might need the k5crypto and com_err libraries on some systems
3314   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3315   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3317   # Heimdal checks.
3318   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3319   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3320   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3322   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3323   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3325   ########################################################
3326   # now see if we can find the krb5 libs in standard paths
3327   # or as specified above
3328   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3329   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3331   ########################################################
3332   # now see if we can find the gssapi libs in standard paths
3333   if test x"$have_gssapi" != x"yes"; then
3334      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3335   fi
3337   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3338   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3339   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3340   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3341   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3342   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3343   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3344   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3345   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3346   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3347   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3348   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3349   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3350   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3351   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3352   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3353   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3354   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3355   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3356   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3357   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3358   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3359   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3360   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3361   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3362   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3363   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3364   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3365   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3366   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3367   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3368   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3369   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3370   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3371   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3372   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3373   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3374   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3375   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3376   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3377   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3378   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3379   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3381   LIBS="$KRB5_LIBS $LIBS"
3383   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3384         smb_krb5_cv_ticket_has_keyinfo,
3385         [
3386             AC_TRY_COMPILE(
3387             [
3388                 #include <krb5.h>
3389             ],
3390             [
3391                 krb5_ticket ticket;
3392                 krb5_kvno kvno;
3393                 krb5_enctype enctype;
3395                 enctype = ticket.enc_part.enctype;
3396                 kvno = ticket.enc_part.kvno;
3397             ],
3398             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3399             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3400         ])
3402   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3403         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3404             [Whether the krb5_ticket structure contains the kvno and enctype])
3405   fi
3407   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3408           smb_krb5_cv_creds_opt_free_context,
3409           [
3410                 AC_TRY_COMPILE([
3411                     #include <krb5.h>],
3412                     [
3413                         krb5_context ctx;
3414                         krb5_get_init_creds_opt *opt = NULL;
3415                         krb5_get_init_creds_opt_free(ctx, opt);
3416                     ],
3417                     [smb_krb5_cv_creds_opt_free_context=yes],
3418                     [smb_krb5_cv_creds_opt_free_context=no]
3419                 )
3420           ])
3422   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3423         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3424             [Whether krb5_get_init_creds_opt_free takes a context argument])
3425   fi
3427   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3428     AC_TRY_COMPILE([
3429         #include <krb5.h>],
3430         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3431         [smb_krb5_cv_verify_checksum=7],
3432         [smb_krb5_cv_verify_checksum=6],
3433     )
3434   ])
3435   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3437   AC_CACHE_CHECK([for checksum in krb5_checksum],
3438                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3439     AC_TRY_COMPILE([#include <krb5.h>],
3440       [krb5_checksum cksum; cksum.checksum.length = 0;],
3441       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3442       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3444   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3445     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3446                [Whether the krb5_checksum struct has a checksum property])
3447   fi
3449   AC_CACHE_CHECK([for etype in EncryptedData],
3450                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3451     AC_TRY_COMPILE([#include <krb5.h>],
3452       [EncryptedData edata; edata.etype = 0;],
3453       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3454       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3456   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3457     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3458                [Whether the EncryptedData struct has a etype property])
3459   fi
3461   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3462                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3463     AC_TRY_COMPILE([#include <krb5.h>],
3464       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3465       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3466       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3468   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3469     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3470                [Whether the krb5_ap_req struct has a ticket pointer])
3471   fi
3473   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3474                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3475     AC_TRY_COMPILE([#include <krb5.h>],
3476       [krb5_error err; err.e_data = NULL;],
3477       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3478       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3480   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3481     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3482                [Whether the krb5_error struct has a e_data pointer])
3483   fi
3485   AC_CACHE_CHECK([for krb5_crypto type],
3486                 samba_cv_HAVE_KRB5_CRYPTO,[
3487     AC_TRY_COMPILE([#include <krb5.h>],
3488       [krb5_crypto crypto;],
3489       samba_cv_HAVE_KRB5_CRYPTO=yes,
3490       samba_cv_HAVE_KRB5_CRYPTO=no)])
3492   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3493     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3494                [Whether the type krb5_crypto exists])
3495   fi
3497   AC_CACHE_CHECK([for krb5_encrypt_block type],
3498                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3499     AC_TRY_COMPILE([#include <krb5.h>],
3500       [krb5_encrypt_block block;],
3501       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3502       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3504   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3505     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3506                [Whether the type krb5_encrypt_block exists])
3507   fi
3509   AC_CACHE_CHECK([for addrtype in krb5_address],
3510                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3511     AC_TRY_COMPILE([#include <krb5.h>],
3512       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3513       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3514       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3516   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3517     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3518                [Whether the krb5_address struct has a addrtype property])
3519   fi
3521   AC_CACHE_CHECK([for addr_type in krb5_address],
3522                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3523     AC_TRY_COMPILE([#include <krb5.h>],
3524       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3525       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3526       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3528   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3529     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3530               [Whether the krb5_address struct has a addr_type property])
3531   fi
3533   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3534                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3535                  [AC_TRY_COMPILE([#include <krb5.h>],
3536     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3537     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3539   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3540     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3541               [Whether the krb5_ticket struct has a enc_part2 property])
3542   fi
3544   AC_CACHE_CHECK([for keyblock in krb5_creds],
3545                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3546     AC_TRY_COMPILE([#include <krb5.h>],
3547       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3548       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3549       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3551   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3552     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3553               [Whether the krb5_creds struct has a keyblock property])
3554   fi
3556   AC_CACHE_CHECK([for session in krb5_creds],
3557                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3558     AC_TRY_COMPILE([#include <krb5.h>],
3559       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3560       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3561       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3563   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3564     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3565               [Whether the krb5_creds struct has a session property])
3566   fi
3568   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3569                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3570     AC_TRY_COMPILE([#include <krb5.h>],
3571       [krb5_keyblock key; key.keyvalue.data = NULL;],
3572       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3573       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3575   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3576     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3577               [Whether the krb5_keyblock struct has a keyvalue property])
3578   fi
3580   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3581                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3582     AC_TRY_COMPILE([#include <krb5.h>],
3583       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3584       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3585       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3586   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3587                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3588     AC_TRY_COMPILE([#include <krb5.h>],
3589       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3590       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3591       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3592 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3593 # w.r.t. arcfour and windows, so we must not enable it here
3594   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3595           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3596     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3597               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3598   fi
3600   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3601                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3602     AC_TRY_COMPILE([#include <krb5.h>],
3603       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3604       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3605       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3607   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3608     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3609               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3610   fi
3612   AC_CACHE_CHECK([for KV5M_KEYTAB],
3613                  samba_cv_HAVE_KV5M_KEYTAB,[
3614     AC_TRY_COMPILE([#include <krb5.h>],
3615       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3616       samba_cv_HAVE_KV5M_KEYTAB=yes,
3617       samba_cv_HAVE_KV5M_KEYTAB=no)])
3619   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3620       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3621              [Whether the KV5M_KEYTAB option is available])
3622   fi
3624   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3625                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3626     AC_TRY_COMPILE([#include <krb5.h>],
3627       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3628       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3629       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3631   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3632     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3633               [Whether KRB5_KU_OTHER_CKSUM is available])
3634   fi
3636   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3637                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3638     AC_TRY_COMPILE([#include <krb5.h>],
3639       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3640       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3641       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3643   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3644     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3645               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3646   fi
3648   AC_CACHE_CHECK([for the krb5_princ_component macro],
3649                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3650     AC_TRY_LINK([#include <krb5.h>],
3651       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3652       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3653       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3655   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3656     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3657                [Whether krb5_princ_component is available])
3658   fi
3660   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3661                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3662     AC_TRY_COMPILE([#include <krb5.h>],
3663       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3664       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3665       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3667   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3668     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3669               [Whether krb5_keytab_entry has key member])
3670   fi
3672   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3673                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3674     AC_TRY_COMPILE([#include <krb5.h>],
3675       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3676       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3677       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3679   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3680     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3681               [Whether krb5_keytab_entry has keyblock member])
3682   fi
3684   AC_CACHE_CHECK([for magic in krb5_address],
3685                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3686     AC_TRY_COMPILE([#include <krb5.h>],
3687       [krb5_address addr; addr.magic = 0;],
3688       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3689       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3691   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3692     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3693               [Whether the krb5_address struct has a magic property])
3694   fi
3696   AC_CACHE_CHECK([for WRFILE: keytab support],
3697                 samba_cv_HAVE_WRFILE_KEYTAB,[
3698     AC_TRY_RUN([
3699 #include<krb5.h>
3700   main()
3701   {
3702     krb5_context context;
3703     krb5_keytab keytab;
3705     krb5_init_context(&context);
3706     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3707   }],
3708   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3709   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3711   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3712       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3713                [Whether the WRFILE:-keytab is supported])
3714   fi
3716   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3717                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3718     AC_TRY_COMPILE([#include <krb5.h>],
3719     [
3720     krb5_context context;
3721     krb5_principal principal;
3722     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3723     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3724     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3726   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3727     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3728               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3729   fi
3731   AC_CACHE_CHECK([for krb5_addresses type],
3732                 samba_cv_HAVE_KRB5_ADDRESSES,[
3733     AC_TRY_COMPILE([#include <krb5.h>],
3734       [krb5_addresses addr;],
3735       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3736       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3738   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3739     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3740                [Whether the type krb5_addresses type exists])
3741   fi
3743   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3744                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3745     AC_TRY_COMPILE([#include <krb5.h>],
3746     [
3747     krb5_mk_error(0,0,0);],
3748     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3749     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3751   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3752     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3753               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3754   fi
3756   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3757     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3758         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3759         AC_TRY_RUN_STRICT([
3760                 #include <stdlib.h>
3761                 #include <krb5.h>
3762                 int main(void) {
3763                         krb5_context context = NULL;
3764                         char *str = NULL;
3765                         krb5_enctype_to_string(context, 1, &str);
3766                         if (str) free (str); 
3767                         return 0;
3768                 }
3769                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3770                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3771                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3773     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3774       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3775                 [whether krb5_enctype_to_string takes krb5_context argument])
3776     fi
3778     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3779         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
3780         AC_TRY_RUN_STRICT([
3781                 #include <krb5.h>
3782                 int main(void) {
3783                         char buf[256];
3784                         krb5_enctype_to_string(1, buf, 256);
3785                         return 0;
3786                 }
3787                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3788                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
3789                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
3791     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
3792       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3793                 [whether krb5_enctype_to_string takes size_t argument])
3794     fi
3795   fi
3797   AC_CACHE_CHECK([for krb5_principal_get_realm],
3798                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3799     AC_TRY_LINK([#include <krb5.h>],
3800       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3801       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3802       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3804   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3805     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3806                [Whether the function krb5_principal_get_realm is defined])
3807   fi
3809   AC_CACHE_CHECK([for krb5_princ_realm],
3810                 samba_cv_HAVE_KRB5_PRINC_REALM,[
3811     AC_TRY_LINK([#include <krb5.h>],
3812       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3813       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3814       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3816   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3817     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3818                [Whether the macro krb5_princ_realm is defined])
3819   fi
3821   #
3822   #
3823   # Now the decisions whether we can support krb5
3824   #
3825   # NOTE: all tests should be done before this block!
3826   #
3827   #
3828   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3829     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3830     use_ads=no
3831   fi
3833   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3834           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3835   then
3836     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3837     use_ads=no
3838   fi
3840   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3841           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3842   then
3843     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3844     use_ads=no
3845   fi
3847   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3848           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3849   then
3850     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3851     use_ads=no
3852   fi
3854   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3855           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3856   then
3857     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3858     use_ads=no
3859   fi
3861   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
3863       # We only need the following functions if we can't get the enctype
3864       # and kvno out of the ticket directly (ie. on Heimdal).
3866       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3867       then
3868         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3869         use_ads=no
3870       fi
3872       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3873       then
3874         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3875         use_ads=no
3876       fi
3878   fi
3880   if test x"$use_ads" = x"yes"; then
3881     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3882     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3883     if test x"$have_gssapi" = x"yes"; then
3884       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3885     fi
3886   else
3887     if test x"$with_ads_support" = x"yes"; then
3888         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3889     else
3890         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3891     fi
3892     AC_REMOVE_DEFINE(HAVE_KRB5_H)
3893     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3894     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3895     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3896     KRB5_LIBS=""
3897     with_ads_support=no
3898   fi
3899   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3900   AC_MSG_RESULT([$use_ads])
3902 LIBS="$ac_save_LIBS"
3905 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3906 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3909 ########################################################
3910 # Compile with DNS Updates support?
3912 with_dnsupdate_support=no
3913 AC_MSG_CHECKING([whether to enable DNS Updates support])
3915 AC_ARG_WITH(dnsupdate,
3916 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
3917 [ case "$withval" in
3918     yes|no)
3919         with_dnsupdate_support=$withval
3920         ;;
3921   esac ])
3923 AC_MSG_RESULT($with_dnsupdate_support)
3925 if test x"$with_dnsupdate_support" != x"no"; then
3927   ################################################################
3928   # first test for Active Directory support being enabled
3929   #if test x"$with_ads_support" = x"no"; then
3930   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3931   #             with_dnsupdate_support=no
3932   #fi           
3933   ##################################################################
3934   # then test for uuid.h (necessary to generate unique DNS keynames
3935   # (uuid.h is required for this test)
3936   AC_CHECK_HEADERS(uuid/uuid.h)
3938   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3939         if test x"$with_dnsupdate_support" = x"yes"; then
3940          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3941         else
3942          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3943         fi
3944         with_dnsupdate_support=no
3945   fi
3948 if test x"$with_dnsupdate_support" != x"no"; then
3950   ########################################################
3951   # Now see if we can find the uuid libs in standard paths
3952   # On some systems, the uuid API is in libc, so we have to
3953   # be careful not to insert a spurious -luuid.
3955   UUID_LIBS=""
3956   AC_LIBTESTFUNC(uuid, uuid_generate,
3957           [
3958             case " $LIBS " in
3959                 *\ -luuid\ *)
3960                 UUID_LIBS="-luuid"
3961                 SMB_REMOVE_LIB(uuid)
3962                 ;;
3963             esac
3965             with_dnsupdate_support=yes
3966             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3967         ],
3968         [
3969             if test x"$with_dnsupdate_support" = x"yes"; then
3970                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
3971             else
3972                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
3973             fi
3974             with_dnsupdate_support=no
3975         ])
3978 #################################################
3979 # check for automount support
3980 AC_MSG_CHECKING(whether to use automount)
3981 AC_ARG_WITH(automount,
3982 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
3983 [ case "$withval" in
3984   yes)
3985     AC_MSG_RESULT(yes)
3986     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3987     ;;
3988   *)
3989     AC_MSG_RESULT(no)
3990     ;;
3991   esac ],
3992   AC_MSG_RESULT(no)
3995 #################################################
3996 # check for mount- and umount.cifs support
3997 CIFSMOUNT_PROGS=""
3998 INSTALL_CIFSMOUNT=""
3999 UNINSTALL_CIFSMOUNT=""
4000 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4001 AC_ARG_WITH(cifsmount,
4002 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4003 [ case "$withval" in
4004   no)
4005         AC_MSG_RESULT(no)
4006         ;;
4007   *)
4008         case "$host_os" in
4009         *linux*)
4010                 AC_MSG_RESULT(yes)
4011                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4012                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4013                 INSTALL_CIFSMOUNT="installcifsmount"
4014                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4015                 ;;
4016         *)
4017                 AC_MSG_ERROR(not on a linux system!)
4018                 ;;
4019         esac
4020     ;;
4021   esac ],
4022 [ case "$host_os" in
4023   *linux*)
4024         AC_MSG_RESULT(yes)
4025         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4026         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4027         INSTALL_CIFSMOUNT="installcifsmount"
4028         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4029         ;;
4030   *)
4031         AC_MSG_RESULT(no)
4032         ;;
4033   esac ]
4036 #################################################
4037 # check for cifs.upcall support
4038 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4039 CIFSUPCALL_PROGS=""
4040 INSTALL_CIFSUPCALL=""
4041 UNINSTALL_CIFSUPCALL=""
4042 AC_MSG_CHECKING(whether to build cifs.upcall)
4043 AC_ARG_WITH(cifsupcall,
4044 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4045 [ case "$withval" in
4046   no)
4047         AC_MSG_RESULT(no)
4048         ;;
4049   *)
4050         case "$host_os" in
4051         *linux*)
4052                 if test x"$use_ads" != x"yes"; then
4053                         AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4054                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4055                         AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4056                 else
4057                         AC_MSG_RESULT(yes)
4058                         AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4059                         CIFSUPCALL_PROGS="bin/cifs.upcall"
4060                         INSTALL_CIFSUPCALL="installcifsupcall"
4061                         UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4062                 fi
4063                 ;;
4064         *)
4065                 AC_MSG_ERROR(not on a linux system!)
4066                 ;;
4067         esac
4068     ;;
4069   esac ],
4070 [ case "$host_os" in
4071   *linux*)
4072         if test x"$use_ads" != x"yes"; then
4073                 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4074         elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4075                 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4076         else
4077                 AC_MSG_RESULT(yes)
4078                 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4079                 CIFSUPCALL_PROGS="bin/cifs.upcall"
4080                 INSTALL_CIFSUPCALL="installcifsupcall"
4081                 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4082         fi
4083         ;;
4084   *)
4085         AC_MSG_RESULT(no)
4086         ;;
4087   esac ]
4091 #################################################
4092 # Check for a PAM clear-text auth, accounts, password
4093 # and session support. Most PAM implementations keep their
4094 # headers in /usr/include/security. Darwin keeps its in
4095 # /usr/include/pam.
4097 with_pam_for_crypt=no
4098 try_pam=no
4099 AC_MSG_CHECKING(whether to try PAM support)
4100 AC_ARG_WITH(pam,
4101 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4102 [ case "$withval" in
4103   yes|no)
4104     try_pam=$withval
4105     ;;
4106   esac
4108 AC_MSG_RESULT([$try_pam])
4110 use_pam=no
4111 create_pam_modules=no
4112 if test x"${try_pam}" != x"no";then
4113         use_pam=yes
4114         create_pam_modules=yes
4116         # Most systems have PAM headers in /usr/include/security, but Darwin
4117         # has them in /usr/include/pam.
4118         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4119         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4120                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4121                 if test x"${try_pam}" = x"yes";then
4122                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4123                 fi
4124                 use_pam=no
4125                 create_pam_modules=no
4126         fi
4128         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4129         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4130                 if test x"${try_pam}" = x"yes";then
4131                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4132                 fi
4133                 use_pam=no
4134                 create_pam_modules=no
4135         fi
4137         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4138                 #if HAVE_SECURITY_PAM_APPL_H
4139                 #include <security/pam_appl.h>
4140                 #endif
4141                 #if HAVE_PAM_PAM_APPL_H
4142                 #include <pam/pam_appl.h>
4143                 #endif
4144         ]])
4145         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4146                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4147                 if test x"${try_pam}" = x"yes";then
4148                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4149        fi
4150                 create_pam_modules=no
4151     fi
4153         if test x"$use_pam" = x"yes"; then
4154     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4155                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4156                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4157     with_pam_for_crypt=yes
4159                 if test x"$create_pam_modules" = x"yes"; then
4160                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4161                         # this checks are optional,
4162                         # we don't care about the results here
4163                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4164                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4165                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4166                 else
4167                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4168                 fi
4169         fi
4170         AC_MSG_CHECKING(whether to use PAM support)
4171         AC_MSG_RESULT([$use_pam])
4173         AC_MSG_CHECKING(whether to have PAM MODULES support)
4174         AC_MSG_RESULT([$create_pam_modules])
4175 fi # try_pam != no
4177 #################################################
4178 # check for pam_smbpass support
4179 PAM_MODULES=""
4180 INSTALL_PAM_MODULES=""
4181 UNINSTALL_PAM_MODULES=""
4182 AC_MSG_CHECKING(whether to use pam_smbpass)
4183 AC_ARG_WITH(pam_smbpass,
4184 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4185 [ case "$withval" in
4186   yes)
4187     AC_MSG_RESULT(yes)
4189        # Conditions under which pam_smbpass should not be built.
4191        if test x"$BLDSHARED" != x"true"; then
4192           AC_MSG_ERROR([No support for shared modules])
4193        elif test x"$create_pam_modules" != x"yes"; then
4194           AC_MSG_ERROR([No support for PAM MODULES])
4195        else
4196           PAM_MODULES="pam_smbpass"
4197           INSTALL_PAM_MODULES="installpammodules"
4198           UNINSTALL_PAM_MODULES="uninstallpammodules"
4199        fi
4200     ;;
4201   *)
4202     AC_MSG_RESULT(no)
4203     ;;
4204   esac ],
4205   AC_MSG_RESULT(no)
4210 ## moved after the check for -lcrypt in order to
4211 ## ensure that the necessary libraries are included
4212 ## check checking for truncated salt.  Wrapped by the
4213 ## $with_pam_for_crypt variable as above   --jerry
4215 if test $with_pam_for_crypt = no; then
4216 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4217 crypt_LIBS="$LIBS"
4218 LIBS="$AUTH_LIBS $LIBS"
4219 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4220         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4221 LIBS="$crypt_LIBS"])
4222 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4223         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4227 #################################################
4228 # check for a NISPLUS_HOME support
4229 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4230 AC_ARG_WITH(nisplus-home,
4231 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4232 [ case "$withval" in
4233   yes)
4234     AC_MSG_RESULT(yes)
4235     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4236     ;;
4237   *)
4238     AC_MSG_RESULT(no)
4239     ;;
4240   esac ],
4241   AC_MSG_RESULT(no)
4244 #################################################
4245 # check for syslog logging
4246 AC_MSG_CHECKING(whether to use syslog logging)
4247 AC_ARG_WITH(syslog,
4248 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4249 [ case "$withval" in
4250   yes)
4251     AC_MSG_RESULT(yes)
4252     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4253     ;;
4254   *)
4255     AC_MSG_RESULT(no)
4256     ;;
4257   esac ],
4258   AC_MSG_RESULT(no)
4261 #################################################
4262 # check for custom syslog facility
4263 AC_MSG_CHECKING(whether to use a custom syslog facility)
4264 AC_ARG_WITH(syslog-facility,
4265 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4267   if test "$withval" = "no" ; then
4268     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4269   else
4270      if test "$withval" != "yes" ; then
4271         syslog_facility="$withval"
4272         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4273      fi
4274   fi
4277 #################################################
4278 # check for experimental disk-quotas support
4280 samba_cv_WITH_QUOTAS=auto
4281 samba_cv_TRY_QUOTAS=no
4282 samba_cv_RUN_QUOTA_TESTS=auto
4283 samba_cv_WITH_SYS_QUOTAS=auto
4284 samba_cv_TRY_SYS_QUOTAS=auto
4285 samba_cv_SYSQUOTA_FOUND=no
4287 AC_MSG_CHECKING(whether to try disk-quotas support)
4288 AC_ARG_WITH(quotas,
4289 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4290 [ case "$withval" in
4291   yes)
4292     AC_MSG_RESULT(yes)
4293     samba_cv_WITH_QUOTAS=yes
4294     samba_cv_TRY_QUOTAS=yes
4295     samba_cv_RUN_QUOTA_TESTS=yes
4296     #set sys quotas to auto in this case
4297     samba_cv_TRY_SYS_QUOTAS=auto
4298     ;;
4299   auto)
4300     AC_MSG_RESULT(auto)
4301     samba_cv_WITH_QUOTAS=auto
4302     samba_cv_TRY_QUOTAS=auto
4303     samba_cv_RUN_QUOTA_TESTS=auto
4304     #set sys quotas to auto in this case
4305     samba_cv_TRY_SYS_QUOTAS=auto
4306     ;;
4307   no)
4308     AC_MSG_RESULT(no)
4309     samba_cv_WITH_QUOTAS=no
4310     samba_cv_TRY_QUOTAS=no
4311     samba_cv_RUN_QUOTA_TESTS=no
4312     ;;
4313   *)
4314     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4315     ;;
4316   esac ],
4317   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4320 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4321 AC_ARG_WITH(sys-quotas,
4322 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4323 [ case "$withval" in
4324   yes)
4325     AC_MSG_RESULT(yes)
4326     samba_cv_WITH_SYS_QUOTAS=yes
4327     samba_cv_TRY_SYS_QUOTAS=yes
4328     samba_cv_RUN_QUOTA_TESTS=yes
4329     ;;
4330   auto)
4331     AC_MSG_RESULT(auto)
4332     samba_cv_WITH_SYS_QUOTAS=auto
4333     samba_cv_TRY_SYS_QUOTAS=auto
4334     samba_cv_RUN_QUOTA_TESTS=auto
4335     ;;
4336   no)
4337     AC_MSG_RESULT(no)
4338     samba_cv_WITH_SYS_QUOTAS=no
4339     samba_cv_TRY_SYS_QUOTAS=no
4340     ;;
4341   *)
4342     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4343     ;;
4344   esac ],
4345   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4348 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4349 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4350   case "$host_os" in
4351         *linux*)
4352             AC_MSG_RESULT(yes)
4353             samba_cv_TRY_SYS_QUOTAS=yes
4354             samba_cv_RUN_QUOTA_TESTS=yes
4355             ;;
4356         *)
4357             AC_MSG_RESULT(no)
4358             samba_cv_TRY_SYS_QUOTAS=no
4359             ;;
4360   esac
4363 #############################################
4364 # only check for quota stuff if --with-quotas
4365 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4367 case "$host_os" in
4368         # on linux we didn't need to test we have builtin support
4369         *linux*)
4370             samba_cv_SYSQUOTA_FOUND=yes
4371             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4372             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4373             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4374             AC_MSG_RESULT(yes)
4376             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4377             samba_cv_found_xfs_header=yes
4378             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4379             AC_MSG_RESULT(yes)
4380             ;;
4381         *solaris*)
4382             # need to set this define when using static linking (BUG 1473)
4383             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4384             ;;
4385         *)
4386             ;;
4387 esac
4389 # some broken header files need this
4390 AC_CHECK_HEADER(asm/types.h,[
4391             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4392             AC_ADD_INCLUDE(<asm/types.h>)
4393             ])
4395 # For quotas on Veritas VxFS filesystems
4396 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4398 # For quotas on Linux XFS filesystems
4399 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4401 # For sys/quota.h and linux/quota.h
4402 AC_CHECK_HEADERS(sys/quota.h)
4404 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4405 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4406 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4407 AC_TRY_COMPILE([
4408 #include "confdefs.h"
4409 #ifdef HAVE_SYS_TYPES_H
4410 #include <sys/types.h>
4411 #endif
4412 #ifdef HAVE_ASM_TYPES_H
4413 #include <asm/types.h>
4414 #endif
4415 #include <sys/quota.h>
4416 ],[int i = Q_XGETQUOTA;],
4417 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4418 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4419         samba_cv_found_xfs_header=yes
4423 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4424 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4425 AC_TRY_COMPILE([
4426 #include "confdefs.h"
4427 #ifdef HAVE_SYS_QUOTA_H
4428 #include <sys/quota.h>
4429 #endif
4431 struct dqblk D;
4432 D.dqb_fsoftlimit = 0;],
4433 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4434 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4435         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4438 ##################
4439 # look for a working quota system
4441 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4442 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4443 AC_TRY_RUN_STRICT([
4444 #define HAVE_QUOTACTL_4A 1
4445 #define AUTOCONF_TEST 1
4446 #include "confdefs.h"
4447 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4448            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4449 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4450     samba_cv_SYSQUOTA_FOUND=yes;
4451     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4452     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4456 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4457 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4458 AC_TRY_RUN_STRICT([
4459 #define HAVE_QUOTACTL_4B 1
4460 #define AUTOCONF_TEST 1
4461 #include "confdefs.h"
4462 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4463            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4464 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4465     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4466     samba_cv_SYSQUOTA_FOUND=yes;
4467     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4468     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4472 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4473 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4474 AC_TRY_RUN_STRICT([
4475 #define HAVE_QUOTACTL_3 1
4476 #define AUTOCONF_TEST 1
4477 #include "confdefs.h"
4478 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4479            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4480 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4481     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4482     samba_cv_SYSQUOTA_FOUND=yes;
4483     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4484     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4488 #################################################
4489 # check for mntent.h and struct mntent
4490 AC_CHECK_HEADERS(mntent.h)
4491 #################################################
4492 # check for setmntent,getmntent,endmntent
4493 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4495 #################################################
4496 # check for devnm.h and struct mntent
4497 AC_CHECK_HEADERS(devnm.h)
4498 #################################################
4499 # check for devnm
4500 AC_CHECK_FUNCS(devnm)
4502 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4503     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4504         # if --with-sys-quotas=yes then build it
4505         # you have can use the get/set quota command smb.conf
4506         # options then
4507         samba_cv_SYSQUOTA_FOUND=auto
4508     fi
4509     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4510         # if --with-sys-quotas=yes then build it
4511         # you have can use the get/set quota command smb.conf
4512         # options then
4513         samba_cv_TRY_SYS_QUOTAS=auto
4514     fi
4517 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4518 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4519 SAVE_CPPFLAGS="$CPPFLAGS"
4520 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4521 AC_TRY_COMPILE([
4522 #include "confdefs.h"
4523 #define NO_PROTO_H 1
4524 #define NO_CONFIG_H 1
4525 #define HAVE_SYS_QUOTAS 1
4526 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4527 #include "${srcdir-.}/lib/sysquotas.c"
4528 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4529 CPPFLAGS="$SAVE_CPPFLAGS"
4531 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4532 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4533     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4534         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4535         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4536         samba_cv_WE_USE_SYS_QUOTAS=yes
4537         AC_MSG_RESULT(yes)
4538     else
4539         AC_MSG_RESULT(no)
4540     fi
4544 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4545 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4546 SAVE_CPPFLAGS="$CPPFLAGS"
4547 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4548 AC_TRY_COMPILE([
4549 #include "confdefs.h"
4550 #define NO_PROTO_H 1
4551 #define NO_CONFIG_H 1
4552 #define HAVE_SYS_QUOTAS 1
4553 #define HAVE_XFS_QUOTAS 1
4554 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4555 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4556 CPPFLAGS="$SAVE_CPPFLAGS"
4558 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4559     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4560         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4561     fi
4565 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4566 SAVE_CPPFLAGS="$CPPFLAGS"
4567 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4568 AC_TRY_COMPILE([
4569 #include "confdefs.h"
4570 #define NO_PROTO_H 1
4571 #define NO_CONFIG_H 1
4572 #include "${srcdir-.}/smbd/quotas.c"
4573 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4574 CPPFLAGS="$SAVE_CPPFLAGS"
4576 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4577 AC_MSG_CHECKING(whether to use the old quota support)
4578     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4579       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4580         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4581         AC_MSG_RESULT(yes)
4582       else
4583         AC_MSG_RESULT(no)
4584       fi
4585     else
4586       AC_MSG_RESULT(no)
4587     fi
4590 ####################
4591 # End of quota check samba_cv_RUN_QUOTA_TESTS
4594 #################################################
4595 # check for experimental utmp accounting
4597 AC_MSG_CHECKING(whether to support utmp accounting)
4598 WITH_UTMP=yes
4599 AC_ARG_WITH(utmp,
4600 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4601 [ case "$withval" in
4602   no)
4603                 WITH_UTMP=no
4604                 ;;
4605   *)
4606                 WITH_UTMP=yes
4607                 ;;
4608   esac ],
4611 # utmp requires utmp.h
4612 # Note similar check earlier, when checking utmp details.
4614 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4615         utmp_no_reason=", no utmp.h on $host_os"
4616         WITH_UTMP=no
4619 # Display test results
4621 if test x"$WITH_UTMP" = x"yes"; then
4622         AC_MSG_RESULT(yes)
4623         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4624 else
4625         AC_MSG_RESULT(no$utmp_no_reason)
4628 INSTALLLIBCMD_SH=:
4629 INSTALLLIBCMD_A=:
4630 UNINSTALLLIBCMD_SH=:
4631 UNINSTALLLIBCMD_A=:
4633 if test $BLDSHARED = true; then
4634         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4635         UNINSTALLLIBCMD_SH="rm -f"
4637 if test $enable_static = yes; then
4638         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4639         UNINSTALLLIBCMD_A="rm -f"
4642 #################################################
4643 # --disable-shared-libs
4644 # can be used to disable the internal use of shared libs altogether
4645 # (this only has an effect when building shared libs is enabled)
4647 USESHARED=false
4648 AC_SUBST(USESHARED)
4650 AC_MSG_CHECKING(whether to use shared libraries internally)
4651 AC_ARG_ENABLE([shared-libs],
4652         AS_HELP_STRING([--enable-shared-libs],
4653                 [Use shared libraries internally (default=yes)]),
4654         [enable_shared_libs=$enableval],
4655         [enable_shared_libs=yes])
4657 if test x"$enable_shared_libs" != x"no" ; then
4658         USESHARED=$BLDSHARED
4661 AC_MSG_RESULT([$USESHARED])
4663 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4664         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4667 #################################################
4668 # --with-static-libs=LIBS:
4669 #   link (internal) libs dynamically or statically?
4671 # If a subsystem is built as a library then this controls whether they are
4672 # linked into Samba targets statically or dynamically:
4674 # * If we build the shared library at all, we link dynamically by default.
4676 # * We only link statically if we don't build shared or if the library
4677 #   appears in the --with-static-libs configure option.
4679 # Example:
4680 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4681 #   of linking the dynamic variant with -ltalloc.
4683 # NOTE: This option only affects libraries that we do not only build
4684 # but that samba also links against as libraries (as opposed to linking
4685 # the plain object files. - This has to be configured in Makefile.in.
4686 # So in particular it does not harm to give invalid or unknown names here.
4689 AC_ARG_WITH([static-libs],
4690         [AS_HELP_STRING([--with-static-libs=LIBS],
4691                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4692         [AS_IF([test $withval],
4693                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4694                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4695                         eval LINK_$lib=STATIC
4696                 done], [])],
4697         [])
4700 # WORKAROUND:
4701 #   until we have organized other internal subsystems (as util, registry
4702 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
4703 #   dynamically to samba programs.
4705 LINK_LIBNETAPI=STATIC
4707 LINK_LIBSMBCLIENT=STATIC
4710 #  The library versions are hardcoded here
4711 #  and filled into the LIBFOO_SOVER variable.
4713 #  TODO: for talloc and tdb (at least), these should
4714 #  be extracted from their respective source directories
4716 SMB_LIBRARY(talloc, 1)
4717 SMB_LIBRARY(tdb, 1)
4718 SMB_LIBRARY(netapi, 0)
4719 SMB_LIBRARY(smbclient, 0)
4720 SMB_LIBRARY(smbsharemodes, 0)
4721 SMB_LIBRARY(lua, 0)
4722 SMB_LIBRARY(addns, 0, no, [undefined API])
4725 #################################################
4726 # check to see if we should set the protected madvise flag,
4727 # which will keep smbd alive in low memory conditions
4728 AC_MSG_CHECKING(whether to protect smbd from being killed in low memory)
4729 AC_ARG_WITH(madvise-protect,
4730 [AS_HELP_STRING([--with-madvise-protect], [Include low memory madvise protection (default=no)])],
4731 [ case "$withval" in
4732   yes)
4733     AC_TRY_COMPILE([
4734         #include <sys/mman.h>
4735         ],[
4736         int a = MADV_PROTECT;
4737         ],
4738         [samba_cv_madvise_protect=yes],
4739         [samba_cv_madvise_protect=no])
4740     if test x"$samba_cv_madvise_protect" = x"yes"; then
4741         AC_MSG_RESULT(yes)
4742         AC_DEFINE(WITH_MADVISE_PROTECTED,1,[Whether to include low memory protection support])
4743     else
4744         AC_MSG_ERROR(Low memory protection supporte requires availability of MADVISE_PROTECT flag.)
4745     fi
4746     ;;
4747   *)
4748     AC_MSG_RESULT(no)
4749     ;;
4750   esac ],
4751   AC_MSG_RESULT(no)
4754 #################################################
4755 # these tests are taken from the GNU fileutils package
4756 AC_CHECKING(how to get filesystem space usage)
4757 space=no
4759 # Test for statvfs64.
4760 if test $space = no; then
4761   # SVR4
4762   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4763   [AC_TRY_RUN([
4764 #if defined(HAVE_UNISTD_H)
4765 #include <unistd.h>
4766 #endif
4767 #include <sys/types.h>
4768 #include <sys/statvfs.h>
4769   main ()
4770   {
4771     struct statvfs64 fsd;
4772     exit (statvfs64 (".", &fsd));
4773   }],
4774   fu_cv_sys_stat_statvfs64=yes,
4775   fu_cv_sys_stat_statvfs64=no,
4776   fu_cv_sys_stat_statvfs64=cross)])
4777   if test $fu_cv_sys_stat_statvfs64 = yes; then
4778     space=yes
4779     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4780   fi
4783 # Perform only the link test since it seems there are no variants of the
4784 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4785 # because that got a false positive on SCO OSR5.  Adding the declaration
4786 # of a `struct statvfs' causes this test to fail (as it should) on such
4787 # systems.  That system is reported to work fine with STAT_STATFS4 which
4788 # is what it gets when this test fails.
4789 if test $space = no; then
4790   # SVR4
4791   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4792                  [AC_TRY_LINK([#include <sys/types.h>
4793 #include <sys/statvfs.h>],
4794                               [struct statvfs fsd; statvfs (0, &fsd);],
4795                               fu_cv_sys_stat_statvfs=yes,
4796                               fu_cv_sys_stat_statvfs=no)])
4797   if test $fu_cv_sys_stat_statvfs = yes; then
4798     space=yes
4799     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4800   fi
4803 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4804 # This is not the case on ancient Linux systems.
4806 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4807     AC_TRY_COMPILE([#include <sys/types.h>
4808 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4809         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4810 if test x"$samba_cv_fsid_int" = x"yes"; then
4811     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4814 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4815 # systems use f_bsize.
4816 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4817     AC_TRY_COMPILE([#include <sys/types.h>
4818 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4819         samba_cv_frsize=yes,samba_cv_frsize=no)])
4820 if test x"$samba_cv_frsize" = x"yes"; then
4821     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4824 # Some systems use f_flag in struct statvfs while others use f_flags
4825 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
4826     AC_TRY_COMPILE([#include <sys/types.h>
4827 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
4828         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
4829 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
4830     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
4833 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
4834     AC_TRY_COMPILE([#include <sys/types.h>
4835 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
4836         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
4837 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
4838     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
4841 if test $space = no; then
4842   # DEC Alpha running OSF/1
4843   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4844   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4845   [AC_TRY_RUN([
4846 #include <sys/param.h>
4847 #include <sys/types.h>
4848 #include <sys/mount.h>
4849   main ()
4850   {
4851     struct statfs fsd;
4852     fsd.f_fsize = 0;
4853     exit (statfs (".", &fsd, sizeof (struct statfs)));
4854   }],
4855   fu_cv_sys_stat_statfs3_osf1=yes,
4856   fu_cv_sys_stat_statfs3_osf1=no,
4857   fu_cv_sys_stat_statfs3_osf1=no)])
4858   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4859   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4860     space=yes
4861     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4862   fi
4865 if test $space = no; then
4866 # AIX
4867   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4868 member (AIX, 4.3BSD)])
4869   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4870   [AC_TRY_RUN([
4871 #ifdef HAVE_SYS_PARAM_H
4872 #include <sys/param.h>
4873 #endif
4874 #ifdef HAVE_SYS_MOUNT_H
4875 #include <sys/mount.h>
4876 #endif
4877 #ifdef HAVE_SYS_VFS_H
4878 #include <sys/vfs.h>
4879 #endif
4880   main ()
4881   {
4882   struct statfs fsd;
4883   fsd.f_bsize = 0;
4884   exit (statfs (".", &fsd));
4885   }],
4886   fu_cv_sys_stat_statfs2_bsize=yes,
4887   fu_cv_sys_stat_statfs2_bsize=no,
4888   fu_cv_sys_stat_statfs2_bsize=no)])
4889   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4890   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4891     space=yes
4892     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4893   fi
4896 if test $space = no; then
4897 # SVR3
4898   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4899   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4900   [AC_TRY_RUN([#include <sys/types.h>
4901 #include <sys/statfs.h>
4902   main ()
4903   {
4904   struct statfs fsd;
4905   exit (statfs (".", &fsd, sizeof fsd, 0));
4906   }],
4907     fu_cv_sys_stat_statfs4=yes,
4908     fu_cv_sys_stat_statfs4=no,
4909     fu_cv_sys_stat_statfs4=no)])
4910   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4911   if test $fu_cv_sys_stat_statfs4 = yes; then
4912     space=yes
4913     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4914   fi
4917 if test $space = no; then
4918 # 4.4BSD and NetBSD
4919   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4920 member (4.4BSD and NetBSD)])
4921   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4922   [AC_TRY_RUN([#include <sys/types.h>
4923 #ifdef HAVE_SYS_PARAM_H
4924 #include <sys/param.h>
4925 #endif
4926 #ifdef HAVE_SYS_MOUNT_H
4927 #include <sys/mount.h>
4928 #endif
4929   main ()
4930   {
4931   struct statfs fsd;
4932   fsd.f_fsize = 0;
4933   exit (statfs (".", &fsd));
4934   }],
4935   fu_cv_sys_stat_statfs2_fsize=yes,
4936   fu_cv_sys_stat_statfs2_fsize=no,
4937   fu_cv_sys_stat_statfs2_fsize=no)])
4938   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4939   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4940     space=yes
4941         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4942   fi
4945 if test $space = no; then
4946   # Ultrix
4947   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4948   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4949   [AC_TRY_RUN([#include <sys/types.h>
4950 #ifdef HAVE_SYS_PARAM_H
4951 #include <sys/param.h>
4952 #endif
4953 #ifdef HAVE_SYS_MOUNT_H
4954 #include <sys/mount.h>
4955 #endif
4956 #ifdef HAVE_SYS_FS_TYPES_H
4957 #include <sys/fs_types.h>
4958 #endif
4959   main ()
4960   {
4961   struct fs_data fsd;
4962   /* Ultrix's statfs returns 1 for success,
4963      0 for not mounted, -1 for failure.  */
4964   exit (statfs (".", &fsd) != 1);
4965   }],
4966   fu_cv_sys_stat_fs_data=yes,
4967   fu_cv_sys_stat_fs_data=no,
4968   fu_cv_sys_stat_fs_data=no)])
4969   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4970   if test $fu_cv_sys_stat_fs_data = yes; then
4971     space=yes
4972     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4973   fi
4977 # As a gating factor for large file support, in order to
4978 # use <4GB files we must have the following minimal support
4979 # available.
4980 # long long, and a 64 bit off_t or off64_t.
4981 # If we don't have all of these then disable large
4982 # file support.
4984 AC_MSG_CHECKING([if large file support can be enabled])
4985 AC_TRY_COMPILE([
4986 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4987 #include <sys/types.h>
4988 #else
4989 __COMPILE_ERROR_
4990 #endif
4992 [int i],
4993 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4994 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4995         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4997 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4999 #################################################
5000 # check for cluster extensions
5002 CTDB_CFLAGS=""
5003 AC_SUBST(CTDB_CFLAGS)
5004 AC_ARG_WITH(ctdb,
5005 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5006 [ case "$withval" in
5007   yes|no)
5008     AC_MSG_WARN([--with-ctdb called without argument])
5009     ;;
5010   *)
5011     CTDB_CPPFLAGS="-I$withval/include"
5012     ;;
5013   esac])
5015 SAVED_CPPFLAGS="$CPPFLAGS"
5016 CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS"
5017 ctdb_broken="missing or broken headers"
5019 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5020 #include "confdefs.h"
5021 #define NO_CONFIG_H
5022 #include "replace.h"
5023 #include "system/wait.h"
5024 #include "system/network.h"
5025 #define private #error __USED_RESERVED_WORD_private__
5026 #include <talloc.h>
5027 #include <tdb.h>
5028 #include <ctdb.h>
5031 AC_HAVE_DECL(CTDB_CONTROL_TRANS2_COMMIT_RETRY,[
5032 #include "confdefs.h"
5033 #define NO_CONFIG_H
5034 #include "replace.h"
5035 #include "system/wait.h"
5036 #include "system/network.h"
5037 #include <talloc.h>
5038 #include <tdb.h>
5039 #include <ctdb.h>
5040 #include <ctdb_private.h>
5042 if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then
5043         ctdb_broken=no
5044 else
5045         ctdb_broken="missing transaction support"
5048 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5049 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5050         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5051 ],,[
5052 #include "confdefs.h"
5053 #define NO_CONFIG_H
5054 #include "replace.h"
5055 #include "system/wait.h"
5056 #include "system/network.h"
5057 #include <talloc.h>
5058 #include <tdb.h>
5059 #include <ctdb.h>
5060 #include <ctdb_private.h>
5063 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5064         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5066         ctdb_broken="missing struct ctdb_control_tcp"
5068 #include "confdefs.h"
5069 #define NO_CONFIG_H
5070 #include "replace.h"
5071 #include "system/wait.h"
5072 #include "system/network.h"
5073 #include <talloc.h>
5074 #include <tdb.h>
5075 #include <ctdb.h>
5076 #include <ctdb_private.h>
5079 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5080         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5081 ],,[
5082 #include "confdefs.h"
5083 #define NO_CONFIG_H
5084 #include "replace.h"
5085 #include "system/wait.h"
5086 #include "system/network.h"
5087 #include <talloc.h>
5088 #include <tdb.h>
5089 #include <ctdb.h>
5090 #include <ctdb_private.h>
5092 CPPFLAGS="$SAVED_CPPFLAGS"
5094 AC_MSG_CHECKING(cluster support)
5095 AC_ARG_WITH(cluster-support,
5096 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5098 if test x"$with_cluster_support" = x ; then
5099         with_cluster_support="auto"
5102 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5103         if test "x$with_cluster_support" = "xyes"; then
5104                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5105         fi
5106         with_cluster_support=no
5109 if test x"$ctdb_broken" != x"no"; then
5110         if test "x$with_cluster_support" = "xyes"; then
5111                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5112         fi
5113         with_cluster_support=no
5116 if test "x$with_cluster_support" != "xno"; then
5117     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5118     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5119     AC_MSG_RESULT(yes)
5120 else
5121     AC_MSG_RESULT(no)
5124 #################################################
5125 # check for ACL support
5127 AC_MSG_CHECKING(whether to support ACLs)
5128 AC_ARG_WITH(acl-support,
5129 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5130 [ case "$withval" in
5131         yes|no)
5132                 with_acl_support="$withval"
5133                 ;;
5134   esac ])
5136 if test x"$with_acl_support" = x ; then
5137         with_acl_support="auto"
5140 AC_MSG_RESULT($with_acl_support)
5142 if test x"$with_acl_support" = x"no"; then
5143         AC_MSG_RESULT(Disabling ACL support)
5144         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5145 else
5146         AC_MSG_NOTICE(checking whether ACL support is available:)
5147         case "$host_os" in
5148         *sysv5*)
5149                 AC_MSG_NOTICE(Using UnixWare ACLs)
5150                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5151                 default_static_modules="$default_static_modules vfs_solarisacl"
5152                 ;;
5153         *solaris*)
5154                 AC_MSG_NOTICE(Using solaris ACLs)
5155                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5156                 ACL_LIBS="$ACL_LIBS -lsec"
5157                 default_static_modules="$default_static_modules vfs_solarisacl"
5158                 ;;
5159         *hpux*)
5160                 AC_MSG_NOTICE(Using HPUX ACLs)
5161                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5162                 default_static_modules="$default_static_modules vfs_hpuxacl"
5163                 ;;
5164         *irix*)
5165                 AC_MSG_NOTICE(Using IRIX ACLs)
5166                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5167                 default_static_modules="$default_static_modules vfs_irixacl"
5168                 ;;
5169         *aix*)
5170                 AC_MSG_NOTICE(Using AIX ACLs)
5171                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5172                 default_static_modules="$default_static_modules vfs_aixacl"
5173                 ;;
5174         *osf*)
5175                 AC_MSG_NOTICE(Using Tru64 ACLs)
5176                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5177                 ACL_LIBS="$ACL_LIBS -lpacl"
5178                 default_static_modules="$default_static_modules vfs_tru64acl"
5179                 ;;
5180         *darwin*)
5181                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5182                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5183                 ;;
5184         *)
5185                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5186                 case "$host_os" in
5187                 *linux*)
5188                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5189                         ;;
5190                 esac
5191                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5192                         acl_LIBS=$LIBS
5193                         LIBS="$LIBS $ACL_LIBS"
5194                         AC_TRY_LINK([
5195                                 #include <sys/types.h>
5196                                 #include <sys/acl.h>
5197                         ],[
5198                                 acl_t acl;
5199                                 int entry_id;
5200                                 acl_entry_t *entry_p;
5201                                 return acl_get_entry(acl, entry_id, entry_p);
5202                         ],
5203                         [samba_cv_HAVE_POSIX_ACLS=yes],
5204                         [samba_cv_HAVE_POSIX_ACLS=no])
5205                         LIBS=$acl_LIBS
5206                 ])
5207                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5208                         AC_MSG_NOTICE(Using posix ACLs)
5209                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5210                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5211                                 acl_LIBS=$LIBS
5212                                 LIBS="$LIBS $ACL_LIBS"
5213                                 AC_TRY_LINK([
5214                                         #include <sys/types.h>
5215                                         #include <sys/acl.h>
5216                                 ],[
5217                                         acl_permset_t permset_d;
5218                                         acl_perm_t perm;
5219                                         return acl_get_perm_np(permset_d, perm);
5220                                 ],
5221                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5222                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5223                                 LIBS=$acl_LIBS
5224                         ])
5225                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5226                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5227                         fi
5228                         default_static_modules="$default_static_modules vfs_posixacl"
5229                 else
5230                         AC_MSG_NOTICE(ACL support is not avaliable)
5231                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5232                 fi
5233                 ;;
5234         esac
5235 fi # with_acl_support
5239 #################################################
5240 # check for AIO support
5242 AC_MSG_CHECKING(whether to support asynchronous io)
5243 AC_ARG_WITH(aio-support,
5244 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5245 [ case "$withval" in
5246   yes)
5248         AC_MSG_RESULT(yes)
5249         case "$host_os" in
5250         *)
5251                 AIO_LIBS=$LIBS
5252                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5253                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5254                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5255                 aio_LIBS=$LIBS
5256                 LIBS=$AIO_LIBS
5257                 AC_TRY_LINK([#include <sys/types.h>
5258 #include <aio.h>],
5259 [ struct aiocb a; return aio_read(&a);],
5260 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5261                 LIBS=$aio_LIBS])
5262                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5263                 aio_LIBS=$LIBS
5264                 LIBS=$AIO_LIBS
5265                 AC_TRY_LINK([#include <sys/types.h>
5266 #include <aio.h>],
5267 [ struct aiocb64 a; return aio_read64(&a);],
5268 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5269                 LIBS=$aio_LIBS])
5270                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5271                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5272                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5273                         LIBS=$AIO_LIBS
5274                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5275                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5276                         LIBS=$AIO_LIBS
5277                 fi
5279                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5280                         AC_MSG_CHECKING(for aio_read)
5281                         AC_LINK_IFELSE([#include <aio.h>
5282 int main() { struct aiocb a; return aio_read(&a); }],
5283 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5284 [AC_MSG_RESULT(no)])
5286                         AC_MSG_CHECKING(for aio_write)
5287                         AC_LINK_IFELSE([#include <aio.h>
5288 int main() { struct aiocb a; return aio_write(&a); }],
5289 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5290 [AC_MSG_RESULT(no)])
5292                         AC_MSG_CHECKING(for aio_fsync)
5293                         AC_LINK_IFELSE([#include <aio.h>
5294 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5295 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5296 [AC_MSG_RESULT(no)])
5298                         AC_MSG_CHECKING(for aio_return)
5299                         AC_LINK_IFELSE([#include <aio.h>
5300 int main() { struct aiocb a; return aio_return(&a); }],
5301 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5302 [AC_MSG_RESULT(no)])
5304                         AC_MSG_CHECKING(for aio_error)
5305                         AC_LINK_IFELSE([#include <aio.h>
5306 int main() { struct aiocb a; return aio_error(&a); }],
5307 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5308 [AC_MSG_RESULT(no)])
5310                         AC_MSG_CHECKING(for aio_cancel)
5311                         AC_LINK_IFELSE([#include <aio.h>
5312 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5313 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5314 [AC_MSG_RESULT(no)])
5316                         AC_MSG_CHECKING(for aio_suspend)
5317                         AC_LINK_IFELSE([#include <aio.h>
5318 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5319 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5320 [AC_MSG_RESULT(no)])
5321                 fi
5323                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5324                         AC_MSG_CHECKING(for aio_read64)
5325                         AC_LINK_IFELSE([#include <aio.h>
5326 int main() { struct aiocb a; return aio_read64(&a); }],
5327 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5328 [AC_MSG_RESULT(no)])
5330                         AC_MSG_CHECKING(for aio_write64)
5331                         AC_LINK_IFELSE([#include <aio.h>
5332 int main() { struct aiocb a; return aio_write64(&a); }],
5333 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5334 [AC_MSG_RESULT(no)])
5336                         AC_MSG_CHECKING(for aio_fsync64)
5337                         AC_LINK_IFELSE([#include <aio.h>
5338 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5339 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5340 [AC_MSG_RESULT(no)])
5342                         AC_MSG_CHECKING(for aio_return64)
5343                         AC_LINK_IFELSE([#include <aio.h>
5344 int main() { struct aiocb a; return aio_return64(&a); }],
5345 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5346 [AC_MSG_RESULT(no)])
5348                         AC_MSG_CHECKING(for aio_error64)
5349                         AC_LINK_IFELSE([#include <aio.h>
5350 int main() { struct aiocb a; return aio_error64(&a); }],
5351 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5352 [AC_MSG_RESULT(no)])
5354                         AC_MSG_CHECKING(for aio_cancel64)
5355                         AC_LINK_IFELSE([#include <aio.h>
5356 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5357 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5358 [AC_MSG_RESULT(no)])
5360                         AC_MSG_CHECKING(for aio_suspend64)
5361                         AC_LINK_IFELSE([#include <aio.h>
5362 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5363 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5364 [AC_MSG_RESULT(no)])
5365                 fi
5366             ;;
5367         esac
5368         ;;
5369   *)
5370     AC_MSG_RESULT(no)
5371     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5372     ;;
5373   esac ],
5374   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5375   AC_MSG_RESULT(no)
5378 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5379         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5380                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5381                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5382         fi
5385 #################################################
5386 # check for sendfile support
5388 with_sendfile_support=yes
5389 AC_MSG_CHECKING(whether to check to support sendfile)
5390 AC_ARG_WITH(sendfile-support,
5391 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5392 [ case "$withval" in
5393   yes)
5395         AC_MSG_RESULT(yes);
5397         case "$host_os" in
5398         *linux*)
5399                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5400                 AC_TRY_LINK([#include <sys/sendfile.h>],
5402 int tofd, fromfd;
5403 off64_t offset;
5404 size_t total;
5405 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5407 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5409                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5410                 AC_TRY_LINK([#include <sys/sendfile.h>],
5412 int tofd, fromfd;
5413 off_t offset;
5414 size_t total;
5415 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5417 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5419 # Try and cope with broken Linux sendfile....
5420                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5421                 AC_TRY_LINK([\
5422 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5423 #undef _FILE_OFFSET_BITS
5424 #endif
5425 #include <sys/sendfile.h>],
5427 int tofd, fromfd;
5428 off_t offset;
5429 size_t total;
5430 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5432 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5434         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5435                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5436                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5437                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5438         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5439                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5440                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5441                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5442         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5443                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5444                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5445         else
5446                 AC_MSG_RESULT(no);
5447         fi
5449         ;;
5450         *freebsd* | *dragonfly* )
5451                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5452                 AC_TRY_LINK([\
5453 #include <sys/types.h>
5454 #include <unistd.h>
5455 #include <sys/socket.h>
5456 #include <sys/uio.h>],
5458         int fromfd, tofd, ret, total=0;
5459         off_t offset, nwritten;
5460         struct sf_hdtr hdr;
5461         struct iovec hdtrl;
5462         hdr.headers = &hdtrl;
5463         hdr.hdr_cnt = 1;
5464         hdr.trailers = NULL;
5465         hdr.trl_cnt = 0;
5466         hdtrl.iov_base = NULL;
5467         hdtrl.iov_len = 0;
5468         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5470 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5472         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5473                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5474                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5475                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5476         else
5477                 AC_MSG_RESULT(no);
5478         fi
5479         ;;
5481         *hpux*)
5482                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5483                 AC_TRY_LINK([\
5484 #include <sys/socket.h>
5485 #include <sys/uio.h>],
5487         int fromfd, tofd;
5488         size_t total=0;
5489         struct iovec hdtrl[2];
5490         ssize_t nwritten;
5491         off64_t offset;
5493         hdtrl[0].iov_base = 0;
5494         hdtrl[0].iov_len = 0;
5496         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5498 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5499         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5500                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5501                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5502                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5503         else
5504                 AC_MSG_RESULT(no);
5505         fi
5507                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5508                 AC_TRY_LINK([\
5509 #include <sys/socket.h>
5510 #include <sys/uio.h>],
5512         int fromfd, tofd;
5513         size_t total=0;
5514         struct iovec hdtrl[2];
5515         ssize_t nwritten;
5516         off_t offset;
5518         hdtrl[0].iov_base = 0;
5519         hdtrl[0].iov_len = 0;
5521         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5523 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5524         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5525                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5526                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5527                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5528         else
5529                 AC_MSG_RESULT(no);
5530         fi
5531         ;;
5533         *solaris*)
5534                 AC_CHECK_LIB(sendfile,sendfilev)
5535                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5536                 AC_TRY_LINK([\
5537 #include <sys/sendfile.h>],
5539         int sfvcnt;
5540         size_t xferred;
5541         struct sendfilevec vec[2];
5542         ssize_t nwritten;
5543         int tofd;
5545         sfvcnt = 2;
5547         vec[0].sfv_fd = SFV_FD_SELF;
5548         vec[0].sfv_flag = 0;
5549         vec[0].sfv_off = 0;
5550         vec[0].sfv_len = 0;
5552         vec[1].sfv_fd = 0;
5553         vec[1].sfv_flag = 0;
5554         vec[1].sfv_off = 0;
5555         vec[1].sfv_len = 0;
5556         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5558 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5560         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5561                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5562                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5563                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5564         else
5565                 AC_MSG_RESULT(no);
5566         fi
5568                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5569                 AC_TRY_LINK([\
5570 #include <sys/sendfile.h>],
5572         int sfvcnt;
5573         size_t xferred;
5574         struct sendfilevec vec[2];
5575         ssize_t nwritten;
5576         int tofd;
5578         sfvcnt = 2;
5580         vec[0].sfv_fd = SFV_FD_SELF;
5581         vec[0].sfv_flag = 0;
5582         vec[0].sfv_off = 0;
5583         vec[0].sfv_len = 0;
5585         vec[1].sfv_fd = 0;
5586         vec[1].sfv_flag = 0;
5587         vec[1].sfv_off = 0;
5588         vec[1].sfv_len = 0;
5589         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5591 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5593         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5594                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5595                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5596                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5597         else
5598                 AC_MSG_RESULT(no);
5599         fi
5600         ;;
5601         *aix*)
5602                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5603                 AC_TRY_LINK([\
5604 #include <sys/socket.h>],
5606         int fromfd, tofd;
5607         size_t total=0;
5608         struct sf_parms hdtrl;
5609         ssize_t nwritten;
5610         off64_t offset;
5612         hdtrl.header_data = 0;
5613         hdtrl.header_length = 0;
5614         hdtrl.file_descriptor = fromfd;
5615         hdtrl.file_offset = 0;
5616         hdtrl.file_bytes = 0;
5617         hdtrl.trailer_data = 0;
5618         hdtrl.trailer_length = 0;
5620         nwritten = send_file(&tofd, &hdtrl, 0);
5622 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5623         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5624                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5625                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5626                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5627         else
5628                 AC_MSG_RESULT(no);
5629         fi
5630         ;;
5631         *)
5632         ;;
5633         esac
5634         ;;
5635   *)
5636     AC_MSG_RESULT(no)
5637     ;;
5638   esac ],
5639   AC_MSG_RESULT(yes)
5642 ############################################
5643 # See if we have the Linux readahead syscall.
5645 AC_CACHE_CHECK([for Linux readahead],
5646                 samba_cv_HAVE_LINUX_READAHEAD,[
5647     AC_TRY_LINK([
5648 #if defined(HAVE_UNISTD_H)
5649 #include <unistd.h>
5650 #endif
5651 #include <fcntl.h>],
5652     [ssize_t err = readahead(0,0,0x80000);],
5653     samba_cv_HAVE_LINUX_READAHEAD=yes,
5654     samba_cv_HAVE_LINUX_READAHEAD=no)])
5656 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5657   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5658              [Whether Linux readahead is available])
5661 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5663 ############################################
5664 # See if we have the posix_fadvise syscall.
5666 AC_CACHE_CHECK([for posix_fadvise],
5667                 samba_cv_HAVE_POSIX_FADVISE,[
5668     AC_TRY_LINK([
5669 #if defined(HAVE_UNISTD_H)
5670 #include <unistd.h>
5671 #endif
5672 #include <fcntl.h>],
5673     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5674     samba_cv_HAVE_POSIX_FADVISE=yes,
5675     samba_cv_HAVE_POSIX_FADVISE=no)])
5677 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5678   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5679              [Whether posix_fadvise is available])
5682 ############################################
5683 # See if we have the Linux splice syscall.
5685 case "$host_os" in
5686 *linux*)
5687 AC_CACHE_CHECK([for Linux splice],
5688                 samba_cv_HAVE_LINUX_SPLICE,[
5689     AC_TRY_LINK([
5690 #if defined(HAVE_UNISTD_H)
5691 #include <unistd.h>
5692 #endif
5693 #include <fcntl.h>],
5694     [long ret = splice(0,0,1,0,400,0);],
5695     samba_cv_HAVE_LINUX_SPLICE=yes,
5696     samba_cv_HAVE_LINUX_SPLICE=no)])
5699 samba_cv_HAVE_LINUX_SPLICE=no
5701 esac
5703 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5704   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5705              [Whether Linux splice is available])
5708 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5711 #################################################
5712 # Check whether winbind is supported on this platform.  If so we need to
5713 # build and install client programs, sbin programs and shared libraries
5715 AC_MSG_CHECKING(whether to build winbind)
5717 # Initially, the value of $host_os decides whether winbind is supported
5719 HAVE_WINBIND=yes
5720 HAVE_WBCLIENT=no
5722 # Define external wbclient library to link against.  This disables winbind.
5723 # We define this here so --with-winbind can override it.
5724 AC_ARG_WITH(wbclient,
5725 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5727   case "$withval" in
5728         no)
5729                 HAVE_WBCLIENT=no
5730                 ;;
5731         yes)
5732                 HAVE_WBCLIENT=yes
5733                 HAVE_WINBIND=no
5734                 ;;
5735         *)
5736                 HAVE_WBCLIENT=yes
5737                 HAVE_WINBIND=no
5738                 WBCLIENT_INCLUDES="-I$withval/include"
5739                 WBCLIENT_LDFLAGS="-L$withval/lib"
5740                 ;;
5741   esac ],
5744 AC_SUBST(WBCLIENT_INCLUDES)
5745 AC_SUBST(WBCLIENT_LDFLAGS)
5746 AC_SUBST(WBCLIENT_LIBS)
5749 # Define the winbind shared library name and any specific linker flags
5750 # it needs to be built with.
5752 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5753 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5754 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5755 NSSSONAMEVERSIONSUFFIX=""
5756 WINBIND_NSS_PTHREAD=""
5758 case "$host_os" in
5759         *linux*)
5760                 NSSSONAMEVERSIONSUFFIX=".2"
5761                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5762                 ;;
5763         *freebsd[[5-9]]*)
5764                 # FreeBSD winbind client is implemented as a wrapper around
5765                 # the Linux version.
5766                 NSSSONAMEVERSIONSUFFIX=".1"
5767                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5768                     ../nsswitch/winbind_nss_linux.o"
5769                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5770                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5771                 ;;
5773         *netbsd*[[3-9]]*)
5774                 # NetBSD winbind client is implemented as a wrapper
5775                 # around the Linux version. It needs getpwent_r() to
5776                 # indicate libc's use of the correct nsdispatch API.
5777                 #
5778                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5779                         WINBIND_NSS_EXTRA_OBJS="\
5780                             ../nsswitch/winbind_nss_netbsd.o \
5781                             ../nsswitch/winbind_nss_linux.o"
5782                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5783                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5784                 else
5785                         HAVE_WINBIND=no
5786                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5787                 fi
5788                 ;;
5789         *irix*)
5790                 # IRIX has differently named shared libraries
5791                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5792                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5793                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5794                 ;;
5795         *solaris*)
5796                 # Solaris winbind client is implemented as a wrapper around
5797                 # the Linux version.
5798                 NSSSONAMEVERSIONSUFFIX=".1"
5799                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5800                     ../nsswitch/winbind_nss_linux.o"
5801                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5802                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5803                 ;;
5804         *hpux11*)
5805                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5806                 ;;
5807         *aix*)
5808                 # AIX has even differently named shared libraries.  No
5809                 # WINS support has been implemented yet.
5810                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5811                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5812                 WINBIND_NSS="../nsswitch/WINBIND"
5813                 WINBIND_WINS_NSS=""
5814                 ;;
5815         *)
5816                 HAVE_WINBIND=no
5817                 winbind_no_reason=", unsupported on $host_os"
5818                 ;;
5819 esac
5821 # Check the setting of --with-winbind
5823 AC_ARG_WITH(winbind,
5824 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5826   case "$withval" in
5827         yes)
5828                 HAVE_WINBIND=yes
5829                 HAVE_WBCLIENT=no
5830                 ;;
5831         no)
5832                 HAVE_WINBIND=no
5833                 winbind_reason=""
5834                 ;;
5835   esac ],
5838 # We need unix domain sockets for winbind
5840 if test x"$HAVE_WINBIND" = x"yes"; then
5841         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5842                 winbind_no_reason=", no unix domain socket support on $host_os"
5843                 HAVE_WINBIND=no
5844         fi
5847 # Display test results
5849 if test x"$HAVE_WINBIND" = x"no"; then
5850         WINBIND_NSS=""
5851         WINBIND_WINS_NSS=""
5853 if test x"$HAVE_WBCLIENT" = x"yes"; then
5854         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
5855                      [WINBIND_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
5856         WINBIND_LIBS="$WINBIND_LIBS $WBCLIENT_LDFLAGS"
5857         AC_MSG_RESULT(yes)
5858         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
5859         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5860 else
5861         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5862                 BUILD_LIBWBCLIENT_SHARED=no
5863         else
5864                 BUILD_LIBWBCLIENT_SHARED=yes
5865         fi
5867         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5868         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5869         LIBWBCLIENT_SOVER=0
5870         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5871                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5872                 ## Only worry about libwbclient if we have shared
5873                 # library support
5874                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5875                 LIBWBCLIENT=libwbclient
5876                 INSTALL_LIBWBCLIENT=installlibwbclient
5877                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5878                 WINBIND_LIBS="-lwbclient"
5879         else
5880                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5881         fi
5884 if test x"$HAVE_WINBIND" = x"yes"; then
5885         AC_MSG_RESULT(yes)
5886         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5888         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5889         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5890         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5891                 PAM_MODULES="$PAM_MODULES pam_winbind"
5892                 INSTALL_PAM_MODULES="installpammodules"
5893                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5894         fi
5895 else
5896         AC_MSG_RESULT(no$winbind_no_reason)
5899 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5900                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5902 AC_SUBST(WINBIND_NSS_PTHREAD)
5903 AC_SUBST(WINBIND_NSS)
5904 AC_SUBST(WINBIND_WINS_NSS)
5905 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5906 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5907 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5908 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5909 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5911 AC_SUBST(WINBIND_KRB5_LOCATOR)
5913 # Solaris 10 does have new member in nss_XbyY_key
5914 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5915                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5916                 [#include <nss_dbdefs.h>])
5918 # Solaris has some extra fields in struct passwd that need to be
5919 # initialised otherwise nscd crashes.
5921 AC_CHECK_MEMBER(struct passwd.pw_comment,
5922                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5923                 [#include <pwd.h>])
5925 AC_CHECK_MEMBER(struct passwd.pw_age,
5926                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5927                 [#include <pwd.h>])
5929 # AIX 4.3.x and 5.1 do not have as many members in
5930 # struct secmethod_table as AIX 5.2
5931 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5932        [#include <usersec.h>])
5933 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5934        [#include <usersec.h>])
5936 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5937 AC_TRY_COMPILE([#include <sys/types.h>
5938 #include <sys/socket.h>],
5939 [struct ucred cred;
5940  socklen_t cred_len;
5941  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5943 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5944 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5945     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5949 #################################################
5950 # Check to see if we should use the included popt
5952 AC_ARG_WITH(included-popt,
5953 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5955   case "$withval" in
5956         yes)
5957                 INCLUDED_POPT=yes
5958                 ;;
5959         no)
5960                 INCLUDED_POPT=no
5961                 ;;
5962   esac ],
5964 if test x"$INCLUDED_POPT" != x"yes"; then
5965     AC_CHECK_LIB(popt, poptGetContext,
5966                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5969 AC_MSG_CHECKING(whether to use included popt)
5970 if test x"$INCLUDED_POPT" = x"yes"; then
5971     AC_MSG_RESULT(yes)
5972     BUILD_POPT='$(POPT_OBJ)'
5973     POPTLIBS='$(POPT_OBJ)'
5974     FLAGS1="-I\$(srcdir)/../lib/popt"
5975 else
5976     AC_MSG_RESULT(no)
5977         BUILD_POPT=""
5978     POPTLIBS="-lpopt"
5980 AC_SUBST(BUILD_POPT)
5981 AC_SUBST(POPTLIBS)
5982 AC_SUBST(FLAGS1)
5984 #################################################
5985 # Check if user wants DNS service discovery support
5987 AC_ARG_ENABLE(dnssd,
5988 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5990 AC_SUBST(DNSSD_LIBS)
5991 if test x"$enable_dnssd" != x"no"; then
5992     have_dnssd_support=yes
5994     AC_CHECK_HEADERS(dns_sd.h)
5995     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5996         have_dnssd_support=no
5997     fi
5999     # On Darwin the DNSSD API is in libc, but on other platforms it's
6000     # probably in -ldns_sd
6001     AC_CHECK_FUNCS(DNSServiceRegister)
6002     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6003     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6004             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6005         have_dnssd_support=no
6006     fi
6008     if test x"$have_dnssd_support" = x"yes"; then
6009         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6010                 [Whether to enable DNS service discovery support])
6011     else
6012         if test x"$enable_dnssd" = x"yes"; then
6013             AC_MSG_ERROR(DNS service discovery support not available)
6014         fi
6015     fi
6019 #################################################
6020 # Check to see if we should use the included iniparser
6022 AC_ARG_WITH(included-iniparser,
6023 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6025   case "$withval" in
6026         yes)
6027                 INCLUDED_INIPARSER=yes
6028                 ;;
6029         no)
6030                 INCLUDED_INIPARSER=no
6031                 ;;
6032   esac ],
6034 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6035     AC_CHECK_LIB(iniparser, iniparser_load,
6036                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6039 AC_MSG_CHECKING(whether to use included iniparser)
6040 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6041     AC_MSG_RESULT(yes)
6042     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6043         INIPARSERLIBS=""
6044     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6045 else
6046     AC_MSG_RESULT(no)
6047         BUILD_INIPARSER=""
6048     INIPARSERLIBS="-liniparser"
6050 AC_SUBST(BUILD_INIPARSER)
6051 AC_SUBST(INIPARSERLIBS)
6052 AC_SUBST(FLAGS1)
6056 # Checks for the vfs_fileid module
6057 # Start
6058 AC_CHECK_FUNC(getmntent)
6060 AC_CHECK_HEADERS(sys/statfs.h)
6062 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6063 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6064              AC_TRY_RUN([
6065                 #include <sys/types.h>
6066                 #include <sys/statfs.h>
6067                 int main(void)
6068                 {
6069                         struct statfs fsd;
6070                         fsid_t fsid = fsd.f_fsid;
6071                         return statfs (".", &fsd);
6072                 }],
6073                 vfsfileid_cv_statfs=yes,
6074                 vfsfileid_cv_statfs=no,
6075                 vfsfileid_cv_statfs=cross)
6077 AC_MSG_RESULT($vfsfileid_cv_statfs)
6079 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6080         x"$vfsfileid_cv_statfs" = x"yes"; then
6081         default_shared_modules="$default_shared_modules vfs_fileid"
6083 # End
6084 # Checks for the vfs_fileid module
6087 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6089         eval MODULE_DEFAULT_$i=STATIC
6090 done
6092 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6094         dnl Fall back to static if we cannot build shared libraries
6095         eval MODULE_DEFAULT_$i=STATIC
6097         if test $BLDSHARED = true; then
6098                 eval MODULE_DEFAULT_$i=SHARED
6099         fi
6100 done
6102 dnl Always build these modules static
6103 MODULE_rpc_spoolss2=STATIC
6104 MODULE_rpc_srvsvc=STATIC
6105 MODULE_idmap_tdb=STATIC
6106 MODULE_idmap_passdb=STATIC
6107 MODULE_idmap_nss=STATIC
6109 MODULE_nss_info_template=STATIC
6111 AC_ARG_WITH(static-modules,
6112 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6113 [ if test $withval; then
6114         for i in `echo $withval | sed -e 's/,/ /g'`
6115         do
6116                 eval MODULE_$i=STATIC
6117         done
6118 fi ])
6120 AC_ARG_WITH(shared-modules,
6121 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6122 [ if test $withval; then
6123         for i in `echo $withval | sed -e 's/,/ /g'`
6124         do
6125                         eval MODULE_$i=SHARED
6126         done
6127 fi ])
6129 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6130                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6131 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6132 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6133 SMB_MODULE(pdb_onefs_sam, passdb/pdb_onefs_sam.o, "bin/onefs_sam.$SHLIBEXT", PDB)
6134 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6137 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6138 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6139 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6140 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6141 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6142 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6143 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6144 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6145 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6146 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6147 SMB_MODULE(rpc_spoolss2, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss2.$SHLIBEXT", RPC)
6148 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6149 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6150 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6151 SMB_SUBSYSTEM(RPC,smbd/server.o)
6153 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6154 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6155 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6156 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6157 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6158 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6159 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6160 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6161 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6162 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6164 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6165 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6167 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6168 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6169 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6170 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6171 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6173 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6174 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6175 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6176 SMB_MODULE(auth_onefs_wb, \$(AUTH_ONEFS_WB_OBJ), "bin/onefs_wb.$SHLIBEXT", AUTH)
6177 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6178 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6179 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6180 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6181 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6182 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6184 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6185 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6186 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6187 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6188 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6189 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6190 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6191 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6192 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6193 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6194 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6195 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6196 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6197 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6198 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6199 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6200 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6201 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6202 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6203 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6204 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6205 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6206 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6207 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6208 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6209 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6210 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6211 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6212 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6213 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6214 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6215 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6216 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6217 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6218 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6219 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6220 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6221 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6222 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6223 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6224 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6226 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6228 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6229 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6230 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6232 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6233 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6234 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6235 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6237 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6239 #################################################
6240 # do extra things if we are running insure
6242 if test "${ac_cv_prog_CC}" = "insure"; then
6243         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6246 #################################################
6247 # If run from the build farm, enable NASTY hacks
6248 #################################################
6249 AC_MSG_CHECKING(whether to enable build farm hacks)
6250 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6251         AC_MSG_RESULT(yes)
6252         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6253 else
6254         AC_MSG_RESULT(no)
6257 #################################################
6258 # check for bad librt/libpthread interactions
6260 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6261     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6262     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6263     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6265 SMB_IF_RTSIGNAL_BUG(
6266         [
6267             # Have RT_SIGNAL bug, need to check whether the problem will
6268             # affect anything we have configured.
6270             rt_do_error=no
6271             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6272                 if test x"$rt_signal_lease_ok" = x"no" ; then
6273                     rt_do_error=yes
6274                 fi
6275             fi
6277             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6278                 if test x"$rt_signal_notify_ok" = x"no" ; then
6279                     rt_do_error=yes
6280                 fi
6281             fi
6283             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6284                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6285                 if test x"$rt_signal_aio_ok" = x"no" ; then
6286                     rt_do_error=yes
6287                 fi
6288             fi
6290             if test x"$rt_do_error" = x"yes" ; then
6291                 SMB_IS_LIBPTHREAD_LINKED(
6292                     [
6293                         cat<<MSG
6295 *** On this platforms, linking Samba against pthreads causes problems
6296 *** with the oplock and change notification mechanisms. You may be
6297 *** using pthreads as a side-effect of using the --with-aio-support
6298 *** or --with-profiling-data options. Please remove these and try again.
6301                     ],
6302                     [
6303                         cat<<MSG
6305 *** On this platform, the oplock and change notification mechanisms do not
6306 *** appear to work. Please report this problem to samba-technical@samba.org
6307 *** and attach the config.log file from this directory.
6310                     ])
6311                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6312             fi
6313         ],
6314         [
6315             # no RT_SIGNAL bug, we are golden
6316             SMB_IS_LIBPTHREAD_LINKED(
6317                 [
6318                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6319                 ])
6321         ],
6322         [
6323             # cross compiling, I hope you know what you are doing
6324             true
6325         ])
6329 AC_ARG_ENABLE(merged-build, 
6330 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6331 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6333 m4_include(../lib/zlib/zlib.m4)
6335 if test x$enable_merged_build = xauto; then
6336         # Check for python
6337         m4_include(../m4/check_python.m4)
6338         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6340         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6341         AC_MSG_RESULT([$merged_build_possible])
6343         # Enable merged build automatically if possible, when in developer mode
6344         if test "x$developer" = xyes; then
6345                 enable_merged_build=$merged_build_possible
6346         fi
6349 if test x$enable_merged_build = xyes; then
6350         MERGED_BUILD=1
6351         saved_USESHARED="$USESHARED"
6352         USESHARED="false"
6353         m4_include(samba4.m4)
6354         USESHARED="$saved_USESHARED"
6357 AC_SUBST(ZLIB_LIBS)
6358 AC_SUBST(ZLIB_OBJS)
6359 AC_ZLIB([ZLIB_OBJS=""], [
6360         ZLIB_LIBS=""
6361         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6362                      deflate.o trees.o zutil.o inflate.o infback.o \
6363                          inftrees.o inffast.o
6364         do
6365                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6366         done
6367         CFLAGS="-I../lib/zlib $CFLAGS"
6370 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6371 LIB_REMOVE_USR_LIB(LDFLAGS)
6372 LIB_REMOVE_USR_LIB(LIBS)
6373 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6375 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6376 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6377 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6379 #################################################
6380 # Display summary of libraries detected
6382 AC_MSG_RESULT([Using libraries:])
6383 AC_MSG_RESULT([    LIBS = $LIBS])
6384 if test x"$with_ads_support" != x"no"; then
6385     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6387 if test x"$with_ldap_support" != x"no"; then
6388     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6390 if test x"$with_dnsupdate_support" != x"no"; then
6391     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6393 if test x"$have_dnssd_support" != x"no"; then
6394     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6396 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6398 #################################################
6399 # final configure stuff
6401 AC_MSG_CHECKING([configure summary])
6402 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6403            AC_MSG_RESULT(yes),
6404            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6405            AC_MSG_WARN([cannot run when cross-compiling]))
6407 dnl Merge in developer cflags from now on
6408 AC_SUBST(DEVELOPER_CFLAGS)
6409 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6410     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6413 # Stuff the smbd-only libraries at the end of the smbd link
6414 # path (if we have them).
6415 SMBD_LIBS="$samba_dmapi_libs"
6416 AC_SUBST(SMBD_LIBS)
6418 CFLAGS="${CFLAGS} \$(FLAGS)"
6420 if test x$MERGED_BUILD != x1; then
6421         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6422 else
6423         if test x"$BLDSHARED" = x"true" ; then
6424                 LDFLAGS="$LDFLAGS -L./bin"
6425         fi
6428 AC_SUBST(MAKEFILE)
6429 if test x$samba_cv_gnu_make = xyes; then
6430         MAKEFILE=Makefile
6431 else
6432         # When we don't have GNU Make, generate a copy of Makefile.in 
6433         # that doesn't have the "include " statements but just includes 
6434         # the files verbatim.
6435         MAKEFILE=Makefile-noincludes
6436         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6438 AC_OUTPUT($MAKEFILE
6439           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6440           lib/netapi/examples/Makefile
6441           lib/netapi/tests/Makefile
6442           pkgconfig/smbclient.pc
6443           pkgconfig/wbclient.pc
6444           pkgconfig/netapi.pc
6445           pkgconfig/smbsharemodes.pc
6446           ../examples/libsmbclient/Makefile.internal
6447           )
6448 dnl If we had to expand the includes, make tsure the output file is moved back
6449 AC_OUTPUT_COMMANDS([
6450 if test x$MAKEFILE != Makefile; then
6451         mv $MAKEFILE Makefile
6455 #################################################
6456 # Print very concise instructions on building/use
6457 if test "x$enable_dmalloc" = xyes
6458 then
6459         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6460         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])