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