s3: Factor out compiler-independent defines
[Samba/ekacnet.git] / source3 / configure.in
blob885b086dcb41b6290419410e0b5852b98ce69f5e
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)
23 m4_include(pkg.m4)
25 AC_LIBREPLACE_CC_CHECKS
27 m4_include(../lib/tevent/libtevent.m4)
29 LIBTEVENT_OBJ0=""
30 for obj in ${TEVENT_OBJ}; do
31         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
32 done
33 AC_SUBST(LIBTEVENT_OBJ0)
34 LIBS="${LIBS} ${TEVENT_LIBS}"
36 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
37 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
43 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
45 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
46 if test "x${srcdir-.}" != "x."; then
47         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
50 dnl Unique-to-Samba variables we'll be playing with.
51 AC_SUBST(SAMBA_CPPFLAGS)
52 AC_SUBST(SHELL)
53 AC_SUBST(LDSHFLAGS)
54 AC_SUBST(SONAMEFLAG)
55 AC_SUBST(SHLD)
56 AC_SUBST(MODULE_EXPORTS)
57 AC_SUBST(DSO_EXPORTS)
58 AC_SUBST(HOST_OS)
59 AC_SUBST(PICFLAG)
60 AC_SUBST(PIE_CFLAGS)
61 AC_SUBST(PIE_LDFLAGS)
62 AC_SUBST(RELRO_LDFLAGS)
63 AC_SUBST(SHLIBEXT)
64 AC_SUBST(INSTALLLIBCMD_SH)
65 AC_SUBST(INSTALLLIBCMD_A)
66 AC_SUBST(UNINSTALLLIBCMD_SH)
67 AC_SUBST(UNINSTALLLIBCMD_A)
69 AC_SUBST(INSTALL_LIBWBCLIENT)
70 AC_SUBST(UNINSTALL_LIBWBCLIENT)
71 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
72 AC_SUBST(LIBWBCLIENT_SHARED)
73 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
74 AC_SUBST(LIBWBCLIENT_STATIC)
75 AC_SUBST(LIBWBCLIENT_SOVER)
76 AC_SUBST(LIBWBCLIENT)
77 AC_SUBST(LIBWBCLIENT_LIBS)
79 AC_SUBST(LIBSAMBAUTIL_SHARED)
81 AC_SUBST(PRINT_LIBS)
82 AC_SUBST(AUTH_LIBS)
83 AC_SUBST(ACL_LIBS)
84 AC_SUBST(PASSDB_LIBS)
85 AC_SUBST(IDMAP_LIBS)
86 AC_SUBST(KRB5_LIBS)
87 AC_SUBST(UUID_LIBS)
88 AC_SUBST(LDAP_LIBS)
89 AC_SUBST(GPEXT_LIBS)
90 AC_SUBST(PAM_MODULES)
91 AC_SUBST(INSTALL_PAM_MODULES)
92 AC_SUBST(UNINSTALL_PAM_MODULES)
93 AC_SUBST(NSS_MODULES)
94 AC_SUBST(EXTRA_BIN_PROGS)
95 AC_SUBST(CIFSMOUNT_PROGS)
96 AC_SUBST(INSTALL_CIFSMOUNT)
97 AC_SUBST(UNINSTALL_CIFSMOUNT)
98 AC_SUBST(CIFSUMOUNT_PROGS)
99 AC_SUBST(INSTALL_CIFSUMOUNT)
100 AC_SUBST(UNINSTALL_CIFSUMOUNT)
101 AC_SUBST(CIFSUPCALL_PROGS)
102 AC_SUBST(INSTALL_CIFSUPCALL)
103 AC_SUBST(UNINSTALL_CIFSUPCALL)
104 AC_SUBST(EXTRA_SBIN_PROGS)
105 AC_SUBST(EXTRA_ALL_TARGETS)
106 AC_SUBST(CONFIG_LIBS)
107 AC_SUBST(NSCD_LIBS)
109 # compile with optimization and without debugging by default, but
110 # allow people to set their own preference.
111 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
112 # if it has no value.  This prevent *very* large debug binaries from occurring
113 # by default.
114 if test "x$debug" = "xyes" ; then
115         CFLAGS="${CFLAGS} -g"
117 if test "x$CFLAGS" = x; then
118   CFLAGS="-O"
121 m4_include(../lib/socket_wrapper/config.m4)
122 m4_include(../lib/nss_wrapper/config.m4)
123 m4_include(../lib/util/time.m4)
125 m4_include(m4/swat.m4)
127 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
129 # Probe the gcc version for extra CFLAGS. We always stash these in
130 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
131 # Makefile edit, avoiding the need to re-run configure.
132 if test x"$ac_cv_prog_gcc" = x"yes" ; then
133         DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings"
134         # Add -Wdeclaration-after-statement if compiler supports it
135         AC_CACHE_CHECK(
136           [that the C compiler understands -Wdeclaration-after-statement],
137           samba_cv_HAVE_Wdeclaration_after_statement, [
138           AC_TRY_RUN_STRICT([
139             int main(void)
140             {
141                 return 0;
142             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
143             samba_cv_HAVE_Wdeclaration_after_statement=yes,
144             samba_cv_HAVE_Wdeclaration_after_statement=no,
145             samba_cv_HAVE_Wdeclaration_after_statement=cross)
146        ])
148         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
149             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
150         fi
152         #-Werror-implicit-function-declaration
153         AC_CACHE_CHECK(
154           [that the C compiler understands -Werror-implicit-function-declaration],
155           samba_cv_HAVE_Werror_implicit_function_declaration, [
156           AC_TRY_RUN_STRICT([
157             int main(void)
158             {
159                 return 0;
160             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
161             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
162             samba_cv_HAVE_Werror_implicit_function_declaration=no,
163             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
164        ])
165        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
166             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
167        fi
169         # krb5developer is like developer, except we don't get
170         # -Wstrict-prototypes.
171        if test x"$krb5_developer" != x"$yes" ; then
172             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
173        fi
175        if test x"$picky_developer" = x"yes"; then
176             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
177        fi
180 #################################################
181 # check for a shared memory profiling support
182 AC_MSG_CHECKING(whether to use profiling)
183 AC_ARG_WITH(profiling-data,
184 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
185 [ case "$withval" in
186   yes)
187     AC_MSG_RESULT(yes)
188     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
189     samba_cv_WITH_PROFILE=yes
190     ;;
191   *)
192     AC_MSG_RESULT(no)
193     samba_cv_WITH_PROFILE=no
194     ;;
195   esac ],
196   AC_MSG_RESULT(no)
199 dnl Checks for programs.
200 merged_build_possible=yes
202 AC_PROG_INSTALL
203 AC_PROG_AWK
204 # Check for GNU make
205 m4_include(../m4/check_make.m4)
206 AC_SAMBA_GNU_MAKE([true], [true])
208 # Check for perl
209 m4_include(../m4/check_perl.m4)
210 AC_SAMBA_PERL([true], [merged_build_possible=no])
212 AC_CHECK_TOOL(AR, ar)
214 dnl Check if we (actually our C compiler!) use GNU ld
215 AC_PROG_LD_GNU
217 dnl Certain versions of GNU ld the default is not to have the
218 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
219 dnl warnings when building modules.
220 if test "$ac_cv_prog_gnu_ld" = "yes"; then
221         ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>/dev/null | head -1`
222         AC_MSG_CHECKING(GNU ld release date)
223         changequote(,)dnl
224         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'`
225         changequote([,])dnl
226         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
227         if test -n "$ac_cv_gnu_ld_date"; then
228         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
229                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
230         fi
231         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
232                 ac_cv_gnu_ld_version_script=yes
233         fi
234         else
235            AC_MSG_CHECKING(GNU ld release version)
236            changequote(,)dnl
237            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | awk '{print $NF}' | sed -n 's,\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
238            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
239            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
240            changequote([,])dnl
241            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
242            AC_MSG_CHECKING(GNU ld release version major)
243            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
244            AC_MSG_CHECKING(GNU ld release version minor)
245            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
246            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
247              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
248            fi
249            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
250              ac_cv_gnu_ld_version_script=yes
251            fi
252         fi
255 dnl look for executable suffix
256 AC_EXEEXT
258 dnl Check if C compiler understands -c and -o at the same time
259 AC_PROG_CC_C_O
260 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
261       BROKEN_CC=
262 else
263       BROKEN_CC=#
265 AC_SUBST(BROKEN_CC)
267 dnl Check if the C compiler understands -Werror
268 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
269  AC_TRY_RUN_STRICT([
270   int main(void)
271   {
272         return 0;
273   }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
274   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
275 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
276    Werror_FLAGS="-Werror"
277 else
278 dnl Check if the C compiler understands -w2
279 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
280  AC_TRY_RUN_STRICT([
281   int main(void)
282   {
283         return 0;
284   }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
285   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
286 if test x"$samba_cv_HAVE_w2" = x"yes"; then
287    Werror_FLAGS="-w2"
288 else
289 dnl Check if the C compiler understands -errwarn
290 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
291   AC_TRY_RUN_STRICT([
292    int main(void)
293    {
294         return 0;
295    }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
296    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
297 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
298    Werror_FLAGS="-errwarn=%all"
303 ############################################
304 # check if the compiler can handle negative enum values
305 # and don't truncate the values to INT_MAX
306 # a runtime test is needed here
307 AC_SUBST(PIDL_ARGS)
308 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
309     AC_TRY_RUN(
311         #include <stdio.h>
312         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
313         int main(void) {
314                 enum negative_values v1 = NEGATIVE_VALUE;
315                 unsigned v2 = NEGATIVE_VALUE;
317                 if (v1 != 0xFFFFFFFF) {
318                         printf("%u != 0xFFFFFFFF\n", v1);
319                         return 1;
320                 }
321                 if (v2 != 0xFFFFFFFF) {
322                         printf("%u != 0xFFFFFFFF\n", v2);
323                         return 1;
324                 }
326                 return 0;
327         }
329         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
330 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
331         AC_MSG_WARN([using --uint-enums for pidl])
332         PIDL_ARGS="$PIDL_ARGS --uint-enums"
335 dnl Figure out the flags to support named structure initializers
337 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
339 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
340 AC_MSG_CHECKING(uname -s)
341 AC_MSG_RESULT(${UNAME_S})
343 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
344 AC_MSG_CHECKING(uname -r)
345 AC_MSG_RESULT(${UNAME_R})
347 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
348 AC_MSG_CHECKING(uname -m)
349 AC_MSG_RESULT(${UNAME_M})
351 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
352 AC_MSG_CHECKING(uname -p)
353 AC_MSG_RESULT(${UNAME_P})
355 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
356 AC_MSG_CHECKING(uname -i)
357 AC_MSG_RESULT(${UNAME_I})
359 dnl Add #include for broken IRIX header files
360   case "$host_os" in
361         *irix6*)
362                 #TODO add to libreplace
363                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
364                         dnl Fix sensible defaults for MIPSPro compilers. The
365                         dnl error numbers are valid for the 7.3 compilers,
366                         dnl hopefully also valid for the 7.4 series.
367                         dnl
368                         dnl Bugzilla 3801. Force an error on warning 1035
369                         dnl so we don't incorrectly detect stdint.h. This
370                         dnl warning is emitted for #error directives.
371                         CFLAGS="$CFLAGS -diag_error 1035"
372                         dnl 1209: Controlling expression is constant
373                         dnl 1174: Function foo declared but never referenced
374                         dnl 3201: Parameter foo was never referenced
375                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
376                 fi
377         ;;
378 esac
380 DYNEXP=
381 AC_SUBST(DYNEXP)
382 LDSHFLAGS_Z_DEFS=
383 AC_SUBST(LDSHFLAGS_Z_DEFS)
384 LDSHFLAGS_Z_NODEFS=
385 AC_SUBST(LDSHFLAGS_Z_NODEFS)
387 dnl Add modules that have to be built by default here
388 dnl These have to be built static:
389 default_static_modules=""
390 default_static_modules="$default_static_modules pdb_smbpasswd"
391 default_static_modules="$default_static_modules pdb_tdbsam"
392 default_static_modules="$default_static_modules pdb_wbc_sam"
393 default_static_modules="$default_static_modules rpc_lsarpc"
394 default_static_modules="$default_static_modules rpc_samr"
395 default_static_modules="$default_static_modules rpc_winreg"
396 default_static_modules="$default_static_modules rpc_initshutdown"
397 default_static_modules="$default_static_modules rpc_dssetup"
398 default_static_modules="$default_static_modules rpc_wkssvc"
399 default_static_modules="$default_static_modules rpc_svcctl"
400 default_static_modules="$default_static_modules rpc_ntsvcs"
401 default_static_modules="$default_static_modules rpc_netlogon"
402 default_static_modules="$default_static_modules rpc_netdfs"
403 default_static_modules="$default_static_modules rpc_srvsvc"
404 default_static_modules="$default_static_modules rpc_spoolss"
405 default_static_modules="$default_static_modules rpc_eventlog"
406 default_static_modules="$default_static_modules auth_sam"
407 default_static_modules="$default_static_modules auth_unix"
408 default_static_modules="$default_static_modules auth_winbind"
409 default_static_modules="$default_static_modules auth_wbc"
410 default_static_modules="$default_static_modules auth_server"
411 default_static_modules="$default_static_modules auth_domain"
412 default_static_modules="$default_static_modules auth_builtin"
413 default_static_modules="$default_static_modules auth_netlogond"
414 default_static_modules="$default_static_modules vfs_default"
415 default_static_modules="$default_static_modules nss_info_template"
417 dnl These are preferably build shared, and static if dlopen() is not available
418 default_shared_modules=""
419 default_shared_modules="$default_shared_modules vfs_recycle"
420 default_shared_modules="$default_shared_modules vfs_audit"
421 default_shared_modules="$default_shared_modules vfs_extd_audit"
422 default_shared_modules="$default_shared_modules vfs_full_audit"
423 default_shared_modules="$default_shared_modules vfs_netatalk"
424 default_shared_modules="$default_shared_modules vfs_fake_perms"
425 default_shared_modules="$default_shared_modules vfs_default_quota"
426 default_shared_modules="$default_shared_modules vfs_readonly"
427 default_shared_modules="$default_shared_modules vfs_cap"
428 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
429 default_shared_modules="$default_shared_modules vfs_shadow_copy"
430 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
431 default_shared_modules="$default_shared_modules charset_CP850"
432 default_shared_modules="$default_shared_modules charset_CP437"
433 default_shared_modules="$default_shared_modules auth_script"
434 default_shared_modules="$default_shared_modules vfs_readahead"
435 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
436 default_shared_modules="$default_shared_modules vfs_streams_xattr"
437 default_shared_modules="$default_shared_modules vfs_streams_depot"
438 default_shared_modules="$default_shared_modules vfs_acl_xattr"
439 default_shared_modules="$default_shared_modules vfs_acl_tdb"
440 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
441 default_shared_modules="$default_shared_modules vfs_preopen"
442 default_shared_modules="$default_shared_modules vfs_catia"
443 default_shared_modules="$default_shared_modules vfs_scannedonly"
444 default_shared_modules="$default_shared_modules vfs_crossrename"
446 if test "x$developer" = xyes; then
447    default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
448    default_shared_modules="$default_shared_modules charset_weird perfcount_test"
452 # Config CPPFLAG settings for strange OS's that must be set
453 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
454 # case statement; its first reference must be unconditional.
456 case "$host_os" in
457     *hpux*)
459 # Defines needed for HPUX support.
460 # HPUX has bigcrypt but (sometimes?) doesn't use it for
461 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
463       case `uname -r` in
464                 *9*|*10*|*11)
465                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
466                 ;;
467       esac
468       ;;
471 # CRAY Unicos has broken const handling
472        *unicos*)
473           AC_MSG_RESULT([disabling const])
474           CPPFLAGS="$CPPFLAGS -Dconst="
475           ;;
476         
478 # AIX4.x doesn't even admit to having large
479 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
481     *aix4*)
482           AC_MSG_RESULT([enabling large file support])
483       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
484           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
485       ;;
487 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
488 # to the existance of large files..
489 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
490 # recommendations on large file support, however it makes the
491 # compile work using gcc 2.7 and 2.8, whereas using the Sun
492 # recommendation makes the compile fail on gcc2.7. JRA.
494 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
496         *solaris*)
497                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
498                 case `uname -r` in
499                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
500                                 AC_MSG_RESULT([no large file support])
501                                 ;;
502                         5.*)
503                         AC_MSG_RESULT([enabling large file support])
504                         if test "$ac_cv_prog_gcc" = yes; then
505                                 ${CC-cc} -v >conftest.c 2>&1
506                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
507                                 rm -fr conftest.c
508                                 case "$ac_cv_gcc_compiler_version_number" in
509                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
510                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
511                                                 LDFLAGS="$LDFLAGS -lthread"
512                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
513                                                 ;;
514                                         *)
515                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
516                                                 LDFLAGS="$LDFLAGS -lthread"
517                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
518                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
519                                                 ;;
520                                 esac
521                         else
522                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
523                                 LDFLAGS="$LDFLAGS -lthread"
524                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
525                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
526                         fi
527                         ;;
528                 esac
529                 ;;
531 # IRIX uses SYSV printing.  Make sure to set that here
533         *irix*)
534                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
535                 ;;
536         *freebsd*|*dragonfly*)
537                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
538                 ;;
540 # VOS may need to have POSIX support and System V compatibility enabled.
542     *vos*)
543     case "$CPPFLAGS" in
544           *-D_POSIX_C_SOURCE*)
545                 ;;
546           *)
547                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
548                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
549                 ;;
550     esac
551     case "$CPPFLAGS" in
552           *-D_SYSV*|*-D_SVID_SOURCE*)
553                 ;;
554           *)
555                 CPPFLAGS="$CPPFLAGS -D_SYSV"
556                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
557     esac
558     ;;
560 # Tests needed for SINIX large file support.
562     *sysv4*)
563       if test $host = mips-sni-sysv4 ; then
564         AC_MSG_CHECKING([for LFS support])
565         old_CPPFLAGS="$CPPFLAGS"
566         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
567         AC_TRY_RUN([
568 #include <unistd.h>
569 main () {
570 #if _LFS64_LARGEFILE == 1
571 exit(0);
572 #else
573 exit(1);
574 #endif
575 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
576         CPPFLAGS="$old_CPPFLAGS"
577         if test x$SINIX_LFS_SUPPORT = xyes ; then
578           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
579                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
580           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
581           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
582           LIBS="`getconf LFS64_LIBS` $LIBS"
583         fi
584       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
585       fi
586     ;;
588 # Systems with LFS support.
590     gnu* | k*bsd*-gnu | kopensolaris*-gnu)
591         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
592         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
593         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
594         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
595         ;;
597 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
599     *linux*)
600         AC_MSG_CHECKING([for LFS support])
601         old_CPPFLAGS="$CPPFLAGS"
602         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
603        AC_TRY_RUN([
604 #include <unistd.h>
605 #include <sys/utsname.h>
606 #include <string.h>
607 #include <stdlib.h>
608 main() {
609 #if _LFS64_LARGEFILE == 1
610        struct utsname uts;
611        char *release;
612        int major, minor;
614        /* Ensure this is glibc 2.2 or higher */
615 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
616        int libc_major = __GLIBC__;
617        int libc_minor = __GLIBC_MINOR__;
619        if (libc_major < 2)
620               exit(1);
621        if (libc_minor < 2)
622               exit(1);
623 #endif
625        /* Ensure this is kernel 2.4 or higher */
627        uname(&uts);
628        release = strdup(uts.release);
629        major = atoi(strsep(&release, "."));
630        minor = atoi(strsep(&release, "."));
632        if (major > 2 || (major == 2 && minor > 3))
633                exit(0);
634        exit(1);
635 #else
636        exit(1);
637 #endif
639 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
640         CPPFLAGS="$old_CPPFLAGS"
641         if test x$LINUX_LFS_SUPPORT = xyes ; then
642                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
643                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
644                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
645                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
646         fi
647         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
648         ;;
651 # MacOS X is the *only* system that uses compose character in utf8. This
652 # is so horribly broken....
654     *darwin*)
655         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
657 # Add a system specific charset module.
658         default_shared_modules="$default_shared_modules charset_macosxfs"
660         ;;
661     *hurd*)
662         AC_MSG_CHECKING([for LFS support])
663         old_CPPFLAGS="$CPPFLAGS"
664         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
665         AC_TRY_RUN([
666 #include <unistd.h>
667 main () {
668 #if _LFS64_LARGEFILE == 1
669 exit(0);
670 #else
671 exit(1);
672 #endif
673 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
674         CPPFLAGS="$old_CPPFLAGS"
675         if test x$GLIBC_LFS_SUPPORT = xyes ; then
676           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
677                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
678           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
679         fi
680       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
681     ;;
682     *qnx*)
683         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
684         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
685         ;;
687 esac
689 SAVE_CPPFLAGS="${CPPFLAGS}"
690 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
692 AC_LIBREPLACE_BROKEN_CHECKS
693 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
694 AC_LIBREPLACE_NETWORK_CHECKS
696 CPPFLAGS="${SAVE_CPPFLAGS}"
698 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
700 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
701 AC_SUBST(LIBREPLACE_OBJS)
703 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
704 AC_SUBST(LIBREPLACE_LIBS)
707 # add -ldl to the global LIBS
708 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
709 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
712 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
713 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
714 AC_CHECK_HEADERS(limits.h float.h libintl.h)
715 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
716 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h)
717 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
718 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
719 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
720 AC_CHECK_HEADERS(sys/sysmacros.h)
721 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
722 AC_CHECK_HEADERS(langinfo.h locale.h)
723 AC_CHECK_HEADERS(xfs/libxfs.h)
724 AC_CHECK_HEADERS(netgroup.h)
726 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
727 #if HAVE_RPC_RPC_H
728 #include <rpc/rpc.h>
729 #endif
732 ## These fail to compile on IRIX so just check for their presence
733 AC_CHECK_HEADERS(sys/mode.h,,,)
735 # Look for Darwin headers
736 old_CPPFLAGS="$CPPFLAGS"
737 CPPFLAGS="-Iinclude $CPPFLAGS"
738 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
739 CPPFLAGS="$old_CPPFLAGS"
741 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
742 # subdirectory of headers.
743 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
746 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
747 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
749 case "$host_os" in
750     *hpux*)
751                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
752                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
753                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
754                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
755                 fi
756         ;;
757 esac
758 AC_CHECK_HEADERS(shadow.h)
759 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
760 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
762 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
763 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
765 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
767 # For experimental utmp support (lastlog on some BSD-like systems)
768 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
770 AC_CHECK_SIZEOF(int,cross)
771 AC_CHECK_SIZEOF(long,cross)
772 AC_CHECK_SIZEOF(long long,cross)
773 AC_CHECK_SIZEOF(short,cross)
775 AC_C_CONST
776 AC_C_INLINE
777 AC_C_BIGENDIAN
778 AC_C_CHAR_UNSIGNED
780 AC_TYPE_SIGNAL
781 AC_TYPE_UID_T
782 AC_TYPE_MODE_T
783 AC_TYPE_OFF_T
784 AC_TYPE_SIZE_T
785 AC_TYPE_PID_T
786 AC_STRUCT_ST_RDEV
787 AC_DIRENT_D_OFF
788 AC_CHECK_TYPE(ssize_t, int)
789 AC_CHECK_TYPE(wchar_t, unsigned short)
791 ############################################
792 # for cups support we need libcups, and a handful of header files
794 AC_ARG_ENABLE(cups,
795 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
797 if test x$enable_cups != xno; then
798         AC_PATH_PROG(CUPS_CONFIG, cups-config)
800         if test "x$CUPS_CONFIG" != x; then
802                 ac_save_CFLAGS=$CFLAGS
803                 ac_save_LDFLAGS=$LDFLAGS
804                 ac_save_PRINT_LIBS=$PRINT_LIBS
805                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
806                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
807                 PRINT_LIBS="$PRINT_LIBS -lcups"
808                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
809                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
810                         x"$ac_cv_header_cups_language_h" = xyes; then
811                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
812                         samba_cv_HAVE_CUPS=yes
813                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
814                 else
815                         AC_MSG_WARN([cups-config around but cups-devel not installed])
816                         CFLAGS=$ac_save_CFLAGS
817                         LDFLAGS=$ac_save_LDFLAGS
818                         PRINT_LIBS=$ac_save_PRINT_LIBS
819                 fi
821         elif test x"$enable_cups" = x"yes"; then
822                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
823         fi
826 AC_ARG_ENABLE(iprint,
827 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
829 if test x$enable_iprint != xno; then
830         if test x"$samba_cv_HAVE_CUPS" = xyes; then
831                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
832         elif test x"$enable_iprint" = x"yes"; then
833                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
834         fi
837 ############################################
838 # check if the compiler will optimize out function calls
839 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
840     AC_TRY_LINK([
841 #include <stdio.h>],
843                 if (0) {
844                    this_function_does_not_exist();
845                 } else {
846                   return 1;
847                 }
850         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
851 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
852    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
855 #############################################
856 # check for fd passing struct via msg_control
857 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
858     AC_TRY_COMPILE([
859 #include <sys/types.h>
860 #include <stdlib.h>
861 #include <stddef.h>
862 #include <sys/socket.h>
863 #include <sys/un.h>],
865         struct msghdr msg;
866         union {
867               struct cmsghdr cm;
868               char control[CMSG_SPACE(sizeof(int))];
869         } control_un;
870         msg.msg_control = control_un.control;
871         msg.msg_controllen = sizeof(control_un.control);
873         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
874 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
875    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
876              [If we can use msg_control for passing file descriptors])
879 #############################################
880 # check for fd passing struct via msg_acctrights
881 AC_CACHE_CHECK([for fd passing via msg_acctrights],
882                 samba_cv_msghdr_msg_acctrights, [
883     AC_TRY_COMPILE([
884 #include <sys/types.h>
885 #include <stdlib.h>
886 #include <stddef.h>
887 #include <sys/socket.h>
888 #include <sys/un.h>],
890         struct msghdr msg;
891         int fd;
892         msg.msg_acctrights = (caddr_t) &fd;
893         msg.msg_acctrightslen = sizeof(fd);
895         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
896 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
897    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
898              [If we can use msg_acctrights for passing file descriptors])
901 AC_CHECK_FUNCS(dirfd)
902 if test x"$ac_cv_func_dirfd" = x"yes"; then
903         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
906 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
907     AC_TRY_COMPILE([
908 #include <sys/types.h>
909 #if STDC_HEADERS
910 #include <stdlib.h>
911 #include <stddef.h>
912 #endif
913 #include <signal.h>],[struct sigevent s;],
914         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
915 if test x"$samba_cv_struct_sigevent" = x"yes"; then
916    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
917    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
918         [#include <signal.h>])
921 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
922     AC_TRY_COMPILE([
923 #include <sys/types.h>
924 #if STDC_HEADERS
925 #include <stdlib.h>
926 #include <stddef.h>
927 #endif
928 #if TIME_WITH_SYS_TIME
929 # include <sys/time.h>
930 # include <time.h>
931 #else
932 # if HAVE_SYS_TIME_H
933 #  include <sys/time.h>
934 # else
935 #  include <time.h>
936 # endif
937 #endif
938 ],[struct timespec ts;],
939         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
940 if test x"$samba_cv_struct_timespec" = x"yes"; then
941    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
944 # and glibc has setresuid under linux but the function does
945 # nothing until kernel 2.1.44! very dumb.
946 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
947     AC_TRY_RUN([#include <errno.h>
948 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
949         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
950 if test x"$samba_cv_have_setresuid" = x"yes"; then
951     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
954 # Do the same check for setresguid...
956 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
957     AC_TRY_RUN([#include <unistd.h>
958 #include <errno.h>
959 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
960         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
961 if test x"$samba_cv_have_setresgid" = x"yes"; then
962     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
965 AC_FUNC_MEMCMP
967 ###############################################
968 # Readline included by default unless explicitly asked not to
969 test "${with_readline+set}" != "set" && with_readline=yes
971 # test for where we get readline() from
972 AC_MSG_CHECKING(whether to use readline)
973 AC_ARG_WITH(readline,
974 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
975 [  case "$with_readline" in
976   yes)
977     AC_MSG_RESULT(yes)
979     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
980     AC_CHECK_HEADERS(readline/history.h)
982     AC_CHECK_HEADERS(readline.h readline/readline.h,[
983       for termlib in ncurses curses termcap terminfo termlib tinfo; do
984        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
985       done
986       AC_CHECK_LIB(readline, rl_callback_handler_install,
987        [TERMLIBS="-lreadline $TERMLIBS"
988        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
989        break], [TERMLIBS=], $TERMLIBS)])
990     ;;
991   no)
992     AC_MSG_RESULT(no)
993     ;;
994   *)
995     AC_MSG_RESULT(yes)
997     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
998     # alternate readline path
999     _ldflags=${LDFLAGS}
1000     _cppflags=${CPPFLAGS}
1002     # Add additional search path
1003     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1004     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1006     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1007     AC_CHECK_HEADERS(readline/history.h)
1009     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1010       for termlib in ncurses curses termcap terminfo termlib; do
1011        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1012       done
1013       AC_CHECK_LIB(readline, rl_callback_handler_install,
1014        [TERMLDFLAGS="-L$with_readline/lib"
1015        TERMCPPFLAGS="-I$with_readline/include"
1016        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1017        TERMLIBS="-lreadline $TERMLIBS"
1018        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1019        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1021     LDFLAGS=$_ldflags
1022     ;;
1023   esac],
1024   AC_MSG_RESULT(no)
1026 AC_SUBST(TERMLIBS)
1027 AC_SUBST(TERMLDFLAGS)
1029 # The readline API changed slightly from readline3 to readline4, so
1030 # code will generate warnings on one of them unless we have a few
1031 # special cases.
1032 AC_CHECK_LIB(readline, rl_completion_matches,
1033              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1034                         [Do we have rl_completion_matches?])],
1035              [],
1036              [$TERMLIBS])
1038 # not all readline libs have rl_event_hook or history_list
1039 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1040 AC_CHECK_LIB(readline, history_list,
1041              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1042              [],
1043              [$TERMLIBS])
1045 ###############################################
1046 # test for where we get yp_get_default_domain() from
1047 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1048 AC_CHECK_FUNCS(yp_get_default_domain)
1050 # Check if we have execl, if not we need to compile smbrun.
1051 AC_CHECK_FUNCS(execl)
1052 if test x"$ac_cv_func_execl" = x"no"; then
1053     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1056 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1057 AC_CHECK_FUNCS(strtol)
1058 AC_CHECK_FUNCS(strchr chflags)
1059 AC_CHECK_FUNCS(getrlimit fsync setpgid)
1060 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
1061 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1062 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1063 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1064 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1065 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1066 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1067 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1068 AC_CHECK_FUNCS(getpwent_r)
1069 AC_CHECK_FUNCS(getdents64)
1070 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1071 AC_CHECK_FUNCS(syslog vsyslog timegm)
1072 AC_CHECK_FUNCS(setlocale nl_langinfo)
1073 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1074 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1075 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1076 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1077 AC_CHECK_HEADERS(sys/mman.h)
1078 # setbuffer, shmget, shm_open are needed for smbtorture
1079 AC_CHECK_FUNCS(shmget shm_open)
1080 AC_CHECK_FUNCS(gettext dgettext)
1081 AC_CHECK_FUNCS(bindtextdomain textdomain)
1082 AC_CHECK_FUNCS(strupr)
1084 # Find a method of generating a stack trace
1085 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1086 # libexecinfo provides backtrace_symbols on FreeBSD
1087 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1088 AC_CHECK_FUNCS(backtrace_symbols)
1089 AC_CHECK_LIB(exc, trace_back_stack)
1091 # check for sysctlbyname for BSD systems
1092 AC_CHECK_FUNCS(sysctlbyname)
1094 #############################
1095 # check if building with gpfs
1096 AC_CHECK_HEADERS(gpfs_gpl.h)
1097 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1098     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1099     default_shared_modules="$default_shared_modules vfs_gpfs"
1102 #############################################
1103 # check if building on Isilon OneFS
1104 printf "%s" "checking for Isilon OneFS... "
1105 save_LIBS="$LIBS"
1106 LIBS="$LIBS -lisi_version"
1107 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1108           [get_isilon_copyright()],
1109           samba_cv_HAVE_ONEFS=yes,
1110           samba_cv_HAVE_ONEFS=no)
1111 echo $samba_cv_HAVE_ONEFS
1112 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1113     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1114     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1115     default_static_modules="$default_static_modules"
1116     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1117     # Need to also add general libs for oplocks support
1118     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1120 AC_SUBST(ONEFS_LIBS)
1121 LIBS="$save_LIBS"
1123 # Note that all the libunwind symbols in the API are defined to internal
1124 # platform-specific version, so we must include libunwind.h before checking
1125 # any of them.
1126 AC_MSG_CHECKING([for libunwind])
1127 save_LIBS=$LIBS
1129 UNWIND_ARCH="unknown"
1130 if test x"$UNAME_I" != x"unknown"; then
1131         UNWIND_ARCH="$UNAME_I"
1132 elif test x"$UNAME_M" != x"unknown"; then
1133         UNWIND_ARCH="$UNAME_M"
1134 elif test x"$UNAME_P" != x"unknown"; then
1135         UNWIND_ARCH="$UNAME_P"
1138 case "$UNWIND_ARCH" in
1139         unknown)
1140                 # This probably won't link without
1141                 # the platform-specific libunwind.
1142                 LIBS="$LIBS -lunwind"
1143                 ;;
1144         i386|i586|i686)
1145                 # Add the platform-specific libunwind module.
1146                 LIBS="$LIBS -lunwind -lunwind-x86"
1147                 ;;
1148         *)
1149                 # Add the platform-specific libunwind module.
1150                 # based on uname -i, uname -m or uname -p
1151                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1152                 ;;
1153 esac
1155 AC_TRY_LINK(
1156     [
1157 #ifdef HAVE_LIBUNWIND_H
1158 #include <libunwind.h>
1159 #endif
1160     ],
1161     [
1162         unw_context_t ctx; unw_cursor_t cur;
1163         char buf[256]; unw_word_t off;
1164         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1165         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1166     ],
1167     [
1168         AC_MSG_RESULT(yes)
1169         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1171         # If we have libunwind, test whether we also have libunwind-ptrace
1172         # which would let us unwind arbitrary processes.
1173         save_LIBS=$LIBS
1174         AC_CHECK_HEADERS(libunwind-ptrace.h)
1175         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1176             [
1177                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1178                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1179                     [Whether libunwind-ptrace.a is available.])
1180             ],
1181             [ LIBUNWIND_PTRACE="" ])
1183         LIBS=$save_LIBS
1184     ],
1185     [
1186         AC_MSG_RESULT(no)
1187         LIBS=$save_LIBS
1188     ])
1190 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1191 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1192     AC_CHECK_HEADERS(sys/ptrace.h)
1193     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1194     AC_TRY_LINK(
1195             [
1196 #if HAVE_SYS_TYPES_H
1197 #include <sys/types.h>
1198 #endif
1199 #if HAVE_SYS_PTRACE_H
1200 #include <sys/ptrace.h>
1201 #endif
1202             ],
1203             [
1204                 pid_t me = (pid_t)-1;
1205                 ptrace(PTRACE_ATTACH, me, 0, 0);
1206                 ptrace(PTRACE_DETACH, me, 0, 0);
1207                 return 0;
1208             ],
1209             [
1210                 AC_MSG_RESULT(yes)
1211                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1212                     [Whether the Linux ptrace(2) interface is available.])
1213             ],
1214             [
1215                 AC_MSG_RESULT(no)
1216                 LIBUNWIND_PTRACE=""
1217             ])
1220 AC_SUBST(LIBUNWIND_PTRACE)
1222 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1223 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1224 AC_CHECK_FUNCS(__getcwd _getcwd)
1225 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1226 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1227 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1228 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1229 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1230 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1231 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1232 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1233 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1234 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1235 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1236 AC_CHECK_FUNCS(prctl)
1238 AC_TRY_COMPILE([
1239 #ifdef HAVE_SYS_PRCTL_H
1240 #include <sys/prctl.h>
1241 #endif
1243 [int i; i = prtcl(0); ],
1244 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1249 case "$host_os" in
1250     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1251        # glibc <= 2.3.2 has a broken getgrouplist
1252        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1253 #include <unistd.h>
1254 #include <sys/utsname.h>
1255 main() {
1256        /* glibc up to 2.3 has a broken getgrouplist */
1257 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1258        int libc_major = __GLIBC__;
1259        int libc_minor = __GLIBC_MINOR__;
1261        if (libc_major < 2)
1262               exit(1);
1263        if ((libc_major == 2) && (libc_minor <= 3))
1264               exit(1);
1265 #endif
1266        exit(0);
1268 ], [samba_cv_linux_getgrouplist_ok=yes],
1269    [samba_cv_linux_getgrouplist_ok=no],
1270    [samba_cv_linux_getgrouplist_ok=cross])])
1271        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1272           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1273        fi
1274        ;;
1275     *)
1276        AC_CHECK_FUNCS(getgrouplist)
1277        ;;
1278 esac
1281 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1284 if test x$ac_cv_func_stat64 = xno ; then
1285   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1286   AC_TRY_LINK([
1287 #if defined(HAVE_UNISTD_H)
1288 #include <unistd.h>
1289 #endif
1290 #include <sys/stat.h>
1291 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1292   AC_MSG_RESULT([$ac_cv_func_stat64])
1293   if test x$ac_cv_func_stat64 = xyes ; then
1294     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1295   fi
1298 if test x$ac_cv_func_lstat64 = xno ; then
1299   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1300   AC_TRY_LINK([
1301 #if defined(HAVE_UNISTD_H)
1302 #include <unistd.h>
1303 #endif
1304 #include <sys/stat.h>
1305 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1306   AC_MSG_RESULT([$ac_cv_func_lstat64])
1307   if test x$ac_cv_func_lstat64 = xyes ; then
1308     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1309   fi
1312 if test x$ac_cv_func_fstat64 = xno ; then
1313   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1314   AC_TRY_LINK([
1315 #if defined(HAVE_UNISTD_H)
1316 #include <unistd.h>
1317 #endif
1318 #include <sys/stat.h>
1319 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1320   AC_MSG_RESULT([$ac_cv_func_fstat64])
1321   if test x$ac_cv_func_fstat64 = xyes ; then
1322     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1323   fi
1326 #################################################
1327 # Check whether struct stat has timestamps with sub-second resolution.
1330 samba_cv_stat_hires=no
1331 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1332         [samba_cv_stat_hires=yes])
1333 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1334         [samba_cv_stat_hires=yes])
1335 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1336         [samba_cv_stat_hires=yes])
1337 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1338         [samba_cv_stat_hires=yes])
1339 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1340         [samba_cv_stat_hires=yes])
1342 if test x"$samba_cv_stat_hires" = x"yes" ; then
1343     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1344             [whether struct stat has sub-second timestamps])
1347 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1348 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1349 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1352 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1353     [
1354         AC_TRY_COMPILE(
1355             [#include <sys/stat.h>],
1356             [
1357                 int a = UF_DOS_ARCHIVE;
1358                 int h = UF_DOS_HIDDEN;
1359                 int r = UF_DOS_RO;
1360                 int s = UF_DOS_SYSTEM;
1361                 int i = UF_DOS_NOINDEX;
1362                 int f = UF_DOS_FLAGS;
1363             ],
1364             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1365     ])
1367 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1368     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1371 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1372                samba_cv_function_attribute_destructor,
1373                [
1374                  AC_COMPILE_IFELSE(
1375                         [
1376                                 __attribute__((destructor))
1377                                 static void cleanup(void) { }
1378                         ],
1379                         samba_cv_function_attribute_destructor=yes)
1380                 ])
1382 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1383    AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1384              [whether we can compile with __attribute__((destructor))])
1387 #####################################
1388 # needed for SRV lookups
1389 AC_CHECK_LIB(resolv, dn_expand)
1390 AC_CHECK_LIB(resolv, _dn_expand)
1391 AC_CHECK_LIB(resolv, __dn_expand)
1394 # Check for the functions putprpwnam, set_auth_parameters,
1395 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1396 # Needed for OSF1 and HPUX.
1399 AC_LIBTESTFUNC(security, putprpwnam)
1400 AC_LIBTESTFUNC(sec, putprpwnam)
1402 AC_LIBTESTFUNC(security, set_auth_parameters)
1403 AC_LIBTESTFUNC(sec, set_auth_parameters)
1405 # UnixWare 7.x has its getspnam in -lgen
1406 AC_LIBTESTFUNC(gen, getspnam)
1408 AC_LIBTESTFUNC(security, getspnam)
1409 AC_LIBTESTFUNC(sec, getspnam)
1411 AC_LIBTESTFUNC(security, bigcrypt)
1412 AC_LIBTESTFUNC(sec, bigcrypt)
1414 AC_LIBTESTFUNC(security, getprpwnam)
1415 AC_LIBTESTFUNC(sec, getprpwnam)
1417 AC_CHECK_FUNCS(strsignal)
1419 ############################################
1420 # Check for EA implementations
1421 case "$host_os" in
1422   *osf*)
1423         AC_SEARCH_LIBS(getproplist, [proplist])
1424         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1425         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1426         AC_CHECK_FUNCS(sizeof_proplist_entry)
1427   ;;
1428   *freebsd4* | *dragonfly* )
1429         AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1430   ;;
1431   *solaris*)
1432         AC_CHECK_FUNCS(attropen)
1433   ;;
1434   *)
1435         AC_SEARCH_LIBS(getxattr, [attr])
1436         AC_CHECK_FUNCS(getxattr,[
1437                 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1438                 ])
1439         AC_CHECK_FUNCS(getea,[
1440                 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1441                 ])
1442         AC_CHECK_FUNCS(attr_get,[
1443                 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1444                 ])
1445         AC_CHECK_FUNCS(extattr_delete_file,[
1446                 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_link extattr_get_fd extattr_get_file extattr_get_link extattr_list_fd extattr_list_file extattr_list_link extattr_set_fd extattr_set_file extattr_set_link)
1447                 ])
1448   ;;
1449 esac
1451 ########################################################
1452 # Do xattr functions take additional options like on Darwin?
1453 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1454         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1455                 old_LIBS=$LIBS
1456                 LIBS="$LIBS $ACL_LIBS"
1457                 AC_TRY_COMPILE([
1458                         #include <sys/types.h>
1459                         #if HAVE_ATTR_XATTR_H
1460                         #include <attr/xattr.h>
1461                         #elif HAVE_SYS_XATTR_H
1462                         #include <sys/xattr.h>
1463                         #endif
1464                 ],[
1465                         getxattr(0, 0, 0, 0, 0, 0);
1466                 ],
1467                 [smb_attr_cv_xattr_add_opt=yes],
1468                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1469         ])
1470         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1471                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1472         fi
1475 AC_DISABLE_STATIC
1476 AC_ENABLE_SHARED
1478 # Set defaults
1479 PIE_CFLAGS=""
1480 PIE_LDFLAGS=""
1481 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1483 if test "x$enable_pie" != xno
1484 then
1485         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1486         [
1487                 cat > conftest.c <<EOF
1488 int foo;
1489 main () { return 0;}
1491                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1492                 then
1493                         samba_cv_fpie=yes
1494                 else
1495                         samba_cv_fpie=no
1496                 fi
1497                 rm -f conftest*
1498         ])
1499         if test x"${samba_cv_fpie}" = x"yes"
1500         then
1501                 PIE_CFLAGS="-fPIE"
1502                 PIE_LDFLAGS="-pie"
1503         fi
1506 # Set defaults
1507 RELRO_LDFLAGS=""
1508 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1510 if test "x$enable_relro" != xno
1511 then
1512         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1513         [
1514                 cat > conftest.c <<EOF
1515 int foo;
1516 main () { return 0;}
1518                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1519                 then
1520                         samba_cv_relro=yes
1521                 else
1522                         samba_cv_relro=no
1523                 fi
1524                 rm -f conftest*
1525         ])
1526         if test x"${samba_cv_relro}" = x"yes"
1527         then
1528                 RELRO_LDFLAGS="-Wl,-z,relro"
1529         fi
1532 # Set defaults
1533 SYMSEXT="syms"
1534 AC_SUBST(SYMSEXT)
1536 # Assume non-shared by default and override below
1537 BLDSHARED="false"
1539 # these are the defaults, good for lots of systems
1540 HOST_OS="$host_os"
1541 LDSHFLAGS="-shared"
1542 MODULE_EXPORTS=""
1543 SONAMEFLAG="#"
1544 SHLD="\${CC} \${CFLAGS}"
1545 PICFLAG="${PIE_CFLAGS}"
1546 SHLIBEXT="so"
1547 DSO_EXPORTS=""
1549 # this bit needs to be modified for each OS that supports share libs
1550 # You need to specify how to create a shared library and
1551   # how to compile C code to produce PIC object files
1553   AC_MSG_CHECKING([ability to build shared libraries])
1555   # and these are for particular systems
1556   case "$host_os" in
1557                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1558                         case "$host_os" in
1559                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1560                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1561                         esac
1562                         BLDSHARED="true"
1563                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1564                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1565                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1566                         fi
1567                         DYNEXP="-Wl,--export-dynamic"
1568                         PICFLAG="-fPIC"
1569                         SONAMEFLAG="-Wl,-soname="
1570                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1571                         ;;
1572                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1573                         BLDSHARED="true"
1574                         if test "${GCC}" = "yes"; then
1575                                 PICFLAG="-fPIC"
1576                                 SONAMEFLAG="-Wl,-soname="
1577                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1578                                         DYNEXP="-Wl,-E"
1579                                 fi
1580                                 # TODO: need to add $CFLAGS here for explicit 64-bit builds?
1581                                 LDSHFLAGS="-shared"
1582                         else
1583                                 PICFLAG="-KPIC"
1584                                 ## ${CFLAGS} added for building 64-bit shared
1585                                 ## libs using Sun's Compiler
1586                                 LDSHFLAGS="-G \${CFLAGS}"
1587                         fi
1588                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1589                                 SONAMEFLAG="-Wl,-soname="
1590                         else
1591                                 SONAMEFLAG="-Wl,-h,"
1592                         fi
1593                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1594                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1595                         ;;
1596                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1597                         BLDSHARED="true"
1598                         LDSHFLAGS="-G"
1599                         SONAMEFLAG="-Wl,-h,"
1600                         PICFLAG="-KPIC"   # Is this correct for SunOS
1601                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1602                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1603                         ;;
1604                 *netbsd* | *freebsd* | *dragonfly* )
1605                         BLDSHARED="true"
1606                         LDSHFLAGS="-shared"
1607                         DYNEXP="-Wl,--export-dynamic"
1608                         SONAMEFLAG="-Wl,-soname,"
1609                         PICFLAG="-fPIC -DPIC"
1610                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1611                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1612                         ;;
1613                 *openbsd*)  BLDSHARED="true"
1614                         LDSHFLAGS="-shared"
1615                         DYNEXP="-Wl,-Bdynamic"
1616                         SONAMEFLAG="-Wl,-soname,"
1617                         PICFLAG="-fPIC"
1618                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1619                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1620                         ;;
1621                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1622                         case "$host_os" in
1623                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1624                         ;;
1625                         esac
1626                         BLDSHARED="true"
1627                         LDSHFLAGS="-set_version sgi1.0 -shared"
1628                         SONAMEFLAG="-soname "
1629                         SHLD="\${LD}"
1630                         if test "${GCC}" = "yes"; then
1631                                 PICFLAG="-fPIC"
1632                         else
1633                                 PICFLAG="-KPIC"
1634                         fi
1635                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1636                         ;;
1637                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1638                         BLDSHARED="true"
1639                         # use expfull to export underscored symbols
1640                         # add rtl to remove /lib/crt0.o warning
1641                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1642                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1643                         PICFLAG="-O2"
1644                         # as AIX code is always position independent...
1645                         # .po will just create compile warnings, use po.o:
1646                         if test "${GCC}" != "yes"; then
1647                                 ## for funky AIX compiler using strncpy()
1648                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1649                         fi
1651                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1652                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1653                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1654                         ;;
1655                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1656                         # Use special PIC flags for the native HP-UX compiler.
1657                                 BLDSHARED="true"
1658                                 SHLD="cc"
1659                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1660                                 SONAMEFLAG="-Wl,+h "
1661                                 PICFLAG="+z"
1662                         if test "${GCC}" = "yes"; then
1663                                 PICFLAG="-fPIC"
1664                         else
1665                                 PICFLAG="+z +ESnolit"
1666                         fi
1667                         if test "$host_cpu" = "ia64"; then
1668                                 SHLIBEXT="so"
1669                               PICFLAG="+z"
1670                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1671                         else
1672                                 SHLIBEXT="sl"
1673                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1674                         fi
1675                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1676                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1677                         ;;
1678                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1679                         BLDSHARED="true"
1680                         LDSHFLAGS="-shared"
1681                         SONAMEFLAG="-Wl,-soname,"
1682                         PICFLAG="-fPIC"
1683                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1684                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1685                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1686                                 saved_ldflags="$LDFLAGS"
1687                                 AC_MSG_CHECKING([if $flags works])
1688                                 LDFLAGS="$flags $saved_ldflags"
1689                                 AC_TRY_LINK([],[],
1690                                         [AC_MSG_RESULT([yes])
1691                                         LDSHFLAGS_Z_NODEFS=$flags],
1692                                         AC_MSG_RESULT([no]))
1693                                 LDFLAGS="$saved_ldflags"
1694                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1695                         done
1696                         ;;
1697                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1698                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1699                         ;;
1700                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1701                         BLDSHARED="true"
1702                         LDSHFLAGS="-shared"
1703                         SONAMEFLAG="-Wl,-soname,"
1704                         PICFLAG="-KPIC"
1705                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1706                         ;;
1707                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1708                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1709                         ;;
1710                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1711                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1712                         ;;
1713                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1714                         case "$host" in
1715                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1716                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1717                                         fi
1718                                         LDSHFLAGS="-G"
1719                                         DYNEXP="-Bexport"
1720                                 ;;
1721                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1722                         esac
1723                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1724                         ;;
1726                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1727                         if [ test "$GCC" != yes ]; then
1728                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1729                         fi
1730                         LDSHFLAGS="-G"
1731                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1732                         ;;
1733                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1734                         BLDSHARED="false"
1735                         LDSHFLAGS=""
1736                         ;;
1738                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1739                         BLDSHARED="true"
1740                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1741                         CFLAGS="$CFLAGS -fno-common"
1742                         SHLD="\${CC}"
1743                         SHLIBEXT="dylib"
1744                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1745                         SHLIBEXT="dylib"
1746                         # Since gcc doesn't fail on unrecognised options, the
1747                         # PIE test incorrectly succeeds. Darwin gcc does not
1748                         # actually support the PIE stuff.
1749                         PIE_LDFLAGS=
1750                         PIE_CFLAGS=
1751                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1752                         ;;
1754                 *)
1755                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1756                         ;;
1757   esac
1759 if test "$enable_shared" != "yes"; then
1760         BLDSHARED=false
1763 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1764         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1767 if test x"$BLDSHARED" = x"true" ; then
1768         LDFLAGS="$LDFLAGS -L./bin"
1771 AC_MSG_RESULT($BLDSHARED)
1773 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1774         saved_ldflags="$LDFLAGS"
1775         AC_MSG_CHECKING([if $flags works])
1776         LDFLAGS="$flags $saved_ldflags"
1777         AC_TRY_LINK([],[],
1778                 [AC_MSG_RESULT([yes])
1779                 LD_AS_NEEDED_FLAG=$flags
1780                 ld_as_needed_flag_found=yes],
1781                 AC_MSG_RESULT([no]))
1782         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1783         test x"$ld_as_needed_flag_found" = xyes && break
1784 done
1786 # for historical reasons almost all linkers don't complain about unresolved
1787 # symbols in shared libs. Except for the internal samba modules we want to get
1788 # errors when we produce a shared lib with unresolved symbols. On some
1789 # platforms unresolved symbols might be intended, so we might have to add
1790 # platform specific exceptions here.
1792 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1793         saved_ldflags="$LDFLAGS"
1794         AC_MSG_CHECKING([if $flags works])
1795         LDFLAGS="$flags $saved_ldflags"
1796         AC_TRY_LINK([],[],
1797         [AC_MSG_RESULT([yes])
1798         LDSHFLAGS_Z_DEFS=$flags
1799         ldshflags_z_defs_found=yes],
1800         AC_MSG_RESULT([no]))
1801         LDFLAGS=$saved_ldflags
1802         test x"$ldshflags_z_defs_found" = xyes && break
1803 done
1805 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1806 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1807 AC_MSG_CHECKING([LDFLAGS])
1808 AC_MSG_RESULT([$LDFLAGS])
1809 AC_MSG_CHECKING([DYNEXP])
1810 AC_MSG_RESULT([$DYNEXP])
1812 #######################################################
1813 # test whether building a shared library actually works
1814 if test $BLDSHARED = true; then
1816 AC_MSG_CHECKING([SHLD])
1817 AC_MSG_RESULT([$SHLD])
1818 AC_MSG_CHECKING([LDSHFLAGS])
1819 AC_MSG_RESULT([$LDSHFLAGS])
1821 AC_MSG_CHECKING([SHLIBEXT])
1822 AC_MSG_RESULT([$SHLIBEXT])
1823 AC_MSG_CHECKING([SONAMEFLAG])
1824 AC_MSG_RESULT([$SONAMEFLAG])
1826 AC_MSG_CHECKING([PICFLAG])
1827 AC_MSG_RESULT([$PICFLAG])
1829 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1830 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1832 AC_CACHE_CHECK([whether building shared libraries actually works],
1833                [ac_cv_shlib_works],[
1834    # try building a trivial shared library
1835    ac_cv_shlib_works=no
1836    # The $SHLD and $LDSHFLAGS variables may contain references to other
1837    # variables so they need to be eval'ed.
1838    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1839         shlib.o ${srcdir-.}/../tests/shlib.c && \
1840    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1841         shlib.o && ac_cv_shlib_works=yes
1842    rm -f "shlib.$SHLIBEXT" shlib.o
1845 if test $ac_cv_shlib_works = no; then
1846    BLDSHARED=false
1850 if test x"$BLDSHARED" != x"true"; then
1851         LDSHFLAGS="shared-libraries-disabled"
1852         SONAMEFLAG="shared-libraries-disabled"
1853         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1854         SHLD="shared-libraries-disabled"
1855         PICFLAG="${PIE_CFLAGS}"
1856         SHLIBEXT="shared_libraries_disabled"
1857         merged_build_possible=no
1860 AC_MSG_CHECKING([used PICFLAG])
1861 AC_MSG_RESULT([$PICFLAG])
1863 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1865 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1868 ###########################################################
1870 # Configuration of subsystems / libraries
1872 ###########################################################
1874 INSTALLLIBCMD_SH=:
1875 INSTALLLIBCMD_A=:
1876 UNINSTALLLIBCMD_SH=:
1877 UNINSTALLLIBCMD_A=:
1879 if test $BLDSHARED = true; then
1880         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1881         UNINSTALLLIBCMD_SH="rm -f"
1883 if test $enable_static = yes; then
1884         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1885         UNINSTALLLIBCMD_A="rm -f"
1888 #################################################
1889 # --disable-shared-libs
1890 # can be used to disable the internal use of shared libs altogether
1891 # (this only has an effect when building shared libs is enabled)
1893 USESHARED=false
1894 AC_SUBST(USESHARED)
1896 AC_MSG_CHECKING(whether to use shared libraries internally)
1897 AC_ARG_ENABLE([shared-libs],
1898         AS_HELP_STRING([--enable-shared-libs],
1899                 [Use shared libraries internally (default=yes)]),
1900         [enable_shared_libs=$enableval],
1901         [enable_shared_libs=yes])
1903 if test x"$enable_shared_libs" != x"no" ; then
1904         USESHARED=$BLDSHARED
1907 AC_MSG_RESULT([$USESHARED])
1909 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1910         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1913 #################################################
1914 # --with-static-libs=LIBS:
1915 #   link (internal) libs dynamically or statically?
1917 # If a subsystem is built as a library then this controls whether they are
1918 # linked into Samba targets statically or dynamically:
1920 # * If we build the shared library at all, we link dynamically by default.
1922 # * We only link statically if we don't build shared or if the library
1923 #   appears in the --with-static-libs configure option.
1925 # Example:
1926 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1927 #   of linking the dynamic variant with -ltalloc.
1929 # NOTE: This option only affects libraries that we do not only build
1930 # but that samba also links against as libraries (as opposed to linking
1931 # the plain object files. - This has to be configured in Makefile.in.
1932 # So in particular it does not harm to give invalid or unknown names here.
1935 AC_ARG_WITH([static-libs],
1936         [AS_HELP_STRING([--with-static-libs=LIBS],
1937                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1938         [AS_IF([test $withval],
1939                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1940                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1941                         eval LINK_$lib=STATIC
1942                 done], [])],
1943         [])
1946 # WORKAROUND:
1947 #   until we have organized other internal subsystems (as util, registry
1948 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1949 #   dynamically to samba programs.
1951 LINK_LIBNETAPI=STATIC
1953 LINK_LIBSMBCLIENT=STATIC
1956 #  The library versions are hardcoded here
1957 #  and filled into the LIBFOO_SOVER variable.
1959 #  TODO: for talloc and tdb (at least), these should
1960 #  be extracted from their respective source directories
1962 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1963 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1965 if test "x$enable_external_libtalloc" != xno
1966 then
1967         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1968                 [ enable_external_libtalloc=yes ],
1969                 [ if test x$enable_external_libtalloc = xyes; then
1970                         AC_MSG_ERROR([Unable to find libtalloc])
1971                   else
1972                         enable_external_libtalloc=no
1973                   fi
1974                 ])
1977 if test "x$enable_external_libtalloc" = xno
1978 then
1979         m4_include(../lib/talloc/libtalloc.m4)
1980         LINK_LIBTALLOC=STATIC
1981         SMB_LIBRARY(talloc, 2)
1982         LIBTALLOC_OBJ0=""
1983         for obj in ${TALLOC_OBJ}; do
1984                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1985         done
1986         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1987         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1988         AC_SUBST(LIBTALLOC_OBJ0)
1990         TALLOCTORT="bin/talloctort\$(EXEEXT)"
1991         AC_SUBST(TALLOCTORT)
1995 AC_ARG_ENABLE(external_libtdb,
1996         [AS_HELP_STRING([--enable-external-libtdb],
1997                 [Enable external tdb [default=auto]])],
1998                 [ enable_external_libtalloc=$enableval ],
1999                 [ enable_external_libtalloc=auto ])
2001 if test "x$enable_external_libtdb" != xno
2002 then
2003         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.2,
2004                 [ enable_external_libtdb=yes ],
2005                 [
2006                 if test x$enable_external_libtdb = xyes; then
2007                         AC_MSG_ERROR([Unable to find libtdb])
2008                 else
2009                         enable_external_libtdb=no
2010                 fi
2011                 ])
2014 AC_SUBST(LIBTDB_OBJ0)
2015 if test "x$enable_external_libtdb" = xno
2016 then
2017         m4_include(../lib/tdb/libtdb.m4)
2018         LINK_LIBTDB=STATIC
2019         SMB_LIBRARY(tdb, 1)
2020         LIBTDB_OBJ0=""
2021         for obj in ${TDB_OBJ}; do
2022                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2023         done
2024         AC_SUBST(LIBTDB_OBJ0)
2025         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2026         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2028         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2029         AC_SUBST(TDBBACKUP)
2030         TDBDUMP="bin/tdbdump\$(EXEEXT)"
2031         AC_SUBST(TDBDUMP)
2032         TDBTOOL="bin/tdbtool\$(EXEEXT)"
2033         AC_SUBST(TDBTOOL)
2034         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2035         AC_SUBST(TDBTORTURE)
2036         ac_cv_have_tdb_err_nesting=yes
2037 else
2038         AC_TRY_COMPILE([#include "tdb.h"],
2039                        [enum TDB_ERROR err = TDB_ERR_NESTING],
2040                        ac_cv_have_tdb_err_nesting=yes,
2041                        ac_cv_have_tdb_err_nesting=no)
2044 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2045    AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2048 SMB_LIBRARY(netapi, 0)
2049 SMB_LIBRARY(smbclient, 0)
2050 SMB_LIBRARY(smbsharemodes, 0)
2051 SMB_LIBRARY(addns, 0, no, [undefined API])
2055 ################
2057 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2058 AC_TRY_RUN([#include <stdio.h>
2059 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2060 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2061 if test x"$samba_cv_have_longlong" = x"yes"; then
2062     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2063     AC_CHECK_TYPE(intptr_t, unsigned long long)
2064 else
2065     AC_CHECK_TYPE(intptr_t, unsigned long)
2069 # Check if the compiler supports the LL prefix on long long integers.
2070 # AIX needs this.
2072 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2073     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2074         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2075 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2076    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2080 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2081 AC_TRY_RUN([#include <time.h>
2082 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2083 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2084 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2085     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2088 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2089 AC_TRY_RUN([#include <stdio.h>
2090 #include <sys/stat.h>
2091 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2092 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2093 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2094     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2097 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_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() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2105 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2106 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2107     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2110 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_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() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2118 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2119 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2120     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2123 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2124 AC_TRY_RUN([
2125 #if defined(HAVE_UNISTD_H)
2126 #include <unistd.h>
2127 #endif
2128 #include <stdio.h>
2129 #include <sys/stat.h>
2130 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2131 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2132 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2133     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2136 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2137 AC_TRY_RUN([
2138 #if defined(HAVE_UNISTD_H)
2139 #include <unistd.h>
2140 #endif
2141 #include <stdio.h>
2142 #include <sys/stat.h>
2143 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2144 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2145 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2146     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2149 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2150 AC_TRY_RUN([
2151 #if defined(HAVE_UNISTD_H)
2152 #include <unistd.h>
2153 #endif
2154 #include <stdio.h>
2155 #include <sys/stat.h>
2156 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2157 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2158 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2159     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2162 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2163 AC_TRY_COMPILE([
2164 #if defined(HAVE_UNISTD_H)
2165 #include <unistd.h>
2166 #endif
2167 #include <sys/types.h>
2168 #include <dirent.h>],
2169 [DIR64 de;],
2170 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2171 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2172     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2175 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2176 AC_TRY_COMPILE([
2177 #if defined(HAVE_UNISTD_H)
2178 #include <unistd.h>
2179 #endif
2180 #include <sys/types.h>
2181 #include <dirent.h>],
2182 [struct dirent64 de;],
2183 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2184 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2185     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2188 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2189 AC_TRY_RUN([
2190 #if defined(HAVE_UNISTD_H)
2191 #include <unistd.h>
2192 #endif
2193 #include <sys/types.h>
2194 main() { dev_t dev; int i = major(dev); return 0; }],
2195 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2196 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2197     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2200 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2201 AC_TRY_RUN([
2202 #if defined(HAVE_UNISTD_H)
2203 #include <unistd.h>
2204 #endif
2205 #include <sys/types.h>
2206 main() { dev_t dev; int i = minor(dev); return 0; }],
2207 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2208 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2209     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2212 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2213 AC_TRY_RUN([
2214 #if defined(HAVE_UNISTD_H)
2215 #include <unistd.h>
2216 #endif
2217 #include <sys/types.h>
2218 main() { dev_t dev = makedev(1,2); return 0; }],
2219 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2220 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2221     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2224 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2225 AC_TRY_RUN([#include <stdio.h>
2226 main() { char c; c=250; exit((c > 0)?0:1); }],
2227 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2228 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2229     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2232 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2233 AC_TRY_COMPILE([#include <sys/types.h>
2234 #include <dirent.h>
2235 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2236 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2237 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2238     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2241 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2242 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2243 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2244 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2245     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2249 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2251     # On some systems (eg. Linux) librt can pull in libpthread. We
2252     # don't want this to happen because libpthreads changes signal delivery
2253     # semantics in ways we are not prepared for. This breaks Linux oplocks
2254     # which rely on signals.
2256     AC_LIBTESTFUNC(rt, clock_gettime,
2257             [
2258                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2259                                 [Whether clock_gettime is available])
2260                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2261                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2262                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2263                         ])
2267 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2268 AC_TRY_RUN([#include <sys/types.h>
2269 #include <dirent.h>
2270 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2271 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2272 di->d_name[0] == 0) exit(0); exit(1);} ],
2273 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2274 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2275     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2278 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2279 AC_TRY_COMPILE([#include <sys/types.h>
2280 #include <utime.h>],
2281 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2282 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2283 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2284     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2287 ##############
2288 # Check utmp details, but only if our OS offers utmp.h
2289 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2290 dnl  utmp and utmpx come in many flavours
2291 dnl  We need to check for many of them
2292 dnl  But we don't need to do each and every one, because our code uses
2293 dnl  mostly just the utmp (not utmpx) fields.
2295 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2297 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2298 AC_TRY_COMPILE([#include <sys/types.h>
2299 #include <utmp.h>],
2300 [struct utmp ut;  ut.ut_name[0] = 'a';],
2301 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2302 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2303     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2306 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2307 AC_TRY_COMPILE([#include <sys/types.h>
2308 #include <utmp.h>],
2309 [struct utmp ut;  ut.ut_user[0] = 'a';],
2310 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2311 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2312     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2315 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2316 AC_TRY_COMPILE([#include <sys/types.h>
2317 #include <utmp.h>],
2318 [struct utmp ut;  ut.ut_id[0] = 'a';],
2319 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2320 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2321     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2324 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2325 AC_TRY_COMPILE([#include <sys/types.h>
2326 #include <utmp.h>],
2327 [struct utmp ut;  ut.ut_host[0] = 'a';],
2328 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2329 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2330     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2333 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2334 AC_TRY_COMPILE([#include <sys/types.h>
2335 #include <utmp.h>],
2336 [struct utmp ut;  time_t t; ut.ut_time = t;],
2337 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2338 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2339     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2342 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2343 AC_TRY_COMPILE([#include <sys/types.h>
2344 #include <utmp.h>],
2345 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2346 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2347 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2348     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2351 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2352 AC_TRY_COMPILE([#include <sys/types.h>
2353 #include <utmp.h>],
2354 [struct utmp ut;  ut.ut_type = 0;],
2355 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2356 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2357     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2360 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2361 AC_TRY_COMPILE([#include <sys/types.h>
2362 #include <utmp.h>],
2363 [struct utmp ut;  ut.ut_pid = 0;],
2364 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2365 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2366     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2369 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2370 AC_TRY_COMPILE([#include <sys/types.h>
2371 #include <utmp.h>],
2372 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2373 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2374 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2375     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2378 dnl Look for the IPv6 varient by preference. Many systems have both.
2379 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2380 AC_TRY_COMPILE([#include <sys/types.h>
2381 #include <utmp.h>],
2382 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2383 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2384 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2385     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2388 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2389 AC_TRY_COMPILE([#include <sys/types.h>
2390 #include <utmp.h>],
2391 [struct utmp ut;  ut.ut_addr = 0;],
2392 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2393 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2394     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2397 if test x$ac_cv_func_pututline = xyes ; then
2398   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2399   AC_TRY_COMPILE([#include <sys/types.h>
2400 #include <utmp.h>],
2401   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2402   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2403   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2404       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2405   fi
2408 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2409 AC_TRY_COMPILE([#include <sys/types.h>
2410 #include <utmpx.h>],
2411 [struct utmpx ux;  ux.ut_syslen = 0;],
2412 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2413 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2414     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2418 # end utmp details
2421 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2422 AC_ARG_WITH(libiconv,
2423 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2425   if test "$withval" = "no" ; then
2426     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2427   else
2428      if test "$withval" != "yes" ; then
2429         ICONV_PATH_SPEC=yes
2430         ICONV_LOOK_DIRS="$withval"
2431      fi
2432   fi
2435 for i in $ICONV_LOOK_DIRS ; do
2437     save_LIBS="$LIBS"
2438     save_LDFLAGS="$LDFLAGS"
2439     save_CPPFLAGS="$CPPFLAGS"
2441     iconv_current_LIBS=""
2442     iconv_current_LDFLAGS=""
2443     iconv_current_CPPFLAGS=""
2445     ICONV_FOUND="no"
2446     unset libext
2448     #  This is here to handle -withval stuff for --with-libiconv
2449     #  Perhaps we should always add a -L
2450     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2452     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2453     # installation paths. This gets a little tricky since we might have iconv
2454     # in both libiconv and in libc. In this case the jm_ICONV test will always
2455     # succeed when the header is found. To counter this, make sure the
2456     # library directory is there and check the ABI directory first (which
2457     # should be harmless on other systems, but causes tons of linker warnings on
2458     # 64bit Ubuntu systems).
2459     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2460     # installed, I've decided to fix the linker warnings.
2461     # -- Kai
2462     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2463     for l in "lib" "lib32" "lib/hpux32"; do
2464         if test -d "$i/$l" ; then
2465                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2466                 LIBS=
2467                 export LDFLAGS LIBS CPPFLAGS
2468                 # Try to find iconv(3)
2469                 jm_ICONV($i/$l)
2470                 if test x"$ICONV_FOUND" = "xyes" ; then
2471                     libext="$l"
2472                     break
2473                 fi
2474         fi
2475     done
2477     if test x"$ICONV_FOUND" = "xyes" ; then
2478         iconv_current_LDFLAGS="-L$i/$libext"
2479         iconv_current_CPPFLAGS="-I$i/include"
2481         if test x"$jm_cv_lib_iconv" != x; then
2482             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2483         else
2484             # We found iconv in libc.
2485             iconv_current_LIBS=""
2486         fi
2488     fi
2490     if test x"$ICONV_FOUND" = "xyes" ; then
2492         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2493         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2494         LIBS="$save_LIBS $iconv_current_LIBS"
2495         export LDFLAGS LIBS CPPFLAGS
2497         default_dos_charset=no
2498         default_display_charset=no
2499         default_unix_charset=no
2501         # check for default dos charset name
2502         for j in CP850 IBM850 ; do
2503             rjs_CHARSET($j)
2504             default_dos_charset="$ICONV_CHARSET"
2505             if test x"$default_dos_charset" = x"$j"; then
2506                 break
2507             fi
2508         done
2510         # check for default display charset name
2511         for j in ASCII 646 ; do
2512             rjs_CHARSET($j)
2513             default_display_charset="$ICONV_CHARSET"
2514             if test x"$default_display_charset" = x"$j"; then
2515                 break
2516             fi
2517         done
2519         # check for default unix charset name
2520         for j in UTF-8 UTF8 ; do
2521             rjs_CHARSET($j)
2522             default_unix_charset="$ICONV_CHARSET"
2523             if test x"$default_unix_charset" = x"$j"; then
2524                 break
2525             fi
2526         done
2528         if test "$default_dos_charset" != "no" -a \
2529                 "$default_dos_charset" != "cross" -a \
2530                 "$default_display_charset" != "no" -a \
2531                 "$default_display_charset" != "cross" -a \
2532                 "$default_unix_charset" != "no" -a \
2533                 "$default_unix_charset" != "cross"
2534         then
2535                 samba_cv_HAVE_NATIVE_ICONV=yes
2536         else
2537             if test "$default_dos_charset" = "cross" -o \
2538                      "$default_display_charset" = "cross" -o \
2539                      "$default_unix_charset" = "cross"
2540             then
2541                     samba_cv_HAVE_NATIVE_ICONV=cross
2542             else
2543                     samba_cv_HAVE_NATIVE_ICONV=no
2544             fi
2545         fi
2547         # At this point, we have a libiconv candidate. We know that
2548         # we have the right headers and libraries, but we don't know
2549         # whether it does the conversions we want. We can't test this
2550         # because we are cross-compiling. This is not necessarily a big
2551         # deal, since we can't guarantee that the results we get now will
2552         # match the results we get at runtime anyway.
2553         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2554             default_dos_charset="CP850"
2555             default_display_charset="ASCII"
2556             default_unix_charset="UTF-8"
2557             samba_cv_HAVE_NATIVE_ICONV=yes
2558             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2559             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2560         fi
2562         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2564             CPPFLAGS=$save_CPPFLAGS
2565             LDFLAGS=$save_LDFLAGS
2566             LIBS=$save_LIBS
2568             if test x"$iconv_current_LIBS" != x; then
2569                 LIBS="$LIBS $iconv_current_LIBS"
2570             fi
2572             # Add the flags we need to CPPFLAGS and LDFLAGS
2573             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2574             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2576             # Turn the #defines into string literals
2577             default_dos_charset="\"$default_dos_charset\""
2578             default_display_charset="\"$default_display_charset\""
2579             default_unix_charset="\"$default_unix_charset\""
2581             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2582             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2583             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2584             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2586            break
2587         fi
2589     # We didn't find a working iconv, so keep going
2590     fi
2592     #  We only need to clean these up here for the next pass through the loop
2593     CPPFLAGS=$save_CPPFLAGS
2594     LDFLAGS=$save_LDFLAGS
2595     LIBS=$save_LIBS
2596     export LDFLAGS LIBS CPPFLAGS
2597 done
2598 unset libext
2601 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2602     AC_MSG_WARN([Sufficient support for iconv function was not found.
2603     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2604    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2605    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2606    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2610 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2611 AC_TRY_RUN([
2612 #include <sys/types.h>
2613 #include <fcntl.h>
2614 #ifndef F_GETLEASE
2615 #define F_GETLEASE      1025
2616 #endif
2617 main() {
2618        int fd = open("/dev/null", O_RDONLY);
2619        return fcntl(fd, F_GETLEASE, 0) == -1;
2622 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2623 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2624     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2627 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2628 AC_TRY_RUN([
2629 #include <sys/types.h>
2630 #include <fcntl.h>
2631 #include <signal.h>
2632 #ifndef F_NOTIFY
2633 #define F_NOTIFY 1026
2634 #endif
2635 main() {
2636         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2639 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2640 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2641     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2644 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2645 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2646 AC_CHECK_FUNCS(inotify_init)
2647 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2649 samba_cv_HAVE_INOTIFY=yes,
2650 samba_cv_HAVE_INOTIFY=no,
2651 samba_cv_HAVE_INOTIFY=cross)
2653 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2654     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2657 #################################################
2658 # Check if FAM notifications are available. For FAM info, see
2659 #       http://oss.sgi.com/projects/fam/
2660 #       http://savannah.nongnu.org/projects/fam/
2661 AC_ARG_ENABLE(fam,
2662 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2664 if test x$enable_fam != xno; then
2665     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2666     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2667         # On IRIX, libfam requires libC, but other FAM implementations
2668         # might not need it.
2669         AC_CHECK_LIB(fam, FAMOpen2,
2670             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2671             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2672             [samba_cv_HAVE_LIBFAM=no])
2674         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2675             samba_fam_xtra=-lC
2676             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2677                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2678                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2679                 [samba_cv_HAVE_LIBFAM=no])
2680             unset samba_fam_xtra
2681         fi
2682     fi
2683     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2684         default_shared_modules="$default_shared_modules vfs_notify_fam"
2685         AC_TRY_COMPILE([#include <fam.h>],
2686                     [enum FAMCodes code = FAMChanged;],
2687                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2688                         [Whether fam.h contains a typedef for enum FAMCodes]),
2689                     [])
2690     fi
2692     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2693         AC_CHECK_LIB(fam, FAMNoExists,
2694             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2695     fi
2697     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2698         AC_MSG_ERROR(FAM support requested but FAM library not available )
2699     fi
2702 AC_SUBST(SMB_FAM_LIBS)
2704 #################################################
2705 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2708 with_dmapi_support=auto
2709 AC_MSG_CHECKING(whether to use DMAPI support)
2710 AC_ARG_WITH(dmapi,
2711 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2712 [ case "$withval" in
2713   yes|no)
2714     with_dmapi_support=$withval
2715     ;;
2716   esac ]
2718 AC_MSG_RESULT([$with_dmapi_support])
2720 if test x"$with_dmapi_support" != xno ; then
2721         SMB_CHECK_DMAPI([], [
2722                 AC_MSG_NOTICE(DMAPI support not present)
2723                 if test x"$with_dmapi_support" = xyes ; then
2724                         AC_MSG_ERROR(no DMAPI support found but requested!)
2725                 fi
2726                 ]
2727         )
2730 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2731 # Theoretically it should work with AIX JFS2 too but this needs testing
2732 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2733     default_shared_modules="$default_shared_modules vfs_tsmsm"
2736 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2737 AC_TRY_RUN([
2738 #include <sys/types.h>
2739 #include <fcntl.h>
2740 #include <signal.h>
2741 #include <sys/file.h>
2742 #ifndef LOCK_MAND
2743 #define LOCK_MAND       32
2744 #define LOCK_READ       64
2745 #endif
2746 main() {
2747         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2750 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2751 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2752     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2756 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2757 AC_TRY_COMPILE([#include <sys/types.h>
2758 #include <fcntl.h>],
2759 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2760 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2761 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2762     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2765 #################################################
2766 # Check for POSIX capability support
2768 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2769     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2770     [], [])
2772 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2774     ac_save_LIBS=$LIBS
2775     AC_LIBTESTFUNC(cap, cap_get_proc)
2777     AC_CACHE_CHECK([for POSIX capabilities],
2778             samba_cv_HAVE_POSIX_CAPABILITIES,
2779             [
2780                 AC_TRY_RUN([
2781 #include <sys/types.h>
2782 #include <sys/capability.h>
2783 main() {
2784  cap_t cap;
2785  cap_value_t vals[1];
2786  if (!(cap = cap_get_proc()))
2787    exit(1);
2788  vals[0] = CAP_CHOWN;
2789  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2790  cap_set_proc(cap);
2791  exit(0);
2793                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2794                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2795                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2796             ])
2798 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2799     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2800             [Whether POSIX capabilities are available])
2801 else
2802     LIBS=$ac_save_LIBS
2808 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2809 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2812 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2813 AC_TRY_COMPILE([#include <sys/types.h>
2814 #if defined(HAVE_RPC_RPC_H)
2815 #include <rpc/rpc.h>
2816 #endif],
2817 [int16 testvar;],
2818 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2819 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2820     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2823 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2824 AC_TRY_COMPILE([#include <sys/types.h>
2825 #if defined(HAVE_RPC_RPC_H)
2826 #include <rpc/rpc.h>
2827 #endif],
2828 [uint16 testvar;],
2829 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2830 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2831     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2834 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2835 AC_TRY_COMPILE([#include <sys/types.h>
2836 #if defined(HAVE_RPC_RPC_H)
2837 #include <rpc/rpc.h>
2838 #endif],
2839 [int32 testvar;],
2840 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2841 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2842     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2845 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2846 AC_TRY_COMPILE([#include <sys/types.h>
2847 #if defined(HAVE_RPC_RPC_H)
2848 #include <rpc/rpc.h>
2849 #endif],
2850 [uint32 testvar;],
2851 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2852 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2853     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2857 dnl Some systems (SCO) have a problem including
2858 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2859 dnl as a #define in <prot.h> and as part of an enum
2860 dnl in <rpc/rpc.h>.
2863 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2864 AC_TRY_COMPILE([#include <sys/types.h>
2865 #ifdef HAVE_SYS_SECURITY_H
2866 #include <sys/security.h>
2867 #include <prot.h>
2868 #endif  /* HAVE_SYS_SECURITY_H */
2869 #if defined(HAVE_RPC_RPC_H)
2870 #include <rpc/rpc.h>
2871 #endif],
2872 [int testvar;],
2873 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2874 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2875     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2878 AC_MSG_CHECKING([for test routines])
2879 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2880            AC_MSG_RESULT(yes),
2881            AC_MSG_ERROR([cant find test code. Aborting config]),
2882            AC_MSG_WARN([cannot run when cross-compiling]))
2884 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2885 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2886            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2887 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2888     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2891 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2892 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2893            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2894 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2895     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2898 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2899 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2900 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2901 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2902 AC_CHECK_FUNCS(getpagesize)
2904 ################################################
2905 # look for a method of setting the effective uid
2906 seteuid=no;
2908 if test $seteuid = no; then
2909 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2910 AC_TRY_RUN([
2911 #define AUTOCONF_TEST 1
2912 #define USE_SETREUID 1
2913 #include "confdefs.h"
2914 #include "${srcdir-.}/lib/util_sec.c"],
2915            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2916 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2917     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2921 # we check for setresuid second as it conflicts with AIO on Linux. 
2922 # see http://samba.org/~tridge/junkcode/aio_uid.c
2923 if test $seteuid = no; then
2924 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2925 AC_TRY_RUN([
2926 #define AUTOCONF_TEST 1
2927 #define USE_SETRESUID 1
2928 #include "confdefs.h"
2929 #include "${srcdir-.}/lib/util_sec.c"],
2930            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2931 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2932     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2936 if test $seteuid = no; then
2937 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2938 AC_TRY_RUN([
2939 #define AUTOCONF_TEST 1
2940 #define USE_SETEUID 1
2941 #include "confdefs.h"
2942 #include "${srcdir-.}/lib/util_sec.c"],
2943            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2944 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2945     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2949 if test $seteuid = no; then
2950 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2951 AC_TRY_RUN([
2952 #define AUTOCONF_TEST 1
2953 #define USE_SETUIDX 1
2954 #include "confdefs.h"
2955 #include "${srcdir-.}/lib/util_sec.c"],
2956            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2957 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2958     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2962 AC_CACHE_CHECK([for the Darwin initgroups system call],
2963         samba_cv_DARWIN_INITGROUPS,
2964         AC_TRY_LINK([
2965 #include <sys/syscall.h>
2966 #include <unistd.h>
2967         ],
2968         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2969         samba_cv_DARWIN_INITGROUPS=yes,
2970         samba_cv_DARWIN_INITGROUPS=no)
2973 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2974     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2975         [Whether to use the Darwin-specific initgroups system call])
2978 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2979 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2980            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2981 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2982     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2985 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2986 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2987            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2988 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2989     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2991 else
2994 dnl Don't check for 64 bit fcntl locking if we know that the
2995 dnl glibc2.1 broken check has succeeded.
2998   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2999   AC_TRY_RUN([
3000 #if defined(HAVE_UNISTD_H)
3001 #include <unistd.h>
3002 #endif
3003 #include <stdio.h>
3004 #include <stdlib.h>
3006 #ifdef HAVE_FCNTL_H
3007 #include <fcntl.h>
3008 #endif
3010 #ifdef HAVE_SYS_FCNTL_H
3011 #include <sys/fcntl.h>
3012 #endif
3013 main() { struct flock64 fl64;
3014 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3015 exit(0);
3016 #else
3017 exit(1);
3018 #endif
3020        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3022   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3023       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3024   fi
3027 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3028 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3029 AC_TRY_COMPILE([
3030   #define _XOPEN_SOURCE 600
3031   #include <stdlib.h>
3032   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3033     probably broken posix_fallocate
3034   #endif
3035 ], [
3036 ], 
3037 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3038 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3039         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3043 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3044 AC_TRY_COMPILE([#include <sys/types.h>
3045 #include <sys/stat.h>
3046 #include <unistd.h>],
3047 [struct stat st;  st.st_blocks = 0;],
3048 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3049 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3050     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3053 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3055 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3056 AC_TRY_COMPILE([#include <sys/types.h>
3057 #include <sys/stat.h>
3058 #include <unistd.h>],
3059 [struct stat st;  st.st_blksize = 0;],
3060 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3061 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3062     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3065 AC_CACHE_CHECK([for st_flags in struct stat],
3066         samba_cv_HAVE_STAT_ST_FLAGS,
3067         [
3068             AC_TRY_COMPILE([#include <sys/types.h>
3069 #include <sys/stat.h>
3070 #include <unistd.h>],
3071             [struct stat st;  st.st_flags = 0;],
3072             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3073             samba_cv_HAVE_STAT_ST_FLAGS=no,
3074             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3075         ])
3077 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3078     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3079                 [Whether the stat struct has a st_flags member])
3082 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3083 AC_TRY_COMPILE([
3084 #include <sys/types.h>
3085 #include <sys/acl.h>
3086 #if defined(HAVE_RPCSVC_NIS_H)
3087 #include <rpcsvc/nis.h>
3088 #endif],
3089 [int i;],
3090 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3091 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3092         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3095 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3096 AC_TRY_RUN([
3097 #include <stdio.h>
3098 #include <limits.h>
3099 #include <signal.h>
3101 void exit_on_core(int ignored) {
3102         exit(1);
3105 main() {
3106         char *newpath;
3107         signal(SIGSEGV, exit_on_core);
3108         newpath = realpath("/tmp", NULL);
3109         exit((newpath != NULL) ? 0 : 1);
3112 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3113 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3114     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3117 #################################################
3118 # check for AFS clear-text auth support
3119 samba_cv_WITH_AFS=no
3120 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3121 AC_ARG_WITH(afs,
3122 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3123 [ case "$withval" in
3124   yes|auto)
3125     AC_MSG_RESULT($withval)
3126     samba_cv_WITH_AFS=$withval
3127     ;;
3128   *)
3129     AC_MSG_RESULT(no)
3130     ;;
3131   esac ],
3132   AC_MSG_RESULT(no)
3135 ####################################################
3136 # check for Linux-specific AFS fake-kaserver support
3137 samba_cv_WITH_FAKE_KASERVER=no
3138 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3139 AC_ARG_WITH(fake-kaserver,
3140 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3141 [ case "$withval" in
3142   yes|auto)
3143     AC_MSG_RESULT($withval)
3144     samba_cv_WITH_FAKE_KASERVER=$withval
3145     ;;
3146   *)
3147     AC_MSG_RESULT(no)
3148     ;;
3149   esac ],
3150   AC_MSG_RESULT(no)
3153 #################################################
3154 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3155 if test x"$samba_cv_WITH_AFS" != x"no" ||
3156    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3158     # see if this box has the OpenSSL DES libraries
3159     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3161     # see if this box has the afs-headers in /usr/include/afs
3162     AC_MSG_CHECKING(for /usr/include/afs)
3163     if test -d /usr/include/afs; then
3164           AC_MSG_RESULT(yes)
3165     else
3166       AC_MSG_RESULT(no)
3167     fi
3169     # check for afs.h
3170     have_afs_headers=no
3171     AC_CHECK_HEADERS(afs.h afs/afs.h)
3172     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3173         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3174            test x"$samba_cv_WITH_AFS" = x"auto"; then
3175                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3176         else
3177                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3178         fi
3179     else
3180         have_afs_headers=yes
3181     fi
3184 FAKE_KASERVER_OBJ=""
3185 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3186     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3187     FAKE_KASERVER_OBJ="utils/net_afs.o"
3189 AC_SUBST(FAKE_KASERVER_OBJ)
3191 #################################################
3192 # check whether to compile AFS/NT ACL mapping module
3193 samba_cv_WITH_VFS_AFSACL=no
3194 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3195 AC_ARG_WITH(vfs-afsacl,
3196 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3197 [ case "$withval" in
3198   yes|auto)
3199     AC_MSG_RESULT($withval)
3200     samba_cv_WITH_VFS_AFSACL=yes
3201     ;;
3202   *)
3203     AC_MSG_RESULT(no)
3204     ;;
3205   esac ],
3206   AC_MSG_RESULT(no)
3209 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3210    default_shared_modules="$default_shared_modules vfs_afsacl"
3212         
3213 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3214     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3217 #################################################
3218 # check for the DFS clear-text auth system
3219 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3220 AC_ARG_WITH(dfs,
3221 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3222 [ case "$withval" in
3223   yes)
3224     AC_MSG_RESULT(yes)
3225     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3226     ;;
3227   *)
3228     AC_MSG_RESULT(no)
3229     ;;
3230   esac ],
3231   AC_MSG_RESULT(no)
3234 ########################################################
3235 # Compile with LDAP support?
3237 with_ldap_support=auto
3238 AC_MSG_CHECKING([for LDAP support])
3240 AC_ARG_WITH(ldap,
3241 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3242 [ case "$withval" in
3243     yes|no)
3244         with_ldap_support=$withval
3245         ;;
3246   esac ])
3248 AC_MSG_RESULT($with_ldap_support)
3250 SMBLDAP=""
3251 AC_SUBST(SMBLDAP)
3252 SMBLDAPUTIL=""
3253 AC_SUBST(SMBLDAPUTIL)
3255 if test x"$with_ldap_support" != x"no"; then
3257   ##################################################################
3258   # first test for ldap.h and lber.h
3259   # (ldap.h is required for this test)
3260   AC_CHECK_HEADERS(ldap.h lber.h)
3262   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3263         if test x"$with_ldap_support" = x"yes"; then
3264          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3265         else
3266          AC_MSG_WARN(ldap.h is needed for LDAP support)
3267         fi
3268         
3269         with_ldap_support=no
3270   fi
3272   ##################################################################
3273   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3274   # unsigned int in include/includes.h
3275   case $host_os in
3276         *hpux*)
3277          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3278          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3279         with_ldap_support=yes
3280         ;;
3281         *)
3282         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3283         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3284                 if test x"$with_ldap_support" = x"yes"; then
3285                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3286                 else
3287                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3288                 fi
3289                 with_ldap_support=no
3290         fi
3291         ;;
3292   esac
3295 if test x"$with_ldap_support" != x"no"; then
3296   ac_save_LIBS=$LIBS
3298   ##################################################################
3299   # we might need the lber lib on some systems. To avoid link errors
3300   # this test must be before the libldap test
3301   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3303   ########################################################
3304   # If ber_sockbuf_add_io() is available we can add
3305   # SASL wrapping hooks
3306   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3308   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3309                  AC_TRY_COMPILE([#include <ldap.h>],
3310                                 [int val = LDAP_OPT_SOCKBUF;],
3311                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3312                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3314   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3315           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3316         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3317   fi
3319   #######################################################
3320   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3321   # ldap logging and print it out in the samba logs
3322   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3323                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3324                  [AC_TRY_COMPILE([#include <lber.h>],
3325                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3326                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3327                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3329   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3330         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3331                   [Support for LDAP/LBER logging interception])
3332   fi
3334   ########################################################
3335   # now see if we can find the ldap libs in standard paths
3336   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3338   ########################################################
3339   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3340   # Check found in pam_ldap 145.
3341   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3343   LIBS="$LIBS $LDAP_LIBS"
3344   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3345     AC_TRY_COMPILE([
3346         #include <lber.h>
3347         #include <ldap.h>],
3348         [ldap_set_rebind_proc(0, 0, 0);],
3349         [smb_ldap_cv_ldap_set_rebind_proc=3],
3350         [smb_ldap_cv_ldap_set_rebind_proc=2]
3351     )
3352   ])
3354   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3356   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3358   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3359     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3360     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3361     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3362     default_shared_modules="$default_shared_modules";
3363     SMBLDAP="lib/smbldap.o"
3364     SMBLDAPUTIL="lib/smbldap_util.o"
3365     with_ldap_support=yes
3366     AC_MSG_CHECKING(whether LDAP support is used)
3367     AC_MSG_RESULT(yes)
3368   else
3369     if test x"$with_ldap_support" = x"yes"; then
3370         AC_MSG_ERROR(libldap is needed for LDAP support)
3371     else
3372         AC_MSG_WARN(libldap is needed for LDAP support)
3373     fi
3375     LDAP_LIBS=""
3376     with_ldap_support=no
3377   fi
3378   LIBS=$ac_save_LIBS
3382 #################################################
3383 # active directory support
3385 with_ads_support=auto
3386 AC_MSG_CHECKING([for Active Directory and krb5 support])
3388 AC_ARG_WITH(ads,
3389 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3390 [ case "$withval" in
3391     yes|no)
3392         with_ads_support="$withval"
3393         ;;
3394   esac ])
3396 AC_MSG_RESULT($with_ads_support)
3398 FOUND_KRB5=no
3399 KRB5_LIBS=""
3401 if test x"$with_ldap_support" != x"yes"; then
3403     if test x"$with_ads_support" = x"yes"; then
3404         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3405     elif test x"$with_ads_support" = x"auto"; then
3406         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3407         with_ads_support=no
3408     fi
3410 else
3412     # Check to see whether there is enough LDAP functionality to be able
3413     # to build AD support.
3415 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3416 case "$host_os" in
3417         *hpux*)
3418     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3420     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3421         if test x"$with_ads_support" = x"yes"; then
3422             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3423         elif test x"$with_ads_support" = x"auto"; then
3424             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3425             with_ads_support=no
3426         fi
3427     fi
3428     ;;
3429         *)
3430     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3432     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3433         if test x"$with_ads_support" = x"yes"; then
3434             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3435         elif test x"$with_ads_support" = x"auto"; then
3436             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3437             with_ads_support=no
3438         fi
3439     fi
3440     ;;
3441 esac
3444     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3446     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3447         if test x"$with_ads_support" = x"yes"; then
3448             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3449         elif test x"$with_ads_support" = x"auto"; then
3450             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3451             with_ads_support=no
3452         fi
3453     fi
3457 if test x"$with_ads_support" != x"no"; then
3459   # Do no harm to the values of CFLAGS and LIBS while testing for
3460   # Kerberos support.
3462   if test x$FOUND_KRB5 = x"no"; then
3463     #################################################
3464     # check for location of Kerberos 5 install
3465     AC_MSG_CHECKING(for kerberos 5 install path)
3466     AC_ARG_WITH(krb5,
3467     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3468     [ case "$withval" in
3469       no)
3470         AC_MSG_RESULT(no krb5-path given)
3471         ;;
3472       yes)
3473         AC_MSG_RESULT(/usr)
3474         FOUND_KRB5=yes
3475         ;;
3476       *)
3477         AC_MSG_RESULT($withval)
3478         KRB5_CFLAGS="-I$withval/include"
3479         KRB5_CPPFLAGS="-I$withval/include"
3480         KRB5_LDFLAGS="-L$withval/lib"
3481         FOUND_KRB5=yes
3482         if test -x "$withval/bin/krb5-config"; then
3483                 KRB5CONFIG=$withval/bin/krb5-config
3484         fi
3485         ;;
3486       esac ],
3487       AC_MSG_RESULT(no krb5-path given)
3488     )
3489   fi
3491   #################################################
3492   # check for krb5-config from recent MIT and Heimdal kerberos 5
3493   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3494   AC_MSG_CHECKING(for working krb5-config)
3495   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3496     ac_save_CFLAGS=$CFLAGS
3497     CFLAGS="";export CFLAGS
3498     ac_save_LDFLAGS=$LDFLAGS
3499     LDFLAGS="";export LDFLAGS
3500     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3501     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3502     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3503     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3504     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3505     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3506     FOUND_KRB5=yes
3507     AC_MSG_RESULT(yes)
3508   else
3509     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3510   fi
3512   if test x$FOUND_KRB5 = x"no"; then
3513     #################################################
3514     # see if this box has the SuSE location for the heimdal krb implementation
3515     AC_MSG_CHECKING(for /usr/include/heimdal)
3516     if test -d /usr/include/heimdal; then
3517       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3518           KRB5_CFLAGS="-I/usr/include/heimdal"
3519           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3520           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3521           FOUND_KRB5=yes
3522           AC_MSG_RESULT(yes)
3523       else
3524           KRB5_CFLAGS="-I/usr/include/heimdal"
3525           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3526           FOUND_KRB5=yes
3527           AC_MSG_RESULT(yes)
3528       fi
3529     else
3530       AC_MSG_RESULT(no)
3531     fi
3532   fi
3534   if test x$FOUND_KRB5 = x"no"; then
3535     #################################################
3536     # see if this box has the RedHat location for kerberos
3537     AC_MSG_CHECKING(for /usr/kerberos)
3538     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3539       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3540       KRB5_CFLAGS="-I/usr/kerberos/include"
3541       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3542       FOUND_KRB5=yes
3543       AC_MSG_RESULT(yes)
3544     else
3545       AC_MSG_RESULT(no)
3546     fi
3547   fi
3549   if test x$FOUND_KRB5 = x"no"; then
3550     #################################################
3551     # see if this box has the OpenBSD location for heimdal krb5
3552     AC_MSG_CHECKING(for /usr/include/kerberosV)
3553     if test -d /usr/include/kerberosV; then
3554       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3555       KRB5_LIBS="-lcrypto"
3556       FOUND_KRB5=yes
3557       AC_MSG_RESULT(yes)
3558     else
3559       AC_MSG_RESULT(no)
3560     fi
3561   fi
3563   ac_save_CFLAGS=$CFLAGS
3564   ac_save_CPPFLAGS=$CPPFLAGS
3565   ac_save_LDFLAGS=$LDFLAGS
3567   # remove needless evil rpath stuff as early as possible:
3568   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3569   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3570   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3571   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3572   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3574   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3576   # now check for krb5.h. Some systems have the libraries without the headers!
3577   # note that this check is done here to allow for different kerberos
3578   # include paths
3579   AC_CHECK_HEADERS(krb5.h)
3581   if test x"$ac_cv_header_krb5_h" = x"no"; then
3583     # Give a warning if AD support was not explicitly requested,
3584     # i.e with_ads_support = auto, otherwise die with an error.
3586     if test x"$with_ads_support" = x"yes"; then
3587       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3588     else
3589       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3590     fi
3592     # Turn off AD support and restore CFLAGS and LIBS variables
3594     with_ads_support="no"
3596     CFLAGS=$ac_save_CFLAGS
3597     CPPFLAGS=$ac_save_CPPFLAGS
3598     LDFLAGS=$ac_save_LDFLAGS
3599   fi
3600   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3601 [[#ifdef HAVE_KRB5_H
3602  #include <krb5.h>
3603  #endif
3606   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3607         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3608         if test x"$BLDSHARED" = x"true" ; then
3609                 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3610         fi
3611   fi
3613   # check for new heimdal KRB5_DEPRECATED handling
3615   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3616                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3617     AC_TRY_COMPILE(
3618       [#define KRB5_DEPRECATED 1
3619       #include <krb5.h>],
3620       [],
3621       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3622       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3624   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3625     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3626                [Whether to use deprecated krb5 interfaces])
3627   fi
3630 # Now we have determined whether we really want ADS support
3631 use_ads=no
3632 if test x"$with_ads_support" != x"no"; then
3633   use_ads=yes
3634   have_gssapi=no
3635   ac_save_LIBS=$LIBS
3637   # now check for gssapi headers.  This is also done here to allow for
3638   # different kerberos include paths
3639   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3641   ##################################################################
3642   # we might need the k5crypto and com_err libraries on some systems
3643   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3644   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3646   # Heimdal checks.
3647   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3648   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3649   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3651   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3652   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3654   ########################################################
3655   # now see if we can find the krb5 libs in standard paths
3656   # or as specified above
3657   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3658   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3660   ########################################################
3661   # now see if we can find the gssapi libs in standard paths
3662   if test x"$have_gssapi" != x"yes"; then
3663      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3664   fi
3666   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3667   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3668   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3669   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3670   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3671   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3672   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3673   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3674   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3675   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3676   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3677   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3678   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3679   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3680   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3681   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3682   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3683   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3684   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3685   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3686   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3687   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3688   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3689   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3690   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3691   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3692   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3693   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3694   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3695   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3696   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3697   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3698   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3699   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3700   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3701   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3702   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3703   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3704   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3705   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3706   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3707   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3708   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3709   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3710   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3711   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3712   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3713   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3714   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3716   # MIT krb5 1.8 does not expose this call (yet)
3717   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3719   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3720   # but does have the symbol
3721   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3723   LIBS="$KRB5_LIBS $LIBS"
3725   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3726         smb_krb5_cv_ticket_has_keyinfo,
3727         [
3728             AC_TRY_COMPILE(
3729             [
3730                 #include <krb5.h>
3731             ],
3732             [
3733                 krb5_ticket ticket;
3734                 krb5_kvno kvno;
3735                 krb5_enctype enctype;
3737                 enctype = ticket.enc_part.enctype;
3738                 kvno = ticket.enc_part.kvno;
3739             ],
3740             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3741             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3742         ])
3744   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3745         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3746             [Whether the krb5_ticket structure contains the kvno and enctype])
3747   fi
3749   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3750           smb_krb5_cv_creds_opt_free_context,
3751           [
3752                 AC_TRY_COMPILE([
3753                     #include <krb5.h>],
3754                     [
3755                         krb5_context ctx;
3756                         krb5_get_init_creds_opt *opt = NULL;
3757                         krb5_get_init_creds_opt_free(ctx, opt);
3758                     ],
3759                     [smb_krb5_cv_creds_opt_free_context=yes],
3760                     [smb_krb5_cv_creds_opt_free_context=no]
3761                 )
3762           ])
3764   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3765         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3766             [Whether krb5_get_init_creds_opt_free takes a context argument])
3767   fi
3769   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3770     AC_TRY_COMPILE([
3771         #include <krb5.h>],
3772         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3773         [smb_krb5_cv_verify_checksum=7],
3774         [smb_krb5_cv_verify_checksum=6],
3775     )
3776   ])
3777   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3779   AC_CACHE_CHECK([for checksum in krb5_checksum],
3780                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3781     AC_TRY_COMPILE([#include <krb5.h>],
3782       [krb5_checksum cksum; cksum.checksum.length = 0;],
3783       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3784       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3786   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3787     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3788                [Whether the krb5_checksum struct has a checksum property])
3789   fi
3791   AC_CACHE_CHECK([for etype in EncryptedData],
3792                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3793     AC_TRY_COMPILE([#include <krb5.h>],
3794       [EncryptedData edata; edata.etype = 0;],
3795       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3796       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3798   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3799     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3800                [Whether the EncryptedData struct has a etype property])
3801   fi
3803   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3804                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3805     AC_TRY_COMPILE([#include <krb5.h>],
3806       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3807       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3808       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3810   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3811     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3812                [Whether the krb5_ap_req struct has a ticket pointer])
3813   fi
3815   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3816                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3817     AC_TRY_COMPILE([#include <krb5.h>],
3818       [krb5_error err; err.e_data = NULL;],
3819       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3820       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3822   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3823     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3824                [Whether the krb5_error struct has a e_data pointer])
3825   fi
3827   AC_CACHE_CHECK([for krb5_crypto type],
3828                 samba_cv_HAVE_KRB5_CRYPTO,[
3829     AC_TRY_COMPILE([#include <krb5.h>],
3830       [krb5_crypto crypto;],
3831       samba_cv_HAVE_KRB5_CRYPTO=yes,
3832       samba_cv_HAVE_KRB5_CRYPTO=no)])
3834   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3835     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3836                [Whether the type krb5_crypto exists])
3837   fi
3839   AC_CACHE_CHECK([for krb5_encrypt_block type],
3840                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3841     AC_TRY_COMPILE([#include <krb5.h>],
3842       [krb5_encrypt_block block;],
3843       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3844       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3846   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3847     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3848                [Whether the type krb5_encrypt_block exists])
3849   fi
3851   AC_CACHE_CHECK([for addrtype in krb5_address],
3852                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3853     AC_TRY_COMPILE([#include <krb5.h>],
3854       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3855       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3856       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3858   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3859     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3860                [Whether the krb5_address struct has a addrtype property])
3861   fi
3863   AC_CACHE_CHECK([for addr_type in krb5_address],
3864                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3865     AC_TRY_COMPILE([#include <krb5.h>],
3866       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3867       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3868       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3870   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3871     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3872               [Whether the krb5_address struct has a addr_type property])
3873   fi
3875   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3876                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3877                  [AC_TRY_COMPILE([#include <krb5.h>],
3878     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3879     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3881   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3882     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3883               [Whether the krb5_ticket struct has a enc_part2 property])
3884   fi
3886   AC_CACHE_CHECK([for keyblock in krb5_creds],
3887                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3888     AC_TRY_COMPILE([#include <krb5.h>],
3889       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3890       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3891       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3893   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3894     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3895               [Whether the krb5_creds struct has a keyblock property])
3896   fi
3898   AC_CACHE_CHECK([for session in krb5_creds],
3899                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3900     AC_TRY_COMPILE([#include <krb5.h>],
3901       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3902       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3903       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3905   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3906     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3907               [Whether the krb5_creds struct has a session property])
3908   fi
3910   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3911                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3912     AC_TRY_COMPILE([#include <krb5.h>],
3913       [krb5_keyblock key; key.keyvalue.data = NULL;],
3914       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3915       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3917   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3918     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3919               [Whether the krb5_keyblock struct has a keyvalue property])
3920   fi
3922   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3923                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3924     AC_TRY_COMPILE([#include <krb5.h>],
3925       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3926       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3927       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3928   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3929                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3930     AC_TRY_COMPILE([#include <krb5.h>],
3931       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3932       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3933       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3934 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3935 # w.r.t. arcfour and windows, so we must not enable it here
3936   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3937           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3938     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3939               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3940   fi
3942   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3943                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3944     AC_TRY_COMPILE([#include <krb5.h>],
3945       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3946       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3947       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3949   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3950     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3951               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3952   fi
3954   AC_CACHE_CHECK([for KV5M_KEYTAB],
3955                  samba_cv_HAVE_KV5M_KEYTAB,[
3956     AC_TRY_COMPILE([#include <krb5.h>],
3957       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3958       samba_cv_HAVE_KV5M_KEYTAB=yes,
3959       samba_cv_HAVE_KV5M_KEYTAB=no)])
3961   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3962       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3963              [Whether the KV5M_KEYTAB option is available])
3964   fi
3966   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3967                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3968     AC_TRY_COMPILE([#include <krb5.h>],
3969       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3970       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3971       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3973   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3974     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3975               [Whether KRB5_KU_OTHER_CKSUM is available])
3976   fi
3978   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3979                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3980     AC_TRY_COMPILE([#include <krb5.h>],
3981       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3982       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3983       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3985   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3986     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3987               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3988   fi
3990   AC_CACHE_CHECK([for the krb5_princ_component macro],
3991                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3992     AC_TRY_LINK([#include <krb5.h>],
3993       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3994       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3995       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3997   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3998     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3999                [Whether krb5_princ_component is available])
4000   fi
4002   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4003                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4004     AC_TRY_COMPILE([#include <krb5.h>],
4005       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4006       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4007       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4009   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4010     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4011               [Whether krb5_keytab_entry has key member])
4012   fi
4014   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4015                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4016     AC_TRY_COMPILE([#include <krb5.h>],
4017       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4018       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4019       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4021   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4022     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4023               [Whether krb5_keytab_entry has keyblock member])
4024   fi
4026   AC_CACHE_CHECK([for magic in krb5_address],
4027                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4028     AC_TRY_COMPILE([#include <krb5.h>],
4029       [krb5_address addr; addr.magic = 0;],
4030       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4031       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4033   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4034     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4035               [Whether the krb5_address struct has a magic property])
4036   fi
4038   AC_CACHE_CHECK([for WRFILE: keytab support],
4039                 samba_cv_HAVE_WRFILE_KEYTAB,[
4040     AC_TRY_RUN([
4041 #include<krb5.h>
4042   main()
4043   {
4044     krb5_context context;
4045     krb5_keytab keytab;
4047     krb5_init_context(&context);
4048     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4049   }],
4050   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4051   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4053   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4054       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4055                [Whether the WRFILE:-keytab is supported])
4056   fi
4058   AC_CACHE_CHECK([for krb5_realm type],
4059                 samba_cv_HAVE_KRB5_REALM_TYPE,[
4060     AC_TRY_COMPILE([#include <krb5.h>],
4061       [krb5_realm realm;],
4062       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4063       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4065   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4066     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4067                [Whether the type krb5_realm exists])
4068   fi
4070   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4071                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4072     AC_TRY_COMPILE([#include <krb5.h>],
4073     [
4074     krb5_context context;
4075     krb5_principal principal;
4076     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4077     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4078     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4080   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4081     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4082               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4083   fi
4085   AC_CACHE_CHECK([for krb5_addresses type],
4086                 samba_cv_HAVE_KRB5_ADDRESSES,[
4087     AC_TRY_COMPILE([#include <krb5.h>],
4088       [krb5_addresses addr;],
4089       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4090       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4092   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4093     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4094                [Whether the type krb5_addresses type exists])
4095   fi
4097   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4098                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4099     AC_TRY_COMPILE([#include <krb5.h>],
4100     [
4101     krb5_mk_error(0,0,0);],
4102     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4103     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4105   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4106     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4107               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4108   fi
4110   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4111     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4112         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4113         AC_TRY_RUN_STRICT([
4114                 #include <stdlib.h>
4115                 #include <krb5.h>
4116                 int main(void) {
4117                         krb5_context context = NULL;
4118                         char *str = NULL;
4119                         krb5_enctype_to_string(context, 1, &str);
4120                         if (str) free (str); 
4121                         return 0;
4122                 }
4123                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4124                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4125                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4127     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4128       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4129                 [whether krb5_enctype_to_string takes krb5_context argument])
4130     fi
4132     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4133         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4134         AC_TRY_RUN_STRICT([
4135                 #include <krb5.h>
4136                 int main(void) {
4137                         char buf[256];
4138                         krb5_enctype_to_string(1, buf, 256);
4139                         return 0;
4140                 }
4141                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4142                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4143                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4145     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4146       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4147                 [whether krb5_enctype_to_string takes size_t argument])
4148     fi
4149   fi
4151   AC_CACHE_CHECK([for krb5_principal_get_realm],
4152                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4153     AC_TRY_LINK([#include <krb5.h>],
4154       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4155       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4156       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4158   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4159     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4160                [Whether the function krb5_principal_get_realm is defined])
4161   fi
4163   AC_CACHE_CHECK([for krb5_princ_realm],
4164                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4165     AC_TRY_LINK([#include <krb5.h>],
4166       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4167       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4168       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4170   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4171     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4172                [Whether the macro krb5_princ_realm is defined])
4173   fi
4175   #
4176   #
4177   # Now the decisions whether we can support krb5
4178   #
4179   # NOTE: all tests should be done before this block!
4180   #
4181   #
4182   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4183     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4184     use_ads=no
4185   fi
4187   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4188           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4189   then
4190     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4191     use_ads=no
4192   fi
4194   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4195           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4196   then
4197     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4198     use_ads=no
4199   fi
4201   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4202           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4203   then
4204     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4205     use_ads=no
4206   fi
4208   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4209           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4210   then
4211     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4212     use_ads=no
4213   fi
4215   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4217       # We only need the following functions if we can't get the enctype
4218       # and kvno out of the ticket directly (ie. on Heimdal).
4220       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4221       then
4222         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4223         use_ads=no
4224       fi
4226       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4227       then
4228         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4229         use_ads=no
4230       fi
4232   fi
4234   if test x"$use_ads" = x"yes"; then
4235     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4236     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4237     if test x"$have_gssapi" = x"yes"; then
4238       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4239     fi
4240   else
4241     if test x"$with_ads_support" = x"yes"; then
4242         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4243     else
4244         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4245     fi
4246     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4247     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4248     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4249     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4250     KRB5_LIBS=""
4251     with_ads_support=no
4252   fi
4253   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4254   AC_MSG_RESULT([$use_ads])
4256 LIBS="$ac_save_LIBS"
4259 if test x"$use_ads" != xyes; then
4260         merged_build_possible=no
4263 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4264 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4267 ########################################################
4268 # Compile with DNS Updates support?
4270 with_dnsupdate_support=auto
4271 AC_MSG_CHECKING([whether to enable DNS Updates support])
4273 AC_ARG_WITH(dnsupdate,
4274 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4275 [ case "$withval" in
4276     yes|no)
4277         with_dnsupdate_support=$withval
4278         ;;
4279   esac ])
4281 AC_MSG_RESULT($with_dnsupdate_support)
4283 if test x"$with_dnsupdate_support" != x"no"; then
4285   ################################################################
4286   # first test for AD / GSSAPI support being enabled
4287         if test x"$have_gssapi" != xyes ; then
4288                 if test x"$with_dnsupdate_support" = x"yes" ; then
4289                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4290                 else
4291                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4292                         with_dnsupdate_support=no
4293                 fi
4294         fi
4295   ##################################################################
4296   # then test for uuid.h (necessary to generate unique DNS keynames
4297   # (uuid.h is required for this test)
4298         AC_CHECK_HEADERS(uuid/uuid.h)
4300         
4301         if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4302                 if test x"$with_dnsupdate_support" = x"yes"; then
4303                         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4304                 else
4305                         AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4306                 fi
4307                 with_dnsupdate_support=no
4308         fi
4311 if test x"$with_dnsupdate_support" != x"no"; then
4313   ########################################################
4314   # Now see if we can find the uuid libs in standard paths
4315   # On some systems, the uuid API is in libc, so we have to
4316   # be careful not to insert a spurious -luuid.
4318   UUID_LIBS=""
4319   AC_LIBTESTFUNC(uuid, uuid_generate,
4320           [
4321             case " $LIBS " in
4322                 *\ -luuid\ *)
4323                 UUID_LIBS="-luuid"
4324                 SMB_REMOVE_LIB(uuid)
4325                 ;;
4326             esac
4328             with_dnsupdate_support=yes
4329             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4330         ],
4331         [
4332             if test x"$with_dnsupdate_support" = x"yes"; then
4333                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4334             else
4335                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4336             fi
4337             with_dnsupdate_support=no
4338         ])
4340   # finally print out the result:
4341 AC_MSG_CHECKING(whether DNS Updates support is used)
4342 AC_MSG_RESULT([$with_dnsupdate_support])
4345 #################################################
4346 # check for automount support
4347 AC_MSG_CHECKING(whether to use automount)
4348 AC_ARG_WITH(automount,
4349 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4350 [ case "$withval" in
4351   yes)
4352     AC_MSG_RESULT(yes)
4353     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4354     ;;
4355   *)
4356     AC_MSG_RESULT(no)
4357     ;;
4358   esac ],
4359   AC_MSG_RESULT(no)
4362 #################################################
4363 # Check for a PAM clear-text auth, accounts, password
4364 # and session support. Most PAM implementations keep their
4365 # headers in /usr/include/security. Darwin keeps its in
4366 # /usr/include/pam.
4368 with_pam_for_crypt=no
4369 try_pam=auto
4370 AC_MSG_CHECKING(whether to try PAM support)
4371 AC_ARG_WITH(pam,
4372 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4373 [ case "$withval" in
4374   yes|no|auto)
4375     try_pam=$withval
4376     ;;
4377   esac
4379 AC_MSG_RESULT([$try_pam])
4381 use_pam=no
4382 create_pam_modules=no
4383 if test x"${try_pam}" != x"no";then
4384         use_pam=yes
4385         create_pam_modules=yes
4387         # Most systems have PAM headers in /usr/include/security, but Darwin
4388         # has them in /usr/include/pam.
4389         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4390         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4391                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4392                 if test x"${try_pam}" = x"yes";then
4393                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4394                 fi
4395                 use_pam=no
4396                 create_pam_modules=no
4397         fi
4399         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4400         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4401                 if test x"${try_pam}" = x"yes";then
4402                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4403                 fi
4404                 use_pam=no
4405                 create_pam_modules=no
4406         fi
4408         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4409                 #if HAVE_SECURITY_PAM_APPL_H
4410                 #include <security/pam_appl.h>
4411                 #endif
4412                 #if HAVE_PAM_PAM_APPL_H
4413                 #include <pam/pam_appl.h>
4414                 #endif
4415         ]])
4416         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4417                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4418                 if test x"${try_pam}" = x"yes";then
4419                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4420        fi
4421                 create_pam_modules=no
4422     fi
4424         if test x"$use_pam" = x"yes"; then
4425     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4426                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4427                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4428     with_pam_for_crypt=yes
4430                 if test x"$create_pam_modules" = x"yes"; then
4431                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4432                         # this checks are optional,
4433                         # we don't care about the results here
4434                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4435                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4436                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4437                 else
4438                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4439                 fi
4440         fi
4441         AC_MSG_CHECKING(whether to use PAM support)
4442         AC_MSG_RESULT([$use_pam])
4444         AC_MSG_CHECKING(whether to have PAM MODULES support)
4445         AC_MSG_RESULT([$create_pam_modules])
4446 fi # try_pam != no
4448 #################################################
4449 # check for PAM_RADIO_TYPE
4450 AC_TRY_COMPILE([
4451 #if (!defined(LINUX))
4453 #define PAM_EXTERN extern
4454 #if defined(HAVE_SECURITY_PAM_APPL_H)
4455 #include <security/pam_appl.h>
4456 #elif defined(HAVE_PAM_PAM_APPL_H)
4457 #include <pam/pam_appl.h>
4458 #endif
4460 #endif
4462 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4463 #include <security/pam_modules.h>
4464 #elif defined(HAVE_PAM_PAM_MODULES_H)
4465 #include <pam/pam_modules.h>
4466 #endif
4468 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4469 #include <security/_pam_macros.h>
4470 #elif defined(HAVE_PAM__PAM_MACROS_H)
4471 #include <pam/_pam_macros.h>
4472 #endif
4474 #ifdef HAVE_SECURITY_PAM_EXT_H
4475 #include <security/pam_ext.h>
4476 #endif
4478 [int i; i = PAM_RADIO_TYPE; ],
4479 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4481 #################################################
4482 # check for pam_smbpass support
4483 PAM_MODULES=""
4484 INSTALL_PAM_MODULES=""
4485 UNINSTALL_PAM_MODULES=""
4487 try_pam_smbpass=auto
4488 AC_MSG_CHECKING(whether to use pam_smbpass)
4489 AC_ARG_WITH(pam_smbpass,
4490 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4491 [ case "$withval" in
4492   yes|no|auto)
4493     try_pam_smbpass=$withval
4494   ;;
4495   *)
4496     AC_MSG_ERROR([valid options are yes,no,auto])
4497   ;;
4498   esac
4501 if test x"${try_pam_smbpass}" = xno ; then
4502         use_pam_smbpass=no
4503 else
4504         use_pam_smbpass=yes
4505         # Conditions under which pam_smbpass can't be built.
4506         if test x"$BLDSHARED" != xtrue ; then
4507                 if test x"${try_pam_smbpass}" = xyes ; then
4508                         AC_MSG_ERROR([No support for shared modules])
4509                 fi
4510                 use_pam_smbpass=no
4511         elif test x"$create_pam_modules" != xyes ; then
4512                 if test x"${try_pam_smbpass}" = xyes ; then
4513                         AC_MSG_ERROR([No support for PAM MODULES])
4514                 fi
4515                 use_pam_smbpass=no
4516         fi
4518         if test x"${use_pam_smbpass}" = xyes ; then 
4519                 PAM_MODULES="pam_smbpass"
4520                 INSTALL_PAM_MODULES="installpammodules"
4521                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4522         fi
4524 AC_MSG_RESULT([$use_pam_smbpass])
4528 ## moved after the check for -lcrypt in order to
4529 ## ensure that the necessary libraries are included
4530 ## check checking for truncated salt.  Wrapped by the
4531 ## $with_pam_for_crypt variable as above   --jerry
4533 if test $with_pam_for_crypt = no; then
4534 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4535 crypt_LIBS="$LIBS"
4536 LIBS="$AUTH_LIBS $LIBS"
4537 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4538         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4539 LIBS="$crypt_LIBS"])
4540 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4541         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4545 #################################################
4546 # check for a NISPLUS_HOME support
4547 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4548 AC_ARG_WITH(nisplus-home,
4549 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4550 [ case "$withval" in
4551   yes)
4552     AC_MSG_RESULT(yes)
4553     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4554     ;;
4555   *)
4556     AC_MSG_RESULT(no)
4557     ;;
4558   esac ],
4559   AC_MSG_RESULT(no)
4562 #################################################
4563 # check for syslog logging
4564 AC_MSG_CHECKING(whether to use syslog logging)
4565 AC_ARG_WITH(syslog,
4566 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4567 [ case "$withval" in
4568   yes)
4569     AC_MSG_RESULT(yes)
4570     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4571     ;;
4572   *)
4573     AC_MSG_RESULT(no)
4574     ;;
4575   esac ],
4576   AC_MSG_RESULT(no)
4579 #################################################
4580 # check for custom syslog facility
4581 AC_MSG_CHECKING(whether to use a custom syslog facility)
4582 AC_ARG_WITH(syslog-facility,
4583 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4585   if test "$withval" = "no" ; then
4586     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4587   else
4588      if test "$withval" != "yes" ; then
4589         syslog_facility="$withval"
4590         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4591      fi
4592   fi
4595 #################################################
4596 # check for experimental disk-quotas support
4598 samba_cv_WITH_QUOTAS=auto
4599 samba_cv_TRY_QUOTAS=no
4600 samba_cv_RUN_QUOTA_TESTS=auto
4601 samba_cv_WITH_SYS_QUOTAS=auto
4602 samba_cv_TRY_SYS_QUOTAS=auto
4603 samba_cv_SYSQUOTA_FOUND=no
4605 AC_MSG_CHECKING(whether to try disk-quotas support)
4606 AC_ARG_WITH(quotas,
4607 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4608 [ case "$withval" in
4609   yes)
4610     AC_MSG_RESULT(yes)
4611     samba_cv_WITH_QUOTAS=yes
4612     samba_cv_TRY_QUOTAS=yes
4613     samba_cv_RUN_QUOTA_TESTS=yes
4614     #set sys quotas to auto in this case
4615     samba_cv_TRY_SYS_QUOTAS=auto
4616     ;;
4617   auto)
4618     AC_MSG_RESULT(auto)
4619     samba_cv_WITH_QUOTAS=auto
4620     samba_cv_TRY_QUOTAS=auto
4621     samba_cv_RUN_QUOTA_TESTS=auto
4622     #set sys quotas to auto in this case
4623     samba_cv_TRY_SYS_QUOTAS=auto
4624     ;;
4625   no)
4626     AC_MSG_RESULT(no)
4627     samba_cv_WITH_QUOTAS=no
4628     samba_cv_TRY_QUOTAS=no
4629     samba_cv_RUN_QUOTA_TESTS=no
4630     ;;
4631   *)
4632     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4633     ;;
4634   esac ],
4635   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4638 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4639 AC_ARG_WITH(sys-quotas,
4640 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4641 [ case "$withval" in
4642   yes)
4643     AC_MSG_RESULT(yes)
4644     samba_cv_WITH_SYS_QUOTAS=yes
4645     samba_cv_TRY_SYS_QUOTAS=yes
4646     samba_cv_RUN_QUOTA_TESTS=yes
4647     ;;
4648   auto)
4649     AC_MSG_RESULT(auto)
4650     samba_cv_WITH_SYS_QUOTAS=auto
4651     samba_cv_TRY_SYS_QUOTAS=auto
4652     samba_cv_RUN_QUOTA_TESTS=auto
4653     ;;
4654   no)
4655     AC_MSG_RESULT(no)
4656     samba_cv_WITH_SYS_QUOTAS=no
4657     samba_cv_TRY_SYS_QUOTAS=no
4658     ;;
4659   *)
4660     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4661     ;;
4662   esac ],
4663   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4666 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4667 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4668   case "$host_os" in
4669         *linux*)
4670             AC_MSG_RESULT(yes)
4671             samba_cv_TRY_SYS_QUOTAS=yes
4672             samba_cv_RUN_QUOTA_TESTS=yes
4673             ;;
4674         *)
4675             AC_MSG_RESULT(no)
4676             samba_cv_TRY_SYS_QUOTAS=no
4677             ;;
4678   esac
4681 #############################################
4682 # only check for quota stuff if --with-quotas
4683 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4685 case "$host_os" in
4686         # on linux we didn't need to test we have builtin support
4687         *linux*)
4688             samba_cv_SYSQUOTA_FOUND=yes
4689             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4690             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4691             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4692             AC_MSG_RESULT(yes)
4694             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4695             samba_cv_found_xfs_header=yes
4696             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4697             AC_MSG_RESULT(yes)
4698             ;;
4699         *solaris*)
4700             # need to set this define when using static linking (BUG 1473)
4701             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4702             ;;
4703         *)
4704             ;;
4705 esac
4707 # some broken header files need this
4708 AC_CHECK_HEADER(asm/types.h,[
4709             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4710             AC_ADD_INCLUDE(<asm/types.h>)
4711             ])
4713 # For quotas on Veritas VxFS filesystems
4714 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4716 # For quotas on Linux XFS filesystems
4717 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4719 # For sys/quota.h and linux/quota.h
4720 AC_CHECK_HEADERS(sys/quota.h)
4722 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4723 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4724 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4725 AC_TRY_COMPILE([
4726 #include "confdefs.h"
4727 #ifdef HAVE_SYS_TYPES_H
4728 #include <sys/types.h>
4729 #endif
4730 #ifdef HAVE_ASM_TYPES_H
4731 #include <asm/types.h>
4732 #endif
4733 #include <sys/quota.h>
4734 ],[int i = Q_XGETQUOTA;],
4735 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4736 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4737         samba_cv_found_xfs_header=yes
4741 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4742 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4743 AC_TRY_COMPILE([
4744 #include "confdefs.h"
4745 #ifdef HAVE_SYS_QUOTA_H
4746 #include <sys/quota.h>
4747 #endif
4749 struct dqblk D;
4750 D.dqb_fsoftlimit = 0;],
4751 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4752 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4753         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4756 ##################
4757 # look for a working quota system
4759 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4760 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4761 AC_TRY_RUN_STRICT([
4762 #define HAVE_QUOTACTL_4A 1
4763 #define AUTOCONF_TEST 1
4764 #include "confdefs.h"
4765 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4766            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4767 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4768     samba_cv_SYSQUOTA_FOUND=yes;
4769     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4770     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4774 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4775 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4776 AC_TRY_RUN_STRICT([
4777 #define HAVE_QUOTACTL_4B 1
4778 #define AUTOCONF_TEST 1
4779 #include "confdefs.h"
4780 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4781            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4782 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4783     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4784     samba_cv_SYSQUOTA_FOUND=yes;
4785     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4786     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4790 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4791 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4792 AC_TRY_RUN_STRICT([
4793 #define HAVE_QUOTACTL_3 1
4794 #define AUTOCONF_TEST 1
4795 #include "confdefs.h"
4796 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4797            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4798 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4799     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4800     samba_cv_SYSQUOTA_FOUND=yes;
4801     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4802     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4806 #################################################
4807 # check for mntent.h and struct mntent
4808 AC_CHECK_HEADERS(mntent.h)
4809 #################################################
4810 # check for setmntent,getmntent,endmntent
4811 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4813 #################################################
4814 # check for devnm.h and struct mntent
4815 AC_CHECK_HEADERS(devnm.h)
4816 #################################################
4817 # check for devnm
4818 AC_CHECK_FUNCS(devnm)
4820 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4821     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4822         # if --with-sys-quotas=yes then build it
4823         # you have can use the get/set quota command smb.conf
4824         # options then
4825         samba_cv_SYSQUOTA_FOUND=auto
4826     fi
4827     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4828         # if --with-sys-quotas=yes then build it
4829         # you have can use the get/set quota command smb.conf
4830         # options then
4831         samba_cv_TRY_SYS_QUOTAS=auto
4832     fi
4835 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4836 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4837 SAVE_CPPFLAGS="$CPPFLAGS"
4838 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4839 AC_TRY_COMPILE([
4840 #include "confdefs.h"
4841 #define NO_PROTO_H 1
4842 #define NO_CONFIG_H 1
4843 #define HAVE_SYS_QUOTAS 1
4844 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4845 #include "${srcdir-.}/lib/sysquotas.c"
4846 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4847 CPPFLAGS="$SAVE_CPPFLAGS"
4849 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4850 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4851     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4852         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4853         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4854         samba_cv_WE_USE_SYS_QUOTAS=yes
4855         AC_MSG_RESULT(yes)
4856     else
4857         AC_MSG_RESULT(no)
4858     fi
4862 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4863 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4864 SAVE_CPPFLAGS="$CPPFLAGS"
4865 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4866 AC_TRY_COMPILE([
4867 #include "confdefs.h"
4868 #define NO_PROTO_H 1
4869 #define NO_CONFIG_H 1
4870 #define HAVE_SYS_QUOTAS 1
4871 #define HAVE_XFS_QUOTAS 1
4872 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4873 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4874 CPPFLAGS="$SAVE_CPPFLAGS"
4876 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4877     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4878         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4879     fi
4883 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4884 SAVE_CPPFLAGS="$CPPFLAGS"
4885 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4886 AC_TRY_COMPILE([
4887 #include "confdefs.h"
4888 #define NO_PROTO_H 1
4889 #define NO_CONFIG_H 1
4890 #include "${srcdir-.}/smbd/quotas.c"
4891 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4892 CPPFLAGS="$SAVE_CPPFLAGS"
4894 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4895 AC_MSG_CHECKING(whether to use the old quota support)
4896     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4897       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4898         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4899         AC_MSG_RESULT(yes)
4900       else
4901         AC_MSG_RESULT(no)
4902       fi
4903     else
4904       AC_MSG_RESULT(no)
4905     fi
4908 ####################
4909 # End of quota check samba_cv_RUN_QUOTA_TESTS
4912 #################################################
4913 # check for experimental utmp accounting
4915 AC_MSG_CHECKING(whether to support utmp accounting)
4916 WITH_UTMP=yes
4917 AC_ARG_WITH(utmp,
4918 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4919 [ case "$withval" in
4920   no)
4921                 WITH_UTMP=no
4922                 ;;
4923   *)
4924                 WITH_UTMP=yes
4925                 ;;
4926   esac ],
4929 # utmp requires utmp.h
4930 # Note similar check earlier, when checking utmp details.
4932 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4933         utmp_no_reason=", no utmp.h on $host_os"
4934         WITH_UTMP=no
4937 # Display test results
4939 if test x"$WITH_UTMP" = x"yes"; then
4940         AC_MSG_RESULT(yes)
4941         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4942 else
4943         AC_MSG_RESULT(no$utmp_no_reason)
4947 #################################################
4948 # these tests are taken from the GNU fileutils package
4949 AC_CHECKING(how to get filesystem space usage)
4950 space=no
4952 # Test for statvfs64.
4953 if test $space = no; then
4954   # SVR4
4955   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4956   [AC_TRY_RUN([
4957 #if defined(HAVE_UNISTD_H)
4958 #include <unistd.h>
4959 #endif
4960 #include <sys/types.h>
4961 #include <sys/statvfs.h>
4962   main ()
4963   {
4964     struct statvfs64 fsd;
4965     exit (statvfs64 (".", &fsd));
4966   }],
4967   fu_cv_sys_stat_statvfs64=yes,
4968   fu_cv_sys_stat_statvfs64=no,
4969   fu_cv_sys_stat_statvfs64=cross)])
4970   if test $fu_cv_sys_stat_statvfs64 = yes; then
4971     space=yes
4972     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4973   fi
4976 # Perform only the link test since it seems there are no variants of the
4977 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4978 # because that got a false positive on SCO OSR5.  Adding the declaration
4979 # of a `struct statvfs' causes this test to fail (as it should) on such
4980 # systems.  That system is reported to work fine with STAT_STATFS4 which
4981 # is what it gets when this test fails.
4982 if test $space = no; then
4983   # SVR4
4984   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4985                  [AC_TRY_LINK([#include <sys/types.h>
4986 #include <sys/statvfs.h>],
4987                               [struct statvfs fsd; statvfs (0, &fsd);],
4988                               fu_cv_sys_stat_statvfs=yes,
4989                               fu_cv_sys_stat_statvfs=no)])
4990   if test $fu_cv_sys_stat_statvfs = yes; then
4991     space=yes
4992     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4993   fi
4996 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4997 # This is not the case on ancient Linux systems.
4999 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5000     AC_TRY_COMPILE([#include <sys/types.h>
5001 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5002         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5003 if test x"$samba_cv_fsid_int" = x"yes"; then
5004     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5007 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5008 # systems use f_bsize.
5009 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5010     AC_TRY_COMPILE([#include <sys/types.h>
5011 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5012         samba_cv_frsize=yes,samba_cv_frsize=no)])
5013 if test x"$samba_cv_frsize" = x"yes"; then
5014     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5017 # Some systems use f_flag in struct statvfs while others use f_flags
5018 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5019     AC_TRY_COMPILE([#include <sys/types.h>
5020 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5021         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5022 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5023     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5026 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5027     AC_TRY_COMPILE([#include <sys/types.h>
5028 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5029         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5030 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5031     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5034 if test $space = no; then
5035   # DEC Alpha running OSF/1
5036   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5037   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5038   [AC_TRY_RUN([
5039 #include <sys/param.h>
5040 #include <sys/types.h>
5041 #include <sys/mount.h>
5042   main ()
5043   {
5044     struct statfs fsd;
5045     fsd.f_fsize = 0;
5046     exit (statfs (".", &fsd, sizeof (struct statfs)));
5047   }],
5048   fu_cv_sys_stat_statfs3_osf1=yes,
5049   fu_cv_sys_stat_statfs3_osf1=no,
5050   fu_cv_sys_stat_statfs3_osf1=no)])
5051   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5052   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5053     space=yes
5054     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5055   fi
5058 if test $space = no; then
5059 # AIX
5060   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5061 member (AIX, 4.3BSD)])
5062   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5063   [AC_TRY_RUN([
5064 #ifdef HAVE_SYS_PARAM_H
5065 #include <sys/param.h>
5066 #endif
5067 #ifdef HAVE_SYS_MOUNT_H
5068 #include <sys/mount.h>
5069 #endif
5070 #ifdef HAVE_SYS_VFS_H
5071 #include <sys/vfs.h>
5072 #endif
5073   main ()
5074   {
5075   struct statfs fsd;
5076   fsd.f_bsize = 0;
5077   exit (statfs (".", &fsd));
5078   }],
5079   fu_cv_sys_stat_statfs2_bsize=yes,
5080   fu_cv_sys_stat_statfs2_bsize=no,
5081   fu_cv_sys_stat_statfs2_bsize=no)])
5082   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5083   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5084     space=yes
5085     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5086   fi
5089 if test $space = no; then
5090 # SVR3
5091   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5092   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5093   [AC_TRY_RUN([#include <sys/types.h>
5094 #include <sys/statfs.h>
5095   main ()
5096   {
5097   struct statfs fsd;
5098   exit (statfs (".", &fsd, sizeof fsd, 0));
5099   }],
5100     fu_cv_sys_stat_statfs4=yes,
5101     fu_cv_sys_stat_statfs4=no,
5102     fu_cv_sys_stat_statfs4=no)])
5103   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5104   if test $fu_cv_sys_stat_statfs4 = yes; then
5105     space=yes
5106     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5107   fi
5110 if test $space = no; then
5111 # 4.4BSD and NetBSD
5112   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5113 member (4.4BSD and NetBSD)])
5114   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5115   [AC_TRY_RUN([#include <sys/types.h>
5116 #ifdef HAVE_SYS_PARAM_H
5117 #include <sys/param.h>
5118 #endif
5119 #ifdef HAVE_SYS_MOUNT_H
5120 #include <sys/mount.h>
5121 #endif
5122   main ()
5123   {
5124   struct statfs fsd;
5125   fsd.f_fsize = 0;
5126   exit (statfs (".", &fsd));
5127   }],
5128   fu_cv_sys_stat_statfs2_fsize=yes,
5129   fu_cv_sys_stat_statfs2_fsize=no,
5130   fu_cv_sys_stat_statfs2_fsize=no)])
5131   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5132   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5133     space=yes
5134         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5135   fi
5138 if test $space = no; then
5139   # Ultrix
5140   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5141   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5142   [AC_TRY_RUN([#include <sys/types.h>
5143 #ifdef HAVE_SYS_PARAM_H
5144 #include <sys/param.h>
5145 #endif
5146 #ifdef HAVE_SYS_MOUNT_H
5147 #include <sys/mount.h>
5148 #endif
5149 #ifdef HAVE_SYS_FS_TYPES_H
5150 #include <sys/fs_types.h>
5151 #endif
5152   main ()
5153   {
5154   struct fs_data fsd;
5155   /* Ultrix's statfs returns 1 for success,
5156      0 for not mounted, -1 for failure.  */
5157   exit (statfs (".", &fsd) != 1);
5158   }],
5159   fu_cv_sys_stat_fs_data=yes,
5160   fu_cv_sys_stat_fs_data=no,
5161   fu_cv_sys_stat_fs_data=no)])
5162   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5163   if test $fu_cv_sys_stat_fs_data = yes; then
5164     space=yes
5165     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5166   fi
5170 # As a gating factor for large file support, in order to
5171 # use <4GB files we must have the following minimal support
5172 # available.
5173 # long long, and a 64 bit off_t or off64_t.
5174 # If we don't have all of these then disable large
5175 # file support.
5177 AC_MSG_CHECKING([if large file support can be enabled])
5178 AC_TRY_COMPILE([
5179 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5180 #include <sys/types.h>
5181 #else
5182 __COMPILE_ERROR_
5183 #endif
5185 [int i],
5186 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5187 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5188         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5190 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5192 #################################################
5193 # check for cluster extensions
5195 CTDB_CFLAGS=""
5196 AC_SUBST(CTDB_CFLAGS)
5197 AC_ARG_WITH(ctdb,
5198 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5199 [ case "$withval" in
5200   yes|no)
5201     AC_MSG_WARN([--with-ctdb called without argument])
5202     ;;
5203   *)
5204     CTDB_CPPFLAGS="-I$withval/include"
5205     ;;
5206   esac])
5208 SAVED_CPPFLAGS="$CPPFLAGS"
5209 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5210 ctdb_broken="missing or broken headers"
5212 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5213 #include "confdefs.h"
5214 #define NO_CONFIG_H
5215 #include "replace.h"
5216 #include "system/wait.h"
5217 #include "system/network.h"
5218 #define private #error __USED_RESERVED_WORD_private__
5219 #include <talloc.h>
5220 #include <tdb.h>
5221 #include <ctdb.h>
5224 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5225 #include "confdefs.h"
5226 #define NO_CONFIG_H
5227 #include "replace.h"
5228 #include "system/wait.h"
5229 #include "system/network.h"
5230 #include <talloc.h>
5231 #include <tdb.h>
5232 #include <ctdb.h>
5233 #include <ctdb_private.h>
5235 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5236         ctdb_broken=no
5237 else
5238         ctdb_broken="ctdb transaction support missing or too old"
5241 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5242 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5243         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5244 ],,[
5245 #include "confdefs.h"
5246 #define NO_CONFIG_H
5247 #include "replace.h"
5248 #include "system/wait.h"
5249 #include "system/network.h"
5250 #include <talloc.h>
5251 #include <tdb.h>
5252 #include <ctdb.h>
5253 #include <ctdb_private.h>
5256 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5257         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5259         ctdb_broken="missing struct ctdb_control_tcp"
5261 #include "confdefs.h"
5262 #define NO_CONFIG_H
5263 #include "replace.h"
5264 #include "system/wait.h"
5265 #include "system/network.h"
5266 #include <talloc.h>
5267 #include <tdb.h>
5268 #include <ctdb.h>
5269 #include <ctdb_private.h>
5272 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5273         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5274 ],,[
5275 #include "confdefs.h"
5276 #define NO_CONFIG_H
5277 #include "replace.h"
5278 #include "system/wait.h"
5279 #include "system/network.h"
5280 #include <talloc.h>
5281 #include <tdb.h>
5282 #include <ctdb.h>
5283 #include <ctdb_private.h>
5285 CPPFLAGS="$SAVED_CPPFLAGS"
5287 AC_MSG_CHECKING(cluster support)
5288 AC_ARG_WITH(cluster-support,
5289 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5291 if test x"$with_cluster_support" = x ; then
5292         with_cluster_support="auto"
5295 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5296         if test "x$with_cluster_support" = "xyes"; then
5297                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5298         fi
5299         with_cluster_support=no
5302 if test x"$ctdb_broken" != x"no"; then
5303         if test "x$with_cluster_support" = "xyes"; then
5304                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5305         fi
5306         with_cluster_support=no
5309 if test "x$with_cluster_support" != "xno"; then
5310     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5311     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5312     AC_MSG_RESULT(yes)
5313 else
5314     AC_MSG_RESULT(no)
5317 #################################################
5318 # check for ACL support
5320 AC_MSG_CHECKING(whether to support ACLs)
5321 AC_ARG_WITH(acl-support,
5322 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5323 [ case "$withval" in
5324         yes|no)
5325                 with_acl_support="$withval"
5326                 ;;
5327   esac ])
5329 if test x"$with_acl_support" = x ; then
5330         with_acl_support="auto"
5333 AC_MSG_RESULT($with_acl_support)
5335 if test x"$with_acl_support" = x"no"; then
5336         AC_MSG_RESULT(Disabling ACL support)
5337         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5338 else
5339         AC_MSG_NOTICE(checking whether ACL support is available:)
5340         case "$host_os" in
5341         *sysv5*)
5342                 AC_MSG_NOTICE(Using UnixWare ACLs)
5343                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5344                 default_static_modules="$default_static_modules vfs_solarisacl"
5345                 ;;
5346         *solaris*)
5347                 AC_MSG_NOTICE(Using solaris ACLs)
5348                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5349                 ACL_LIBS="$ACL_LIBS -lsec"
5350                 default_static_modules="$default_static_modules vfs_solarisacl"
5351                 ;;
5352         *hpux*)
5353                 AC_MSG_NOTICE(Using HPUX ACLs)
5354                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5355                 default_static_modules="$default_static_modules vfs_hpuxacl"
5356                 ;;
5357         *irix*)
5358                 AC_MSG_NOTICE(Using IRIX ACLs)
5359                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5360                 default_static_modules="$default_static_modules vfs_irixacl"
5361                 ;;
5362         *aix*)
5363                 AC_MSG_NOTICE(Using AIX ACLs)
5364                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5365                 default_static_modules="$default_static_modules vfs_aixacl"
5366                 ;;
5367         *osf*)
5368                 AC_MSG_NOTICE(Using Tru64 ACLs)
5369                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5370                 ACL_LIBS="$ACL_LIBS -lpacl"
5371                 default_static_modules="$default_static_modules vfs_tru64acl"
5372                 ;;
5373         *darwin*)
5374                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5375                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5376                 ;;
5377         *)
5378                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5379                 case "$host_os" in
5380                 *linux*)
5381                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5382                         ;;
5383                 esac
5384                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5385                         acl_LIBS=$LIBS
5386                         LIBS="$LIBS $ACL_LIBS"
5387                         AC_TRY_LINK([
5388                                 #include <sys/types.h>
5389                                 #include <sys/acl.h>
5390                         ],[
5391                                 acl_t acl;
5392                                 int entry_id;
5393                                 acl_entry_t *entry_p;
5394                                 return acl_get_entry(acl, entry_id, entry_p);
5395                         ],
5396                         [samba_cv_HAVE_POSIX_ACLS=yes],
5397                         [samba_cv_HAVE_POSIX_ACLS=no])
5398                         LIBS=$acl_LIBS
5399                 ])
5400                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5401                         AC_MSG_NOTICE(Using posix ACLs)
5402                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5403                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5404                                 acl_LIBS=$LIBS
5405                                 LIBS="$LIBS $ACL_LIBS"
5406                                 AC_TRY_LINK([
5407                                         #include <sys/types.h>
5408                                         #include <sys/acl.h>
5409                                 ],[
5410                                         acl_permset_t permset_d;
5411                                         acl_perm_t perm;
5412                                         return acl_get_perm_np(permset_d, perm);
5413                                 ],
5414                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5415                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5416                                 LIBS=$acl_LIBS
5417                         ])
5418                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5419                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5420                         fi
5421                         default_static_modules="$default_static_modules vfs_posixacl"
5422                 else
5423                         AC_MSG_NOTICE(ACL support is not avaliable)
5424                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5425                 fi
5426                 ;;
5427         esac
5428 fi # with_acl_support
5432 #################################################
5433 # check for AIO support
5435 AC_MSG_CHECKING(whether to support asynchronous io)
5436 AC_ARG_WITH(aio-support,
5437 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5438 [ case "$withval" in
5439   yes)
5441         AC_MSG_RESULT(yes)
5442         case "$host_os" in
5443         *)
5444                 AIO_LIBS=$LIBS
5445                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5446                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5447                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5448                 aio_LIBS=$LIBS
5449                 LIBS=$AIO_LIBS
5450                 AC_TRY_LINK([#include <sys/types.h>
5451 #include <aio.h>],
5452 [ struct aiocb a; return aio_read(&a);],
5453 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5454                 LIBS=$aio_LIBS])
5455                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5456                 aio_LIBS=$LIBS
5457                 LIBS=$AIO_LIBS
5458                 AC_TRY_LINK([#include <sys/types.h>
5459 #include <aio.h>],
5460 [ struct aiocb64 a; return aio_read64(&a);],
5461 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5462                 LIBS=$aio_LIBS])
5463                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5464                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5465                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5466                         LIBS=$AIO_LIBS
5467                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5468                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5469                         LIBS=$AIO_LIBS
5470                 fi
5472                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5473                         AC_MSG_CHECKING(for aio_read)
5474                         AC_LINK_IFELSE([#include <aio.h>
5475 int main() { struct aiocb a; return aio_read(&a); }],
5476 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5477 [AC_MSG_RESULT(no)])
5479                         AC_MSG_CHECKING(for aio_write)
5480                         AC_LINK_IFELSE([#include <aio.h>
5481 int main() { struct aiocb a; return aio_write(&a); }],
5482 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5483 [AC_MSG_RESULT(no)])
5485                         AC_MSG_CHECKING(for aio_fsync)
5486                         AC_LINK_IFELSE([#include <aio.h>
5487 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5488 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5489 [AC_MSG_RESULT(no)])
5491                         AC_MSG_CHECKING(for aio_return)
5492                         AC_LINK_IFELSE([#include <aio.h>
5493 int main() { struct aiocb a; return aio_return(&a); }],
5494 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5495 [AC_MSG_RESULT(no)])
5497                         AC_MSG_CHECKING(for aio_error)
5498                         AC_LINK_IFELSE([#include <aio.h>
5499 int main() { struct aiocb a; return aio_error(&a); }],
5500 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5501 [AC_MSG_RESULT(no)])
5503                         AC_MSG_CHECKING(for aio_cancel)
5504                         AC_LINK_IFELSE([#include <aio.h>
5505 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5506 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5507 [AC_MSG_RESULT(no)])
5509                         AC_MSG_CHECKING(for aio_suspend)
5510                         AC_LINK_IFELSE([#include <aio.h>
5511 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5512 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5513 [AC_MSG_RESULT(no)])
5514                 fi
5516                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5517                         AC_MSG_CHECKING(for aio_read64)
5518                         AC_LINK_IFELSE([#include <aio.h>
5519 int main() { struct aiocb a; return aio_read64(&a); }],
5520 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5521 [AC_MSG_RESULT(no)])
5523                         AC_MSG_CHECKING(for aio_write64)
5524                         AC_LINK_IFELSE([#include <aio.h>
5525 int main() { struct aiocb a; return aio_write64(&a); }],
5526 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5527 [AC_MSG_RESULT(no)])
5529                         AC_MSG_CHECKING(for aio_fsync64)
5530                         AC_LINK_IFELSE([#include <aio.h>
5531 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5532 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5533 [AC_MSG_RESULT(no)])
5535                         AC_MSG_CHECKING(for aio_return64)
5536                         AC_LINK_IFELSE([#include <aio.h>
5537 int main() { struct aiocb a; return aio_return64(&a); }],
5538 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5539 [AC_MSG_RESULT(no)])
5541                         AC_MSG_CHECKING(for aio_error64)
5542                         AC_LINK_IFELSE([#include <aio.h>
5543 int main() { struct aiocb a; return aio_error64(&a); }],
5544 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5545 [AC_MSG_RESULT(no)])
5547                         AC_MSG_CHECKING(for aio_cancel64)
5548                         AC_LINK_IFELSE([#include <aio.h>
5549 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5550 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5551 [AC_MSG_RESULT(no)])
5553                         AC_MSG_CHECKING(for aio_suspend64)
5554                         AC_LINK_IFELSE([#include <aio.h>
5555 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5556 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5557 [AC_MSG_RESULT(no)])
5558                 fi
5559             ;;
5560         esac
5561         ;;
5562   *)
5563     AC_MSG_RESULT(no)
5564     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5565     ;;
5566   esac ],
5567   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5568   AC_MSG_RESULT(no)
5571 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5572         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5573                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5574                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5575         fi
5578 #################################################
5579 # check for sendfile support
5581 with_sendfile_support=yes
5582 AC_MSG_CHECKING(whether to check to support sendfile)
5583 AC_ARG_WITH(sendfile-support,
5584 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5585 [ case "$withval" in
5586   yes)
5588         AC_MSG_RESULT(yes);
5590         case "$host_os" in
5591         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5592                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5593                 AC_TRY_LINK([#include <sys/sendfile.h>],
5595 int tofd, fromfd;
5596 off64_t offset;
5597 size_t total;
5598 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5600 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5602                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5603                 AC_TRY_LINK([#include <sys/sendfile.h>],
5605 int tofd, fromfd;
5606 off_t offset;
5607 size_t total;
5608 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5610 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5612 # Try and cope with broken Linux sendfile....
5613                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5614                 AC_TRY_LINK([\
5615 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5616 #undef _FILE_OFFSET_BITS
5617 #endif
5618 #include <sys/sendfile.h>],
5620 int tofd, fromfd;
5621 off_t offset;
5622 size_t total;
5623 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5625 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5627         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5628                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5629                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5630                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5631         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5632                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5633                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5634                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5635         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5636                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5637                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5638         else
5639                 AC_MSG_RESULT(no);
5640         fi
5642         ;;
5643         *freebsd* | *dragonfly* )
5644                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5645                 AC_TRY_LINK([\
5646 #include <sys/types.h>
5647 #include <unistd.h>
5648 #include <sys/socket.h>
5649 #include <sys/uio.h>],
5651         int fromfd, tofd, ret, total=0;
5652         off_t offset, nwritten;
5653         struct sf_hdtr hdr;
5654         struct iovec hdtrl;
5655         hdr.headers = &hdtrl;
5656         hdr.hdr_cnt = 1;
5657         hdr.trailers = NULL;
5658         hdr.trl_cnt = 0;
5659         hdtrl.iov_base = NULL;
5660         hdtrl.iov_len = 0;
5661         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5663 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5665         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5666                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5667                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5668                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5669         else
5670                 AC_MSG_RESULT(no);
5671         fi
5672         ;;
5674         *hpux*)
5675                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5676                 AC_TRY_LINK([\
5677 #include <sys/socket.h>
5678 #include <sys/uio.h>],
5680         int fromfd, tofd;
5681         size_t total=0;
5682         struct iovec hdtrl[2];
5683         ssize_t nwritten;
5684         off64_t offset;
5686         hdtrl[0].iov_base = 0;
5687         hdtrl[0].iov_len = 0;
5689         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5691 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5692         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5693                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5694                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5695                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5696         else
5697                 AC_MSG_RESULT(no);
5698         fi
5700                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5701                 AC_TRY_LINK([\
5702 #include <sys/socket.h>
5703 #include <sys/uio.h>],
5705         int fromfd, tofd;
5706         size_t total=0;
5707         struct iovec hdtrl[2];
5708         ssize_t nwritten;
5709         off_t offset;
5711         hdtrl[0].iov_base = 0;
5712         hdtrl[0].iov_len = 0;
5714         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5716 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5717         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5718                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5719                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5720                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5721         else
5722                 AC_MSG_RESULT(no);
5723         fi
5724         ;;
5726         *solaris*)
5727                 AC_CHECK_LIB(sendfile,sendfilev)
5728                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5729                 AC_TRY_LINK([\
5730 #include <sys/sendfile.h>],
5732         int sfvcnt;
5733         size_t xferred;
5734         struct sendfilevec vec[2];
5735         ssize_t nwritten;
5736         int tofd;
5738         sfvcnt = 2;
5740         vec[0].sfv_fd = SFV_FD_SELF;
5741         vec[0].sfv_flag = 0;
5742         vec[0].sfv_off = 0;
5743         vec[0].sfv_len = 0;
5745         vec[1].sfv_fd = 0;
5746         vec[1].sfv_flag = 0;
5747         vec[1].sfv_off = 0;
5748         vec[1].sfv_len = 0;
5749         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5751 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5753         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5754                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5755                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5756                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5757         else
5758                 AC_MSG_RESULT(no);
5759         fi
5761                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5762                 AC_TRY_LINK([\
5763 #include <sys/sendfile.h>],
5765         int sfvcnt;
5766         size_t xferred;
5767         struct sendfilevec vec[2];
5768         ssize_t nwritten;
5769         int tofd;
5771         sfvcnt = 2;
5773         vec[0].sfv_fd = SFV_FD_SELF;
5774         vec[0].sfv_flag = 0;
5775         vec[0].sfv_off = 0;
5776         vec[0].sfv_len = 0;
5778         vec[1].sfv_fd = 0;
5779         vec[1].sfv_flag = 0;
5780         vec[1].sfv_off = 0;
5781         vec[1].sfv_len = 0;
5782         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5784 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5786         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5787                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5788                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5789                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5790         else
5791                 AC_MSG_RESULT(no);
5792         fi
5793         ;;
5794         *aix*)
5795                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5796                 AC_TRY_LINK([\
5797 #include <sys/socket.h>],
5799         int fromfd, tofd;
5800         size_t total=0;
5801         struct sf_parms hdtrl;
5802         ssize_t nwritten;
5803         off64_t offset;
5805         hdtrl.header_data = 0;
5806         hdtrl.header_length = 0;
5807         hdtrl.file_descriptor = fromfd;
5808         hdtrl.file_offset = 0;
5809         hdtrl.file_bytes = 0;
5810         hdtrl.trailer_data = 0;
5811         hdtrl.trailer_length = 0;
5813         nwritten = send_file(&tofd, &hdtrl, 0);
5815 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5816         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5817                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5818                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5819                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5820         else
5821                 AC_MSG_RESULT(no);
5822         fi
5823         ;;
5824         *)
5825         ;;
5826         esac
5827         ;;
5828   *)
5829     AC_MSG_RESULT(no)
5830     ;;
5831   esac ],
5832   AC_MSG_RESULT(yes)
5835 ############################################
5836 # See if we have the Linux readahead syscall.
5838 AC_CACHE_CHECK([for Linux readahead],
5839                 samba_cv_HAVE_LINUX_READAHEAD,[
5840     AC_TRY_LINK([
5841 #if defined(HAVE_UNISTD_H)
5842 #include <unistd.h>
5843 #endif
5844 #include <fcntl.h>],
5845     [ssize_t err = readahead(0,0,0x80000);],
5846     samba_cv_HAVE_LINUX_READAHEAD=yes,
5847     samba_cv_HAVE_LINUX_READAHEAD=no)])
5849 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5850   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5851              [Whether Linux readahead is available])
5854 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5856 ############################################
5857 # See if we have the posix_fadvise syscall.
5859 AC_CACHE_CHECK([for posix_fadvise],
5860                 samba_cv_HAVE_POSIX_FADVISE,[
5861     AC_TRY_LINK([
5862 #if defined(HAVE_UNISTD_H)
5863 #include <unistd.h>
5864 #endif
5865 #include <fcntl.h>],
5866     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5867     samba_cv_HAVE_POSIX_FADVISE=yes,
5868     samba_cv_HAVE_POSIX_FADVISE=no)])
5870 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5871   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5872              [Whether posix_fadvise is available])
5875 ############################################
5876 # See if we have the Linux splice syscall.
5878 case "$host_os" in
5879 *linux*)
5880 AC_CACHE_CHECK([for Linux splice],
5881                 samba_cv_HAVE_LINUX_SPLICE,[
5882     AC_TRY_LINK([
5883 #if defined(HAVE_UNISTD_H)
5884 #include <unistd.h>
5885 #endif
5886 #include <fcntl.h>],
5887     [long ret = splice(0,0,1,0,400,0);],
5888     samba_cv_HAVE_LINUX_SPLICE=yes,
5889     samba_cv_HAVE_LINUX_SPLICE=no)])
5892 samba_cv_HAVE_LINUX_SPLICE=no
5894 esac
5896 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5897   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5898              [Whether Linux splice is available])
5901 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5903 ############################################
5904 # See if we have the a broken readlink syscall.
5906 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5907 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5908         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5910 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5911         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5914 #################################################
5915 # Check whether winbind is supported on this platform.  If so we need to
5916 # build and install client programs, sbin programs and shared libraries
5918 AC_MSG_CHECKING(whether to build winbind)
5920 # Initially, the value of $host_os decides whether winbind is supported
5922 HAVE_WINBIND=yes
5923 HAVE_WBCLIENT=no
5925 # Define external wbclient library to link against.  This disables winbind.
5926 # We define this here so --with-winbind can override it.
5927 AC_ARG_WITH(wbclient,
5928 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5930   case "$withval" in
5931         no)
5932                 HAVE_WBCLIENT=no
5933                 ;;
5934         yes)
5935                 HAVE_WBCLIENT=yes
5936                 HAVE_WINBIND=no
5937                 ;;
5938         *)
5939                 HAVE_WBCLIENT=yes
5940                 HAVE_WINBIND=no
5941                 WBCLIENT_INCLUDES="-I$withval/include"
5942                 WBCLIENT_LDFLAGS="-L$withval/lib"
5943                 ;;
5944   esac ],
5947 AC_SUBST(WBCLIENT_INCLUDES)
5948 AC_SUBST(WBCLIENT_LDFLAGS)
5949 AC_SUBST(WBCLIENT_LIBS)
5952 # Define the winbind shared library name and any specific linker flags
5953 # it needs to be built with.
5955 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5956 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5957 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5958 NSSSONAMEVERSIONSUFFIX=""
5960 case "$host_os" in
5961         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5962                 NSSSONAMEVERSIONSUFFIX=".2"
5963                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5964                 ;;
5965         *freebsd[[5-9]]*)
5966                 # FreeBSD winbind client is implemented as a wrapper around
5967                 # the Linux version.
5968                 NSSSONAMEVERSIONSUFFIX=".1"
5969                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5970                     ../nsswitch/winbind_nss_linux.o"
5971                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5972                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5973                 ;;
5975         *netbsd*[[3-9]]*)
5976                 # NetBSD winbind client is implemented as a wrapper
5977                 # around the Linux version. It needs getpwent_r() to
5978                 # indicate libc's use of the correct nsdispatch API.
5979                 #
5980                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5981                         WINBIND_NSS_EXTRA_OBJS="\
5982                             ../nsswitch/winbind_nss_netbsd.o \
5983                             ../nsswitch/winbind_nss_linux.o"
5984                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5985                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5986                 else
5987                         HAVE_WINBIND=no
5988                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5989                 fi
5990                 ;;
5991         *irix*)
5992                 # IRIX has differently named shared libraries
5993                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5994                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5995                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5996                 ;;
5997         *solaris*)
5998                 # Solaris winbind client is implemented as a wrapper around
5999                 # the Linux version.
6000                 NSSSONAMEVERSIONSUFFIX=".1"
6001                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6002                     ../nsswitch/winbind_nss_linux.o"
6003                 ;;
6004         *hpux11*)
6005                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6006                 ;;
6007         *aix*)
6008                 # AIX has even differently named shared libraries.  No
6009                 # WINS support has been implemented yet.
6010                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6011                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6012                 WINBIND_NSS="../nsswitch/WINBIND"
6013                 WINBIND_WINS_NSS=""
6014                 ;;
6015         *)
6016                 HAVE_WINBIND=no
6017                 winbind_no_reason=", unsupported on $host_os"
6018                 ;;
6019 esac
6021 # Check the setting of --with-winbind
6023 AC_ARG_WITH(winbind,
6024 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6026   case "$withval" in
6027         yes)
6028                 HAVE_WINBIND=yes
6029                 HAVE_WBCLIENT=no
6030                 ;;
6031         no)
6032                 HAVE_WINBIND=no
6033                 winbind_reason=""
6034                 ;;
6035   esac ],
6038 # We need unix domain sockets for winbind
6040 if test x"$HAVE_WINBIND" = x"yes"; then
6041         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6042                 winbind_no_reason=", no unix domain socket support on $host_os"
6043                 HAVE_WINBIND=no
6044         fi
6047 # Display test results
6049 if test x"$HAVE_WINBIND" = x"no"; then
6050         WINBIND_NSS=""
6051         WINBIND_WINS_NSS=""
6053 if test x"$HAVE_WBCLIENT" = x"yes"; then
6054         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6055                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6056         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6057         AC_MSG_RESULT(yes)
6058         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6059         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6060 else
6061         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6062                 BUILD_LIBWBCLIENT_SHARED=no
6063         else
6064                 BUILD_LIBWBCLIENT_SHARED=yes
6065         fi
6067         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6068         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6069         LIBWBCLIENT_SOVER=0
6070         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6071                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6072                 ## Only worry about libwbclient if we have shared
6073                 # library support
6074                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6075                 LIBWBCLIENT=libwbclient
6076                 INSTALL_LIBWBCLIENT=installlibwbclient
6077                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6078                 LIBWBCLIENT_LIBS="-lwbclient"
6079         else
6080                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6081                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6082         fi
6085 if test x"$HAVE_WINBIND" = x"yes"; then
6086         AC_MSG_RESULT(yes)
6087         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6089         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6090         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6091         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6092                 PAM_MODULES="$PAM_MODULES pam_winbind"
6093                 INSTALL_PAM_MODULES="installpammodules"
6094                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6095         fi
6096 else
6097         AC_MSG_RESULT(no$winbind_no_reason)
6100 AC_SUBST(WINBIND_NSS)
6101 AC_SUBST(WINBIND_WINS_NSS)
6102 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6103 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6104 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6106 AC_SUBST(WINBIND_KRB5_LOCATOR)
6108 # Solaris 10 does have new member in nss_XbyY_key
6109 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6110                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6111                 [#include <nss_dbdefs.h>])
6113 # Solaris has some extra fields in struct passwd that need to be
6114 # initialised otherwise nscd crashes.
6116 AC_CHECK_MEMBER(struct passwd.pw_comment,
6117                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6118                 [#include <pwd.h>])
6120 AC_CHECK_MEMBER(struct passwd.pw_age,
6121                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6122                 [#include <pwd.h>])
6124 # AIX 4.3.x and 5.1 do not have as many members in
6125 # struct secmethod_table as AIX 5.2
6126 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6127        [#include <usersec.h>])
6128 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6129        [#include <usersec.h>])
6131 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6132 AC_TRY_COMPILE([#include <sys/types.h>
6133 #include <sys/socket.h>],
6134 [struct ucred cred;
6135  socklen_t cred_len;
6136  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6138 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6139 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6140     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6144 #################################################
6145 # Check to see if we should use the included popt
6147 AC_ARG_WITH(included-popt,
6148 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6150   case "$withval" in
6151         yes)
6152                 INCLUDED_POPT=yes
6153                 ;;
6154         no)
6155                 INCLUDED_POPT=no
6156                 ;;
6157   esac ],
6159 if test x"$INCLUDED_POPT" != x"yes"; then
6160     AC_CHECK_LIB(popt, poptGetContext,
6161                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6164 AC_MSG_CHECKING(whether to use included popt)
6165 if test x"$INCLUDED_POPT" = x"yes"; then
6166     AC_MSG_RESULT(yes)
6167     BUILD_POPT='$(POPT_OBJ)'
6168     POPTLIBS='$(POPT_OBJ)'
6169     FLAGS1="-I\$(srcdir)/../lib/popt"
6170 else
6171     AC_MSG_RESULT(no)
6172         BUILD_POPT=""
6173     POPTLIBS="-lpopt"
6175 AC_SUBST(BUILD_POPT)
6176 AC_SUBST(POPTLIBS)
6177 AC_SUBST(FLAGS1)
6179 #################################################
6180 # Check if user wants DNS service discovery support
6182 AC_ARG_ENABLE(dnssd,
6183 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6185 AC_SUBST(DNSSD_LIBS)
6186 if test x"$enable_dnssd" = x"yes"; then
6187     have_dnssd_support=yes
6189     AC_CHECK_HEADERS(dns_sd.h)
6190     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6191         have_dnssd_support=no
6192     fi
6194     # On Darwin the DNSSD API is in libc, but on other platforms it's
6195     # probably in -ldns_sd
6196     AC_CHECK_FUNCS(DNSServiceRegister)
6197     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6198     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6199             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6200         have_dnssd_support=no
6201     fi
6203     if test x"$have_dnssd_support" = x"yes"; then
6204         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6205                 [Whether to enable DNS service discovery support])
6206     else
6207         if test x"$enable_dnssd" = x"yes"; then
6208             AC_MSG_ERROR(DNS service discovery support not available)
6209         fi
6210     fi
6214 #################################################
6215 # Check if user wants avahi support
6217 AC_ARG_ENABLE(avahi,
6218 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6220 if test x"$enable_avahi" != x"no"; then
6221     have_avahi_support=yes
6223     AC_CHECK_HEADERS(avahi-common/watch.h)
6224     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6225         have_avahi_support=no
6226     fi
6228     AC_CHECK_HEADERS(avahi-client/client.h)
6229     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6230         have_avahi_support=no
6231     fi
6233     save_LIBS="$LIBS"
6234     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6235     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6236     LIBS="$save_LIBS"
6238     if test x"$have_avahi_client_new" != x"yes" -o \
6239        x"$have_avahi_strerror" != x"yes" ; then
6240         have_avahi_support=no
6241     fi
6243     if test x"$have_avahi_support" = x"yes"; then
6244         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6245         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6246                 [Whether to enable avahi support])
6247         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6248     else
6249         if test x"$enable_avahi" = x"yes"; then
6250             AC_MSG_ERROR(avahi support not available)
6251         fi
6252     fi
6256 #################################################
6257 # Set pthread stuff
6259 PTHREAD_CFLAGS=error
6260 PTHREAD_LDFLAGS=error
6262 # If it's error, then the user didn't 
6263 # define it.
6264 if test "x$PTHREAD_LDFLAGS" = xerror; then
6265   AC_CHECK_LIB(pthread, pthread_attr_init, [
6266              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6267              PTHREAD_LDFLAGS="-lpthread" ])
6270 if test "x$PTHREAD_LDFLAGS" = xerror; then
6271   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6272              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6273              PTHREAD_LDFLAGS="-lpthreads" ])
6276 if test "x$PTHREAD_LDFLAGS" = xerror; then
6277    AC_CHECK_LIB(c_r, pthread_attr_init, [
6278                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6279                 PTHREAD_LDFLAGS="-pthread" ])
6282 if test "x$PTHREAD_LDFLAGS" = xerror; then
6283    AC_CHECK_FUNC(pthread_attr_init, [
6284                  PTHREAD_CFLAGS="-D_REENTRANT"
6285                  PTHREAD_LDFLAGS="-lpthread" ])
6288 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6289 # pthread_attr_init. On pthread_mutex_lock it works there...
6290 if test "x$PTHREAD_LDFLAGS" = xerror; then
6291    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6292                 PTHREAD_CFLAGS="-D_REENTRANT"
6293                 PTHREAD_LDFLAGS="-lpthread" ])
6296 AC_SUBST(PTHREAD_CFLAGS)
6297 AC_SUBST(PTHREAD_LDFLAGS)
6299 samba_cv_HAVE_PTHREAD=no
6300 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6301         samba_cv_HAVE_PTHREAD=yes
6302         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6303         ac_save_CFLAGS=$CFLAGS
6304         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6305         ac_save_LDFLAGS=$LDFLAGS
6306         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6307         AC_CHECK_HEADERS(pthread.h)
6308         CFLAGS=$ac_save_CFLAGS
6309         LDFLAGS=$ac_save_LDFLAGS
6310         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6313 #################################################
6314 # Check if user wants pthreadpool support
6316 AC_ARG_ENABLE(pthreadpool,
6317 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6319 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6320         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6323 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6324     LIBS="$LIBS $PTHREAD_LDFLAGS"
6325     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6326     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6327     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6330 #################################################
6331 # Check to see if we should use the included iniparser
6333 AC_ARG_WITH(included-iniparser,
6334 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6336   case "$withval" in
6337         yes)
6338                 INCLUDED_INIPARSER=yes
6339                 ;;
6340         no)
6341                 INCLUDED_INIPARSER=no
6342                 ;;
6343   esac ],
6345 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6346     AC_CHECK_LIB(iniparser, iniparser_load,
6347                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6350 AC_MSG_CHECKING(whether to use included iniparser)
6351 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6352     AC_MSG_RESULT(yes)
6353     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6354         INIPARSERLIBS=""
6355     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6356 else
6357     AC_MSG_RESULT(no)
6358         BUILD_INIPARSER=""
6359     INIPARSERLIBS="-liniparser"
6361 AC_SUBST(BUILD_INIPARSER)
6362 AC_SUBST(INIPARSERLIBS)
6363 AC_SUBST(FLAGS1)
6367 # Checks for the vfs_fileid module
6368 # Start
6369 AC_CHECK_FUNC(getmntent)
6371 AC_CHECK_HEADERS(sys/statfs.h)
6373 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6374 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6375              AC_TRY_RUN([
6376                 #include <sys/types.h>
6377                 #include <sys/statfs.h>
6378                 int main(void)
6379                 {
6380                         struct statfs fsd;
6381                         fsid_t fsid = fsd.f_fsid;
6382                         return statfs (".", &fsd);
6383                 }],
6384                 vfsfileid_cv_statfs=yes,
6385                 vfsfileid_cv_statfs=no,
6386                 vfsfileid_cv_statfs=cross)
6388 AC_MSG_RESULT($vfsfileid_cv_statfs)
6390 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6391         x"$vfsfileid_cv_statfs" = x"yes"; then
6392         default_shared_modules="$default_shared_modules vfs_fileid"
6394 # End
6395 # Checks for the vfs_fileid module
6398 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6400         eval MODULE_DEFAULT_$i=STATIC
6401 done
6403 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6405         dnl Fall back to static if we cannot build shared libraries
6406         eval MODULE_DEFAULT_$i=STATIC
6408         if test $BLDSHARED = true; then
6409                 eval MODULE_DEFAULT_$i=SHARED
6410         fi
6411 done
6413 dnl Always build these modules static
6414 MODULE_rpc_spoolss=STATIC
6415 MODULE_rpc_srvsvc=STATIC
6416 MODULE_idmap_tdb=STATIC
6417 MODULE_idmap_passdb=STATIC
6418 MODULE_idmap_nss=STATIC
6420 MODULE_nss_info_template=STATIC
6422 AC_ARG_WITH(static-modules,
6423 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6424 [ if test $withval; then
6425         for i in `echo $withval | sed -e 's/,/ /g'`
6426         do
6427                 eval MODULE_$i=STATIC
6428         done
6429 fi ])
6431 AC_ARG_WITH(shared-modules,
6432 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6433 [ if test $withval; then
6434         for i in `echo $withval | sed -e 's/,/ /g'`
6435         do
6436                         eval MODULE_$i=SHARED
6437         done
6438 fi ])
6440 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6441                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6442         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6443         AC_SUBST(SMBD_FAM_LIBS)
6446 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6447                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6448 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6449 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6450 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6451 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6452 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6455 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6456 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6457 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6458 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6459 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6460 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6461 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6462 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6463 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6464 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6465 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6466 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6467 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6468 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6469 SMB_SUBSYSTEM(RPC,smbd/process.o)
6471 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6472 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6473 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6474 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6475 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6476 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6477 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6478 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6479 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6480 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6482 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6483 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6485 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6486 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6487 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6488 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6489 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6491 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6492 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6493 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6494 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6495 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6496 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6497 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6498 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6499 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6500 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6502 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6512 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6513 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6514 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6515 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6516 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6517 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6518 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6519 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6520 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6521 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6522 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6523 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6524 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6525 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6526 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6527 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6528 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6529 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6530 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6531 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6532 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6533 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6534 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6535 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6536 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6537 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6538 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6539 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6540 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6541 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6542 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6543 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6544 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6545 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6546 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6548 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6550 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6551 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6552 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6554 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6555 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6556 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6557 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6559 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6561 #################################################
6562 # do extra things if we are running insure
6564 if test "${ac_cv_prog_CC}" = "insure"; then
6565         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6568 #################################################
6569 # If run from the build farm, enable NASTY hacks
6570 #################################################
6571 AC_MSG_CHECKING(whether to enable build farm hacks)
6572 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6573         AC_MSG_RESULT(yes)
6574         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6575 else
6576         AC_MSG_RESULT(no)
6579 #################################################
6580 # check for bad librt/libpthread interactions
6582 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6583     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6584     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6585     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6587 SMB_IF_RTSIGNAL_BUG(
6588         [
6589             # Have RT_SIGNAL bug, need to check whether the problem will
6590             # affect anything we have configured.
6592             rt_do_error=no
6593             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6594                 if test x"$rt_signal_lease_ok" = x"no" ; then
6595                     rt_do_error=yes
6596                 fi
6597             fi
6599             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6600                 if test x"$rt_signal_notify_ok" = x"no" ; then
6601                     rt_do_error=yes
6602                 fi
6603             fi
6605             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6606                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6607                 if test x"$rt_signal_aio_ok" = x"no" ; then
6608                     rt_do_error=yes
6609                 fi
6610             fi
6612             if test x"$rt_do_error" = x"yes" ; then
6613                 SMB_IS_LIBPTHREAD_LINKED(
6614                     [
6615                         cat<<MSG
6617 *** On this platforms, linking Samba against pthreads causes problems
6618 *** with the oplock and change notification mechanisms. You may be
6619 *** using pthreads as a side-effect of using the --with-aio-support
6620 *** or --with-profiling-data options. Please remove these and try again.
6623                     ],
6624                     [
6625                         cat<<MSG
6627 *** On this platform, the oplock and change notification mechanisms do not
6628 *** appear to work. Please report this problem to samba-technical@samba.org
6629 *** and attach the config.log file from this directory.
6632                     ])
6633                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6634             fi
6635         ],
6636         [
6637             # no RT_SIGNAL bug, we are golden
6638             SMB_IS_LIBPTHREAD_LINKED(
6639                 [
6640                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6641                 ])
6643         ],
6644         [
6645             # cross compiling, I hope you know what you are doing
6646             true
6647         ])
6651 AC_ARG_ENABLE(merged-build, 
6652 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6653 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6655 if test x"$enable_merged_build" = x"yes" -a \
6656         x"$merged_build_possible" = x"no" ; then
6657         AC_MSG_ERROR(Merged build required but not possible)
6660 m4_include(../lib/zlib/zlib.m4)
6662 if test x$enable_merged_build = xauto; then
6663         # Check for python
6664         m4_include(../m4/check_python.m4)
6665         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6667         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6668         AC_MSG_RESULT([$merged_build_possible])
6670         # Enable merged build automatically if possible, when in developer mode
6671         if test "x$developer" = xyes; then
6672                 enable_merged_build=$merged_build_possible
6673         fi
6676 if test x$enable_merged_build = xyes; then
6677         MERGED_BUILD=1
6678         saved_USESHARED="$USESHARED"
6679         USESHARED="false"
6680         smbtorture4_path="bin/smbtorture4"
6681         smbtorture4_option="-t bin/smbtorture4"
6682         AC_SUBST(smbtorture4_path)
6683         AC_SUBST(smbtorture4_option)
6684         USESHARED="$saved_USESHARED"
6685         SMBTORTURE4="bin/smbtorture4"
6686         AC_SUBST(SMBTORTURE4)
6689 AC_SUBST(ZLIB_LIBS)
6690 AC_SUBST(ZLIB_OBJS)
6691 AC_ZLIB([ZLIB_OBJS=""], [
6692         ZLIB_LIBS=""
6693         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6694                      deflate.o trees.o zutil.o inflate.o infback.o \
6695                          inftrees.o inffast.o
6696         do
6697                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6698         done
6699         CFLAGS="-I../lib/zlib $CFLAGS"
6702 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6704 if test "x$enable_dmalloc" = xyes
6705 then
6706         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6707         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6708                   [Define to check invariants around some common functions])
6709         LIBS="$LIBS -ldmalloc"
6712 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6713 LIB_REMOVE_USR_LIB(LDFLAGS)
6714 LIB_REMOVE_USR_LIB(LIBS)
6716 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6717 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6718 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6720 #################################################
6721 # Display summary of libraries detected
6723 AC_MSG_RESULT([Using libraries:])
6724 AC_MSG_RESULT([    LIBS = $LIBS])
6725 if test x"$with_ads_support" != x"no"; then
6726     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6728 if test x"$with_ldap_support" != x"no"; then
6729     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6731 if test x"$with_dnsupdate_support" != x"no"; then
6732     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6734 if test x"$have_dnssd_support" != x"no"; then
6735     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6737 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6739 #################################################
6740 # final configure stuff
6742 AC_MSG_CHECKING([configure summary])
6743 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6744            AC_MSG_RESULT(yes),
6745            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6746            AC_MSG_WARN([cannot run when cross-compiling]))
6748 dnl Merge in developer cflags from now on
6749 AC_SUBST(DEVELOPER_CFLAGS)
6750 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6751     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6754 # Stuff the smbd-only libraries at the end of the smbd link
6755 # path (if we have them).
6756 SMBD_LIBS="$samba_dmapi_libs"
6757 AC_SUBST(SMBD_LIBS)
6759 CFLAGS="${CFLAGS} \$(FLAGS)"
6760 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6762 AC_SUBST(MAKEFILE)
6763 if test x$samba_cv_gnu_make = xyes; then
6764         MAKEFILE=Makefile
6765 else
6766         # When we don't have GNU Make, generate a copy of Makefile.in 
6767         # that doesn't have the "include " statements but just includes 
6768         # the files verbatim.
6769         MAKEFILE=Makefile-noincludes
6770         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6772 AC_OUTPUT($MAKEFILE
6773           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6774           lib/netapi/examples/Makefile
6775           lib/netapi/tests/Makefile
6776           pkgconfig/smbclient.pc
6777           pkgconfig/wbclient.pc
6778           pkgconfig/netapi.pc
6779           pkgconfig/smbsharemodes.pc
6780           ../examples/libsmbclient/Makefile.internal
6781           )
6782 dnl If we had to expand the includes, make tsure the output file is moved back
6783 AC_OUTPUT_COMMANDS([
6784 if test x$MAKEFILE != Makefile; then
6785         mv $MAKEFILE Makefile
6789 #################################################
6790 # Print very concise instructions on building/use
6791 if test "x$enable_dmalloc" = xyes
6792 then
6793         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6794         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])