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