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