S3: New module interface for SMB message statistics gathering
[samba.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
5
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
7
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])
11
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
17
18 builddir=`pwd`
19 AC_SUBST(builddir)
20
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
23
24 AC_LIBREPLACE_CC_CHECKS
25
26 m4_include(../lib/talloc/libtalloc.m4)
27
28 LIBTALLOC_OBJ0=""
29 for obj in ${TALLOC_OBJ}; do
30         LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(LIBTALLOC_OBJ0)
33
34 m4_include(../lib/tevent/libtevent.m4)
35
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}"
42
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)
49
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
57
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-.}/.."
67
68 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
69
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"`
73 fi
74
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)
93
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)
103
104 AC_SUBST(LIBSAMBAUTIL_SHARED)
105
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)
130
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"
138 fi
139 if test "x$debug" = "xyes" ; then
140         CFLAGS="${CFLAGS} -g"
141 else
142         CFLAGS="${CFLAGS} -O"
143 fi
144
145 m4_include(../lib/socket_wrapper/config.m4)
146 m4_include(../lib/nss_wrapper/config.m4)
147
148 m4_include(m4/swat.m4)
149
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        ])
168
169         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
170             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
171         fi
172
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
189
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
195
196        if test x"$picky_developer" = x"yes"; then
197             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
198        fi
199 fi
200
201 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
202
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"  
209 fi
210
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)
228 )
229
230 dnl Checks for programs.
231 merged_build_possible=yes
232
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])
238
239 # Check for perl
240 m4_include(../m4/check_perl.m4)
241 AC_SAMBA_PERL([true], [merged_build_possible=no])
242
243 AC_CHECK_TOOL(AR, ar)
244
245 dnl Check if we use GNU ld
246 LD=ld
247 AC_PROG_LD_GNU
248
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
285 fi
286
287 dnl look for executable suffix
288 AC_EXEEXT
289
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=#
296 fi
297 AC_SUBST(BROKEN_CC)
298
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"
331 fi
332 fi
333 fi
334
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(
342 [
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;
348
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                 }
357
358                 return 0;
359         }
360 ],
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"
365 fi
366
367 dnl Figure out the flags to support named structure initializers
368
369 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
370
371 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
372 AC_MSG_CHECKING(uname -s)
373 AC_MSG_RESULT(${UNAME_S})
374
375 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
376 AC_MSG_CHECKING(uname -r)
377 AC_MSG_RESULT(${UNAME_R})
378
379 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
380 AC_MSG_CHECKING(uname -m)
381 AC_MSG_RESULT(${UNAME_M})
382
383 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
384 AC_MSG_CHECKING(uname -p)
385 AC_MSG_RESULT(${UNAME_P})
386
387 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
388 AC_MSG_CHECKING(uname -i)
389 AC_MSG_RESULT(${UNAME_I})
390
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
411
412 DYNEXP=
413 AC_SUBST(DYNEXP)
414
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"
418
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"
421
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"
425 fi
426
427 #
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.
431 #
432 case "$host_os" in
433     *hpux*)
434 #
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.
438 #
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       ;;
445
446 #
447 # CRAY Unicos has broken const handling
448        *unicos*)
449           AC_MSG_RESULT([disabling const])
450           CPPFLAGS="$CPPFLAGS -Dconst="
451           ;;
452         
453 #
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.
456 #
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       ;;
462 #
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.
469 #
470 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
471 #
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                 ;;
506 #
507 # IRIX uses SYSV printing.  Make sure to set that here
508 #
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                 ;;
515 #
516 # VOS may need to have POSIX support and System V compatibility enabled.
517 #
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     ;;
535 #
536 # Tests needed for SINIX large file support.
537 #
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     ;;
563
564 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
565 #
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;
580
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__;
585
586        if (libc_major < 2)
587               exit(1);
588        if (libc_minor < 2)
589               exit(1);
590 #endif
591
592        /* Ensure this is kernel 2.4 or higher */
593
594        uname(&uts);
595        release = strdup(uts.release);
596        major = atoi(strsep(&release, "."));
597        minor = atoi(strsep(&release, "."));
598
599        if (major > 2 || (major == 2 && minor > 3))
600                exit(0);
601        exit(1);
602 #else
603        exit(1);
604 #endif
605 }
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         ;;
616
617 #
618 # MacOS X is the *only* system that uses compose character in utf8. This
619 # is so horribly broken....
620 #
621     *darwin*)
622         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
623
624 # Add a system specific charset module.
625         default_shared_modules="$default_shared_modules charset_macosxfs"
626
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     ;;
649
650 esac
651
652 SAVE_CPPFLAGS="${CPPFLAGS}"
653 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
654
655 AC_LIBREPLACE_BROKEN_CHECKS
656 AC_LIBREPLACE_NETWORK_CHECKS
657
658 CPPFLAGS="${SAVE_CPPFLAGS}"
659
660 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
661
662 LIBREPLACE_OBJS=""
663 for obj in ${LIBREPLACEOBJ}; do
664         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
665 done
666 AC_SUBST(LIBREPLACE_OBJS)
667
668 # add -ldl to the global LIBS
669 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
670 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
671
672
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)
686
687 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
688 #if HAVE_RPC_RPC_H
689 #include <rpc/rpc.h>
690 #endif
691 ]])
692
693 ## These fail to compile on IRIX so just check for their presence
694 AC_CHECK_HEADERS(sys/mode.h,,,)
695
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"
701
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)
705
706 # check for linux on amd64 since valgrind is not quite there yet
707 case "$host_os" in
708         *linux*)
709                 case "$UNAME_P" in
710                         *x86_64*)
711                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
712                                 ;;
713                 esac
714                 ;;
715 esac
716
717
718 #
719 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
720 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
721 #
722 case "$host_os" in
723     *hpux*)
724                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
725                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
726                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
727                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
728                 fi
729         ;;
730 esac
731 AC_CHECK_HEADERS(shadow.h)
732 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
733 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
734
735 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
736 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
737
738 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
739
740 # For experimental utmp support (lastlog on some BSD-like systems)
741 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
742
743 AC_CHECK_SIZEOF(int,cross)
744 AC_CHECK_SIZEOF(long,cross)
745 AC_CHECK_SIZEOF(long long,cross)
746 AC_CHECK_SIZEOF(short,cross)
747
748 AC_C_CONST
749 AC_C_INLINE
750 AC_C_BIGENDIAN
751 AC_C_CHAR_UNSIGNED
752
753 AC_TYPE_SIGNAL
754 AC_TYPE_UID_T
755 AC_TYPE_MODE_T
756 AC_TYPE_OFF_T
757 AC_TYPE_SIZE_T
758 AC_TYPE_PID_T
759 AC_STRUCT_ST_RDEV
760 AC_DIRENT_D_OFF
761 AC_CHECK_TYPE(ssize_t, int)
762 AC_CHECK_TYPE(wchar_t, unsigned short)
763
764 ############################################
765 # for cups support we need libcups, and a handful of header files
766
767 AC_ARG_ENABLE(cups,
768 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
769
770 if test x$enable_cups != xno; then
771         AC_PATH_PROG(CUPS_CONFIG, cups-config)
772
773         if test "x$CUPS_CONFIG" != x; then
774
775                 ac_save_CFLAGS=$CFLAGS
776                 ac_save_LDFLAGS=$LDFLAGS
777                 ac_save_PRINT_LIBS=$PRINT_LIBS
778                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
779                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
780                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
781                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
782                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
783                         x"$ac_cv_header_cups_language_h" = xyes; then
784                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
785                         samba_cv_HAVE_CUPS=yes
786                 else
787                         AC_MSG_WARN([cups-config around but cups-devel not installed])
788                         CFLAGS=$ac_save_CFLAGS
789                         LDFLAGS=$ac_save_LDFLAGS
790                         PRINT_LIBS=$ac_save_PRINT_LIBS
791                 fi
792
793         elif test x"$enable_cups" = x"yes"; then
794                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
795         fi
796 fi
797
798 AC_ARG_ENABLE(iprint,
799 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
800
801 if test x$enable_iprint != xno; then
802         if test x"$samba_cv_HAVE_CUPS" = xyes; then
803                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
804         elif test x"$enable_iprint" = x"yes"; then
805                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
806         fi
807 fi
808
809 ############################################
810 # check if the compiler will optimize out function calls
811 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
812     AC_TRY_LINK([
813 #include <stdio.h>],
814 [
815                 if (0) {
816                    this_function_does_not_exist();
817                 } else {
818                   return 1;
819                 }
820
821 ],
822         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
823 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
824    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
825 fi
826
827 #############################################
828 # check for fd passing struct via msg_control
829 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
830     AC_TRY_COMPILE([
831 #include <sys/types.h>
832 #include <stdlib.h>
833 #include <stddef.h>
834 #include <sys/socket.h>
835 #include <sys/un.h>],
836 [
837         struct msghdr msg;
838         union {
839               struct cmsghdr cm;
840               char control[CMSG_SPACE(sizeof(int))];
841         } control_un;
842         msg.msg_control = control_un.control;
843         msg.msg_controllen = sizeof(control_un.control);
844 ],
845         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
846 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
847    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
848              [If we can use msg_control for passing file descriptors])
849 fi
850
851 #############################################
852 # check for fd passing struct via msg_acctrights
853 AC_CACHE_CHECK([for fd passing via msg_acctrights],
854                 samba_cv_msghdr_msg_acctrights, [
855     AC_TRY_COMPILE([
856 #include <sys/types.h>
857 #include <stdlib.h>
858 #include <stddef.h>
859 #include <sys/socket.h>
860 #include <sys/un.h>],
861 [
862         struct msghdr msg;
863         int fd;
864         msg.msg_acctrights = (caddr_t) &fd;
865         msg.msg_acctrightslen = sizeof(fd);
866 ],
867         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
868 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
869    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
870              [If we can use msg_acctrights for passing file descriptors])
871 fi
872
873 AC_CHECK_FUNCS(dirfd)
874 if test x"$ac_cv_func_dirfd" = x"yes"; then
875         default_shared_modules="$default_shared_modules vfs_syncops"
876 fi
877
878 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
879     AC_TRY_COMPILE([
880 #include <sys/types.h>
881 #if STDC_HEADERS
882 #include <stdlib.h>
883 #include <stddef.h>
884 #endif
885 #include <signal.h>],[struct sigevent s;],
886         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
887 if test x"$samba_cv_struct_sigevent" = x"yes"; then
888    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
889    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
890         [#include <signal.h>])
891 fi
892
893 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
894     AC_TRY_COMPILE([
895 #include <sys/types.h>
896 #if STDC_HEADERS
897 #include <stdlib.h>
898 #include <stddef.h>
899 #endif
900 #if TIME_WITH_SYS_TIME
901 # include <sys/time.h>
902 # include <time.h>
903 #else
904 # if HAVE_SYS_TIME_H
905 #  include <sys/time.h>
906 # else
907 #  include <time.h>
908 # endif
909 #endif
910 ],[struct timespec ts;],
911         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
912 if test x"$samba_cv_struct_timespec" = x"yes"; then
913    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
914 fi
915
916 # and glibc has setresuid under linux but the function does
917 # nothing until kernel 2.1.44! very dumb.
918 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
919     AC_TRY_RUN([#include <errno.h>
920 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
921         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
922 if test x"$samba_cv_have_setresuid" = x"yes"; then
923     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
924 fi
925
926 # Do the same check for setresguid...
927 #
928 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
929     AC_TRY_RUN([#include <unistd.h>
930 #include <errno.h>
931 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
932         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
933 if test x"$samba_cv_have_setresgid" = x"yes"; then
934     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
935 fi
936
937 AC_FUNC_MEMCMP
938
939 ###############################################
940 # Readline included by default unless explicitly asked not to
941 test "${with_readline+set}" != "set" && with_readline=yes
942
943 # test for where we get readline() from
944 AC_MSG_CHECKING(whether to use readline)
945 AC_ARG_WITH(readline,
946 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
947 [  case "$with_readline" in
948   yes)
949     AC_MSG_RESULT(yes)
950
951     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
952     AC_CHECK_HEADERS(readline/history.h)
953
954     AC_CHECK_HEADERS(readline.h readline/readline.h,[
955       for termlib in ncurses curses termcap terminfo termlib tinfo; do
956        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
957       done
958       AC_CHECK_LIB(readline, rl_callback_handler_install,
959        [TERMLIBS="-lreadline $TERMLIBS"
960        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
961        break], [TERMLIBS=], $TERMLIBS)])
962     ;;
963   no)
964     AC_MSG_RESULT(no)
965     ;;
966   *)
967     AC_MSG_RESULT(yes)
968
969     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
970     # alternate readline path
971     _ldflags=${LDFLAGS}
972     _cppflags=${CPPFLAGS}
973
974     # Add additional search path
975     LDFLAGS="-L$with_readline/lib $LDFLAGS"
976     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
977
978     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
979     AC_CHECK_HEADERS(readline/history.h)
980
981     AC_CHECK_HEADERS(readline.h readline/readline.h,[
982       for termlib in ncurses curses termcap terminfo termlib; do
983        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
984       done
985       AC_CHECK_LIB(readline, rl_callback_handler_install,
986        [TERMLDFLAGS="-L$with_readline/lib"
987        TERMCPPFLAGS="-I$with_readline/include"
988        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
989        TERMLIBS="-lreadline $TERMLIBS"
990        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
991        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
992
993     LDFLAGS=$_ldflags
994     ;;
995   esac],
996   AC_MSG_RESULT(no)
997 )
998 AC_SUBST(TERMLIBS)
999 AC_SUBST(TERMLDFLAGS)
1000
1001 # The readline API changed slightly from readline3 to readline4, so
1002 # code will generate warnings on one of them unless we have a few
1003 # special cases.
1004 AC_CHECK_LIB(readline, rl_completion_matches,
1005              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1006                         [Do we have rl_completion_matches?])],
1007              [],
1008              [$TERMLIBS])
1009
1010 # not all readline libs have rl_event_hook or history_list
1011 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1012 AC_CHECK_LIB(readline, history_list,
1013              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1014              [],
1015              [$TERMLIBS])
1016
1017 ###############################################
1018 # test for where we get yp_get_default_domain() from
1019 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1020 AC_CHECK_FUNCS(yp_get_default_domain)
1021
1022 # Check if we have execl, if not we need to compile smbrun.
1023 AC_CHECK_FUNCS(execl)
1024 if test x"$ac_cv_func_execl" = x"no"; then
1025     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1026 fi
1027
1028 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1029 AC_CHECK_FUNCS(strtol)
1030 AC_CHECK_FUNCS(strchr chflags)
1031 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1032 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1033 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1034 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1035 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1036 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1037 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1038 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1039 AC_CHECK_FUNCS(getpwent_r)
1040 AC_CHECK_FUNCS(getdents64)
1041 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1042 AC_CHECK_FUNCS(syslog vsyslog timegm)
1043 AC_CHECK_FUNCS(setlocale nl_langinfo)
1044 AC_CHECK_FUNCS(nanosleep)
1045 AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)
1046 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1047 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1048 AC_CHECK_HEADERS(sys/mman.h)
1049 # setbuffer, shmget, shm_open are needed for smbtorture
1050 AC_CHECK_FUNCS(shmget shm_open)
1051 AC_CHECK_FUNCS(gettext dgettext)
1052
1053 # Find a method of generating a stack trace
1054 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1055 # libexecinfo provides backtrace_symbols on FreeBSD
1056 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1057 AC_CHECK_FUNCS(backtrace_symbols)
1058 AC_CHECK_LIB(exc, trace_back_stack)
1059
1060 printf "%s" "checking for GPFS GPL libs... "
1061 save_LIBS="$LIBS"
1062 LIBS="$LIBS -lgpfs_gpl"
1063 AC_TRY_LINK([#include <gpfs_gpl.h>],
1064           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1065           samba_cv_HAVE_GPFS=yes,
1066           samba_cv_HAVE_GPFS=no)
1067 echo $samba_cv_HAVE_GPFS
1068 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1069     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1070     default_shared_modules="$default_shared_modules vfs_gpfs"
1071 fi
1072 LIBS="$save_LIBS"
1073
1074 printf "%s" "checking for GPFS libs (with 3.2.1 PTF8 available as GPL)... "
1075 save_LIBS="$LIBS"
1076 LIBS="$LIBS -lgpfs"
1077 AC_TRY_LINK([#include <gpfs.h>],
1078           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1079           samba_cv_HAVE_GPFS=yes,
1080           samba_cv_HAVE_GPFS=no)
1081 echo $samba_cv_HAVE_GPFS
1082 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1083     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1084     default_shared_modules="$default_shared_modules vfs_gpfs"
1085 fi
1086 LIBS="$save_LIBS"
1087
1088 #############################################
1089 # check if building on Isilon OneFS
1090 printf "%s" "checking for Isilon OneFS... "
1091 save_LIBS="$LIBS"
1092 LIBS="$LIBS -lisi_version"
1093 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1094           [get_isilon_copyright()],
1095           samba_cv_HAVE_ONEFS=yes,
1096           samba_cv_HAVE_ONEFS=no)
1097 echo $samba_cv_HAVE_ONEFS
1098 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1099     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1100     default_shared_modules="$default_shared_modules vfs_onefs"
1101     ONEFS_LIBS="-lisi_acl"
1102 fi
1103 AC_SUBST(ONEFS_LIBS)
1104 LIBS="$save_LIBS"
1105
1106 # Note that all the libunwind symbols in the API are defined to internal
1107 # platform-specific version, so we must include libunwind.h before checking
1108 # any of them.
1109 AC_MSG_CHECKING([for libunwind])
1110 save_LIBS=$LIBS
1111
1112 UNWIND_ARCH="unknown"
1113 if test x"$UNAME_I" != x"unknown"; then
1114         UNWIND_ARCH="$UNAME_I"
1115 elif test x"$UNAME_M" != x"unknown"; then
1116         UNWIND_ARCH="$UNAME_M"
1117 elif test x"$UNAME_P" != x"unknown"; then
1118         UNWIND_ARCH="$UNAME_P"
1119 fi
1120
1121 case "$UNWIND_ARCH" in
1122         unknown)
1123                 # This probably won't link without
1124                 # the platform-specific libunwind.
1125                 LIBS="$LIBS -lunwind"
1126                 ;;
1127         i386|i586|i686)
1128                 # Add the platform-specific libunwind module.
1129                 LIBS="$LIBS -lunwind -lunwind-x86"
1130                 ;;
1131         *)
1132                 # Add the platform-specific libunwind module.
1133                 # based on uname -i, uname -m or uname -p
1134                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1135                 ;;
1136 esac
1137
1138 AC_TRY_LINK(
1139     [
1140 #ifdef HAVE_LIBUNWIND_H
1141 #include <libunwind.h>
1142 #endif
1143     ],
1144     [
1145         unw_context_t ctx; unw_cursor_t cur;
1146         char buf[256]; unw_word_t off;
1147         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1148         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1149     ],
1150     [
1151         AC_MSG_RESULT(yes)
1152         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1153
1154         # If we have libunwind, test whether we also have libunwind-ptrace
1155         # which would let us unwind arbitrary processes.
1156         save_LIBS=$LIBS
1157         AC_CHECK_HEADERS(libunwind-ptrace.h)
1158         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1159             [
1160                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1161                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1162                     [Whether libunwind-ptrace.a is available.])
1163             ],
1164             [ LIBUNWIND_PTRACE="" ])
1165
1166         LIBS=$save_LIBS
1167     ],
1168     [
1169         AC_MSG_RESULT(no)
1170         LIBS=$save_LIBS
1171     ])
1172
1173 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1174 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1175     AC_CHECK_HEADERS(sys/ptrace.h)
1176     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1177     AC_TRY_LINK(
1178             [
1179 #if HAVE_SYS_TYPES_H
1180 #include <sys/types.h>
1181 #endif
1182 #if HAVE_SYS_PTRACE_H
1183 #include <sys/ptrace.h>
1184 #endif
1185             ],
1186             [
1187                 int main(int argc, const char ** argv)
1188                 {
1189                         pid_t me = (pid_t)-1;
1190                         ptrace(PTRACE_ATTACH, me, 0, 0);
1191                         ptrace(PTRACE_DETACH, me, 0, 0);
1192                         return 0;
1193                 }
1194             ],
1195             [
1196                 AC_MSG_RESULT(yes)
1197                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1198                     [Whether the Linux ptrace(2) interface is available.])
1199             ],
1200             [
1201                 AC_MSG_RESULT(no)
1202                 LIBUNWIND_PTRACE=""
1203             ])
1204 fi
1205
1206 AC_SUBST(LIBUNWIND_PTRACE)
1207
1208 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1209 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1210 AC_CHECK_FUNCS(__getcwd _getcwd)
1211 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1212 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1213 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1214 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1215 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1216 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1217 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1218 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1219 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1220 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1221 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1222 AC_CHECK_FUNCS(prctl)
1223
1224 AC_TRY_COMPILE([
1225 #ifdef HAVE_SYS_PRCTL_H
1226 #include <sys/prctl.h>
1227 #endif
1228 ],
1229 [int i; i = prtcl(0); ],
1230 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1231
1232 #
1233 #
1234 #
1235 case "$host_os" in
1236     *linux*)
1237        # glibc <= 2.3.2 has a broken getgrouplist
1238        AC_TRY_RUN([
1239 #include <unistd.h>
1240 #include <sys/utsname.h>
1241 main() {
1242        /* glibc up to 2.3 has a broken getgrouplist */
1243 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1244        int libc_major = __GLIBC__;
1245        int libc_minor = __GLIBC_MINOR__;
1246
1247        if (libc_major < 2)
1248               exit(1);
1249        if ((libc_major == 2) && (libc_minor <= 3))
1250               exit(1);
1251 #endif
1252        exit(0);
1253 }
1254 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1255        if test x"$linux_getgrouplist_ok" = x"yes"; then
1256           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1257        fi
1258        ;;
1259     *)
1260        AC_CHECK_FUNCS(getgrouplist)
1261        ;;
1262 esac
1263
1264 #
1265 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1266 #
1267
1268 if test x$ac_cv_func_stat64 = xno ; then
1269   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1270   AC_TRY_LINK([
1271 #if defined(HAVE_UNISTD_H)
1272 #include <unistd.h>
1273 #endif
1274 #include <sys/stat.h>
1275 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1276   AC_MSG_RESULT([$ac_cv_func_stat64])
1277   if test x$ac_cv_func_stat64 = xyes ; then
1278     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1279   fi
1280 fi
1281
1282 if test x$ac_cv_func_lstat64 = xno ; then
1283   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1284   AC_TRY_LINK([
1285 #if defined(HAVE_UNISTD_H)
1286 #include <unistd.h>
1287 #endif
1288 #include <sys/stat.h>
1289 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1290   AC_MSG_RESULT([$ac_cv_func_lstat64])
1291   if test x$ac_cv_func_lstat64 = xyes ; then
1292     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1293   fi
1294 fi
1295
1296 if test x$ac_cv_func_fstat64 = xno ; then
1297   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1298   AC_TRY_LINK([
1299 #if defined(HAVE_UNISTD_H)
1300 #include <unistd.h>
1301 #endif
1302 #include <sys/stat.h>
1303 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1304   AC_MSG_RESULT([$ac_cv_func_fstat64])
1305   if test x$ac_cv_func_fstat64 = xyes ; then
1306     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1307   fi
1308 fi
1309
1310 #################################################
1311 # Check whether struct stat has timestamps with sub-second resolution.
1312 # At least IRIX and Solaris have these.  FREEBSD does as well,
1313 # but with different members
1314 #
1315 # We check that
1316 #       all of st_mtim, st_atim and st_ctim exist
1317 #       all of the members are in fact of type struct timespec
1318 #
1319 # There is some conflicting standards weirdness about whether we should use
1320 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1321 # prefer struct timespec.
1322 AC_CACHE_CHECK([whether struct stat has timespec timestamps],
1323     samba_cv_stat_timespec_hires,
1324       [
1325       AC_TRY_COMPILE(
1326           [
1327 #if TIME_WITH_SYS_TIME
1328 # include <sys/time.h>
1329 # include <time.h>
1330 #else
1331 # if HAVE_SYS_TIME_H
1332 #  include <sys/time.h>
1333 # else
1334 #  include <time.h>
1335 # endif
1336 #endif
1337 #ifdef HAVE_SYS_STAT_H
1338 #include <sys/stat.h>
1339 #endif
1340           ],
1341           [
1342           struct timespec t;
1343           struct stat s = {0};
1344           t = s.st_mtimespec;
1345           t = s.st_ctimespec;
1346           t = s.st_atimespec;
1347         ],
1348       samba_cv_stat_timespec_hires=yes, samba_cv_stat_timespec_hires=no)
1349       ])
1350
1351 if test x"$samba_cv_stat_timespec_hires" = x"yes" ; then
1352     AC_DEFINE(HAVE_STAT_ST_MTIMESPEC, 1, [whether struct stat contains st_mtimepec])
1353     AC_DEFINE(HAVE_STAT_ST_ATIMESPEC, 1, [whether struct stat contains st_atimespec])
1354     AC_DEFINE(HAVE_STAT_ST_CTIMESPEC, 1, [whether struct stat contains st_ctimespec])
1355     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1, [whether struct stat has sub-second timestamps])
1356 fi
1357
1358
1359
1360 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1361     [
1362         AC_TRY_COMPILE(
1363             [
1364 #if TIME_WITH_SYS_TIME
1365 # include <sys/time.h>
1366 # include <time.h>
1367 #else
1368 # if HAVE_SYS_TIME_H
1369 #  include <sys/time.h>
1370 # else
1371 #  include <time.h>
1372 # endif
1373 #endif
1374 #ifdef HAVE_SYS_STAT_H
1375 #include <sys/stat.h>
1376 #endif
1377             ],
1378             [
1379                 struct timespec t;
1380                 struct stat s = {0};
1381                 t.tv_sec = s.st_mtim.tv_sec;
1382                 t.tv_nsec = s.st_mtim.tv_nsec;
1383                 t.tv_sec = s.st_ctim.tv_sec;
1384                 t.tv_nsec = s.st_ctim.tv_nsec;
1385                 t.tv_sec = s.st_atim.tv_sec;
1386                 t.tv_nsec = s.st_atim.tv_nsec;
1387             ],
1388             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1389     ])
1390
1391 if test x"$samba_cv_stat_hires" = x"yes" ; then
1392     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1393     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1394     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1395     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1396             [whether struct stat has sub-second timestamps])
1397 fi
1398
1399 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed nsec], samba_cv_stat_hires_notimespec,
1400     [
1401         AC_TRY_COMPILE(
1402             [
1403 #if TIME_WITH_SYS_TIME
1404 # include <sys/time.h>
1405 # include <time.h>
1406 #else
1407 # if HAVE_SYS_TIME_H
1408 #  include <sys/time.h>
1409 # else
1410 #  include <time.h>
1411 # endif
1412 #endif
1413 #ifdef HAVE_SYS_STAT_H
1414 #include <sys/stat.h>
1415 #endif
1416             ],
1417             [
1418                 struct timespec t;
1419                 struct stat s = {0};
1420                 t.tv_sec = s.st_mtime;
1421                 t.tv_nsec = s.st_mtimensec;
1422                 t.tv_sec = s.st_ctime;
1423                 t.tv_nsec = s.st_ctimensec;
1424                 t.tv_sec = s.st_atime;
1425                 t.tv_nsec = s.st_atimensec;
1426             ],
1427             samba_cv_stat_hires_notimespec=yes, samba_cv_stat_hires_notimespec=no)
1428     ])
1429
1430 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1431     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1432     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1433     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1434     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1435             [whether struct stat has sub-second timestamps without struct timespec suffixed nsec])
1436 fi
1437
1438 dnl AIX stype sub-second timestamps:
1439 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed _n], samba_cv_stat_hires_notimespec_n,
1440     [
1441         AC_TRY_COMPILE(
1442             [
1443 #if TIME_WITH_SYS_TIME
1444 # include <sys/time.h>
1445 # include <time.h>
1446 #else
1447 # if HAVE_SYS_TIME_H
1448 #  include <sys/time.h>
1449 # else
1450 #  include <time.h>
1451 # endif
1452 #endif
1453 #ifdef HAVE_SYS_STAT_H
1454 #include <sys/stat.h>
1455 #endif
1456             ],
1457             [
1458                 struct timespec t;
1459                 struct stat s = {0};
1460                 t.tv_sec = s.st_mtime;
1461                 t.tv_nsec = s.st_mtime_n;
1462                 t.tv_sec = s.st_ctime;
1463                 t.tv_nsec = s.st_ctime_n;
1464                 t.tv_sec = s.st_atime;
1465                 t.tv_nsec = s.st_atime_n;
1466             ],
1467             samba_cv_stat_hires_notimespec_n=yes, samba_cv_stat_hires_notimespec_n=no)
1468     ])
1469
1470 if test x"$samba_cv_stat_hires_notimespec_n" = x"yes" ; then
1471     AC_DEFINE(HAVE_STAT_ST_MTIME_N, 1, [whether struct stat contains st_mtime_n])
1472     AC_DEFINE(HAVE_STAT_ST_ATIME_N, 1, [whether struct stat contains st_atime_n])
1473     AC_DEFINE(HAVE_STAT_ST_CTIME_N, 1, [whether struct stat contains st_ctime_n])
1474     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1475             [whether struct stat has sub-second timestamps without struct timespec suffixed _n])
1476 fi
1477
1478 dnl Tru64 has _micro_second_ resolution:
1479 AC_CACHE_CHECK([whether struct stat has sub-second timestamps in st_uXtime], samba_cv_stat_hires_uxtime,
1480     [
1481         AC_TRY_COMPILE(
1482             [
1483 #if TIME_WITH_SYS_TIME
1484 # include <sys/time.h>
1485 # include <time.h>
1486 #else
1487 # if HAVE_SYS_TIME_H
1488 #  include <sys/time.h>
1489 # else
1490 #  include <time.h>
1491 # endif
1492 #endif
1493 #ifdef HAVE_SYS_STAT_H
1494 #include <sys/stat.h>
1495 #endif
1496             ],
1497             [
1498                 struct timespec t;
1499                 struct stat s = {0};
1500                 t.tv_sec = s.st_mtime;
1501                 t.tv_nsec = s.st_umtime * 1000;
1502                 t.tv_sec = s.st_ctime;
1503                 t.tv_nsec = s.st_uctime * 1000;
1504                 t.tv_sec = s.st_atime;
1505                 t.tv_nsec = s.st_uatime * 1000;
1506             ],
1507             samba_cv_stat_hires_uxtime=yes, samba_cv_stat_hires_uxtime=no)
1508     ])
1509
1510 if test x"$samba_cv_stat_hires_uxtime" = x"yes" ; then
1511     AC_DEFINE(HAVE_STAT_ST_UMTIME, 1, [whether struct stat contains st_umtime])
1512     AC_DEFINE(HAVE_STAT_ST_UATIME, 1, [whether struct stat contains st_uatime])
1513     AC_DEFINE(HAVE_STAT_ST_UCTIME, 1, [whether struct stat contains st_uctime])
1514     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1515             [whether struct stat has sub-second timestamps in st_uXtime])
1516 fi
1517
1518 AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1519     [
1520         AC_TRY_COMPILE(
1521             [
1522 #if TIME_WITH_SYS_TIME
1523 # include <sys/time.h>
1524 # include <time.h>
1525 #else
1526 # if HAVE_SYS_TIME_H
1527 #  include <sys/time.h>
1528 # else
1529 #  include <time.h>
1530 # endif
1531 #endif
1532 #ifdef HAVE_SYS_STAT_H
1533 #include <sys/stat.h>
1534 #endif
1535             ],
1536             [
1537                 struct timespec t;
1538                 struct stat s = {0};
1539                 t = s.st_birthtimespec;
1540             ],
1541             samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_st_birthtimespec=no)
1542     ])
1543
1544 if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1545     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1546 fi
1547
1548 AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
1549     [
1550         AC_TRY_COMPILE(
1551             [
1552 #if TIME_WITH_SYS_TIME
1553 # include <sys/time.h>
1554 # include <time.h>
1555 #else
1556 # if HAVE_SYS_TIME_H
1557 #  include <sys/time.h>
1558 # else
1559 #  include <time.h>
1560 # endif
1561 #endif
1562 #ifdef HAVE_SYS_STAT_H
1563 #include <sys/stat.h>
1564 #endif
1565             ],
1566             [
1567                 struct timespec t;
1568                 struct stat s = {0};
1569                 t.tv_nsec = s.st_birthtimensec;
1570             ],
1571             samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_st_birthtimensec=no)
1572     ])
1573
1574 if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1575     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1576 fi
1577
1578 AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
1579     [
1580         AC_TRY_COMPILE(
1581             [
1582 #if TIME_WITH_SYS_TIME
1583 # include <sys/time.h>
1584 # include <time.h>
1585 #else
1586 # if HAVE_SYS_TIME_H
1587 #  include <sys/time.h>
1588 # else
1589 #  include <time.h>
1590 # endif
1591 #endif
1592 #ifdef HAVE_SYS_STAT_H
1593 #include <sys/stat.h>
1594 #endif
1595             ],
1596             [
1597                 struct time_t t;
1598                 struct stat s = {0};
1599                 t = s.st_birthtime;
1600             ],
1601             samba_cv_stat_st_birthtime=yes, samba_cv_stat_st_birthtime=no)
1602     ])
1603
1604 if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1605     AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1606 fi
1607
1608 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1609     [
1610         AC_TRY_COMPILE(
1611             [#include <sys/stat.h>],
1612             [
1613                 int a = UF_DOS_ARCHIVE;
1614                 int h = UF_DOS_HIDDEN;
1615                 int r = UF_DOS_RO;
1616                 int s = UF_DOS_SYSTEM;
1617                 int i = UF_DOS_NOINDEX;
1618                 int f = UF_DOS_FLAGS;
1619             ],
1620             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1621     ])
1622
1623 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1624     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1625 fi
1626
1627 #####################################
1628 # needed for SRV lookups
1629 AC_CHECK_LIB(resolv, dn_expand)
1630 AC_CHECK_LIB(resolv, _dn_expand)
1631 AC_CHECK_LIB(resolv, __dn_expand)
1632
1633 #
1634 # Check for the functions putprpwnam, set_auth_parameters,
1635 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1636 # Needed for OSF1 and HPUX.
1637 #
1638
1639 AC_LIBTESTFUNC(security, putprpwnam)
1640 AC_LIBTESTFUNC(sec, putprpwnam)
1641
1642 AC_LIBTESTFUNC(security, set_auth_parameters)
1643 AC_LIBTESTFUNC(sec, set_auth_parameters)
1644
1645 # UnixWare 7.x has its getspnam in -lgen
1646 AC_LIBTESTFUNC(gen, getspnam)
1647
1648 AC_LIBTESTFUNC(security, getspnam)
1649 AC_LIBTESTFUNC(sec, getspnam)
1650
1651 AC_LIBTESTFUNC(security, bigcrypt)
1652 AC_LIBTESTFUNC(sec, bigcrypt)
1653
1654 AC_LIBTESTFUNC(security, getprpwnam)
1655 AC_LIBTESTFUNC(sec, getprpwnam)
1656
1657 AC_CHECK_FUNCS(strsignal)
1658
1659 ############################################
1660 # Check if we have libattr
1661 case "$host_os" in
1662   *osf*)
1663         AC_SEARCH_LIBS(getproplist, [proplist])
1664         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1665         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1666         AC_CHECK_FUNCS(sizeof_proplist_entry)
1667   ;;
1668   *)
1669         AC_SEARCH_LIBS(getxattr, [attr])
1670         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1671         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1672         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1673         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1674         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1675         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1676         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1677   ;;
1678 esac
1679
1680 ########################################################
1681 # Check if attropen() is present if this is Solaris
1682 case "$host_os" in
1683   *solaris*)
1684         AC_CHECK_FUNCS(attropen)
1685   ;;
1686 esac
1687
1688 ########################################################
1689 # Do xattr functions take additional options like on Darwin?
1690 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1691         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1692                 old_LIBS=$LIBS
1693                 LIBS="$LIBS $ACL_LIBS"
1694                 AC_TRY_COMPILE([
1695                         #include <sys/types.h>
1696                         #if HAVE_ATTR_XATTR_H
1697                         #include <attr/xattr.h>
1698                         #elif HAVE_SYS_XATTR_H
1699                         #include <sys/xattr.h>
1700                         #endif
1701                 ],[
1702                         getxattr(0, 0, 0, 0, 0, 0);
1703                 ],
1704                 [smb_attr_cv_xattr_add_opt=yes],
1705                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1706         ])
1707         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1708                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1709         fi
1710 fi
1711
1712 # Check if we have extattr
1713 case "$host_os" in
1714   *freebsd4* | *dragonfly* )
1715     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1716     ;;
1717   *)
1718     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1719     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1720     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1721     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1722     ;;
1723 esac
1724
1725 AC_DISABLE_STATIC
1726 AC_ENABLE_SHARED
1727
1728 # Set defaults
1729 PIE_CFLAGS=""
1730 PIE_LDFLAGS=""
1731 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1732
1733 if test "x$enable_pie" != xno
1734 then
1735         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1736         [
1737                 cat > conftest.c <<EOF
1738 int foo;
1739 main () { return 0;}
1740 EOF
1741                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1742                 then
1743                         samba_cv_fpie=yes
1744                 else
1745                         samba_cv_fpie=no
1746                 fi
1747                 rm -f conftest*
1748         ])
1749         if test x"${samba_cv_fpie}" = x"yes"
1750         then
1751                 PIE_CFLAGS="-fPIE"
1752                 PIE_LDFLAGS="-pie"
1753         fi
1754 fi
1755
1756 # Set defaults
1757 RELRO_LDFLAGS=""
1758 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1759
1760 if test "x$enable_relro" != xno
1761 then
1762         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1763         [
1764                 cat > conftest.c <<EOF
1765 int foo;
1766 main () { return 0;}
1767 EOF
1768                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1769                 then
1770                         samba_cv_relro=yes
1771                 else
1772                         samba_cv_relro=no
1773                 fi
1774                 rm -f conftest*
1775         ])
1776         if test x"${samba_cv_relro}" = x"yes"
1777         then
1778                 RELRO_LDFLAGS="-Wl,-z,relro"
1779         fi
1780 fi
1781
1782 # Set defaults
1783 SYMSEXT="syms"
1784 AC_SUBST(SYMSEXT)
1785
1786 # Assume non-shared by default and override below
1787 BLDSHARED="false"
1788
1789 # these are the defaults, good for lots of systems
1790 HOST_OS="$host_os"
1791 LDSHFLAGS="-shared"
1792 MODULE_EXPORTS=""
1793 SONAMEFLAG="#"
1794 SHLD="\${CC} \${CFLAGS}"
1795 PICFLAG="${PIE_CFLAGS}"
1796 SHLIBEXT="so"
1797 DSO_EXPORTS=""
1798
1799 # this bit needs to be modified for each OS that supports share libs
1800 # You need to specify how to create a shared library and
1801   # how to compile C code to produce PIC object files
1802
1803   AC_MSG_CHECKING([ability to build shared libraries])
1804
1805   # and these are for particular systems
1806   case "$host_os" in
1807                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1808                         BLDSHARED="true"
1809                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1810                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1811                         else
1812                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1813                         fi
1814                         DYNEXP="-Wl,--export-dynamic"
1815                         PICFLAG="-fPIC"
1816                         SONAMEFLAG="-Wl,-soname="
1817                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1818                         ;;
1819                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1820                         BLDSHARED="true"
1821                         LDSHFLAGS="-G"
1822                         SONAMEFLAG="-h "
1823                         if test "${GCC}" = "yes"; then
1824                                 PICFLAG="-fPIC"
1825                                 SONAMEFLAG="-Wl,-soname="
1826                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1827                                         DYNEXP="-Wl,-E"
1828                                 fi
1829                         else
1830                                 PICFLAG="-KPIC"
1831                                 ## ${CFLAGS} added for building 64-bit shared
1832                                 ## libs using Sun's Compiler
1833                                 LDSHFLAGS="-G \${CFLAGS}"
1834                         fi
1835                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1836                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1837                         ;;
1838                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1839                         BLDSHARED="true"
1840                         LDSHFLAGS="-G"
1841                         SONAMEFLAG="-Wl,-h,"
1842                         PICFLAG="-KPIC"   # Is this correct for SunOS
1843                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1844                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1845                         ;;
1846                 *netbsd* | *freebsd* | *dragonfly* )
1847                         BLDSHARED="true"
1848                         LDSHFLAGS="-shared"
1849                         DYNEXP="-Wl,--export-dynamic"
1850                         SONAMEFLAG="-Wl,-soname,"
1851                         PICFLAG="-fPIC -DPIC"
1852                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1853                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1854                         ;;
1855                 *openbsd*)  BLDSHARED="true"
1856                         LDSHFLAGS="-shared"
1857                         DYNEXP="-Wl,-Bdynamic"
1858                         SONAMEFLAG="-Wl,-soname,"
1859                         PICFLAG="-fPIC"
1860                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1861                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1862                         ;;
1863                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1864                         case "$host_os" in
1865                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1866                         ;;
1867                         esac
1868                         BLDSHARED="true"
1869                         LDSHFLAGS="-set_version sgi1.0 -shared"
1870                         SONAMEFLAG="-soname "
1871                         SHLD="\${LD}"
1872                         if test "${GCC}" = "yes"; then
1873                                 PICFLAG="-fPIC"
1874                         else
1875                                 PICFLAG="-KPIC"
1876                         fi
1877                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1878                         ;;
1879                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1880                         BLDSHARED="true"
1881                         # use expfull to export underscored symbols
1882                         # add rtl to remove /lib/crt0.o warning
1883                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1884                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1885                         PICFLAG="-O2"
1886                         # as AIX code is always position independent...
1887                         # .po will just create compile warnings, use po.o:
1888                         if test "${GCC}" != "yes"; then
1889                                 ## for funky AIX compiler using strncpy()
1890                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1891                         fi
1892
1893                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1894                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1895                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1896                         ;;
1897                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1898                         # Use special PIC flags for the native HP-UX compiler.
1899                                 BLDSHARED="true"
1900                                 SHLD="cc"
1901                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1902                                 SONAMEFLAG="-Wl,+h "
1903                                 PICFLAG="+z"
1904                         if test "${GCC}" = "yes"; then
1905                                 PICFLAG="-fPIC"
1906                         else
1907                                 PICFLAG="+z +ESnolit"
1908                         fi
1909                         if test "$host_cpu" = "ia64"; then
1910                                 SHLIBEXT="so"
1911                               PICFLAG="+z"
1912                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1913                         else
1914                                 SHLIBEXT="sl"
1915                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1916                         fi
1917                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1918                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1919                         ;;
1920                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1921                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1922                         ;;
1923                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1924                         BLDSHARED="true"
1925                         LDSHFLAGS="-shared"
1926                         SONAMEFLAG="-Wl,-soname,"
1927                         PICFLAG="-fPIC"
1928                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1929                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1930                         ;;
1931                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1932                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1933                         ;;
1934                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1935                         BLDSHARED="true"
1936                         LDSHFLAGS="-shared"
1937                         SONAMEFLAG="-Wl,-soname,"
1938                         PICFLAG="-KPIC"
1939                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1940                         ;;
1941                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1942                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1943                         ;;
1944                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1945                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1946                         ;;
1947                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1948                         case "$host" in
1949                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1950                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1951                                         fi
1952                                         LDSHFLAGS="-G"
1953                                         DYNEXP="-Bexport"
1954                                 ;;
1955                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1956                         esac
1957                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1958                         ;;
1959
1960                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1961                         if [ test "$GCC" != yes ]; then
1962                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1963                         fi
1964                         LDSHFLAGS="-G"
1965                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1966                         ;;
1967                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1968                         BLDSHARED="false"
1969                         LDSHFLAGS=""
1970                         ;;
1971
1972                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1973                         BLDSHARED="true"
1974                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1975                         CFLAGS="$CFLAGS -fno-common"
1976                         SHLD="\${CC}"
1977                         SHLIBEXT="dylib"
1978                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1979                         SHLIBEXT="dylib"
1980                         # Since gcc doesn't fail on unrecognised options, the
1981                         # PIE test incorrectly succeeds. Darwin gcc does not
1982                         # actually support the PIE stuff.
1983                         PIE_LDFLAGS=
1984                         PIE_CFLAGS=
1985                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1986                         ;;
1987
1988                 *)
1989                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1990                         ;;
1991   esac
1992
1993 if test "$enable_shared" != "yes"; then
1994         BLDSHARED=false
1995 fi
1996
1997 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1998         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1999 fi
2000
2001 if test x"$BLDSHARED" = x"true" ; then
2002         LDFLAGS="$LDFLAGS -L./bin"
2003 fi
2004
2005 AC_MSG_RESULT($BLDSHARED)
2006
2007 AC_MSG_CHECKING([LDFLAGS])
2008 AC_MSG_RESULT([$LDFLAGS])
2009 AC_MSG_CHECKING([DYNEXP])
2010 AC_MSG_RESULT([$DYNEXP])
2011
2012 #######################################################
2013 # test whether building a shared library actually works
2014 if test $BLDSHARED = true; then
2015
2016 AC_MSG_CHECKING([SHLD])
2017 AC_MSG_RESULT([$SHLD])
2018 AC_MSG_CHECKING([LDSHFLAGS])
2019 AC_MSG_RESULT([$LDSHFLAGS])
2020
2021 AC_MSG_CHECKING([SHLIBEXT])
2022 AC_MSG_RESULT([$SHLIBEXT])
2023 AC_MSG_CHECKING([SONAMEFLAG])
2024 AC_MSG_RESULT([$SONAMEFLAG])
2025
2026 AC_MSG_CHECKING([PICFLAG])
2027 AC_MSG_RESULT([$PICFLAG])
2028
2029 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2030 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2031
2032 AC_CACHE_CHECK([whether building shared libraries actually works],
2033                [ac_cv_shlib_works],[
2034    # try building a trivial shared library
2035    ac_cv_shlib_works=no
2036    # The $SHLD and $LDSHFLAGS variables may contain references to other
2037    # variables so they need to be eval'ed.
2038    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2039         shlib.o ${srcdir-.}/../tests/shlib.c && \
2040    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2041         shlib.o && ac_cv_shlib_works=yes
2042    rm -f "shlib.$SHLIBEXT" shlib.o
2043
2044 ])
2045 if test $ac_cv_shlib_works = no; then
2046    BLDSHARED=false
2047 fi
2048 fi
2049
2050 if test x"$BLDSHARED" != x"true"; then
2051         LDSHFLAGS="shared-libraries-disabled"
2052         SONAMEFLAG="shared-libraries-disabled"
2053         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2054         SHLD="shared-libraries-disabled"
2055         PICFLAG="${PIE_CFLAGS}"
2056         SHLIBEXT="shared_libraries_disabled"
2057 fi
2058
2059 AC_MSG_CHECKING([used PICFLAG])
2060 AC_MSG_RESULT([$PICFLAG])
2061
2062 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2063
2064 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2065
2066 ################
2067
2068 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2069 AC_TRY_RUN([#include <stdio.h>
2070 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2071 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2072 if test x"$samba_cv_have_longlong" = x"yes"; then
2073     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2074     AC_CHECK_TYPE(intptr_t, unsigned long long)
2075 else
2076     AC_CHECK_TYPE(intptr_t, unsigned long)
2077 fi
2078
2079 #
2080 # Check if the compiler supports the LL prefix on long long integers.
2081 # AIX needs this.
2082
2083 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2084     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2085         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2086 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2087    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2088 fi
2089
2090
2091 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2092 AC_TRY_RUN([#include <time.h>
2093 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2094 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2095 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2096     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2097 fi
2098
2099 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2100 AC_TRY_RUN([#include <stdio.h>
2101 #include <sys/stat.h>
2102 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2103 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2104 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2105     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2106 fi
2107
2108 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2109 AC_TRY_RUN([
2110 #if defined(HAVE_UNISTD_H)
2111 #include <unistd.h>
2112 #endif
2113 #include <stdio.h>
2114 #include <sys/stat.h>
2115 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2116 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2117 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2118     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2119 fi
2120
2121 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2122 AC_TRY_RUN([
2123 #if defined(HAVE_UNISTD_H)
2124 #include <unistd.h>
2125 #endif
2126 #include <stdio.h>
2127 #include <sys/stat.h>
2128 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2129 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2130 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2131     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2132 fi
2133
2134 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2135 AC_TRY_RUN([
2136 #if defined(HAVE_UNISTD_H)
2137 #include <unistd.h>
2138 #endif
2139 #include <stdio.h>
2140 #include <sys/stat.h>
2141 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2142 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2143 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2144     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2145 fi
2146
2147 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2148 AC_TRY_RUN([
2149 #if defined(HAVE_UNISTD_H)
2150 #include <unistd.h>
2151 #endif
2152 #include <stdio.h>
2153 #include <sys/stat.h>
2154 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2155 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2156 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2157     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2158 fi
2159
2160 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2161 AC_TRY_RUN([
2162 #if defined(HAVE_UNISTD_H)
2163 #include <unistd.h>
2164 #endif
2165 #include <stdio.h>
2166 #include <sys/stat.h>
2167 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2168 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2169 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2170     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2171 fi
2172
2173 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2174 AC_TRY_COMPILE([
2175 #if defined(HAVE_UNISTD_H)
2176 #include <unistd.h>
2177 #endif
2178 #include <sys/types.h>
2179 #include <dirent.h>],
2180 [DIR64 de;],
2181 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2182 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2183     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2184 fi
2185
2186 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2187 AC_TRY_COMPILE([
2188 #if defined(HAVE_UNISTD_H)
2189 #include <unistd.h>
2190 #endif
2191 #include <sys/types.h>
2192 #include <dirent.h>],
2193 [struct dirent64 de;],
2194 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2195 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2196     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2197 fi
2198
2199 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2200 AC_TRY_RUN([
2201 #if defined(HAVE_UNISTD_H)
2202 #include <unistd.h>
2203 #endif
2204 #include <sys/types.h>
2205 main() { dev_t dev; int i = major(dev); return 0; }],
2206 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2207 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2208     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2209 fi
2210
2211 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2212 AC_TRY_RUN([
2213 #if defined(HAVE_UNISTD_H)
2214 #include <unistd.h>
2215 #endif
2216 #include <sys/types.h>
2217 main() { dev_t dev; int i = minor(dev); return 0; }],
2218 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2219 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2220     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2221 fi
2222
2223 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2224 AC_TRY_RUN([
2225 #if defined(HAVE_UNISTD_H)
2226 #include <unistd.h>
2227 #endif
2228 #include <sys/types.h>
2229 main() { dev_t dev = makedev(1,2); return 0; }],
2230 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2231 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2232     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2233 fi
2234
2235 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2236 AC_TRY_RUN([#include <stdio.h>
2237 main() { char c; c=250; exit((c > 0)?0:1); }],
2238 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2239 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2240     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2241 fi
2242
2243 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2244 AC_TRY_COMPILE([#include <sys/types.h>
2245 #include <dirent.h>
2246 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2247 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2248 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2249     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2250 fi
2251
2252 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2253 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2254 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2255 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2256     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2257 fi
2258
2259 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2260 AC_TRY_LINK([
2261 #include <sys/time.h>
2262 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2263            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2264            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2265 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2266     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2267 fi
2268
2269 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2270
2271     # On some systems (eg. Linux) librt can pull in libpthread. We
2272     # don't want this to happen because libpthreads changes signal delivery
2273     # semantics in ways we are not prepared for. This breaks Linux oplocks
2274     # which rely on signals.
2275
2276     AC_LIBTESTFUNC(rt, clock_gettime,
2277             [
2278                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2279                                 [Whether clock_gettime is available])
2280                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2281                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2282                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2283                         ])
2284
2285 fi
2286
2287 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2288 AC_TRY_RUN([#include <sys/types.h>
2289 #include <dirent.h>
2290 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2291 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2292 di->d_name[0] == 0) exit(0); exit(1);} ],
2293 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2294 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2295     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2296 fi
2297
2298 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2299 AC_TRY_COMPILE([#include <sys/types.h>
2300 #include <utime.h>],
2301 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2302 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2303 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2304     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2305 fi
2306
2307 ##############
2308 # Check utmp details, but only if our OS offers utmp.h
2309 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2310 dnl  utmp and utmpx come in many flavours
2311 dnl  We need to check for many of them
2312 dnl  But we don't need to do each and every one, because our code uses
2313 dnl  mostly just the utmp (not utmpx) fields.
2314
2315 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2316
2317 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2318 AC_TRY_COMPILE([#include <sys/types.h>
2319 #include <utmp.h>],
2320 [struct utmp ut;  ut.ut_name[0] = 'a';],
2321 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2322 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2323     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2324 fi
2325
2326 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2327 AC_TRY_COMPILE([#include <sys/types.h>
2328 #include <utmp.h>],
2329 [struct utmp ut;  ut.ut_user[0] = 'a';],
2330 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2331 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2332     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2333 fi
2334
2335 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2336 AC_TRY_COMPILE([#include <sys/types.h>
2337 #include <utmp.h>],
2338 [struct utmp ut;  ut.ut_id[0] = 'a';],
2339 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2340 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2341     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2342 fi
2343
2344 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2345 AC_TRY_COMPILE([#include <sys/types.h>
2346 #include <utmp.h>],
2347 [struct utmp ut;  ut.ut_host[0] = 'a';],
2348 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2349 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2350     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2351 fi
2352
2353 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2354 AC_TRY_COMPILE([#include <sys/types.h>
2355 #include <utmp.h>],
2356 [struct utmp ut;  time_t t; ut.ut_time = t;],
2357 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2358 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2359     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2360 fi
2361
2362 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2363 AC_TRY_COMPILE([#include <sys/types.h>
2364 #include <utmp.h>],
2365 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2366 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2367 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2368     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2369 fi
2370
2371 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2372 AC_TRY_COMPILE([#include <sys/types.h>
2373 #include <utmp.h>],
2374 [struct utmp ut;  ut.ut_type = 0;],
2375 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2376 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2377     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2378 fi
2379
2380 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2381 AC_TRY_COMPILE([#include <sys/types.h>
2382 #include <utmp.h>],
2383 [struct utmp ut;  ut.ut_pid = 0;],
2384 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2385 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2386     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2387 fi
2388
2389 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2390 AC_TRY_COMPILE([#include <sys/types.h>
2391 #include <utmp.h>],
2392 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2393 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2394 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2395     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2396 fi
2397
2398 dnl Look for the IPv6 varient by preference. Many systems have both.
2399 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2400 AC_TRY_COMPILE([#include <sys/types.h>
2401 #include <utmp.h>],
2402 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2403 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2404 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2405     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2406 fi
2407
2408 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2409 AC_TRY_COMPILE([#include <sys/types.h>
2410 #include <utmp.h>],
2411 [struct utmp ut;  ut.ut_addr = 0;],
2412 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2413 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2414     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2415 fi
2416
2417 if test x$ac_cv_func_pututline = xyes ; then
2418   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2419   AC_TRY_COMPILE([#include <sys/types.h>
2420 #include <utmp.h>],
2421   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2422   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2423   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2424       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2425   fi
2426 fi
2427
2428 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2429 AC_TRY_COMPILE([#include <sys/types.h>
2430 #include <utmpx.h>],
2431 [struct utmpx ux;  ux.ut_syslen = 0;],
2432 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2433 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2434     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2435 fi
2436
2437 fi
2438 # end utmp details
2439
2440
2441 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2442 AC_ARG_WITH(libiconv,
2443 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2444 [
2445   if test "$withval" = "no" ; then
2446     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2447   else
2448      if test "$withval" != "yes" ; then
2449         ICONV_PATH_SPEC=yes
2450         ICONV_LOOK_DIRS="$withval"
2451      fi
2452   fi
2453 ])
2454
2455 for i in $ICONV_LOOK_DIRS ; do
2456
2457     save_LIBS="$LIBS"
2458     save_LDFLAGS="$LDFLAGS"
2459     save_CPPFLAGS="$CPPFLAGS"
2460
2461     iconv_current_LIBS=""
2462     iconv_current_LDFLAGS=""
2463     iconv_current_CPPFLAGS=""
2464
2465     ICONV_FOUND="no"
2466     unset libext
2467
2468     #  This is here to handle -withval stuff for --with-libiconv
2469     #  Perhaps we should always add a -L
2470     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2471
2472     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2473     # installation paths. This gets a little tricky since we might have iconv
2474     # in both libiconv and in libc. In this case the jm_ICONV test will always
2475     # succeed when the header is found. To counter this, make sure the
2476     # library directory is there and check the ABI directory first (which
2477     # should be harmless on other systems, but causes tons of linker warnings on
2478     # 64bit Ubuntu systems).
2479     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2480     # installed, I've decided to fix the linker warnings.
2481     # -- Kai
2482     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2483     for l in "lib" "lib32" "lib/hpux32"; do
2484         if test -d "$i/$l" ; then
2485                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2486                 LIBS=
2487                 export LDFLAGS LIBS CPPFLAGS
2488                 # Try to find iconv(3)
2489                 jm_ICONV($i/$l)
2490                 if test x"$ICONV_FOUND" = "xyes" ; then
2491                     libext="$l"
2492                     break
2493                 fi
2494         fi
2495     done
2496
2497     if test x"$ICONV_FOUND" = "xyes" ; then
2498         iconv_current_LDFLAGS="-L$i/$libext"
2499         iconv_current_CPPFLAGS="-I$i/include"
2500
2501         if test x"$jm_cv_lib_iconv" != x; then
2502             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2503         else
2504             # We found iconv in libc.
2505             iconv_current_LIBS=""
2506         fi
2507
2508     fi
2509
2510     if test x"$ICONV_FOUND" = "xyes" ; then
2511
2512         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2513         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2514         LIBS="$save_LIBS $iconv_current_LIBS"
2515         export LDFLAGS LIBS CPPFLAGS
2516
2517         default_dos_charset=no
2518         default_display_charset=no
2519         default_unix_charset=no
2520
2521         # check for default dos charset name
2522         for j in CP850 IBM850 ; do
2523             rjs_CHARSET($j)
2524             default_dos_charset="$ICONV_CHARSET"
2525             if test x"$default_dos_charset" = x"$j"; then
2526                 break
2527             fi
2528         done
2529
2530         # check for default display charset name
2531         for j in ASCII 646 ; do
2532             rjs_CHARSET($j)
2533             default_display_charset="$ICONV_CHARSET"
2534             if test x"$default_display_charset" = x"$j"; then
2535                 break
2536             fi
2537         done
2538
2539         # check for default unix charset name
2540         for j in UTF-8 UTF8 ; do
2541             rjs_CHARSET($j)
2542             default_unix_charset="$ICONV_CHARSET"
2543             if test x"$default_unix_charset" = x"$j"; then
2544                 break
2545             fi
2546         done
2547
2548         if test "$default_dos_charset" != "no" -a \
2549                 "$default_dos_charset" != "cross" -a \
2550                 "$default_display_charset" != "no" -a \
2551                 "$default_display_charset" != "cross" -a \
2552                 "$default_unix_charset" != "no" -a \
2553                 "$default_unix_charset" != "cross"
2554         then
2555                 samba_cv_HAVE_NATIVE_ICONV=yes
2556         else
2557             if test "$default_dos_charset" = "cross" -o \
2558                      "$default_display_charset" = "cross" -o \
2559                      "$default_unix_charset" = "cross"
2560             then
2561                     samba_cv_HAVE_NATIVE_ICONV=cross
2562             else
2563                     samba_cv_HAVE_NATIVE_ICONV=no
2564             fi
2565         fi
2566
2567         # At this point, we have a libiconv candidate. We know that
2568         # we have the right headers and libraries, but we don't know
2569         # whether it does the conversions we want. We can't test this
2570         # because we are cross-compiling. This is not necessarily a big
2571         # deal, since we can't guarantee that the results we get now will
2572         # match the results we get at runtime anyway.
2573         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2574             default_dos_charset="CP850"
2575             default_display_charset="ASCII"
2576             default_unix_charset="UTF-8"
2577             samba_cv_HAVE_NATIVE_ICONV=yes
2578             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2579             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2580         fi
2581
2582         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2583
2584             CPPFLAGS=$save_CPPFLAGS
2585             LDFLAGS=$save_LDFLAGS
2586             LIBS=$save_LIBS
2587
2588             if test x"$iconv_current_LIBS" != x; then
2589                 LIBS="$LIBS $iconv_current_LIBS"
2590             fi
2591
2592             # Add the flags we need to CPPFLAGS and LDFLAGS
2593             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2594             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2595
2596             # Turn the #defines into string literals
2597             default_dos_charset="\"$default_dos_charset\""
2598             default_display_charset="\"$default_display_charset\""
2599             default_unix_charset="\"$default_unix_charset\""
2600
2601             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2602             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2603             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2604             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2605
2606            break
2607         fi
2608
2609     # We didn't find a working iconv, so keep going
2610     fi
2611
2612     #  We only need to clean these up here for the next pass through the loop
2613     CPPFLAGS=$save_CPPFLAGS
2614     LDFLAGS=$save_LDFLAGS
2615     LIBS=$save_LIBS
2616     export LDFLAGS LIBS CPPFLAGS
2617 done
2618 unset libext
2619
2620
2621 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2622     AC_MSG_WARN([Sufficient support for iconv function was not found.
2623     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2624    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2625    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2626    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2627 fi
2628
2629
2630 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2631 AC_TRY_RUN([
2632 #include <sys/types.h>
2633 #include <fcntl.h>
2634 #ifndef F_GETLEASE
2635 #define F_GETLEASE      1025
2636 #endif
2637 main() {
2638        int fd = open("/dev/null", O_RDONLY);
2639        return fcntl(fd, F_GETLEASE, 0) == -1;
2640 }
2641 ],
2642 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2643 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2644     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2645 fi
2646
2647 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2648 AC_TRY_RUN([
2649 #include <sys/types.h>
2650 #include <fcntl.h>
2651 #include <signal.h>
2652 #ifndef F_NOTIFY
2653 #define F_NOTIFY 1026
2654 #endif
2655 main() {
2656         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2657 }
2658 ],
2659 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2660 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2661     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2662 fi
2663
2664 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2665 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2666 AC_CHECK_FUNCS(inotify_init)
2667 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2668 ],
2669 samba_cv_HAVE_INOTIFY=yes,
2670 samba_cv_HAVE_INOTIFY=no,
2671 samba_cv_HAVE_INOTIFY=cross)
2672
2673 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2674     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2675 fi
2676
2677 #################################################
2678 # Check if FAM notifications are available. For FAM info, see
2679 #       http://oss.sgi.com/projects/fam/
2680 #       http://savannah.nongnu.org/projects/fam/
2681 AC_ARG_ENABLE(fam,
2682 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2683
2684 if test x$enable_fam != xno; then
2685     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2686     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2687         # On IRIX, libfam requires libC, but other FAM implementations
2688         # might not need it.
2689         AC_CHECK_LIB(fam, FAMOpen2,
2690             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2691             [samba_cv_HAVE_LIBFAM=no])
2692
2693         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2694             samba_fam_xtra=-lC
2695             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2696                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2697                 [samba_cv_HAVE_LIBFAM=no])
2698             unset samba_fam_xtra
2699         fi
2700     fi
2701
2702     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2703         default_shared_modules="$default_shared_modules vfs_notify_fam"
2704         AC_TRY_COMPILE([#include <fam.h>],
2705                     [FAMCodes code = FAMChanged;],
2706                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2707                         [Whether fam.h contains a typedef for enum FAMCodes]),
2708                     [])
2709     fi
2710
2711     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2712         AC_MSG_ERROR(FAM support requested but FAM library not available )
2713     fi
2714 fi
2715
2716 AC_SUBST(SMB_FAM_LIBS)
2717
2718 #################################################
2719 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2720
2721 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2722
2723 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2724 # Theoretically it should work with AIX JFS2 too but this needs testing
2725 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2726     default_shared_modules="$default_shared_modules vfs_tsmsm"
2727 fi
2728
2729 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2730 AC_TRY_RUN([
2731 #include <sys/types.h>
2732 #include <fcntl.h>
2733 #include <signal.h>
2734 #include <sys/file.h>
2735 #ifndef LOCK_MAND
2736 #define LOCK_MAND       32
2737 #define LOCK_READ       64
2738 #endif
2739 main() {
2740         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2741 }
2742 ],
2743 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2744 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2745     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2746 fi
2747
2748
2749 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2750 AC_TRY_COMPILE([#include <sys/types.h>
2751 #include <fcntl.h>],
2752 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2753 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2754 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2755     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2756 fi
2757
2758 #################################################
2759 # Check for POSIX capability support
2760
2761 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2762     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2763     [], [])
2764
2765 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2766
2767     ac_save_LIBS=$LIBS
2768     AC_LIBTESTFUNC(cap, cap_get_proc)
2769
2770     AC_CACHE_CHECK([for POSIX capabilities],
2771             samba_cv_HAVE_POSIX_CAPABILITIES,
2772             [
2773                 AC_TRY_RUN([
2774 #include <sys/types.h>
2775 #include <sys/capability.h>
2776 main() {
2777  cap_t cap;
2778  cap_value_t vals[1];
2779  if (!(cap = cap_get_proc()))
2780    exit(1);
2781  vals[0] = CAP_CHOWN;
2782  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2783  cap_set_proc(cap);
2784  exit(0);
2785 }],
2786                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2787                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2788                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2789             ])
2790
2791 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2792     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2793             [Whether POSIX capabilities are available])
2794 else
2795     LIBS=$ac_save_LIBS
2796 fi
2797
2798 fi
2799
2800 #
2801 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2802 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2803 #
2804
2805 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2806 AC_TRY_COMPILE([#include <sys/types.h>
2807 #if defined(HAVE_RPC_RPC_H)
2808 #include <rpc/rpc.h>
2809 #endif],
2810 [int16 testvar;],
2811 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2812 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2813     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2814 fi
2815
2816 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2817 AC_TRY_COMPILE([#include <sys/types.h>
2818 #if defined(HAVE_RPC_RPC_H)
2819 #include <rpc/rpc.h>
2820 #endif],
2821 [uint16 testvar;],
2822 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2823 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2824     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2825 fi
2826
2827 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2828 AC_TRY_COMPILE([#include <sys/types.h>
2829 #if defined(HAVE_RPC_RPC_H)
2830 #include <rpc/rpc.h>
2831 #endif],
2832 [int32 testvar;],
2833 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2834 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2835     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2836 fi
2837
2838 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2839 AC_TRY_COMPILE([#include <sys/types.h>
2840 #if defined(HAVE_RPC_RPC_H)
2841 #include <rpc/rpc.h>
2842 #endif],
2843 [uint32 testvar;],
2844 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2845 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2846     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2847 fi
2848
2849 dnl
2850 dnl Some systems (SCO) have a problem including
2851 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2852 dnl as a #define in <prot.h> and as part of an enum
2853 dnl in <rpc/rpc.h>.
2854 dnl
2855
2856 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2857 AC_TRY_COMPILE([#include <sys/types.h>
2858 #ifdef HAVE_SYS_SECURITY_H
2859 #include <sys/security.h>
2860 #include <prot.h>
2861 #endif  /* HAVE_SYS_SECURITY_H */
2862 #if defined(HAVE_RPC_RPC_H)
2863 #include <rpc/rpc.h>
2864 #endif],
2865 [int testvar;],
2866 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2867 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2868     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2869 fi
2870
2871 AC_MSG_CHECKING([for test routines])
2872 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2873            AC_MSG_RESULT(yes),
2874            AC_MSG_ERROR([cant find test code. Aborting config]),
2875            AC_MSG_WARN([cannot run when cross-compiling]))
2876
2877 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2878 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2879            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2880 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2881     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2882 fi
2883
2884 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2885 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2886            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2887 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2888     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2889 fi
2890
2891 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2892 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2893 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2894 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2895 AC_CHECK_FUNCS(getpagesize)
2896
2897 ################################################
2898 # look for a method of setting the effective uid
2899 seteuid=no;
2900
2901 if test $seteuid = no; then
2902 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2903 AC_TRY_RUN([
2904 #define AUTOCONF_TEST 1
2905 #define USE_SETREUID 1
2906 #include "confdefs.h"
2907 #include "${srcdir-.}/lib/util_sec.c"],
2908            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2909 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2910     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2911 fi
2912 fi
2913
2914 # we check for setresuid second as it conflicts with AIO on Linux. 
2915 # see http://samba.org/~tridge/junkcode/aio_uid.c
2916 if test $seteuid = no; then
2917 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2918 AC_TRY_RUN([
2919 #define AUTOCONF_TEST 1
2920 #define USE_SETRESUID 1
2921 #include "confdefs.h"
2922 #include "${srcdir-.}/lib/util_sec.c"],
2923            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2924 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2925     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2926 fi
2927 fi
2928
2929 if test $seteuid = no; then
2930 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2931 AC_TRY_RUN([
2932 #define AUTOCONF_TEST 1
2933 #define USE_SETEUID 1
2934 #include "confdefs.h"
2935 #include "${srcdir-.}/lib/util_sec.c"],
2936            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2937 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2938     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2939 fi
2940 fi
2941
2942 if test $seteuid = no; then
2943 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2944 AC_TRY_RUN([
2945 #define AUTOCONF_TEST 1
2946 #define USE_SETUIDX 1
2947 #include "confdefs.h"
2948 #include "${srcdir-.}/lib/util_sec.c"],
2949            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2950 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2951     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2952 fi
2953 fi
2954
2955 AC_CACHE_CHECK([for the Darwin initgroups system call],
2956         samba_cv_DARWIN_INITGROUPS,
2957         AC_TRY_LINK([
2958 #include <sys/syscall.h>
2959 #include <unistd.h>
2960         ],
2961         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2962         samba_cv_DARWIN_INITGROUPS=yes,
2963         samba_cv_DARWIN_INITGROUPS=no)
2964 )
2965
2966 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2967     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2968         [Whether to use the Darwin-specific initgroups system call])
2969 fi
2970
2971 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2972 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2973            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2974 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2975     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2976 fi
2977
2978 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2979 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2980            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2981 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2982     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2983
2984 else
2985
2986 dnl
2987 dnl Don't check for 64 bit fcntl locking if we know that the
2988 dnl glibc2.1 broken check has succeeded.
2989 dnl
2990
2991   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2992   AC_TRY_RUN([
2993 #if defined(HAVE_UNISTD_H)
2994 #include <unistd.h>
2995 #endif
2996 #include <stdio.h>
2997 #include <stdlib.h>
2998
2999 #ifdef HAVE_FCNTL_H
3000 #include <fcntl.h>
3001 #endif
3002
3003 #ifdef HAVE_SYS_FCNTL_H
3004 #include <sys/fcntl.h>
3005 #endif
3006 main() { struct flock64 fl64;
3007 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3008 exit(0);
3009 #else
3010 exit(1);
3011 #endif
3012 }],
3013        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3014
3015   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3016       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3017   fi
3018 fi
3019
3020 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3021 AC_TRY_COMPILE([#include <sys/types.h>
3022 #include <sys/stat.h>
3023 #include <unistd.h>],
3024 [struct stat st;  st.st_blocks = 0;],
3025 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3026 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3027     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3028 fi
3029
3030 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3031 AC_TRY_COMPILE([#include <sys/types.h>
3032 #include <sys/stat.h>
3033 #include <unistd.h>],
3034 [struct stat st;  st.st_blksize = 0;],
3035 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3036 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3037     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3038 fi
3039
3040 AC_CACHE_CHECK([for st_flags in struct stat],
3041         samba_cv_HAVE_STAT_ST_FLAGS,
3042         [
3043             AC_TRY_COMPILE([#include <sys/types.h>
3044 #include <sys/stat.h>
3045 #include <unistd.h>],
3046             [struct stat st;  st.st_flags = 0;],
3047             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3048             samba_cv_HAVE_STAT_ST_FLAGS=no,
3049             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3050         ])
3051
3052 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3053     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3054                 [Whether the stat struct has a st_flags member])
3055 fi
3056
3057 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3058 AC_TRY_COMPILE([
3059 #include <sys/types.h>
3060 #include <sys/acl.h>
3061 #if defined(HAVE_RPCSVC_NIS_H)
3062 #include <rpcsvc/nis.h>
3063 #endif],
3064 [int i;],
3065 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3066 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3067         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3068 fi
3069
3070 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3071 AC_TRY_RUN([
3072 #include <stdio.h>
3073 #include <limits.h>
3074 #include <signal.h>
3075
3076 void exit_on_core(int ignored) {
3077         exit(1);
3078 }
3079
3080 main() {
3081         char *newpath;
3082         signal(SIGSEGV, exit_on_core);
3083         newpath = realpath("/tmp", NULL);
3084         exit((newpath != NULL) ? 0 : 1);
3085 }
3086 ],
3087 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3088 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3089     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3090 fi
3091
3092 #################################################
3093 # check for AFS clear-text auth support
3094 samba_cv_WITH_AFS=no
3095 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3096 AC_ARG_WITH(afs,
3097 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3098 [ case "$withval" in
3099   yes|auto)
3100     AC_MSG_RESULT($withval)
3101     samba_cv_WITH_AFS=$withval
3102     ;;
3103   *)
3104     AC_MSG_RESULT(no)
3105     ;;
3106   esac ],
3107   AC_MSG_RESULT(no)
3108 )
3109
3110 ####################################################
3111 # check for Linux-specific AFS fake-kaserver support
3112 samba_cv_WITH_FAKE_KASERVER=no
3113 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3114 AC_ARG_WITH(fake-kaserver,
3115 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3116 [ case "$withval" in
3117   yes|auto)
3118     AC_MSG_RESULT($withval)
3119     samba_cv_WITH_FAKE_KASERVER=$withval
3120     ;;
3121   *)
3122     AC_MSG_RESULT(no)
3123     ;;
3124   esac ],
3125   AC_MSG_RESULT(no)
3126 )
3127
3128 #################################################
3129 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3130 if test x"$samba_cv_WITH_AFS" != x"no" ||
3131    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3132
3133     # see if this box has the afs-headers in /usr/include/afs
3134     AC_MSG_CHECKING(for /usr/include/afs)
3135     if test -d /usr/include/afs; then
3136           CFLAGS="$CFLAGS -I/usr/include/afs"
3137           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3138           AC_MSG_RESULT(yes)
3139     else
3140       AC_MSG_RESULT(no)
3141     fi
3142
3143     # check for afs.h
3144     have_afs_headers=no
3145     AC_CHECK_HEADERS(afs.h afs/afs.h)
3146     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3147         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3148            test x"$samba_cv_WITH_AFS" = x"auto"; then
3149                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3150         else
3151                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3152         fi
3153     else
3154         have_afs_headers=yes
3155     fi
3156 fi
3157
3158 FAKE_KASERVER_OBJ=""
3159 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3160     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3161     FAKE_KASERVER_OBJ="utils/net_afs.o"
3162 fi
3163 AC_SUBST(FAKE_KASERVER_OBJ)
3164
3165 #################################################
3166 # check whether to compile AFS/NT ACL mapping module
3167 samba_cv_WITH_VFS_AFSACL=no
3168 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3169 AC_ARG_WITH(vfs-afsacl,
3170 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3171 [ case "$withval" in
3172   yes|auto)
3173     AC_MSG_RESULT($withval)
3174     samba_cv_WITH_VFS_AFSACL=yes
3175     ;;
3176   *)
3177     AC_MSG_RESULT(no)
3178     ;;
3179   esac ],
3180   AC_MSG_RESULT(no)
3181 )
3182
3183 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3184    default_shared_modules="$default_shared_modules vfs_afsacl"
3185 fi
3186         
3187 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3188     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3189 fi
3190
3191 #################################################
3192 # check for the DFS clear-text auth system
3193 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3194 AC_ARG_WITH(dfs,
3195 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3196 [ case "$withval" in
3197   yes)
3198     AC_MSG_RESULT(yes)
3199     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3200     ;;
3201   *)
3202     AC_MSG_RESULT(no)
3203     ;;
3204   esac ],
3205   AC_MSG_RESULT(no)
3206 )
3207
3208 ########################################################
3209 # Compile with LDAP support?
3210
3211 with_ldap_support=auto
3212 AC_MSG_CHECKING([for LDAP support])
3213
3214 AC_ARG_WITH(ldap,
3215 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3216 [ case "$withval" in
3217     yes|no)
3218         with_ldap_support=$withval
3219         ;;
3220   esac ])
3221
3222 AC_MSG_RESULT($with_ldap_support)
3223
3224 SMBLDAP=""
3225 AC_SUBST(SMBLDAP)
3226 SMBLDAPUTIL=""
3227 AC_SUBST(SMBLDAPUTIL)
3228 LDBLDAP=""
3229 AC_SUBST(LDBLDAP)
3230
3231 if test x"$with_ldap_support" != x"no"; then
3232
3233   ##################################################################
3234   # first test for ldap.h and lber.h
3235   # (ldap.h is required for this test)
3236   AC_CHECK_HEADERS(ldap.h lber.h)
3237
3238   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3239         if test x"$with_ldap_support" = x"yes"; then
3240          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3241         else
3242          AC_MSG_WARN(ldap.h is needed for LDAP support)
3243         fi
3244         
3245         with_ldap_support=no
3246   fi
3247
3248   ##################################################################
3249   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3250   # unsigned int in include/includes.h
3251   case $host_os in
3252         *hpux*)
3253          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3254          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3255         with_ldap_support=yes
3256         ;;
3257         *)
3258         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3259         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3260                 if test x"$with_ldap_support" = x"yes"; then
3261                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3262                 else
3263                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3264                 fi
3265                 with_ldap_support=no
3266         fi
3267         ;;
3268   esac
3269 fi
3270
3271 if test x"$with_ldap_support" != x"no"; then
3272   ac_save_LIBS=$LIBS
3273
3274   ##################################################################
3275   # we might need the lber lib on some systems. To avoid link errors
3276   # this test must be before the libldap test
3277   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3278
3279   ########################################################
3280   # If ber_sockbuf_add_io() is available we can add
3281   # SASL wrapping hooks
3282   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3283
3284   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3285                  AC_TRY_COMPILE([#include <ldap.h>],
3286                                 [int val = LDAP_OPT_SOCKBUF;],
3287                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3288                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3289
3290   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3291           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3292         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3293   fi
3294
3295   #######################################################
3296   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3297   # ldap logging and print it out in the samba logs
3298   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3299                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3300                  [AC_TRY_COMPILE([#include <lber.h>],
3301                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3302                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3303                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3304
3305   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3306         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3307                   [Support for LDAP/LBER logging interception])
3308   fi
3309
3310   ########################################################
3311   # now see if we can find the ldap libs in standard paths
3312   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3313
3314   ########################################################
3315   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3316   # Check found in pam_ldap 145.
3317   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3318
3319   LIBS="$LIBS $LDAP_LIBS"
3320   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3321     AC_TRY_COMPILE([
3322         #include <lber.h>
3323         #include <ldap.h>],
3324         [ldap_set_rebind_proc(0, 0, 0);],
3325         [smb_ldap_cv_ldap_set_rebind_proc=3],
3326         [smb_ldap_cv_ldap_set_rebind_proc=2]
3327     )
3328   ])
3329
3330   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3331
3332   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3333
3334   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3335     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3336     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3337     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3338     default_shared_modules="$default_shared_modules";
3339     SMBLDAP="lib/smbldap.o"
3340     SMBLDAPUTIL="lib/smbldap_util.o"
3341     with_ldap_support=yes
3342     AC_MSG_CHECKING(whether LDAP support is used)
3343     AC_MSG_RESULT(yes)
3344   else
3345     if test x"$with_ldap_support" = x"yes"; then
3346         AC_MSG_ERROR(libldap is needed for LDAP support)
3347     else
3348         AC_MSG_WARN(libldap is needed for LDAP support)
3349     fi
3350
3351     LDAP_LIBS=""
3352     with_ldap_support=no
3353   fi
3354   LIBS=$ac_save_LIBS
3355 fi
3356
3357
3358 #################################################
3359 # active directory support
3360
3361 with_ads_support=auto
3362 AC_MSG_CHECKING([for Active Directory and krb5 support])
3363
3364 AC_ARG_WITH(ads,
3365 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3366 [ case "$withval" in
3367     yes|no)
3368         with_ads_support="$withval"
3369         ;;
3370   esac ])
3371
3372 AC_MSG_RESULT($with_ads_support)
3373
3374 FOUND_KRB5=no
3375 KRB5_LIBS=""
3376
3377 if test x"$with_ldap_support" != x"yes"; then
3378
3379     if test x"$with_ads_support" = x"yes"; then
3380         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3381     elif test x"$with_ads_support" = x"auto"; then
3382         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3383         with_ads_support=no
3384     fi
3385
3386 else
3387
3388     # Check to see whether there is enough LDAP functionality to be able
3389     # to build AD support.
3390
3391 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3392 case "$host_os" in
3393         *hpux*)
3394     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3395
3396     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3397         if test x"$with_ads_support" = x"yes"; then
3398             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3399         elif test x"$with_ads_support" = x"auto"; then
3400             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3401             with_ads_support=no
3402         fi
3403     fi
3404     ;;
3405         *)
3406     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3407
3408     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3409         if test x"$with_ads_support" = x"yes"; then
3410             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3411         elif test x"$with_ads_support" = x"auto"; then
3412             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3413             with_ads_support=no
3414         fi
3415     fi
3416     ;;
3417 esac
3418
3419
3420     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3421
3422     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3423         if test x"$with_ads_support" = x"yes"; then
3424             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3425         elif test x"$with_ads_support" = x"auto"; then
3426             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3427             with_ads_support=no
3428         fi
3429     fi
3430
3431 fi
3432
3433 if test x"$with_ads_support" != x"no"; then
3434
3435   # Do no harm to the values of CFLAGS and LIBS while testing for
3436   # Kerberos support.
3437
3438   if test x$FOUND_KRB5 = x"no"; then
3439     #################################################
3440     # check for location of Kerberos 5 install
3441     AC_MSG_CHECKING(for kerberos 5 install path)
3442     AC_ARG_WITH(krb5,
3443     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3444     [ case "$withval" in
3445       no)
3446         AC_MSG_RESULT(no krb5-path given)
3447         ;;
3448       yes)
3449         AC_MSG_RESULT(/usr)
3450         FOUND_KRB5=yes
3451         ;;
3452       *)
3453         AC_MSG_RESULT($withval)
3454         KRB5_CFLAGS="-I$withval/include"
3455         KRB5_CPPFLAGS="-I$withval/include"
3456         KRB5_LDFLAGS="-L$withval/lib"
3457         FOUND_KRB5=yes
3458         if test -x "$withval/bin/krb5-config"; then
3459                 KRB5CONFIG=$withval/bin/krb5-config
3460         fi
3461         ;;
3462       esac ],
3463       AC_MSG_RESULT(no krb5-path given)
3464     )
3465   fi
3466
3467   #################################################
3468   # check for krb5-config from recent MIT and Heimdal kerberos 5
3469   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3470   AC_MSG_CHECKING(for working krb5-config)
3471   if test -x "$KRB5CONFIG"; then
3472     ac_save_CFLAGS=$CFLAGS
3473     CFLAGS="";export CFLAGS
3474     ac_save_LDFLAGS=$LDFLAGS
3475     LDFLAGS="";export LDFLAGS
3476     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3477     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3478     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3479     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3480     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3481     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3482     FOUND_KRB5=yes
3483     AC_MSG_RESULT(yes)
3484   else
3485     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3486   fi
3487
3488   if test x$FOUND_KRB5 = x"no"; then
3489     #################################################
3490     # see if this box has the SuSE location for the heimdal krb implementation
3491     AC_MSG_CHECKING(for /usr/include/heimdal)
3492     if test -d /usr/include/heimdal; then
3493       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3494           KRB5_CFLAGS="-I/usr/include/heimdal"
3495           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3496           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3497           FOUND_KRB5=yes
3498           AC_MSG_RESULT(yes)
3499       else
3500           KRB5_CFLAGS="-I/usr/include/heimdal"
3501           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3502           FOUND_KRB5=yes
3503           AC_MSG_RESULT(yes)
3504       fi
3505     else
3506       AC_MSG_RESULT(no)
3507     fi
3508   fi
3509
3510   if test x$FOUND_KRB5 = x"no"; then
3511     #################################################
3512     # see if this box has the RedHat location for kerberos
3513     AC_MSG_CHECKING(for /usr/kerberos)
3514     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3515       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3516       KRB5_CFLAGS="-I/usr/kerberos/include"
3517       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3518       FOUND_KRB5=yes
3519       AC_MSG_RESULT(yes)
3520     else
3521       AC_MSG_RESULT(no)
3522     fi
3523   fi
3524
3525   if test x$FOUND_KRB5 = x"no"; then
3526     #################################################
3527     # see if this box has the OpenBSD location for heimdal krb5
3528     AC_MSG_CHECKING(for /usr/include/kerberosV)
3529     if test -d /usr/include/kerberosV; then
3530       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3531       KRB5_LIBS="-lcrypto"
3532       FOUND_KRB5=yes
3533       AC_MSG_RESULT(yes)
3534     else
3535       AC_MSG_RESULT(no)
3536     fi
3537   fi
3538
3539   ac_save_CFLAGS=$CFLAGS
3540   ac_save_CPPFLAGS=$CPPFLAGS
3541   ac_save_LDFLAGS=$LDFLAGS
3542
3543   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3544   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3545   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3546
3547   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3548
3549   # now check for krb5.h. Some systems have the libraries without the headers!
3550   # note that this check is done here to allow for different kerberos
3551   # include paths
3552   AC_CHECK_HEADERS(krb5.h)
3553
3554   if test x"$ac_cv_header_krb5_h" = x"no"; then
3555
3556     # Give a warning if AD support was not explicitly requested,
3557     # i.e with_ads_support = auto, otherwise die with an error.
3558
3559     if test x"$with_ads_support" = x"yes"; then
3560       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3561     else
3562       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3563     fi
3564
3565     # Turn off AD support and restore CFLAGS and LIBS variables
3566
3567     with_ads_support="no"
3568
3569     CFLAGS=$ac_save_CFLAGS
3570     CPPFLAGS=$ac_save_CPPFLAGS
3571     LDFLAGS=$ac_save_LDFLAGS
3572   fi
3573   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3574   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3575         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3576         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3577   fi
3578 fi
3579
3580 # Now we have determined whether we really want ADS support
3581 use_ads=no
3582 if test x"$with_ads_support" != x"no"; then
3583   use_ads=yes
3584   have_gssapi=no
3585   ac_save_LIBS=$LIBS
3586
3587   # now check for gssapi headers.  This is also done here to allow for
3588   # different kerberos include paths
3589   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3590
3591   ##################################################################
3592   # we might need the k5crypto and com_err libraries on some systems
3593   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3594   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3595
3596   # Heimdal checks.
3597   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3598   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3599   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3600
3601   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3602   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3603
3604   ########################################################
3605   # now see if we can find the krb5 libs in standard paths
3606   # or as specified above
3607   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3608   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3609
3610   ########################################################
3611   # now see if we can find the gssapi libs in standard paths
3612   if test x"$have_gssapi" != x"yes"; then
3613      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3614   fi
3615
3616   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3617   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3618   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3619   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3620   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3621   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3622   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3623   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3624   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3625   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3626   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3627   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3628   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3629   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3630   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3631   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3632   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3633   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3634   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3635   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3636   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3637   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3638   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3639   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3640   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3641   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3642   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3643   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3644   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3645   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3646   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3647   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3648   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3649   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3650   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3651   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3652   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3653   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3654   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3655   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3656   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3657   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3658   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3659
3660   LIBS="$KRB5_LIBS $LIBS"
3661
3662   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3663         smb_krb5_cv_ticket_has_keyinfo,
3664         [
3665             AC_TRY_COMPILE(
3666             [
3667                 #include <krb5.h>
3668             ],
3669             [
3670                 krb5_ticket ticket;
3671                 krb5_kvno kvno;
3672                 krb5_enctype enctype;
3673
3674                 enctype = ticket.enc_part.enctype;
3675                 kvno = ticket.enc_part.kvno;
3676             ],
3677             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3678             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3679         ])
3680
3681   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3682         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3683             [Whether the krb5_ticket structure contains the kvno and enctype])
3684   fi
3685
3686   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3687           smb_krb5_cv_creds_opt_free_context,
3688           [
3689                 AC_TRY_COMPILE([
3690                     #include <krb5.h>],
3691                     [
3692                         krb5_context ctx;
3693                         krb5_get_init_creds_opt *opt = NULL;
3694                         krb5_get_init_creds_opt_free(ctx, opt);
3695                     ],
3696                     [smb_krb5_cv_creds_opt_free_context=yes],
3697                     [smb_krb5_cv_creds_opt_free_context=no]
3698                 )
3699           ])
3700
3701   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3702         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3703             [Whether krb5_get_init_creds_opt_free takes a context argument])
3704   fi
3705
3706   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3707     AC_TRY_COMPILE([
3708         #include <krb5.h>],
3709         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3710         [smb_krb5_cv_verify_checksum=7],
3711         [smb_krb5_cv_verify_checksum=6],
3712     )
3713   ])
3714   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3715
3716   AC_CACHE_CHECK([for checksum in krb5_checksum],
3717                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3718     AC_TRY_COMPILE([#include <krb5.h>],
3719       [krb5_checksum cksum; cksum.checksum.length = 0;],
3720       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3721       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3722
3723   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3724     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3725                [Whether the krb5_checksum struct has a checksum property])
3726   fi
3727
3728   AC_CACHE_CHECK([for etype in EncryptedData],
3729                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3730     AC_TRY_COMPILE([#include <krb5.h>],
3731       [EncryptedData edata; edata.etype = 0;],
3732       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3733       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3734
3735   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3736     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3737                [Whether the EncryptedData struct has a etype property])
3738   fi
3739
3740   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3741                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3742     AC_TRY_COMPILE([#include <krb5.h>],
3743       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3744       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3745       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3746
3747   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3748     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3749                [Whether the krb5_ap_req struct has a ticket pointer])
3750   fi
3751
3752   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3753                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3754     AC_TRY_COMPILE([#include <krb5.h>],
3755       [krb5_error err; err.e_data = NULL;],
3756       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3757       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3758
3759   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3760     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3761                [Whether the krb5_error struct has a e_data pointer])
3762   fi
3763
3764   AC_CACHE_CHECK([for krb5_crypto type],
3765                 samba_cv_HAVE_KRB5_CRYPTO,[
3766     AC_TRY_COMPILE([#include <krb5.h>],
3767       [krb5_crypto crypto;],
3768       samba_cv_HAVE_KRB5_CRYPTO=yes,
3769       samba_cv_HAVE_KRB5_CRYPTO=no)])
3770
3771   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3772     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3773                [Whether the type krb5_crypto exists])
3774   fi
3775
3776   AC_CACHE_CHECK([for krb5_encrypt_block type],
3777                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3778     AC_TRY_COMPILE([#include <krb5.h>],
3779       [krb5_encrypt_block block;],
3780       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3781       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3782
3783   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3784     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3785                [Whether the type krb5_encrypt_block exists])
3786   fi
3787
3788   AC_CACHE_CHECK([for addrtype in krb5_address],
3789                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3790     AC_TRY_COMPILE([#include <krb5.h>],
3791       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3792       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3793       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3794
3795   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3796     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3797                [Whether the krb5_address struct has a addrtype property])
3798   fi
3799
3800   AC_CACHE_CHECK([for addr_type in krb5_address],
3801                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3802     AC_TRY_COMPILE([#include <krb5.h>],
3803       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3804       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3805       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3806
3807   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3808     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3809               [Whether the krb5_address struct has a addr_type property])
3810   fi
3811
3812   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3813                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3814                  [AC_TRY_COMPILE([#include <krb5.h>],
3815     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3816     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3817
3818   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3819     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3820               [Whether the krb5_ticket struct has a enc_part2 property])
3821   fi
3822
3823   AC_CACHE_CHECK([for keyblock in krb5_creds],
3824                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3825     AC_TRY_COMPILE([#include <krb5.h>],
3826       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3827       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3828       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3829
3830   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3831     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3832               [Whether the krb5_creds struct has a keyblock property])
3833   fi
3834
3835   AC_CACHE_CHECK([for session in krb5_creds],
3836                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3837     AC_TRY_COMPILE([#include <krb5.h>],
3838       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3839       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3840       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3841
3842   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3843     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3844               [Whether the krb5_creds struct has a session property])
3845   fi
3846
3847   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3848                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3849     AC_TRY_COMPILE([#include <krb5.h>],
3850       [krb5_keyblock key; key.keyvalue.data = NULL;],
3851       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3852       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3853
3854   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3855     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3856               [Whether the krb5_keyblock struct has a keyvalue property])
3857   fi
3858
3859   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3860                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3861     AC_TRY_COMPILE([#include <krb5.h>],
3862       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3863       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3864       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3865   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3866                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3867     AC_TRY_COMPILE([#include <krb5.h>],
3868       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3869       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3870       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3871 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3872 # w.r.t. arcfour and windows, so we must not enable it here
3873   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3874           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3875     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3876               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3877   fi
3878
3879   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3880                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3881     AC_TRY_COMPILE([#include <krb5.h>],
3882       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3883       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3884       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3885
3886   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3887     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3888               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3889   fi
3890
3891   AC_CACHE_CHECK([for KV5M_KEYTAB],
3892                  samba_cv_HAVE_KV5M_KEYTAB,[
3893     AC_TRY_COMPILE([#include <krb5.h>],
3894       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3895       samba_cv_HAVE_KV5M_KEYTAB=yes,
3896       samba_cv_HAVE_KV5M_KEYTAB=no)])
3897
3898   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3899       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3900              [Whether the KV5M_KEYTAB option is available])
3901   fi
3902
3903   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3904                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3905     AC_TRY_COMPILE([#include <krb5.h>],
3906       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3907       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3908       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3909
3910   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3911     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3912               [Whether KRB5_KU_OTHER_CKSUM is available])
3913   fi
3914
3915   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3916                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3917     AC_TRY_COMPILE([#include <krb5.h>],
3918       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3919       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3920       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3921
3922   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3923     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3924               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3925   fi
3926
3927   AC_CACHE_CHECK([for the krb5_princ_component macro],
3928                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3929     AC_TRY_LINK([#include <krb5.h>],
3930       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3931       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3932       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3933
3934   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3935     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3936                [Whether krb5_princ_component is available])
3937   fi
3938
3939   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3940                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3941     AC_TRY_COMPILE([#include <krb5.h>],
3942       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3943       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3944       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3945
3946   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3947     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3948               [Whether krb5_keytab_entry has key member])
3949   fi
3950
3951   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3952                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3953     AC_TRY_COMPILE([#include <krb5.h>],
3954       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3955       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3956       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3957
3958   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3959     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3960               [Whether krb5_keytab_entry has keyblock member])
3961   fi
3962
3963   AC_CACHE_CHECK([for magic in krb5_address],
3964                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3965     AC_TRY_COMPILE([#include <krb5.h>],
3966       [krb5_address addr; addr.magic = 0;],
3967       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3968       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3969
3970   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3971     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3972               [Whether the krb5_address struct has a magic property])
3973   fi
3974
3975   AC_CACHE_CHECK([for WRFILE: keytab support],
3976                 samba_cv_HAVE_WRFILE_KEYTAB,[
3977     AC_TRY_RUN([
3978 #include<krb5.h>
3979   main()
3980   {
3981     krb5_context context;
3982     krb5_keytab keytab;
3983
3984     krb5_init_context(&context);
3985     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3986   }],
3987   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3988   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3989
3990   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3991       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3992                [Whether the WRFILE:-keytab is supported])
3993   fi
3994
3995   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3996                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3997     AC_TRY_COMPILE([#include <krb5.h>],
3998     [
3999     krb5_context context;
4000     krb5_principal principal;
4001     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4002     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4003     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4004
4005   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4006     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4007               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4008   fi
4009
4010   AC_CACHE_CHECK([for krb5_addresses type],
4011                 samba_cv_HAVE_KRB5_ADDRESSES,[
4012     AC_TRY_COMPILE([#include <krb5.h>],
4013       [krb5_addresses addr;],
4014       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4015       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4016
4017   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4018     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4019                [Whether the type krb5_addresses type exists])
4020   fi
4021
4022   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4023                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4024     AC_TRY_COMPILE([#include <krb5.h>],
4025     [
4026     krb5_mk_error(0,0,0);],
4027     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4028     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4029
4030   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4031     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4032               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4033   fi
4034
4035   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4036     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4037         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4038         AC_TRY_RUN_STRICT([
4039                 #include <stdlib.h>
4040                 #include <krb5.h>
4041                 int main(void) {
4042                         krb5_context context = NULL;
4043                         char *str = NULL;
4044                         krb5_enctype_to_string(context, 1, &str);
4045                         if (str) free (str); 
4046                         return 0;
4047                 }
4048                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4049                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4050                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4051
4052     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4053       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4054                 [whether krb5_enctype_to_string takes krb5_context argument])
4055     fi
4056
4057     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4058         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4059         AC_TRY_RUN_STRICT([
4060                 #include <krb5.h>
4061                 int main(void) {
4062                         char buf[256];
4063                         krb5_enctype_to_string(1, buf, 256);
4064                         return 0;
4065                 }
4066                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4067                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4068                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4069
4070     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4071       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4072                 [whether krb5_enctype_to_string takes size_t argument])
4073     fi
4074   fi
4075
4076   AC_CACHE_CHECK([for krb5_principal_get_realm],
4077                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4078     AC_TRY_LINK([#include <krb5.h>],
4079       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4080       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4081       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4082
4083   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4084     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4085                [Whether the function krb5_principal_get_realm is defined])
4086   fi
4087
4088   AC_CACHE_CHECK([for krb5_princ_realm],
4089                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4090     AC_TRY_LINK([#include <krb5.h>],
4091       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4092       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4093       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4094
4095   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4096     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4097                [Whether the macro krb5_princ_realm is defined])
4098   fi
4099
4100   #
4101   #
4102   # Now the decisions whether we can support krb5
4103   #
4104   # NOTE: all tests should be done before this block!
4105   #
4106   #
4107   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4108     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4109     use_ads=no
4110   fi
4111
4112   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4113           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4114   then
4115     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4116     use_ads=no
4117   fi
4118
4119   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4120           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4121   then
4122     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4123     use_ads=no
4124   fi
4125
4126   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4127           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4128   then
4129     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4130     use_ads=no
4131   fi
4132
4133   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4134           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4135   then
4136     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4137     use_ads=no
4138   fi
4139
4140   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4141
4142       # We only need the following functions if we can't get the enctype
4143       # and kvno out of the ticket directly (ie. on Heimdal).
4144
4145       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4146       then
4147         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4148         use_ads=no
4149       fi
4150
4151       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4152       then
4153         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4154         use_ads=no
4155       fi
4156
4157   fi
4158
4159   if test x"$use_ads" = x"yes"; then
4160     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4161     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4162     if test x"$have_gssapi" = x"yes"; then
4163       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4164     fi
4165   else
4166     if test x"$with_ads_support" = x"yes"; then
4167         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4168     else
4169         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4170     fi
4171     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4172     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4173     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4174     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4175     KRB5_LIBS=""
4176     with_ads_support=no
4177   fi
4178   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4179   AC_MSG_RESULT([$use_ads])
4180
4181 LIBS="$ac_save_LIBS"
4182 fi
4183
4184 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4185 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4186
4187
4188 ########################################################
4189 # Compile with DNS Updates support?
4190
4191 with_dnsupdate_support=no
4192 AC_MSG_CHECKING([whether to enable DNS Updates support])
4193
4194 AC_ARG_WITH(dnsupdate,
4195 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4196 [ case "$withval" in
4197     yes|no)
4198         with_dnsupdate_support=$withval
4199         ;;
4200   esac ])
4201
4202 AC_MSG_RESULT($with_dnsupdate_support)
4203
4204 if test x"$with_dnsupdate_support" != x"no"; then
4205
4206   ################################################################
4207   # first test for Active Directory support being enabled
4208   #if test x"$with_ads_support" = x"no"; then
4209   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4210   #             with_dnsupdate_support=no
4211   #fi           
4212   ##################################################################
4213   # then test for uuid.h (necessary to generate unique DNS keynames
4214   # (uuid.h is required for this test)
4215   AC_CHECK_HEADERS(uuid/uuid.h)
4216
4217   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4218         if test x"$with_dnsupdate_support" = x"yes"; then
4219          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4220         else
4221          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4222         fi
4223         with_dnsupdate_support=no
4224   fi
4225 fi
4226
4227 if test x"$with_dnsupdate_support" != x"no"; then
4228
4229   ########################################################
4230   # Now see if we can find the uuid libs in standard paths
4231   # On some systems, the uuid API is in libc, so we have to
4232   # be careful not to insert a spurious -luuid.
4233
4234   UUID_LIBS=""
4235   AC_LIBTESTFUNC(uuid, uuid_generate,
4236           [
4237             case " $LIBS " in
4238                 *\ -luuid\ *)
4239                 UUID_LIBS="-luuid"
4240                 SMB_REMOVE_LIB(uuid)
4241                 ;;
4242             esac
4243
4244             with_dnsupdate_support=yes
4245             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4246         ],
4247         [
4248             if test x"$with_dnsupdate_support" = x"yes"; then
4249                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4250             else
4251                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4252             fi
4253             with_dnsupdate_support=no
4254         ])
4255 fi
4256
4257 #################################################
4258 # check for automount support
4259 AC_MSG_CHECKING(whether to use automount)
4260 AC_ARG_WITH(automount,
4261 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4262 [ case "$withval" in
4263   yes)
4264     AC_MSG_RESULT(yes)
4265     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4266     ;;
4267   *)
4268     AC_MSG_RESULT(no)
4269     ;;
4270   esac ],
4271   AC_MSG_RESULT(no)
4272 )
4273
4274 #################################################
4275 # check for mount- and umount.cifs support
4276 CIFSMOUNT_PROGS=""
4277 INSTALL_CIFSMOUNT=""
4278 UNINSTALL_CIFSMOUNT=""
4279 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4280 AC_ARG_WITH(cifsmount,
4281 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4282 [ case "$withval" in
4283   no)
4284         AC_MSG_RESULT(no)
4285         ;;
4286   *)
4287         case "$host_os" in
4288         *linux*)
4289                 AC_MSG_RESULT(yes)
4290                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4291                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4292                 INSTALL_CIFSMOUNT="installcifsmount"
4293                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4294                 ;;
4295         *)
4296                 AC_MSG_ERROR(not on a linux system!)
4297                 ;;
4298         esac
4299     ;;
4300   esac ],
4301 [ case "$host_os" in
4302   *linux*)
4303         AC_MSG_RESULT(yes)
4304         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4305         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4306         INSTALL_CIFSMOUNT="installcifsmount"
4307         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4308         ;;
4309   *)
4310         AC_MSG_RESULT(no)
4311         ;;
4312   esac ]
4313 )
4314
4315 #################################################
4316 # check for cifs.upcall support
4317 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4318 CIFSUPCALL_PROGS=""
4319 INSTALL_CIFSUPCALL=""
4320 UNINSTALL_CIFSUPCALL=""
4321 AC_MSG_CHECKING(whether to build cifs.upcall)
4322 AC_ARG_WITH(cifsupcall,
4323 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4324 [ case "$withval" in
4325   no)
4326         AC_MSG_RESULT(no)
4327         ;;
4328   *)
4329         case "$host_os" in
4330         *linux*)
4331                 if test x"$use_ads" != x"yes"; then
4332                         AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4333                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4334                         AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4335                 else
4336                         AC_MSG_RESULT(yes)
4337                         AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4338                         CIFSUPCALL_PROGS="bin/cifs.upcall"
4339                         INSTALL_CIFSUPCALL="installcifsupcall"
4340                         UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4341                 fi
4342                 ;;
4343         *)
4344                 AC_MSG_ERROR(not on a linux system!)
4345                 ;;
4346         esac
4347     ;;
4348   esac ],
4349 [ case "$host_os" in
4350   *linux*)
4351         if test x"$use_ads" != x"yes"; then
4352                 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4353         elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4354                 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4355         else
4356                 AC_MSG_RESULT(yes)
4357                 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4358                 CIFSUPCALL_PROGS="bin/cifs.upcall"
4359                 INSTALL_CIFSUPCALL="installcifsupcall"
4360                 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4361         fi
4362         ;;
4363   *)
4364         AC_MSG_RESULT(no)
4365         ;;
4366   esac ]
4367 )
4368
4369
4370 #################################################
4371 # Check for a PAM clear-text auth, accounts, password
4372 # and session support. Most PAM implementations keep their
4373 # headers in /usr/include/security. Darwin keeps its in
4374 # /usr/include/pam.
4375
4376 with_pam_for_crypt=no
4377 try_pam=no
4378 AC_MSG_CHECKING(whether to try PAM support)
4379 AC_ARG_WITH(pam,
4380 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4381 [ case "$withval" in
4382   yes|no)
4383     try_pam=$withval
4384     ;;
4385   esac
4386 ])
4387 AC_MSG_RESULT([$try_pam])
4388
4389 use_pam=no
4390 create_pam_modules=no
4391 if test x"${try_pam}" != x"no";then
4392         use_pam=yes
4393         create_pam_modules=yes
4394
4395         # Most systems have PAM headers in /usr/include/security, but Darwin
4396         # has them in /usr/include/pam.
4397         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4398         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4399                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4400                 if test x"${try_pam}" = x"yes";then
4401                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4402                 fi
4403                 use_pam=no
4404                 create_pam_modules=no
4405         fi
4406
4407         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4408         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4409                 if test x"${try_pam}" = x"yes";then
4410                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4411                 fi
4412                 use_pam=no
4413                 create_pam_modules=no
4414         fi
4415
4416         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4417                 #if HAVE_SECURITY_PAM_APPL_H
4418                 #include <security/pam_appl.h>
4419                 #endif
4420                 #if HAVE_PAM_PAM_APPL_H
4421                 #include <pam/pam_appl.h>
4422                 #endif
4423         ]])
4424         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4425                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4426                 if test x"${try_pam}" = x"yes";then
4427                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4428        fi
4429                 create_pam_modules=no
4430     fi
4431
4432         if test x"$use_pam" = x"yes"; then
4433     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4434                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4435                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4436     with_pam_for_crypt=yes
4437
4438                 if test x"$create_pam_modules" = x"yes"; then
4439                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4440                         # this checks are optional,
4441                         # we don't care about the results here
4442                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4443                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4444                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4445                 else
4446                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4447                 fi
4448         fi
4449         AC_MSG_CHECKING(whether to use PAM support)
4450         AC_MSG_RESULT([$use_pam])
4451
4452         AC_MSG_CHECKING(whether to have PAM MODULES support)
4453         AC_MSG_RESULT([$create_pam_modules])
4454 fi # try_pam != no
4455
4456 #################################################
4457 # check for pam_smbpass support
4458 PAM_MODULES=""
4459 INSTALL_PAM_MODULES=""
4460 UNINSTALL_PAM_MODULES=""
4461 AC_MSG_CHECKING(whether to use pam_smbpass)
4462 AC_ARG_WITH(pam_smbpass,
4463 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4464 [ case "$withval" in
4465   yes)
4466     AC_MSG_RESULT(yes)
4467
4468        # Conditions under which pam_smbpass should not be built.
4469
4470        if test x"$BLDSHARED" != x"true"; then
4471           AC_MSG_ERROR([No support for shared modules])
4472        elif test x"$create_pam_modules" != x"yes"; then
4473           AC_MSG_ERROR([No support for PAM MODULES])
4474        else
4475           PAM_MODULES="pam_smbpass"
4476           INSTALL_PAM_MODULES="installpammodules"
4477           UNINSTALL_PAM_MODULES="uninstallpammodules"
4478        fi
4479     ;;
4480   *)
4481     AC_MSG_RESULT(no)
4482     ;;
4483   esac ],
4484   AC_MSG_RESULT(no)
4485 )
4486
4487
4488 ##
4489 ## moved after the check for -lcrypt in order to
4490 ## ensure that the necessary libraries are included
4491 ## check checking for truncated salt.  Wrapped by the
4492 ## $with_pam_for_crypt variable as above   --jerry
4493 ##
4494 if test $with_pam_for_crypt = no; then
4495 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4496 crypt_LIBS="$LIBS"
4497 LIBS="$AUTH_LIBS $LIBS"
4498 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4499         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4500 LIBS="$crypt_LIBS"])
4501 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4502         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4503 fi
4504 fi
4505
4506 #################################################
4507 # check for a NISPLUS_HOME support
4508 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4509 AC_ARG_WITH(nisplus-home,
4510 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4511 [ case "$withval" in
4512   yes)
4513     AC_MSG_RESULT(yes)
4514     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4515     ;;
4516   *)
4517     AC_MSG_RESULT(no)
4518     ;;
4519   esac ],
4520   AC_MSG_RESULT(no)
4521 )
4522
4523 #################################################
4524 # check for syslog logging
4525 AC_MSG_CHECKING(whether to use syslog logging)
4526 AC_ARG_WITH(syslog,
4527 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4528 [ case "$withval" in
4529   yes)
4530     AC_MSG_RESULT(yes)
4531     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4532     ;;
4533   *)
4534     AC_MSG_RESULT(no)
4535     ;;
4536   esac ],
4537   AC_MSG_RESULT(no)
4538 )
4539
4540 #################################################
4541 # check for custom syslog facility
4542 AC_MSG_CHECKING(whether to use a custom syslog facility)
4543 AC_ARG_WITH(syslog-facility,
4544 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4545 [
4546   if test "$withval" = "no" ; then
4547     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4548   else
4549      if test "$withval" != "yes" ; then
4550         syslog_facility="$withval"
4551         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4552      fi
4553   fi
4554 ])
4555
4556 #################################################
4557 # check for experimental disk-quotas support
4558
4559 samba_cv_WITH_QUOTAS=auto
4560 samba_cv_TRY_QUOTAS=no
4561 samba_cv_RUN_QUOTA_TESTS=auto
4562 samba_cv_WITH_SYS_QUOTAS=auto
4563 samba_cv_TRY_SYS_QUOTAS=auto
4564 samba_cv_SYSQUOTA_FOUND=no
4565
4566 AC_MSG_CHECKING(whether to try disk-quotas support)
4567 AC_ARG_WITH(quotas,
4568 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4569 [ case "$withval" in
4570   yes)
4571     AC_MSG_RESULT(yes)
4572     samba_cv_WITH_QUOTAS=yes
4573     samba_cv_TRY_QUOTAS=yes
4574     samba_cv_RUN_QUOTA_TESTS=yes
4575     #set sys quotas to auto in this case
4576     samba_cv_TRY_SYS_QUOTAS=auto
4577     ;;
4578   auto)
4579     AC_MSG_RESULT(auto)
4580     samba_cv_WITH_QUOTAS=auto
4581     samba_cv_TRY_QUOTAS=auto
4582     samba_cv_RUN_QUOTA_TESTS=auto
4583     #set sys quotas to auto in this case
4584     samba_cv_TRY_SYS_QUOTAS=auto
4585     ;;
4586   no)
4587     AC_MSG_RESULT(no)
4588     samba_cv_WITH_QUOTAS=no
4589     samba_cv_TRY_QUOTAS=no
4590     samba_cv_RUN_QUOTA_TESTS=no
4591     ;;
4592   *)
4593     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4594     ;;
4595   esac ],
4596   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4597 )
4598
4599 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4600 AC_ARG_WITH(sys-quotas,
4601 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4602 [ case "$withval" in
4603   yes)
4604     AC_MSG_RESULT(yes)
4605     samba_cv_WITH_SYS_QUOTAS=yes
4606     samba_cv_TRY_SYS_QUOTAS=yes
4607     samba_cv_RUN_QUOTA_TESTS=yes
4608     ;;
4609   auto)
4610     AC_MSG_RESULT(auto)
4611     samba_cv_WITH_SYS_QUOTAS=auto
4612     samba_cv_TRY_SYS_QUOTAS=auto
4613     samba_cv_RUN_QUOTA_TESTS=auto
4614     ;;
4615   no)
4616     AC_MSG_RESULT(no)
4617     samba_cv_WITH_SYS_QUOTAS=no
4618     samba_cv_TRY_SYS_QUOTAS=no
4619     ;;
4620   *)
4621     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4622     ;;
4623   esac ],
4624   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4625 )
4626
4627 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4628 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4629   case "$host_os" in
4630         *linux*)
4631             AC_MSG_RESULT(yes)
4632             samba_cv_TRY_SYS_QUOTAS=yes
4633             samba_cv_RUN_QUOTA_TESTS=yes
4634             ;;
4635         *)
4636             AC_MSG_RESULT(no)
4637             samba_cv_TRY_SYS_QUOTAS=no
4638             ;;
4639   esac
4640 fi
4641
4642 #############################################
4643 # only check for quota stuff if --with-quotas
4644 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4645
4646 case "$host_os" in
4647         # on linux we didn't need to test we have builtin support
4648         *linux*)
4649             samba_cv_SYSQUOTA_FOUND=yes
4650             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4651             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4652             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4653             AC_MSG_RESULT(yes)
4654
4655             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4656             samba_cv_found_xfs_header=yes
4657             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4658             AC_MSG_RESULT(yes)
4659             ;;
4660         *solaris*)
4661             # need to set this define when using static linking (BUG 1473)
4662             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4663             ;;
4664         *)
4665             ;;
4666 esac
4667
4668 # some broken header files need this
4669 AC_CHECK_HEADER(asm/types.h,[
4670             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4671             AC_ADD_INCLUDE(<asm/types.h>)
4672             ])
4673
4674 # For quotas on Veritas VxFS filesystems
4675 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4676
4677 # For quotas on Linux XFS filesystems
4678 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4679
4680 # For sys/quota.h and linux/quota.h
4681 AC_CHECK_HEADERS(sys/quota.h)
4682
4683 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4684 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4685 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4686 AC_TRY_COMPILE([
4687 #include "confdefs.h"
4688 #ifdef HAVE_SYS_TYPES_H
4689 #include <sys/types.h>
4690 #endif
4691 #ifdef HAVE_ASM_TYPES_H
4692 #include <asm/types.h>
4693 #endif
4694 #include <sys/quota.h>
4695 ],[int i = Q_XGETQUOTA;],
4696 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4697 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4698         samba_cv_found_xfs_header=yes
4699 fi
4700 fi
4701
4702 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4703 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4704 AC_TRY_COMPILE([
4705 #include "confdefs.h"
4706 #ifdef HAVE_SYS_QUOTA_H
4707 #include <sys/quota.h>
4708 #endif
4709 ],[
4710 struct dqblk D;
4711 D.dqb_fsoftlimit = 0;],
4712 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4713 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4714         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4715 fi
4716
4717 ##################
4718 # look for a working quota system
4719
4720 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4721 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4722 AC_TRY_RUN_STRICT([
4723 #define HAVE_QUOTACTL_4A 1
4724 #define AUTOCONF_TEST 1
4725 #include "confdefs.h"
4726 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4727            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4728 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4729     samba_cv_SYSQUOTA_FOUND=yes;
4730     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4731     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4732 fi
4733 fi
4734
4735 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4736 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4737 AC_TRY_RUN_STRICT([
4738 #define HAVE_QUOTACTL_4B 1
4739 #define AUTOCONF_TEST 1
4740 #include "confdefs.h"
4741 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4742            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4743 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4744     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4745     samba_cv_SYSQUOTA_FOUND=yes;
4746     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4747     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4748 fi
4749 fi
4750
4751 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4752 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4753 AC_TRY_RUN_STRICT([
4754 #define HAVE_QUOTACTL_3 1
4755 #define AUTOCONF_TEST 1
4756 #include "confdefs.h"
4757 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4758            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4759 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4760     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4761     samba_cv_SYSQUOTA_FOUND=yes;
4762     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4763     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4764 fi
4765 fi
4766
4767 #################################################
4768 # check for mntent.h and struct mntent
4769 AC_CHECK_HEADERS(mntent.h)
4770 #################################################
4771 # check for setmntent,getmntent,endmntent
4772 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4773
4774 #################################################
4775 # check for devnm.h and struct mntent
4776 AC_CHECK_HEADERS(devnm.h)
4777 #################################################
4778 # check for devnm
4779 AC_CHECK_FUNCS(devnm)
4780
4781 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4782     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4783         # if --with-sys-quotas=yes then build it
4784         # you have can use the get/set quota command smb.conf
4785         # options then
4786         samba_cv_SYSQUOTA_FOUND=auto
4787     fi
4788     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4789         # if --with-sys-quotas=yes then build it
4790         # you have can use the get/set quota command smb.conf
4791         # options then
4792         samba_cv_TRY_SYS_QUOTAS=auto
4793     fi
4794 fi
4795
4796 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4797 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4798 SAVE_CPPFLAGS="$CPPFLAGS"
4799 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4800 AC_TRY_COMPILE([
4801 #include "confdefs.h"
4802 #define NO_PROTO_H 1
4803 #define NO_CONFIG_H 1
4804 #define HAVE_SYS_QUOTAS 1
4805 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4806 #include "${srcdir-.}/lib/sysquotas.c"
4807 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4808 CPPFLAGS="$SAVE_CPPFLAGS"
4809 ])
4810 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4811 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4812     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4813         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4814         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4815         samba_cv_WE_USE_SYS_QUOTAS=yes
4816         AC_MSG_RESULT(yes)
4817     else
4818         AC_MSG_RESULT(no)
4819     fi
4820 fi
4821 fi
4822
4823 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4824 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4825 SAVE_CPPFLAGS="$CPPFLAGS"
4826 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4827 AC_TRY_COMPILE([
4828 #include "confdefs.h"
4829 #define NO_PROTO_H 1
4830 #define NO_CONFIG_H 1
4831 #define HAVE_SYS_QUOTAS 1
4832 #define HAVE_XFS_QUOTAS 1
4833 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4834 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4835 CPPFLAGS="$SAVE_CPPFLAGS"
4836 ])
4837 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4838     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4839         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4840     fi
4841 fi
4842 fi
4843
4844 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4845 SAVE_CPPFLAGS="$CPPFLAGS"
4846 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4847 AC_TRY_COMPILE([
4848 #include "confdefs.h"
4849 #define NO_PROTO_H 1
4850 #define NO_CONFIG_H 1
4851 #include "${srcdir-.}/smbd/quotas.c"
4852 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4853 CPPFLAGS="$SAVE_CPPFLAGS"
4854 ])
4855 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4856 AC_MSG_CHECKING(whether to use the old quota support)
4857     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4858       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4859         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4860         AC_MSG_RESULT(yes)
4861       else
4862         AC_MSG_RESULT(no)
4863       fi
4864     else
4865       AC_MSG_RESULT(no)
4866     fi
4867 fi
4868
4869 ####################
4870 # End of quota check samba_cv_RUN_QUOTA_TESTS
4871 fi
4872
4873 #################################################
4874 # check for experimental utmp accounting
4875
4876 AC_MSG_CHECKING(whether to support utmp accounting)
4877 WITH_UTMP=yes
4878 AC_ARG_WITH(utmp,
4879 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4880 [ case "$withval" in
4881   no)
4882                 WITH_UTMP=no
4883                 ;;
4884   *)
4885                 WITH_UTMP=yes
4886                 ;;
4887   esac ],
4888 )
4889
4890 # utmp requires utmp.h
4891 # Note similar check earlier, when checking utmp details.
4892
4893 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4894         utmp_no_reason=", no utmp.h on $host_os"
4895         WITH_UTMP=no
4896 fi
4897
4898 # Display test results
4899
4900 if test x"$WITH_UTMP" = x"yes"; then
4901         AC_MSG_RESULT(yes)
4902         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4903 else
4904         AC_MSG_RESULT(no$utmp_no_reason)
4905 fi
4906
4907 INSTALLLIBCMD_SH=:
4908 INSTALLLIBCMD_A=:
4909 UNINSTALLLIBCMD_SH=:
4910 UNINSTALLLIBCMD_A=:
4911
4912 if test $BLDSHARED = true; then
4913         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4914         UNINSTALLLIBCMD_SH="rm -f"
4915 fi
4916 if test $enable_static = yes; then
4917         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4918         UNINSTALLLIBCMD_A="rm -f"
4919 fi
4920
4921 #################################################
4922 # --disable-shared-libs
4923 # can be used to disable the internal use of shared libs altogether
4924 # (this only has an effect when building shared libs is enabled)
4925 #
4926 USESHARED=false
4927 AC_SUBST(USESHARED)
4928
4929 AC_MSG_CHECKING(whether to use shared libraries internally)
4930 AC_ARG_ENABLE([shared-libs],
4931         AS_HELP_STRING([--enable-shared-libs],
4932                 [Use shared libraries internally (default=yes)]),
4933         [enable_shared_libs=$enableval],
4934         [enable_shared_libs=yes])
4935
4936 if test x"$enable_shared_libs" != x"no" ; then
4937         USESHARED=$BLDSHARED
4938 fi
4939
4940 AC_MSG_RESULT([$USESHARED])
4941
4942 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4943         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4944 fi
4945
4946 #################################################
4947 # --with-static-libs=LIBS:
4948 #   link (internal) libs dynamically or statically?
4949 #
4950 # If a subsystem is built as a library then this controls whether they are
4951 # linked into Samba targets statically or dynamically:
4952 #
4953 # * If we build the shared library at all, we link dynamically by default.
4954 #
4955 # * We only link statically if we don't build shared or if the library
4956 #   appears in the --with-static-libs configure option.
4957 #
4958 # Example:
4959 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4960 #   of linking the dynamic variant with -ltalloc.
4961 #
4962 # NOTE: This option only affects libraries that we do not only build
4963 # but that samba also links against as libraries (as opposed to linking
4964 # the plain object files. - This has to be configured in Makefile.in.
4965 # So in particular it does not harm to give invalid or unknown names here.
4966 #
4967
4968 AC_ARG_WITH([static-libs],
4969         [AS_HELP_STRING([--with-static-libs=LIBS],
4970                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4971         [AS_IF([test $withval],
4972                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4973                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4974                         eval LINK_$lib=STATIC
4975                 done], [])],
4976         [])
4977
4978 #
4979 # WORKAROUND:
4980 #   until we have organized other internal subsystems (as util, registry
4981 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
4982 #   dynamically to samba programs.
4983 #
4984 LINK_LIBNETAPI=STATIC
4985
4986 LINK_LIBSMBCLIENT=STATIC
4987
4988 #
4989 #  The library versions are hardcoded here
4990 #  and filled into the LIBFOO_SOVER variable.
4991 #
4992 #  TODO: for talloc and tdb (at least), these should
4993 #  be extracted from their respective source directories
4994 #
4995 SMB_LIBRARY(talloc, 1)
4996 SMB_LIBRARY(tdb, 1)
4997 SMB_LIBRARY(netapi, 0)
4998 SMB_LIBRARY(smbclient, 0)
4999 SMB_LIBRARY(smbsharemodes, 0)
5000 SMB_LIBRARY(lua, 0)
5001 SMB_LIBRARY(addns, 0, no, [undefined API])
5002
5003
5004
5005 #################################################
5006 # these tests are taken from the GNU fileutils package
5007 AC_CHECKING(how to get filesystem space usage)
5008 space=no
5009
5010 # Test for statvfs64.
5011 if test $space = no; then
5012   # SVR4
5013   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5014   [AC_TRY_RUN([
5015 #if defined(HAVE_UNISTD_H)
5016 #include <unistd.h>
5017 #endif
5018 #include <sys/types.h>
5019 #include <sys/statvfs.h>
5020   main ()
5021   {
5022     struct statvfs64 fsd;
5023     exit (statvfs64 (".", &fsd));
5024   }],
5025   fu_cv_sys_stat_statvfs64=yes,
5026   fu_cv_sys_stat_statvfs64=no,
5027   fu_cv_sys_stat_statvfs64=cross)])
5028   if test $fu_cv_sys_stat_statvfs64 = yes; then
5029     space=yes
5030     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5031   fi
5032 fi
5033
5034 # Perform only the link test since it seems there are no variants of the
5035 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
5036 # because that got a false positive on SCO OSR5.  Adding the declaration
5037 # of a `struct statvfs' causes this test to fail (as it should) on such
5038 # systems.  That system is reported to work fine with STAT_STATFS4 which
5039 # is what it gets when this test fails.
5040 if test $space = no; then
5041   # SVR4
5042   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5043                  [AC_TRY_LINK([#include <sys/types.h>
5044 #include <sys/statvfs.h>],
5045                               [struct statvfs fsd; statvfs (0, &fsd);],
5046                               fu_cv_sys_stat_statvfs=yes,
5047                               fu_cv_sys_stat_statvfs=no)])
5048   if test $fu_cv_sys_stat_statvfs = yes; then
5049     space=yes
5050     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5051   fi
5052 fi
5053
5054 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5055 # This is not the case on ancient Linux systems.
5056
5057 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5058     AC_TRY_COMPILE([#include <sys/types.h>
5059 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5060         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5061 if test x"$samba_cv_fsid_int" = x"yes"; then
5062     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5063 fi
5064
5065 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5066 # systems use f_bsize.
5067 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5068     AC_TRY_COMPILE([#include <sys/types.h>
5069 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5070         samba_cv_frsize=yes,samba_cv_frsize=no)])
5071 if test x"$samba_cv_frsize" = x"yes"; then
5072     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5073 fi
5074
5075 if test $space = no; then
5076   # DEC Alpha running OSF/1
5077   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5078   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5079   [AC_TRY_RUN([
5080 #include <sys/param.h>
5081 #include <sys/types.h>
5082 #include <sys/mount.h>
5083   main ()
5084   {
5085     struct statfs fsd;
5086     fsd.f_fsize = 0;
5087     exit (statfs (".", &fsd, sizeof (struct statfs)));
5088   }],
5089   fu_cv_sys_stat_statfs3_osf1=yes,
5090   fu_cv_sys_stat_statfs3_osf1=no,
5091   fu_cv_sys_stat_statfs3_osf1=no)])
5092   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5093   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5094     space=yes
5095     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5096   fi
5097 fi
5098
5099 if test $space = no; then
5100 # AIX
5101   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5102 member (AIX, 4.3BSD)])
5103   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5104   [AC_TRY_RUN([
5105 #ifdef HAVE_SYS_PARAM_H
5106 #include <sys/param.h>
5107 #endif
5108 #ifdef HAVE_SYS_MOUNT_H
5109 #include <sys/mount.h>
5110 #endif
5111 #ifdef HAVE_SYS_VFS_H
5112 #include <sys/vfs.h>
5113 #endif
5114   main ()
5115   {
5116   struct statfs fsd;
5117   fsd.f_bsize = 0;
5118   exit (statfs (".", &fsd));
5119   }],
5120   fu_cv_sys_stat_statfs2_bsize=yes,
5121   fu_cv_sys_stat_statfs2_bsize=no,
5122   fu_cv_sys_stat_statfs2_bsize=no)])
5123   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5124   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5125     space=yes
5126     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5127   fi
5128 fi
5129
5130 if test $space = no; then
5131 # SVR3
5132   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5133   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5134   [AC_TRY_RUN([#include <sys/types.h>
5135 #include <sys/statfs.h>
5136   main ()
5137   {
5138   struct statfs fsd;
5139   exit (statfs (".", &fsd, sizeof fsd, 0));
5140   }],
5141     fu_cv_sys_stat_statfs4=yes,
5142     fu_cv_sys_stat_statfs4=no,
5143     fu_cv_sys_stat_statfs4=no)])
5144   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5145   if test $fu_cv_sys_stat_statfs4 = yes; then
5146     space=yes
5147     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5148   fi
5149 fi
5150
5151 if test $space = no; then
5152 # 4.4BSD and NetBSD
5153   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5154 member (4.4BSD and NetBSD)])
5155   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5156   [AC_TRY_RUN([#include <sys/types.h>
5157 #ifdef HAVE_SYS_PARAM_H
5158 #include <sys/param.h>
5159 #endif
5160 #ifdef HAVE_SYS_MOUNT_H
5161 #include <sys/mount.h>
5162 #endif
5163   main ()
5164   {
5165   struct statfs fsd;
5166   fsd.f_fsize = 0;
5167   exit (statfs (".", &fsd));
5168   }],
5169   fu_cv_sys_stat_statfs2_fsize=yes,
5170   fu_cv_sys_stat_statfs2_fsize=no,
5171   fu_cv_sys_stat_statfs2_fsize=no)])
5172   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5173   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5174     space=yes
5175         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5176   fi
5177 fi
5178
5179 if test $space = no; then
5180   # Ultrix
5181   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5182   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5183   [AC_TRY_RUN([#include <sys/types.h>
5184 #ifdef HAVE_SYS_PARAM_H
5185 #include <sys/param.h>
5186 #endif
5187 #ifdef HAVE_SYS_MOUNT_H
5188 #include <sys/mount.h>
5189 #endif
5190 #ifdef HAVE_SYS_FS_TYPES_H
5191 #include <sys/fs_types.h>
5192 #endif
5193   main ()
5194   {
5195   struct fs_data fsd;
5196   /* Ultrix's statfs returns 1 for success,
5197      0 for not mounted, -1 for failure.  */
5198   exit (statfs (".", &fsd) != 1);
5199   }],
5200   fu_cv_sys_stat_fs_data=yes,
5201   fu_cv_sys_stat_fs_data=no,
5202   fu_cv_sys_stat_fs_data=no)])
5203   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5204   if test $fu_cv_sys_stat_fs_data = yes; then
5205     space=yes
5206     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5207   fi
5208 fi
5209
5210 #
5211 # As a gating factor for large file support, in order to
5212 # use <4GB files we must have the following minimal support
5213 # available.
5214 # long long, and a 64 bit off_t or off64_t.
5215 # If we don't have all of these then disable large
5216 # file support.
5217 #
5218 AC_MSG_CHECKING([if large file support can be enabled])
5219 AC_TRY_COMPILE([
5220 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5221 #include <sys/types.h>
5222 #else
5223 __COMPILE_ERROR_
5224 #endif
5225 ],
5226 [int i],
5227 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5228 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5229         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5230 fi
5231 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5232
5233 #################################################
5234 # check for cluster extensions
5235
5236 CTDB_CFLAGS=""
5237 AC_SUBST(CTDB_CFLAGS)
5238 AC_ARG_WITH(ctdb,
5239 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5240 [ case "$withval" in
5241   yes|no)
5242     AC_MSG_WARN([--with-ctdb called without argument])
5243     ;;
5244   *)
5245     CTDB_CPPFLAGS="-I$withval/include"
5246     ;;
5247   esac])
5248
5249 SAVED_CPPFLAGS="$CPPFLAGS"
5250 CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS"
5251 ctdb_broken="missing or broken headers"
5252
5253 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5254 #include "confdefs.h"
5255 #define NO_CONFIG_H
5256 #include "replace.h"
5257 #include "system/wait.h"
5258 #include "system/network.h"
5259 #define private #error __USED_RESERVED_WORD_private__
5260 #include <talloc.h>
5261 #include <tdb.h>
5262 #include <ctdb.h>
5263 ])
5264
5265 AC_HAVE_DECL(CTDB_CONTROL_TRANS2_COMMIT_RETRY,[
5266 #include "confdefs.h"
5267 #define NO_CONFIG_H
5268 #include "replace.h"
5269 #include "system/wait.h"
5270 #include "system/network.h"
5271 #include <talloc.h>
5272 #include <tdb.h>
5273 #include <ctdb.h>
5274 #include <ctdb_private.h>
5275 ])
5276 if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then
5277         ctdb_broken=no
5278 else
5279         ctdb_broken="missing transaction support"
5280 fi
5281
5282 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5283 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5284         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5285 ],,[
5286 #include "confdefs.h"
5287 #define NO_CONFIG_H
5288 #include "replace.h"
5289 #include "system/wait.h"
5290 #include "system/network.h"
5291 #include <talloc.h>
5292 #include <tdb.h>
5293 #include <ctdb.h>
5294 #include <ctdb_private.h>
5295 ])
5296
5297 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5298         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5299 ],[
5300         ctdb_broken="missing struct ctdb_control_tcp"
5301 ],[
5302 #include "confdefs.h"
5303 #define NO_CONFIG_H
5304 #include "replace.h"
5305 #include "system/wait.h"
5306 #include "system/network.h"
5307 #include <talloc.h>
5308 #include <tdb.h>
5309 #include <ctdb.h>
5310 #include <ctdb_private.h>
5311 ])
5312
5313 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5314         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5315 ],,[
5316 #include "confdefs.h"
5317 #define NO_CONFIG_H
5318 #include "replace.h"
5319 #include "system/wait.h"
5320 #include "system/network.h"
5321 #include <talloc.h>
5322 #include <tdb.h>
5323 #include <ctdb.h>
5324 #include <ctdb_private.h>
5325 ])
5326 CPPFLAGS="$SAVED_CPPFLAGS"
5327
5328 AC_MSG_CHECKING(cluster support)
5329 AC_ARG_WITH(cluster-support,
5330 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5331
5332 if test x"$with_cluster_support" = x ; then
5333         with_cluster_support="auto"
5334 fi
5335
5336 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5337         if test "x$with_cluster_support" = "xyes"; then
5338                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5339         fi
5340         with_cluster_support=no
5341 fi
5342
5343 if test x"$ctdb_broken" != x"no"; then
5344         if test "x$with_cluster_support" = "xyes"; then
5345                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5346         fi
5347         with_cluster_support=no
5348 fi
5349
5350 if test "x$with_cluster_support" != "xno"; then
5351     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5352     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5353     AC_MSG_RESULT(yes)
5354 else
5355     AC_MSG_RESULT(no)
5356 fi
5357
5358 #################################################
5359 # check for ACL support
5360
5361 AC_MSG_CHECKING(whether to support ACLs)
5362 AC_ARG_WITH(acl-support,
5363 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5364 [ case "$withval" in
5365         yes|no)
5366                 with_acl_support="$withval"
5367                 ;;
5368   esac ])
5369
5370 if test x"$with_acl_support" = x ; then
5371         with_acl_support="auto"
5372 fi
5373
5374 AC_MSG_RESULT($with_acl_support)
5375
5376 if test x"$with_acl_support" = x"no"; then
5377         AC_MSG_RESULT(Disabling ACL support)
5378         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5379 else
5380         AC_MSG_NOTICE(checking whether ACL support is available:)
5381         case "$host_os" in
5382         *sysv5*)
5383                 AC_MSG_NOTICE(Using UnixWare ACLs)
5384                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5385                 default_static_modules="$default_static_modules vfs_solarisacl"
5386                 ;;
5387         *solaris*)
5388                 AC_MSG_NOTICE(Using solaris ACLs)
5389                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5390                 ACL_LIBS="$ACL_LIBS -lsec"
5391                 default_static_modules="$default_static_modules vfs_solarisacl"
5392                 ;;
5393         *hpux*)
5394                 AC_MSG_NOTICE(Using HPUX ACLs)
5395                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5396                 default_static_modules="$default_static_modules vfs_hpuxacl"
5397                 ;;
5398         *irix*)
5399                 AC_MSG_NOTICE(Using IRIX ACLs)
5400                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5401                 default_static_modules="$default_static_modules vfs_irixacl"
5402                 ;;
5403         *aix*)
5404                 AC_MSG_NOTICE(Using AIX ACLs)
5405                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5406                 default_static_modules="$default_static_modules vfs_aixacl"
5407                 ;;
5408         *osf*)
5409                 AC_MSG_NOTICE(Using Tru64 ACLs)
5410                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5411                 ACL_LIBS="$ACL_LIBS -lpacl"
5412                 default_static_modules="$default_static_modules vfs_tru64acl"
5413                 ;;
5414         *darwin*)
5415                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5416                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5417                 ;;
5418         *)
5419                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5420                 case "$host_os" in
5421                 *linux*)
5422                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5423                         ;;
5424                 esac
5425                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5426                         acl_LIBS=$LIBS
5427                         LIBS="$LIBS $ACL_LIBS"
5428                         AC_TRY_LINK([
5429                                 #include <sys/types.h>
5430                                 #include <sys/acl.h>
5431                         ],[
5432                                 acl_t acl;
5433                                 int entry_id;
5434                                 acl_entry_t *entry_p;
5435                                 return acl_get_entry(acl, entry_id, entry_p);
5436                         ],
5437                         [samba_cv_HAVE_POSIX_ACLS=yes],
5438                         [samba_cv_HAVE_POSIX_ACLS=no])
5439                         LIBS=$acl_LIBS
5440                 ])
5441                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5442                         AC_MSG_NOTICE(Using posix ACLs)
5443                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5444                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5445                                 acl_LIBS=$LIBS
5446                                 LIBS="$LIBS $ACL_LIBS"
5447                                 AC_TRY_LINK([
5448                                         #include <sys/types.h>
5449                                         #include <sys/acl.h>
5450                                 ],[
5451                                         acl_permset_t permset_d;
5452                                         acl_perm_t perm;
5453                                         return acl_get_perm_np(permset_d, perm);
5454                                 ],
5455                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5456                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5457                                 LIBS=$acl_LIBS
5458                         ])
5459                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5460                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5461                         fi
5462                         default_static_modules="$default_static_modules vfs_posixacl"
5463                 else
5464                         AC_MSG_NOTICE(ACL support is not avaliable)
5465                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5466                 fi
5467                 ;;
5468         esac
5469 fi # with_acl_support
5470
5471
5472
5473 #################################################
5474 # check for AIO support
5475
5476 AC_MSG_CHECKING(whether to support asynchronous io)
5477 AC_ARG_WITH(aio-support,
5478 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5479 [ case "$withval" in
5480   yes)
5481
5482         AC_MSG_RESULT(yes)
5483         case "$host_os" in
5484         *)
5485                 AIO_LIBS=$LIBS
5486                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5487                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5488                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5489                 aio_LIBS=$LIBS
5490                 LIBS=$AIO_LIBS
5491                 AC_TRY_LINK([#include <sys/types.h>
5492 #include <aio.h>],
5493 [ struct aiocb a; return aio_read(&a);],
5494 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5495                 LIBS=$aio_LIBS])
5496                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5497                 aio_LIBS=$LIBS
5498                 LIBS=$AIO_LIBS
5499                 AC_TRY_LINK([#include <sys/types.h>
5500 #include <aio.h>],
5501 [ struct aiocb64 a; return aio_read64(&a);],
5502 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5503                 LIBS=$aio_LIBS])
5504                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5505                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5506                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5507                         LIBS=$AIO_LIBS
5508                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5509                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5510                         LIBS=$AIO_LIBS
5511                 fi
5512
5513                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5514                         AC_MSG_CHECKING(for aio_read)
5515                         AC_LINK_IFELSE([#include <aio.h>
5516 int main() { struct aiocb a; return aio_read(&a); }],
5517 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5518 [AC_MSG_RESULT(no)])
5519
5520                         AC_MSG_CHECKING(for aio_write)
5521                         AC_LINK_IFELSE([#include <aio.h>
5522 int main() { struct aiocb a; return aio_write(&a); }],
5523 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5524 [AC_MSG_RESULT(no)])
5525
5526                         AC_MSG_CHECKING(for aio_fsync)
5527                         AC_LINK_IFELSE([#include <aio.h>
5528 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5529 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5530 [AC_MSG_RESULT(no)])
5531
5532                         AC_MSG_CHECKING(for aio_return)
5533                         AC_LINK_IFELSE([#include <aio.h>
5534 int main() { struct aiocb a; return aio_return(&a); }],
5535 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5536 [AC_MSG_RESULT(no)])
5537
5538                         AC_MSG_CHECKING(for aio_error)
5539                         AC_LINK_IFELSE([#include <aio.h>
5540 int main() { struct aiocb a; return aio_error(&a); }],
5541 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5542 [AC_MSG_RESULT(no)])
5543
5544                         AC_MSG_CHECKING(for aio_cancel)
5545                         AC_LINK_IFELSE([#include <aio.h>
5546 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5547 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5548 [AC_MSG_RESULT(no)])
5549
5550                         AC_MSG_CHECKING(for aio_suspend)
5551                         AC_LINK_IFELSE([#include <aio.h>
5552 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5553 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5554 [AC_MSG_RESULT(no)])
5555                 fi
5556
5557                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5558                         AC_MSG_CHECKING(for aio_read64)
5559                         AC_LINK_IFELSE([#include <aio.h>
5560 int main() { struct aiocb a; return aio_read64(&a); }],
5561 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5562 [AC_MSG_RESULT(no)])
5563
5564                         AC_MSG_CHECKING(for aio_write64)
5565                         AC_LINK_IFELSE([#include <aio.h>
5566 int main() { struct aiocb a; return aio_write64(&a); }],
5567 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5568 [AC_MSG_RESULT(no)])
5569
5570                         AC_MSG_CHECKING(for aio_fsync64)
5571                         AC_LINK_IFELSE([#include <aio.h>
5572 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5573 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5574 [AC_MSG_RESULT(no)])
5575
5576                         AC_MSG_CHECKING(for aio_return64)
5577                         AC_LINK_IFELSE([#include <aio.h>
5578 int main() { struct aiocb a; return aio_return64(&a); }],
5579 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5580 [AC_MSG_RESULT(no)])
5581
5582                         AC_MSG_CHECKING(for aio_error64)
5583                         AC_LINK_IFELSE([#include <aio.h>
5584 int main() { struct aiocb a; return aio_error64(&a); }],
5585 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5586 [AC_MSG_RESULT(no)])
5587
5588                         AC_MSG_CHECKING(for aio_cancel64)
5589                         AC_LINK_IFELSE([#include <aio.h>
5590 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5591 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5592 [AC_MSG_RESULT(no)])
5593
5594                         AC_MSG_CHECKING(for aio_suspend64)
5595                         AC_LINK_IFELSE([#include <aio.h>
5596 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5597 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5598 [AC_MSG_RESULT(no)])
5599                 fi
5600             ;;
5601         esac
5602         ;;
5603   *)
5604     AC_MSG_RESULT(no)
5605     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5606     ;;
5607   esac ],
5608   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5609   AC_MSG_RESULT(no)
5610 )
5611
5612 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5613         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5614                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5615                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5616         fi
5617 fi
5618
5619 #################################################
5620 # check for sendfile support
5621
5622 with_sendfile_support=yes
5623 AC_MSG_CHECKING(whether to check to support sendfile)
5624 AC_ARG_WITH(sendfile-support,
5625 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5626 [ case "$withval" in
5627   yes)
5628
5629         AC_MSG_RESULT(yes);
5630
5631         case "$host_os" in
5632         *linux*)
5633                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5634                 AC_TRY_LINK([#include <sys/sendfile.h>],
5635 [\
5636 int tofd, fromfd;
5637 off64_t offset;
5638 size_t total;
5639 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5640 ],
5641 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5642
5643                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5644                 AC_TRY_LINK([#include <sys/sendfile.h>],
5645 [\
5646 int tofd, fromfd;
5647 off_t offset;
5648 size_t total;
5649 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5650 ],
5651 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5652
5653 # Try and cope with broken Linux sendfile....
5654                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5655                 AC_TRY_LINK([\
5656 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5657 #undef _FILE_OFFSET_BITS
5658 #endif
5659 #include <sys/sendfile.h>],
5660 [\
5661 int tofd, fromfd;
5662 off_t offset;
5663 size_t total;
5664 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5665 ],
5666 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5667
5668         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5669                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5670                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5671                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5672         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5673                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5674                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5675                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5676         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5677                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5678                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5679         else
5680                 AC_MSG_RESULT(no);
5681         fi
5682
5683         ;;
5684         *freebsd* | *dragonfly* )
5685                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5686                 AC_TRY_LINK([\
5687 #include <sys/types.h>
5688 #include <unistd.h>
5689 #include <sys/socket.h>
5690 #include <sys/uio.h>],
5691 [\
5692         int fromfd, tofd, ret, total=0;
5693         off_t offset, nwritten;
5694         struct sf_hdtr hdr;
5695         struct iovec hdtrl;
5696         hdr.headers = &hdtrl;
5697         hdr.hdr_cnt = 1;
5698         hdr.trailers = NULL;
5699         hdr.trl_cnt = 0;
5700         hdtrl.iov_base = NULL;
5701         hdtrl.iov_len = 0;
5702         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5703 ],
5704 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5705
5706         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5707                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5708                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5709                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5710         else
5711                 AC_MSG_RESULT(no);
5712         fi
5713         ;;
5714
5715         *hpux*)
5716                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5717                 AC_TRY_LINK([\
5718 #include <sys/socket.h>
5719 #include <sys/uio.h>],
5720 [\
5721         int fromfd, tofd;
5722         size_t total=0;
5723         struct iovec hdtrl[2];
5724         ssize_t nwritten;
5725         off64_t offset;
5726
5727         hdtrl[0].iov_base = 0;
5728         hdtrl[0].iov_len = 0;
5729
5730         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5731 ],
5732 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5733         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5734                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5735                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5736                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5737         else
5738                 AC_MSG_RESULT(no);
5739         fi
5740
5741                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5742                 AC_TRY_LINK([\
5743 #include <sys/socket.h>
5744 #include <sys/uio.h>],
5745 [\
5746         int fromfd, tofd;
5747         size_t total=0;
5748         struct iovec hdtrl[2];
5749         ssize_t nwritten;
5750         off_t offset;
5751
5752         hdtrl[0].iov_base = 0;
5753         hdtrl[0].iov_len = 0;
5754
5755         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5756 ],
5757 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5758         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5759                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5760                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5761                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5762         else
5763                 AC_MSG_RESULT(no);
5764         fi
5765         ;;
5766
5767         *solaris*)
5768                 AC_CHECK_LIB(sendfile,sendfilev)
5769                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5770                 AC_TRY_LINK([\
5771 #include <sys/sendfile.h>],
5772 [\
5773         int sfvcnt;
5774         size_t xferred;
5775         struct sendfilevec vec[2];
5776         ssize_t nwritten;
5777         int tofd;
5778
5779         sfvcnt = 2;
5780
5781         vec[0].sfv_fd = SFV_FD_SELF;
5782         vec[0].sfv_flag = 0;
5783         vec[0].sfv_off = 0;
5784         vec[0].sfv_len = 0;
5785
5786         vec[1].sfv_fd = 0;
5787         vec[1].sfv_flag = 0;
5788         vec[1].sfv_off = 0;
5789         vec[1].sfv_len = 0;
5790         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5791 ],
5792 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5793
5794         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5795                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5796                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5797                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5798         else
5799                 AC_MSG_RESULT(no);
5800         fi
5801
5802                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5803                 AC_TRY_LINK([\
5804 #include <sys/sendfile.h>],
5805 [\
5806         int sfvcnt;
5807         size_t xferred;
5808         struct sendfilevec vec[2];
5809         ssize_t nwritten;
5810         int tofd;
5811
5812         sfvcnt = 2;
5813
5814         vec[0].sfv_fd = SFV_FD_SELF;
5815         vec[0].sfv_flag = 0;
5816         vec[0].sfv_off = 0;
5817         vec[0].sfv_len = 0;
5818
5819         vec[1].sfv_fd = 0;
5820         vec[1].sfv_flag = 0;
5821         vec[1].sfv_off = 0;
5822         vec[1].sfv_len = 0;
5823         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5824 ],
5825 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5826
5827         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5828                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5829                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5830                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5831         else
5832                 AC_MSG_RESULT(no);
5833         fi
5834         ;;
5835         *aix*)
5836                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5837                 AC_TRY_LINK([\
5838 #include <sys/socket.h>],
5839 [\
5840         int fromfd, tofd;
5841         size_t total=0;
5842         struct sf_parms hdtrl;
5843         ssize_t nwritten;
5844         off64_t offset;
5845
5846         hdtrl.header_data = 0;
5847         hdtrl.header_length = 0;
5848         hdtrl.file_descriptor = fromfd;
5849         hdtrl.file_offset = 0;
5850         hdtrl.file_bytes = 0;
5851         hdtrl.trailer_data = 0;
5852         hdtrl.trailer_length = 0;
5853
5854         nwritten = send_file(&tofd, &hdtrl, 0);
5855 ],
5856 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5857         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5858                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5859                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5860                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5861         else
5862                 AC_MSG_RESULT(no);
5863         fi
5864         ;;
5865         *)
5866         ;;
5867         esac
5868         ;;
5869   *)
5870     AC_MSG_RESULT(no)
5871     ;;
5872   esac ],
5873   AC_MSG_RESULT(yes)
5874 )
5875
5876 ############################################
5877 # See if we have the Linux readahead syscall.
5878
5879 AC_CACHE_CHECK([for Linux readahead],
5880                 samba_cv_HAVE_LINUX_READAHEAD,[
5881     AC_TRY_LINK([
5882 #if defined(HAVE_UNISTD_H)
5883 #include <unistd.h>
5884 #endif
5885 #include <fcntl.h>],
5886     [ssize_t err = readahead(0,0,0x80000);],
5887     samba_cv_HAVE_LINUX_READAHEAD=yes,
5888     samba_cv_HAVE_LINUX_READAHEAD=no)])
5889
5890 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5891   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5892              [Whether Linux readahead is available])
5893 fi
5894
5895 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5896
5897 ############################################
5898 # See if we have the posix_fadvise syscall.
5899
5900 AC_CACHE_CHECK([for posix_fadvise],
5901                 samba_cv_HAVE_POSIX_FADVISE,[
5902     AC_TRY_LINK([
5903 #if defined(HAVE_UNISTD_H)
5904 #include <unistd.h>
5905 #endif
5906 #include <fcntl.h>],
5907     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5908     samba_cv_HAVE_POSIX_FADVISE=yes,
5909     samba_cv_HAVE_POSIX_FADVISE=no)])
5910
5911 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5912   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5913              [Whether posix_fadvise is available])
5914 fi
5915
5916 ############################################
5917 # See if we have the Linux splice syscall.
5918
5919 case "$host_os" in
5920 *linux*)
5921 AC_CACHE_CHECK([for Linux splice],
5922                 samba_cv_HAVE_LINUX_SPLICE,[
5923     AC_TRY_LINK([
5924 #if defined(HAVE_UNISTD_H)
5925 #include <unistd.h>
5926 #endif
5927 #include <fcntl.h>],
5928     [long ret = splice(0,0,1,0,400,0);],
5929     samba_cv_HAVE_LINUX_SPLICE=yes,
5930     samba_cv_HAVE_LINUX_SPLICE=no)])
5931 ;;
5932 *)
5933 samba_cv_HAVE_LINUX_SPLICE=no
5934 ;;
5935 esac
5936
5937 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5938   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5939              [Whether Linux splice is available])
5940 fi
5941
5942 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5943
5944
5945 #################################################
5946 # Check whether winbind is supported on this platform.  If so we need to
5947 # build and install client programs, sbin programs and shared libraries
5948
5949 AC_MSG_CHECKING(whether to build winbind)
5950
5951 # Initially, the value of $host_os decides whether winbind is supported
5952
5953 HAVE_WINBIND=yes
5954
5955 # Define the winbind shared library name and any specific linker flags
5956 # it needs to be built with.
5957
5958 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5959 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5960 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5961 NSSSONAMEVERSIONSUFFIX=""
5962 WINBIND_NSS_PTHREAD=""
5963
5964 case "$host_os" in
5965         *linux*)
5966                 NSSSONAMEVERSIONSUFFIX=".2"
5967                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5968                 ;;
5969         *freebsd[[5-9]]*)
5970                 # FreeBSD winbind client is implemented as a wrapper around
5971                 # the Linux version.
5972                 NSSSONAMEVERSIONSUFFIX=".1"
5973                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5974                     ../nsswitch/winbind_nss_linux.o"
5975                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5976                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5977                 ;;
5978
5979         *netbsd*[[3-9]]*)
5980                 # NetBSD winbind client is implemented as a wrapper
5981                 # around the Linux version. It needs getpwent_r() to
5982                 # indicate libc's use of the correct nsdispatch API.
5983                 #
5984                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5985                         WINBIND_NSS_EXTRA_OBJS="\
5986                             ../nsswitch/winbind_nss_netbsd.o \
5987                             ../nsswitch/winbind_nss_linux.o"
5988                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5989                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5990                 else
5991                         HAVE_WINBIND=no
5992                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5993                 fi
5994                 ;;
5995         *irix*)
5996                 # IRIX has differently named shared libraries
5997                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5998                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5999                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6000                 ;;
6001         *solaris*)
6002                 # Solaris winbind client is implemented as a wrapper around
6003                 # the Linux version.
6004                 NSSSONAMEVERSIONSUFFIX=".1"
6005                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6006                     ../nsswitch/winbind_nss_linux.o"
6007                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
6008                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
6009                 ;;
6010         *hpux11*)
6011                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6012                 ;;
6013         *aix*)
6014                 # AIX has even differently named shared libraries.  No
6015                 # WINS support has been implemented yet.
6016                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6017                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6018                 WINBIND_NSS="../nsswitch/WINBIND"
6019                 WINBIND_WINS_NSS=""
6020                 ;;
6021         *)
6022                 HAVE_WINBIND=no
6023                 winbind_no_reason=", unsupported on $host_os"
6024                 ;;
6025 esac
6026
6027 # Check the setting of --with-winbind
6028
6029 AC_ARG_WITH(winbind,
6030 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6031 [
6032   case "$withval" in
6033         yes)
6034                 HAVE_WINBIND=yes
6035                 ;;
6036         no)
6037                 HAVE_WINBIND=no
6038                 winbind_reason=""
6039                 ;;
6040   esac ],
6041 )
6042
6043 # We need unix domain sockets for winbind
6044
6045 if test x"$HAVE_WINBIND" = x"yes"; then
6046         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6047                 winbind_no_reason=", no unix domain socket support on $host_os"
6048                 HAVE_WINBIND=no
6049         fi
6050 fi
6051
6052 # Display test results
6053
6054 if test x"$HAVE_WINBIND" = x"no"; then
6055         WINBIND_NSS=""
6056         WINBIND_WINS_NSS=""
6057 fi
6058
6059 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6060         BUILD_LIBWBCLIENT_SHARED=no
6061 else
6062         BUILD_LIBWBCLIENT_SHARED=yes
6063 fi
6064
6065 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6066 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6067 LIBWBCLIENT_SOVER=0
6068 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6069         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6070         ## Only worry about libwbclient if we have shared library support
6071         ## and winbindd
6072         LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6073         LIBWBCLIENT=libwbclient
6074         INSTALL_LIBWBCLIENT=installlibwbclient
6075         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6076         WINBIND_LIBS="-lwbclient"
6077 else
6078         LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6079 fi
6080
6081 if test x"$HAVE_WINBIND" = x"yes"; then
6082         AC_MSG_RESULT(yes)
6083         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6084
6085         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6086         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6087         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6088                 PAM_MODULES="$PAM_MODULES pam_winbind"
6089                 INSTALL_PAM_MODULES="installpammodules"
6090                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6091         fi
6092 else
6093         AC_MSG_RESULT(no$winbind_no_reason)
6094 fi
6095
6096 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6097                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6098
6099 AC_SUBST(WINBIND_NSS_PTHREAD)
6100 AC_SUBST(WINBIND_NSS)
6101 AC_SUBST(WINBIND_WINS_NSS)
6102 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6103 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6104 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6105 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6106 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
6107
6108 AC_SUBST(WINBIND_KRB5_LOCATOR)
6109
6110 # Solaris 10 does have new member in nss_XbyY_key
6111 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6112                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6113                 [#include <nss_dbdefs.h>])
6114
6115 # Solaris has some extra fields in struct passwd that need to be
6116 # initialised otherwise nscd crashes.
6117
6118 AC_CHECK_MEMBER(struct passwd.pw_comment,
6119                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6120                 [#include <pwd.h>])
6121
6122 AC_CHECK_MEMBER(struct passwd.pw_age,
6123                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6124                 [#include <pwd.h>])
6125
6126 # AIX 4.3.x and 5.1 do not have as many members in
6127 # struct secmethod_table as AIX 5.2
6128 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6129        [#include <usersec.h>])
6130 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6131        [#include <usersec.h>])
6132
6133 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6134 AC_TRY_COMPILE([#include <sys/types.h>
6135 #include <sys/socket.h>],
6136 [struct ucred cred;
6137  socklen_t cred_len;
6138  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6139 ],
6140 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6141 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6142     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6143 fi
6144
6145
6146 #################################################
6147 # Check to see if we should use the included popt
6148
6149 AC_ARG_WITH(included-popt,
6150 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6151 [
6152   case "$withval" in
6153         yes)
6154                 INCLUDED_POPT=yes
6155                 ;;
6156         no)
6157                 INCLUDED_POPT=no
6158                 ;;
6159   esac ],
6160 )
6161 if test x"$INCLUDED_POPT" != x"yes"; then
6162     AC_CHECK_LIB(popt, poptGetContext,
6163                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6164 fi
6165
6166 AC_MSG_CHECKING(whether to use included popt)
6167 if test x"$INCLUDED_POPT" = x"yes"; then
6168     AC_MSG_RESULT(yes)
6169     BUILD_POPT='$(POPT_OBJ)'
6170     POPTLIBS='$(POPT_OBJ)'
6171     FLAGS1="-I\$(srcdir)/../lib/popt"
6172 else
6173     AC_MSG_RESULT(no)
6174         BUILD_POPT=""
6175     POPTLIBS="-lpopt"
6176 fi
6177 AC_SUBST(BUILD_POPT)
6178 AC_SUBST(POPTLIBS)
6179 AC_SUBST(FLAGS1)
6180
6181 #################################################
6182 # Check if user wants DNS service discovery support
6183
6184 AC_ARG_ENABLE(dnssd,
6185 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
6186
6187 AC_SUBST(DNSSD_LIBS)
6188 if test x"$enable_dnssd" != x"no"; then
6189     have_dnssd_support=yes
6190
6191     AC_CHECK_HEADERS(dns_sd.h)
6192     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6193         have_dnssd_support=no
6194     fi
6195
6196     # On Darwin the DNSSD API is in libc, but on other platforms it's
6197     # probably in -ldns_sd
6198     AC_CHECK_FUNCS(DNSServiceRegister)
6199     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6200     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6201             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6202         have_dnssd_support=no
6203     fi
6204
6205     if test x"$have_dnssd_support" = x"yes"; then
6206         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6207                 [Whether to enable DNS service discovery support])
6208     else
6209         if test x"$enable_dnssd" = x"yes"; then
6210             AC_MSG_ERROR(DNS service discovery support not available)
6211         fi
6212     fi
6213
6214 fi
6215
6216 #################################################
6217 # Check to see if we should use the included iniparser
6218
6219 AC_ARG_WITH(included-iniparser,
6220 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6221 [
6222   case "$withval" in
6223         yes)
6224                 INCLUDED_INIPARSER=yes
6225                 ;;
6226         no)
6227                 INCLUDED_INIPARSER=no
6228                 ;;
6229   esac ],
6230 )
6231 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6232     AC_CHECK_LIB(iniparser, iniparser_load,
6233                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6234 fi
6235
6236 AC_MSG_CHECKING(whether to use included iniparser)
6237 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6238     AC_MSG_RESULT(yes)
6239     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6240         INIPARSERLIBS=""
6241     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6242 else
6243     AC_MSG_RESULT(no)
6244         BUILD_INIPARSER=""
6245     INIPARSERLIBS="-liniparser"
6246 fi
6247 AC_SUBST(BUILD_INIPARSER)
6248 AC_SUBST(INIPARSERLIBS)
6249 AC_SUBST(FLAGS1)
6250
6251
6252
6253 # Checks for the vfs_fileid module
6254 # Start
6255 AC_CHECK_FUNC(getmntent)
6256
6257 AC_CHECK_HEADERS(sys/statfs.h)
6258
6259 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6260 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6261              AC_TRY_RUN([
6262                 #include <sys/types.h>
6263                 #include <sys/statfs.h>
6264                 int main(void)
6265                 {
6266                         struct statfs fsd;
6267                         fsid_t fsid = fsd.f_fsid;
6268                         return statfs (".", &fsd);
6269                 }],
6270                 vfsfileid_cv_statfs=yes,
6271                 vfsfileid_cv_statfs=no,
6272                 vfsfileid_cv_statfs=cross)
6273 ])
6274 AC_MSG_RESULT($vfsfileid_cv_statfs)
6275
6276 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6277         x"$vfsfileid_cv_statfs" = x"yes"; then
6278         default_shared_modules="$default_shared_modules vfs_fileid"
6279 fi
6280 # End
6281 # Checks for the vfs_fileid module
6282
6283
6284 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6285 do
6286         eval MODULE_DEFAULT_$i=STATIC
6287 done
6288
6289 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6290 do
6291         dnl Fall back to static if we cannot build shared libraries
6292         eval MODULE_DEFAULT_$i=STATIC
6293
6294         if test $BLDSHARED = true; then
6295                 eval MODULE_DEFAULT_$i=SHARED
6296         fi
6297 done
6298
6299 dnl Always build these modules static
6300 MODULE_rpc_spoolss2=STATIC
6301 MODULE_rpc_srvsvc=STATIC
6302 MODULE_idmap_tdb=STATIC
6303 MODULE_idmap_passdb=STATIC
6304 MODULE_idmap_nss=STATIC
6305
6306 MODULE_nss_info_template=STATIC
6307
6308 AC_ARG_WITH(static-modules,
6309 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6310 [ if test $withval; then
6311         for i in `echo $withval | sed -e 's/,/ /g'`
6312         do
6313                 eval MODULE_$i=STATIC
6314         done
6315 fi ])
6316
6317 AC_ARG_WITH(shared-modules,
6318 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6319 [ if test $withval; then
6320         for i in `echo $withval | sed -e 's/,/ /g'`
6321         do
6322                         eval MODULE_$i=SHARED
6323         done
6324 fi ])
6325
6326 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6327                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6328 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6329 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6330 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6331
6332
6333 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6334 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6335 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6336 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6337 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6338 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6339 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6340 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6341 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6342 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6343 SMB_MODULE(rpc_spoolss2, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss2.$SHLIBEXT", RPC)
6344 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6345 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6346 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6347 SMB_SUBSYSTEM(RPC,smbd/server.o)
6348
6349 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6350 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6351 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6352 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6353 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6354 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6355 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6356 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6357 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6358 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6359
6360 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6361 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6362
6363 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6364 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6365 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6366 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6367 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6368
6369 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6370 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6371 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6372 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6373 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6374 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6375 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6376 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6377 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6378
6379 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6380 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6381 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6382 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6383 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6384 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6385 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6386 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6387 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6388 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6389 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6390 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6391 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6392 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6393 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6394 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6395 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6396 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6397 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6398 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6399 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6400 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6401 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6402 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6403 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6404 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6405 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6406 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6407 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6408 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6409 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6410 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6411 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6412 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6413 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6414 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6415 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6416 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6417 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6418 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6419 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6420
6421 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6422
6423 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6424 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6425 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6426 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6427
6428 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6429
6430 #################################################
6431 # do extra things if we are running insure
6432
6433 if test "${ac_cv_prog_CC}" = "insure"; then
6434         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6435 fi
6436
6437 #################################################
6438 # If run from the build farm, enable NASTY hacks
6439 #################################################
6440 AC_MSG_CHECKING(whether to enable build farm hacks)
6441 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6442         AC_MSG_RESULT(yes)
6443         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6444 else
6445         AC_MSG_RESULT(no)
6446 fi
6447
6448 #################################################
6449 # check for bad librt/libpthread interactions
6450
6451 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6452     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6453     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6454     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6455
6456 SMB_IF_RTSIGNAL_BUG(
6457         [
6458             # Have RT_SIGNAL bug, need to check whether the problem will
6459             # affect anything we have configured.
6460
6461             rt_do_error=no
6462             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6463                 if test x"$rt_signal_lease_ok" = x"no" ; then
6464                     rt_do_error=yes
6465                 fi
6466             fi
6467
6468             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6469                 if test x"$rt_signal_notify_ok" = x"no" ; then
6470                     rt_do_error=yes
6471                 fi
6472             fi
6473
6474             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6475                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6476                 if test x"$rt_signal_aio_ok" = x"no" ; then
6477                     rt_do_error=yes
6478                 fi
6479             fi
6480
6481             if test x"$rt_do_error" = x"yes" ; then
6482                 SMB_IS_LIBPTHREAD_LINKED(
6483                     [
6484                         cat<<MSG
6485
6486 *** On this platforms, linking Samba against pthreads causes problems
6487 *** with the oplock and change notification mechanisms. You may be
6488 *** using pthreads as a side-effect of using the --with-aio-support
6489 *** or --with-profiling-data options. Please remove these and try again.
6490
6491 MSG
6492                     ],
6493                     [
6494                         cat<<MSG
6495
6496 *** On this platform, the oplock and change notification mechanisms do not
6497 *** appear to work. Please report this problem to samba-technical@samba.org
6498 *** and attach the config.log file from this directory.
6499
6500 MSG
6501                     ])
6502                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6503             fi
6504         ],
6505         [
6506             # no RT_SIGNAL bug, we are golden
6507             SMB_IS_LIBPTHREAD_LINKED(
6508                 [
6509                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6510                 ])
6511
6512         ],
6513         [
6514             # cross compiling, I hope you know what you are doing
6515             true
6516         ])
6517
6518 fi
6519
6520 AC_ARG_ENABLE(merged-build, 
6521 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6522 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6523
6524 m4_include(../lib/zlib/zlib.m4)
6525
6526 if test x$enable_merged_build = xauto; then
6527         # Check for python
6528         m4_include(../m4/check_python.m4)
6529         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6530
6531         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6532         AC_MSG_RESULT([$merged_build_possible])
6533
6534         # Enable merged build automatically if possible, when in developer mode
6535         if test "x$developer" = xyes; then
6536                 enable_merged_build=$merged_build_possible
6537         fi
6538 fi
6539
6540 if test x$enable_merged_build = xyes; then
6541         MERGED_BUILD=1
6542         saved_USESHARED="$USESHARED"
6543         USESHARED="false"
6544         m4_include(samba4.m4)
6545         USESHARED="$saved_USESHARED"
6546 fi
6547
6548 AC_SUBST(ZLIB_LIBS)
6549 AC_SUBST(ZLIB_OBJS)
6550 AC_ZLIB([ZLIB_OBJS=""], [
6551         ZLIB_LIBS=""
6552         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6553                      deflate.o trees.o zutil.o inflate.o infback.o \
6554                          inftrees.o inffast.o
6555         do
6556                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6557         done
6558         CFLAGS="-I../lib/zlib $CFLAGS"
6559 ])
6560
6561 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6562 LIB_REMOVE_USR_LIB(LDFLAGS)
6563 LIB_REMOVE_USR_LIB(LIBS)
6564 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6565
6566 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6567 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6568 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6569
6570 #################################################
6571 # Display summary of libraries detected
6572
6573 AC_MSG_RESULT([Using libraries:])
6574 AC_MSG_RESULT([    LIBS = $LIBS])
6575 if test x"$with_ads_support" != x"no"; then
6576     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6577 fi
6578 if test x"$with_ldap_support" != x"no"; then
6579     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6580 fi
6581 if test x"$with_dnsupdate_support" != x"no"; then
6582     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6583 fi
6584 if test x"$have_dnssd_support" != x"no"; then
6585     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6586 fi
6587 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6588
6589 #################################################
6590 # final configure stuff
6591
6592 AC_MSG_CHECKING([configure summary])
6593 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6594            AC_MSG_RESULT(yes),
6595            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6596            AC_MSG_WARN([cannot run when cross-compiling]))
6597
6598 dnl Merge in developer cflags from now on
6599 AC_SUBST(DEVELOPER_CFLAGS)
6600 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6601     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6602 fi
6603
6604 # Stuff the smbd-only libraries at the end of the smbd link
6605 # path (if we have them).
6606 SMBD_LIBS="$samba_dmapi_libs"
6607 AC_SUBST(SMBD_LIBS)
6608
6609 CFLAGS="${CFLAGS} \$(FLAGS)"
6610
6611 if test x$MERGED_BUILD != x1; then
6612         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6613 else
6614         if test x"$BLDSHARED" = x"true" ; then
6615                 LDFLAGS="$LDFLAGS -L./bin"
6616         fi
6617 fi
6618
6619 AC_SUBST(MAKEFILE)
6620 if test x$samba_cv_gnu_make = xyes; then
6621         MAKEFILE=Makefile
6622 else
6623         # When we don't have GNU Make, generate a copy of Makefile.in 
6624         # that doesn't have the "include " statements but just includes 
6625         # the files verbatim.
6626         MAKEFILE=Makefile-noincludes
6627         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6628 fi
6629 AC_OUTPUT($MAKEFILE
6630           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6631           lib/netapi/examples/Makefile
6632           lib/netapi/tests/Makefile
6633           pkgconfig/smbclient.pc
6634           pkgconfig/wbclient.pc
6635           pkgconfig/netapi.pc
6636           pkgconfig/smbsharemodes.pc
6637           ../examples/libsmbclient/Makefile.internal
6638           )
6639 dnl If we had to expand the includes, make tsure the output file is moved back
6640 AC_OUTPUT_COMMANDS([
6641 if test x$MAKEFILE != Makefile; then
6642         mv $MAKEFILE Makefile
6643 fi
6644 ])
6645
6646 #################################################
6647 # Print very concise instructions on building/use
6648 if test "x$enable_dmalloc" = xyes
6649 then
6650         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6651         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
6652 fi