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