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