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