s3: major overhaul of compiler and linker flags for HP-UX builds
[Samba/ita.git] / source3 / configure.in
blob0de524db175e86fb7e98caab5fbf6a8a3c1133a0
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                                 LDSHFLAGS="-shared"
1581                         else
1582                                 PICFLAG="-KPIC"
1583                                 LDSHFLAGS="-G"
1584                         fi
1585                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1586                                 SONAMEFLAG="-Wl,-soname="
1587                         else
1588                                 SONAMEFLAG="-Wl,-h,"
1589                         fi
1590                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1591                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1592                         ;;
1593                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1594                         BLDSHARED="true"
1595                         LDSHFLAGS="-G"
1596                         SONAMEFLAG="-Wl,-h,"
1597                         PICFLAG="-KPIC"   # Is this correct for SunOS
1598                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1599                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1600                         ;;
1601                 *netbsd* | *freebsd* | *dragonfly* )
1602                         BLDSHARED="true"
1603                         LDSHFLAGS="-shared"
1604                         DYNEXP="-Wl,--export-dynamic"
1605                         SONAMEFLAG="-Wl,-soname,"
1606                         PICFLAG="-fPIC -DPIC"
1607                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1608                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1609                         ;;
1610                 *openbsd*)  BLDSHARED="true"
1611                         LDSHFLAGS="-shared"
1612                         DYNEXP="-Wl,-Bdynamic"
1613                         SONAMEFLAG="-Wl,-soname,"
1614                         PICFLAG="-fPIC"
1615                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1616                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1617                         ;;
1618                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1619                         case "$host_os" in
1620                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1621                         ;;
1622                         esac
1623                         BLDSHARED="true"
1624                         LDSHFLAGS="-set_version sgi1.0 -shared"
1625                         SONAMEFLAG="-soname "
1626                         SHLD="\${LD}"
1627                         if test "${GCC}" = "yes"; then
1628                                 PICFLAG="-fPIC"
1629                         else
1630                                 PICFLAG="-KPIC"
1631                         fi
1632                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1633                         ;;
1634                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1635                         BLDSHARED="true"
1636                         # use expfull to export underscored symbols
1637                         # add rtl to remove /lib/crt0.o warning
1638                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1639                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1640                         PICFLAG="-O2"
1641                         # as AIX code is always position independent...
1642                         # .po will just create compile warnings, use po.o:
1643                         if test "${GCC}" != "yes"; then
1644                                 ## for funky AIX compiler using strncpy()
1645                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1646                         fi
1648                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1649                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1650                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1651                         ;;
1652                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1653                         # ia64: 64bit build using gcc with CFLAGS="-mpl64"
1654                         #       64bit build using HP's cc with CFLAGS="+DD64"
1655                         # hppa: 64bit build unsupported by gcc
1656                         #       64bit build using HP's cc with CFLAGS="+DA2.0w"
1657                         # HP-UX 11.00 ld needs PHSS_33034
1658                         BLDSHARED="true"
1659                         if test "${GCC}" = "yes"; then
1660                                 PICFLAG="-fPIC"
1661                                 LDSHFLAGS="-shared"
1662                         else
1663                                 PICFLAG="+z"
1664                                 LDSHFLAGS="-Wl,-B,symbolic,-b"
1665                                 if test "$host_cpu" != "ia64"; then
1666                                         # "don't store literals in read-only memory" (?):
1667                                         PICFLAG="$PICFLAG +ESnolit"
1668                                 fi
1669                         fi
1670                         if test "$host_cpu" = "ia64"; then
1671                                 SHLIBEXT="so"
1672                                 # TODO: does the linker find the right 32/64 bit version of the libs? :
1673                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32:/usr/local/lib/hpux64:/usr/lib/hpux64"
1674                         else
1675                                 SHLIBEXT="sl"
1676                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1677                         fi
1678                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1679                                 SONAMEFLAG="-Wl,-soname="
1680                         else
1681                                 SONAMEFLAG="-Wl,+h,"
1682                         fi
1683                         # PIE/PIC flags at link time are required on HP-UX because
1684                         # linking requires a temporary source file, which is being
1685                         # compiled with the indicated flags - which need to contain
1686                         # PIC flags when we don't support PIE flags:
1687                         if test "$PIE_LDFLAGS" = "" ; then
1688                                 PIE_LDFLAGS=\${PICFLAG}
1689                         fi
1690                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1691                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1692                         ;;
1693                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1694                         BLDSHARED="true"
1695                         LDSHFLAGS="-shared"
1696                         SONAMEFLAG="-Wl,-soname,"
1697                         PICFLAG="-fPIC"
1698                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1699                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1700                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1701                                 saved_ldflags="$LDFLAGS"
1702                                 AC_MSG_CHECKING([if $flags works])
1703                                 LDFLAGS="$flags $saved_ldflags"
1704                                 AC_TRY_LINK([],[],
1705                                         [AC_MSG_RESULT([yes])
1706                                         LDSHFLAGS_Z_NODEFS=$flags],
1707                                         AC_MSG_RESULT([no]))
1708                                 LDFLAGS="$saved_ldflags"
1709                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1710                         done
1711                         ;;
1712                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1713                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1714                         ;;
1715                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1716                         BLDSHARED="true"
1717                         LDSHFLAGS="-shared"
1718                         SONAMEFLAG="-Wl,-soname,"
1719                         PICFLAG="-KPIC"
1720                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1721                         ;;
1722                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1723                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1724                         ;;
1725                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1726                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1727                         ;;
1728                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1729                         case "$host" in
1730                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1731                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1732                                         fi
1733                                         LDSHFLAGS="-G"
1734                                         DYNEXP="-Bexport"
1735                                 ;;
1736                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1737                         esac
1738                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1739                         ;;
1741                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1742                         if [ test "$GCC" != yes ]; then
1743                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1744                         fi
1745                         LDSHFLAGS="-G"
1746                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1747                         ;;
1748                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1749                         BLDSHARED="false"
1750                         LDSHFLAGS=""
1751                         ;;
1753                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1754                         BLDSHARED="true"
1755                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1756                         CFLAGS="$CFLAGS -fno-common"
1757                         SHLD="\${CC}"
1758                         SHLIBEXT="dylib"
1759                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1760                         SHLIBEXT="dylib"
1761                         # Since gcc doesn't fail on unrecognised options, the
1762                         # PIE test incorrectly succeeds. Darwin gcc does not
1763                         # actually support the PIE stuff.
1764                         PIE_LDFLAGS=
1765                         PIE_CFLAGS=
1766                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1767                         ;;
1769                 *)
1770                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1771                         ;;
1772   esac
1774 if test "$enable_shared" != "yes"; then
1775         BLDSHARED=false
1778 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1779         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1782 if test x"$BLDSHARED" = x"true" ; then
1783         LDFLAGS="$LDFLAGS -L./bin"
1786 AC_MSG_RESULT($BLDSHARED)
1788 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1789         saved_ldflags="$LDFLAGS"
1790         AC_MSG_CHECKING([if $flags works])
1791         LDFLAGS="$flags $saved_ldflags"
1792         AC_TRY_LINK([],[],
1793                 [AC_MSG_RESULT([yes])
1794                 LD_AS_NEEDED_FLAG=$flags
1795                 ld_as_needed_flag_found=yes],
1796                 AC_MSG_RESULT([no]))
1797         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1798         test x"$ld_as_needed_flag_found" = xyes && break
1799 done
1801 # for historical reasons almost all linkers don't complain about unresolved
1802 # symbols in shared libs. Except for the internal samba modules we want to get
1803 # errors when we produce a shared lib with unresolved symbols. On some
1804 # platforms unresolved symbols might be intended, so we might have to add
1805 # platform specific exceptions here.
1807 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1808         saved_ldflags="$LDFLAGS"
1809         AC_MSG_CHECKING([if $flags works])
1810         LDFLAGS="$flags $saved_ldflags"
1811         AC_TRY_LINK([],[],
1812         [AC_MSG_RESULT([yes])
1813         LDSHFLAGS_Z_DEFS=$flags
1814         ldshflags_z_defs_found=yes],
1815         AC_MSG_RESULT([no]))
1816         LDFLAGS=$saved_ldflags
1817         test x"$ldshflags_z_defs_found" = xyes && break
1818 done
1820 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1821 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1822 AC_MSG_CHECKING([LDFLAGS])
1823 AC_MSG_RESULT([$LDFLAGS])
1824 AC_MSG_CHECKING([DYNEXP])
1825 AC_MSG_RESULT([$DYNEXP])
1827 #######################################################
1828 # test whether building a shared library actually works
1829 if test $BLDSHARED = true; then
1831 AC_MSG_CHECKING([SHLD])
1832 AC_MSG_RESULT([$SHLD])
1833 AC_MSG_CHECKING([LDSHFLAGS])
1834 AC_MSG_RESULT([$LDSHFLAGS])
1836 AC_MSG_CHECKING([SHLIBEXT])
1837 AC_MSG_RESULT([$SHLIBEXT])
1838 AC_MSG_CHECKING([SONAMEFLAG])
1839 AC_MSG_RESULT([$SONAMEFLAG])
1841 AC_MSG_CHECKING([PICFLAG])
1842 AC_MSG_RESULT([$PICFLAG])
1844 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1845 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1847 AC_CACHE_CHECK([whether building shared libraries actually works],
1848                [ac_cv_shlib_works],[
1849    # try building a trivial shared library
1850    ac_cv_shlib_works=no
1851    # The $SHLD and $LDSHFLAGS variables may contain references to other
1852    # variables so they need to be eval'ed.
1853    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1854         shlib.o ${srcdir-.}/../tests/shlib.c && \
1855    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1856         shlib.o && ac_cv_shlib_works=yes
1857    rm -f "shlib.$SHLIBEXT" shlib.o
1860 if test $ac_cv_shlib_works = no; then
1861    BLDSHARED=false
1865 if test x"$BLDSHARED" != x"true"; then
1866         LDSHFLAGS="shared-libraries-disabled"
1867         SONAMEFLAG="shared-libraries-disabled"
1868         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1869         SHLD="shared-libraries-disabled"
1870         PICFLAG="${PIE_CFLAGS}"
1871         SHLIBEXT="shared_libraries_disabled"
1872         merged_build_possible=no
1875 AC_MSG_CHECKING([used PICFLAG])
1876 AC_MSG_RESULT([$PICFLAG])
1878 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1880 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1883 ###########################################################
1885 # Configuration of subsystems / libraries
1887 ###########################################################
1889 INSTALLLIBCMD_SH=:
1890 INSTALLLIBCMD_A=:
1891 UNINSTALLLIBCMD_SH=:
1892 UNINSTALLLIBCMD_A=:
1894 if test $BLDSHARED = true; then
1895         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1896         UNINSTALLLIBCMD_SH="rm -f"
1898 if test $enable_static = yes; then
1899         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1900         UNINSTALLLIBCMD_A="rm -f"
1903 #################################################
1904 # --disable-shared-libs
1905 # can be used to disable the internal use of shared libs altogether
1906 # (this only has an effect when building shared libs is enabled)
1908 USESHARED=false
1909 AC_SUBST(USESHARED)
1911 AC_MSG_CHECKING(whether to use shared libraries internally)
1912 AC_ARG_ENABLE([shared-libs],
1913         AS_HELP_STRING([--enable-shared-libs],
1914                 [Use shared libraries internally (default=yes)]),
1915         [enable_shared_libs=$enableval],
1916         [enable_shared_libs=yes])
1918 if test x"$enable_shared_libs" != x"no" ; then
1919         USESHARED=$BLDSHARED
1922 AC_MSG_RESULT([$USESHARED])
1924 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1925         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1928 #################################################
1929 # --with-static-libs=LIBS:
1930 #   link (internal) libs dynamically or statically?
1932 # If a subsystem is built as a library then this controls whether they are
1933 # linked into Samba targets statically or dynamically:
1935 # * If we build the shared library at all, we link dynamically by default.
1937 # * We only link statically if we don't build shared or if the library
1938 #   appears in the --with-static-libs configure option.
1940 # Example:
1941 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1942 #   of linking the dynamic variant with -ltalloc.
1944 # NOTE: This option only affects libraries that we do not only build
1945 # but that samba also links against as libraries (as opposed to linking
1946 # the plain object files. - This has to be configured in Makefile.in.
1947 # So in particular it does not harm to give invalid or unknown names here.
1950 AC_ARG_WITH([static-libs],
1951         [AS_HELP_STRING([--with-static-libs=LIBS],
1952                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1953         [AS_IF([test $withval],
1954                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1955                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1956                         eval LINK_$lib=STATIC
1957                 done], [])],
1958         [])
1961 # WORKAROUND:
1962 #   until we have organized other internal subsystems (as util, registry
1963 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1964 #   dynamically to samba programs.
1966 LINK_LIBNETAPI=STATIC
1968 LINK_LIBSMBCLIENT=STATIC
1971 #  The library versions are hardcoded here
1972 #  and filled into the LIBFOO_SOVER variable.
1974 #  TODO: for talloc and tdb (at least), these should
1975 #  be extracted from their respective source directories
1977 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1978 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1980 if test "x$enable_external_libtalloc" != xno
1981 then
1982         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1983                 [ enable_external_libtalloc=yes ],
1984                 [ if test x$enable_external_libtalloc = xyes; then
1985                         AC_MSG_ERROR([Unable to find libtalloc])
1986                   else
1987                         enable_external_libtalloc=no
1988                   fi
1989                 ])
1992 if test "x$enable_external_libtalloc" = xno
1993 then
1994         m4_include(../lib/talloc/libtalloc.m4)
1995         LINK_LIBTALLOC=STATIC
1996         SMB_LIBRARY(talloc, 2)
1997         LIBTALLOC_OBJ0=""
1998         for obj in ${TALLOC_OBJ}; do
1999                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
2000         done
2001         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
2002         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
2003         AC_SUBST(LIBTALLOC_OBJ0)
2005         TALLOCTORT="bin/talloctort\$(EXEEXT)"
2006         AC_SUBST(TALLOCTORT)
2010 AC_ARG_ENABLE(external_libtdb,
2011         [AS_HELP_STRING([--enable-external-libtdb],
2012                 [Enable external tdb [default=auto]])],
2013                 [ enable_external_libtalloc=$enableval ],
2014                 [ enable_external_libtalloc=auto ])
2016 if test "x$enable_external_libtdb" != xno
2017 then
2018         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.2,
2019                 [ enable_external_libtdb=yes ],
2020                 [
2021                 if test x$enable_external_libtdb = xyes; then
2022                         AC_MSG_ERROR([Unable to find libtdb])
2023                 else
2024                         enable_external_libtdb=no
2025                 fi
2026                 ])
2029 AC_SUBST(LIBTDB_OBJ0)
2030 if test "x$enable_external_libtdb" = xno
2031 then
2032         m4_include(../lib/tdb/libtdb.m4)
2033         LINK_LIBTDB=STATIC
2034         SMB_LIBRARY(tdb, 1)
2035         LIBTDB_OBJ0=""
2036         for obj in ${TDB_OBJ}; do
2037                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2038         done
2039         AC_SUBST(LIBTDB_OBJ0)
2040         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2041         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2043         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2044         AC_SUBST(TDBBACKUP)
2045         TDBDUMP="bin/tdbdump\$(EXEEXT)"
2046         AC_SUBST(TDBDUMP)
2047         TDBTOOL="bin/tdbtool\$(EXEEXT)"
2048         AC_SUBST(TDBTOOL)
2049         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2050         AC_SUBST(TDBTORTURE)
2051         ac_cv_have_tdb_err_nesting=yes
2052 else
2053         AC_TRY_COMPILE([#include "tdb.h"],
2054                        [enum TDB_ERROR err = TDB_ERR_NESTING],
2055                        ac_cv_have_tdb_err_nesting=yes,
2056                        ac_cv_have_tdb_err_nesting=no)
2059 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2060    AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2063 SMB_LIBRARY(netapi, 0)
2064 SMB_LIBRARY(smbclient, 0)
2065 SMB_LIBRARY(smbsharemodes, 0)
2066 SMB_LIBRARY(addns, 0, no, [undefined API])
2070 ################
2072 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2073 AC_TRY_RUN([#include <stdio.h>
2074 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2075 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2076 if test x"$samba_cv_have_longlong" = x"yes"; then
2077     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2078     AC_CHECK_TYPE(intptr_t, unsigned long long)
2079 else
2080     AC_CHECK_TYPE(intptr_t, unsigned long)
2084 # Check if the compiler supports the LL prefix on long long integers.
2085 # AIX needs this.
2087 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2088     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2089         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2090 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2091    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2095 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2096 AC_TRY_RUN([#include <time.h>
2097 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2098 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2099 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2100     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2103 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2104 AC_TRY_RUN([#include <stdio.h>
2105 #include <sys/stat.h>
2106 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2107 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2108 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2109     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2112 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2113 AC_TRY_RUN([
2114 #if defined(HAVE_UNISTD_H)
2115 #include <unistd.h>
2116 #endif
2117 #include <stdio.h>
2118 #include <sys/stat.h>
2119 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2120 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2121 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2122     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2125 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2126 AC_TRY_RUN([
2127 #if defined(HAVE_UNISTD_H)
2128 #include <unistd.h>
2129 #endif
2130 #include <stdio.h>
2131 #include <sys/stat.h>
2132 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2133 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2134 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2135     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2138 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2139 AC_TRY_RUN([
2140 #if defined(HAVE_UNISTD_H)
2141 #include <unistd.h>
2142 #endif
2143 #include <stdio.h>
2144 #include <sys/stat.h>
2145 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2146 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2147 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2148     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2151 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2152 AC_TRY_RUN([
2153 #if defined(HAVE_UNISTD_H)
2154 #include <unistd.h>
2155 #endif
2156 #include <stdio.h>
2157 #include <sys/stat.h>
2158 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2159 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2160 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2161     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2164 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2165 AC_TRY_RUN([
2166 #if defined(HAVE_UNISTD_H)
2167 #include <unistd.h>
2168 #endif
2169 #include <stdio.h>
2170 #include <sys/stat.h>
2171 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2172 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2173 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2174     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2177 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2178 AC_TRY_COMPILE([
2179 #if defined(HAVE_UNISTD_H)
2180 #include <unistd.h>
2181 #endif
2182 #include <sys/types.h>
2183 #include <dirent.h>],
2184 [DIR64 de;],
2185 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2186 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2187     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2190 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2191 AC_TRY_COMPILE([
2192 #if defined(HAVE_UNISTD_H)
2193 #include <unistd.h>
2194 #endif
2195 #include <sys/types.h>
2196 #include <dirent.h>],
2197 [struct dirent64 de;],
2198 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2199 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2200     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2203 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2204 AC_TRY_RUN([
2205 #if defined(HAVE_UNISTD_H)
2206 #include <unistd.h>
2207 #endif
2208 #include <sys/types.h>
2209 main() { dev_t dev; int i = major(dev); return 0; }],
2210 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2211 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2212     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2215 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2216 AC_TRY_RUN([
2217 #if defined(HAVE_UNISTD_H)
2218 #include <unistd.h>
2219 #endif
2220 #include <sys/types.h>
2221 main() { dev_t dev; int i = minor(dev); return 0; }],
2222 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2223 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2224     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2227 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2228 AC_TRY_RUN([
2229 #if defined(HAVE_UNISTD_H)
2230 #include <unistd.h>
2231 #endif
2232 #include <sys/types.h>
2233 main() { dev_t dev = makedev(1,2); return 0; }],
2234 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2235 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2236     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2239 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2240 AC_TRY_RUN([#include <stdio.h>
2241 main() { char c; c=250; exit((c > 0)?0:1); }],
2242 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2243 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2244     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2247 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2248 AC_TRY_COMPILE([#include <sys/types.h>
2249 #include <dirent.h>
2250 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2251 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2252 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2253     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2256 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2257 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2258 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2259 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2260     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2264 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2266     # On some systems (eg. Linux) librt can pull in libpthread. We
2267     # don't want this to happen because libpthreads changes signal delivery
2268     # semantics in ways we are not prepared for. This breaks Linux oplocks
2269     # which rely on signals.
2271     AC_LIBTESTFUNC(rt, clock_gettime,
2272             [
2273                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2274                                 [Whether clock_gettime is available])
2275                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2276                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2277                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2278                         ])
2282 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2283 AC_TRY_RUN([#include <sys/types.h>
2284 #include <dirent.h>
2285 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2286 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2287 di->d_name[0] == 0) exit(0); exit(1);} ],
2288 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2289 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2290     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2293 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2294 AC_TRY_COMPILE([#include <sys/types.h>
2295 #include <utime.h>],
2296 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2297 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2298 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2299     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2302 ##############
2303 # Check utmp details, but only if our OS offers utmp.h
2304 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2305 dnl  utmp and utmpx come in many flavours
2306 dnl  We need to check for many of them
2307 dnl  But we don't need to do each and every one, because our code uses
2308 dnl  mostly just the utmp (not utmpx) fields.
2310 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2312 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2313 AC_TRY_COMPILE([#include <sys/types.h>
2314 #include <utmp.h>],
2315 [struct utmp ut;  ut.ut_name[0] = 'a';],
2316 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2317 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2318     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2321 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2322 AC_TRY_COMPILE([#include <sys/types.h>
2323 #include <utmp.h>],
2324 [struct utmp ut;  ut.ut_user[0] = 'a';],
2325 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2326 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2327     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2330 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2331 AC_TRY_COMPILE([#include <sys/types.h>
2332 #include <utmp.h>],
2333 [struct utmp ut;  ut.ut_id[0] = 'a';],
2334 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2335 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2336     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2339 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2340 AC_TRY_COMPILE([#include <sys/types.h>
2341 #include <utmp.h>],
2342 [struct utmp ut;  ut.ut_host[0] = 'a';],
2343 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2344 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2345     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2348 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2349 AC_TRY_COMPILE([#include <sys/types.h>
2350 #include <utmp.h>],
2351 [struct utmp ut;  time_t t; ut.ut_time = t;],
2352 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2353 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2354     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2357 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2358 AC_TRY_COMPILE([#include <sys/types.h>
2359 #include <utmp.h>],
2360 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2361 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2362 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2363     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2366 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2367 AC_TRY_COMPILE([#include <sys/types.h>
2368 #include <utmp.h>],
2369 [struct utmp ut;  ut.ut_type = 0;],
2370 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2371 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2372     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2375 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2376 AC_TRY_COMPILE([#include <sys/types.h>
2377 #include <utmp.h>],
2378 [struct utmp ut;  ut.ut_pid = 0;],
2379 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2380 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2381     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2384 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2385 AC_TRY_COMPILE([#include <sys/types.h>
2386 #include <utmp.h>],
2387 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2388 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2389 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2390     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2393 dnl Look for the IPv6 varient by preference. Many systems have both.
2394 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2395 AC_TRY_COMPILE([#include <sys/types.h>
2396 #include <utmp.h>],
2397 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2398 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2399 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2400     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2403 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2404 AC_TRY_COMPILE([#include <sys/types.h>
2405 #include <utmp.h>],
2406 [struct utmp ut;  ut.ut_addr = 0;],
2407 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2408 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2409     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2412 if test x$ac_cv_func_pututline = xyes ; then
2413   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2414   AC_TRY_COMPILE([#include <sys/types.h>
2415 #include <utmp.h>],
2416   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2417   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2418   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2419       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2420   fi
2423 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2424 AC_TRY_COMPILE([#include <sys/types.h>
2425 #include <utmpx.h>],
2426 [struct utmpx ux;  ux.ut_syslen = 0;],
2427 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2428 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2429     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2433 # end utmp details
2436 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2437 AC_ARG_WITH(libiconv,
2438 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2440   if test "$withval" = "no" ; then
2441     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2442   else
2443      if test "$withval" != "yes" ; then
2444         ICONV_PATH_SPEC=yes
2445         ICONV_LOOK_DIRS="$withval"
2446      fi
2447   fi
2450 for i in $ICONV_LOOK_DIRS ; do
2452     save_LIBS="$LIBS"
2453     save_LDFLAGS="$LDFLAGS"
2454     save_CPPFLAGS="$CPPFLAGS"
2456     iconv_current_LIBS=""
2457     iconv_current_LDFLAGS=""
2458     iconv_current_CPPFLAGS=""
2460     ICONV_FOUND="no"
2461     unset libext
2463     #  This is here to handle -withval stuff for --with-libiconv
2464     #  Perhaps we should always add a -L
2465     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2467     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2468     # installation paths. This gets a little tricky since we might have iconv
2469     # in both libiconv and in libc. In this case the jm_ICONV test will always
2470     # succeed when the header is found. To counter this, make sure the
2471     # library directory is there and check the ABI directory first (which
2472     # should be harmless on other systems, but causes tons of linker warnings on
2473     # 64bit Ubuntu systems).
2474     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2475     # installed, I've decided to fix the linker warnings.
2476     # -- Kai
2477     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2478     for l in "lib" "lib32" "lib/hpux32"; do
2479         if test -d "$i/$l" ; then
2480                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2481                 LIBS=
2482                 export LDFLAGS LIBS CPPFLAGS
2483                 # Try to find iconv(3)
2484                 jm_ICONV($i/$l)
2485                 if test x"$ICONV_FOUND" = "xyes" ; then
2486                     libext="$l"
2487                     break
2488                 fi
2489         fi
2490     done
2492     if test x"$ICONV_FOUND" = "xyes" ; then
2493         iconv_current_LDFLAGS="-L$i/$libext"
2494         iconv_current_CPPFLAGS="-I$i/include"
2496         if test x"$jm_cv_lib_iconv" != x; then
2497             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2498         else
2499             # We found iconv in libc.
2500             iconv_current_LIBS=""
2501         fi
2503     fi
2505     if test x"$ICONV_FOUND" = "xyes" ; then
2507         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2508         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2509         LIBS="$save_LIBS $iconv_current_LIBS"
2510         export LDFLAGS LIBS CPPFLAGS
2512         default_dos_charset=no
2513         default_display_charset=no
2514         default_unix_charset=no
2516         # check for default dos charset name
2517         for j in CP850 IBM850 ; do
2518             rjs_CHARSET($j)
2519             default_dos_charset="$ICONV_CHARSET"
2520             if test x"$default_dos_charset" = x"$j"; then
2521                 break
2522             fi
2523         done
2525         # check for default display charset name
2526         for j in ASCII 646 ; do
2527             rjs_CHARSET($j)
2528             default_display_charset="$ICONV_CHARSET"
2529             if test x"$default_display_charset" = x"$j"; then
2530                 break
2531             fi
2532         done
2534         # check for default unix charset name
2535         for j in UTF-8 UTF8 ; do
2536             rjs_CHARSET($j)
2537             default_unix_charset="$ICONV_CHARSET"
2538             if test x"$default_unix_charset" = x"$j"; then
2539                 break
2540             fi
2541         done
2543         if test "$default_dos_charset" != "no" -a \
2544                 "$default_dos_charset" != "cross" -a \
2545                 "$default_display_charset" != "no" -a \
2546                 "$default_display_charset" != "cross" -a \
2547                 "$default_unix_charset" != "no" -a \
2548                 "$default_unix_charset" != "cross"
2549         then
2550                 samba_cv_HAVE_NATIVE_ICONV=yes
2551         else
2552             if test "$default_dos_charset" = "cross" -o \
2553                      "$default_display_charset" = "cross" -o \
2554                      "$default_unix_charset" = "cross"
2555             then
2556                     samba_cv_HAVE_NATIVE_ICONV=cross
2557             else
2558                     samba_cv_HAVE_NATIVE_ICONV=no
2559             fi
2560         fi
2562         # At this point, we have a libiconv candidate. We know that
2563         # we have the right headers and libraries, but we don't know
2564         # whether it does the conversions we want. We can't test this
2565         # because we are cross-compiling. This is not necessarily a big
2566         # deal, since we can't guarantee that the results we get now will
2567         # match the results we get at runtime anyway.
2568         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2569             default_dos_charset="CP850"
2570             default_display_charset="ASCII"
2571             default_unix_charset="UTF-8"
2572             samba_cv_HAVE_NATIVE_ICONV=yes
2573             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2574             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2575         fi
2577         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2579             CPPFLAGS=$save_CPPFLAGS
2580             LDFLAGS=$save_LDFLAGS
2581             LIBS=$save_LIBS
2583             if test x"$iconv_current_LIBS" != x; then
2584                 LIBS="$LIBS $iconv_current_LIBS"
2585             fi
2587             # Add the flags we need to CPPFLAGS and LDFLAGS
2588             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2589             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2591             # Turn the #defines into string literals
2592             default_dos_charset="\"$default_dos_charset\""
2593             default_display_charset="\"$default_display_charset\""
2594             default_unix_charset="\"$default_unix_charset\""
2596             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2597             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2598             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2599             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2601            break
2602         fi
2604     # We didn't find a working iconv, so keep going
2605     fi
2607     #  We only need to clean these up here for the next pass through the loop
2608     CPPFLAGS=$save_CPPFLAGS
2609     LDFLAGS=$save_LDFLAGS
2610     LIBS=$save_LIBS
2611     export LDFLAGS LIBS CPPFLAGS
2612 done
2613 unset libext
2616 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2617     AC_MSG_WARN([Sufficient support for iconv function was not found.
2618     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2619    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2620    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2621    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2625 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2626 AC_TRY_RUN([
2627 #include <sys/types.h>
2628 #include <fcntl.h>
2629 #ifndef F_GETLEASE
2630 #define F_GETLEASE      1025
2631 #endif
2632 main() {
2633        int fd = open("/dev/null", O_RDONLY);
2634        return fcntl(fd, F_GETLEASE, 0) == -1;
2637 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2638 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2639     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2642 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2643 AC_TRY_RUN([
2644 #include <sys/types.h>
2645 #include <fcntl.h>
2646 #include <signal.h>
2647 #ifndef F_NOTIFY
2648 #define F_NOTIFY 1026
2649 #endif
2650 main() {
2651         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2654 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2655 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2656     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2659 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2660 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2661 AC_CHECK_FUNCS(inotify_init)
2662 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2664 samba_cv_HAVE_INOTIFY=yes,
2665 samba_cv_HAVE_INOTIFY=no,
2666 samba_cv_HAVE_INOTIFY=cross)
2668 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2669     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2672 #################################################
2673 # Check if FAM notifications are available. For FAM info, see
2674 #       http://oss.sgi.com/projects/fam/
2675 #       http://savannah.nongnu.org/projects/fam/
2676 AC_ARG_ENABLE(fam,
2677 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2679 if test x$enable_fam != xno; then
2680     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2681     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2682         # On IRIX, libfam requires libC, but other FAM implementations
2683         # might not need it.
2684         AC_CHECK_LIB(fam, FAMOpen2,
2685             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2686             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2687             [samba_cv_HAVE_LIBFAM=no])
2689         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2690             samba_fam_xtra=-lC
2691             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2692                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2693                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2694                 [samba_cv_HAVE_LIBFAM=no])
2695             unset samba_fam_xtra
2696         fi
2697     fi
2698     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2699         default_shared_modules="$default_shared_modules vfs_notify_fam"
2700         AC_TRY_COMPILE([#include <fam.h>],
2701                     [enum FAMCodes code = FAMChanged;],
2702                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2703                         [Whether fam.h contains a typedef for enum FAMCodes]),
2704                     [])
2705     fi
2707     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2708         AC_CHECK_LIB(fam, FAMNoExists,
2709             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2710     fi
2712     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2713         AC_MSG_ERROR(FAM support requested but FAM library not available )
2714     fi
2717 AC_SUBST(SMB_FAM_LIBS)
2719 #################################################
2720 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2723 with_dmapi_support=auto
2724 AC_MSG_CHECKING(whether to use DMAPI support)
2725 AC_ARG_WITH(dmapi,
2726 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2727 [ case "$withval" in
2728   yes|no)
2729     with_dmapi_support=$withval
2730     ;;
2731   esac ]
2733 AC_MSG_RESULT([$with_dmapi_support])
2735 if test x"$with_dmapi_support" != xno ; then
2736         SMB_CHECK_DMAPI([], [
2737                 AC_MSG_NOTICE(DMAPI support not present)
2738                 if test x"$with_dmapi_support" = xyes ; then
2739                         AC_MSG_ERROR(no DMAPI support found but requested!)
2740                 fi
2741                 ]
2742         )
2745 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2746 # Theoretically it should work with AIX JFS2 too but this needs testing
2747 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2748     default_shared_modules="$default_shared_modules vfs_tsmsm"
2751 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2752 AC_TRY_RUN([
2753 #include <sys/types.h>
2754 #include <fcntl.h>
2755 #include <signal.h>
2756 #include <sys/file.h>
2757 #ifndef LOCK_MAND
2758 #define LOCK_MAND       32
2759 #define LOCK_READ       64
2760 #endif
2761 main() {
2762         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2765 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2766 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2767     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2771 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2772 AC_TRY_COMPILE([#include <sys/types.h>
2773 #include <fcntl.h>],
2774 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2775 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2776 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2777     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2780 #################################################
2781 # Check for POSIX capability support
2783 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2784     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2785     [], [])
2787 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2789     ac_save_LIBS=$LIBS
2790     AC_LIBTESTFUNC(cap, cap_get_proc)
2792     AC_CACHE_CHECK([for POSIX capabilities],
2793             samba_cv_HAVE_POSIX_CAPABILITIES,
2794             [
2795                 AC_TRY_RUN([
2796 #include <sys/types.h>
2797 #include <sys/capability.h>
2798 main() {
2799  cap_t cap;
2800  cap_value_t vals[1];
2801  if (!(cap = cap_get_proc()))
2802    exit(1);
2803  vals[0] = CAP_CHOWN;
2804  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2805  cap_set_proc(cap);
2806  exit(0);
2808                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2809                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2810                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2811             ])
2813 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2814     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2815             [Whether POSIX capabilities are available])
2816 else
2817     LIBS=$ac_save_LIBS
2823 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2824 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2827 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2828 AC_TRY_COMPILE([#include <sys/types.h>
2829 #if defined(HAVE_RPC_RPC_H)
2830 #include <rpc/rpc.h>
2831 #endif],
2832 [int16 testvar;],
2833 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2834 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2835     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2838 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2839 AC_TRY_COMPILE([#include <sys/types.h>
2840 #if defined(HAVE_RPC_RPC_H)
2841 #include <rpc/rpc.h>
2842 #endif],
2843 [uint16 testvar;],
2844 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2845 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2846     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2849 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2850 AC_TRY_COMPILE([#include <sys/types.h>
2851 #if defined(HAVE_RPC_RPC_H)
2852 #include <rpc/rpc.h>
2853 #endif],
2854 [int32 testvar;],
2855 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2856 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2857     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2860 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2861 AC_TRY_COMPILE([#include <sys/types.h>
2862 #if defined(HAVE_RPC_RPC_H)
2863 #include <rpc/rpc.h>
2864 #endif],
2865 [uint32 testvar;],
2866 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2867 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2868     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2872 dnl Some systems (SCO) have a problem including
2873 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2874 dnl as a #define in <prot.h> and as part of an enum
2875 dnl in <rpc/rpc.h>.
2878 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2879 AC_TRY_COMPILE([#include <sys/types.h>
2880 #ifdef HAVE_SYS_SECURITY_H
2881 #include <sys/security.h>
2882 #include <prot.h>
2883 #endif  /* HAVE_SYS_SECURITY_H */
2884 #if defined(HAVE_RPC_RPC_H)
2885 #include <rpc/rpc.h>
2886 #endif],
2887 [int testvar;],
2888 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2889 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2890     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2893 AC_MSG_CHECKING([for test routines])
2894 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2895            AC_MSG_RESULT(yes),
2896            AC_MSG_ERROR([cant find test code. Aborting config]),
2897            AC_MSG_WARN([cannot run when cross-compiling]))
2899 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2900 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2901            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2902 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2903     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2906 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2907 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2908            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2909 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2910     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2913 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2914 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2915 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2916 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2917 AC_CHECK_FUNCS(getpagesize)
2919 ################################################
2920 # look for a method of setting the effective uid
2921 seteuid=no;
2923 if test $seteuid = no; then
2924 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2925 AC_TRY_RUN([
2926 #define AUTOCONF_TEST 1
2927 #define USE_SETREUID 1
2928 #include "confdefs.h"
2929 #include "${srcdir-.}/lib/util_sec.c"],
2930            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2931 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2932     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2936 # we check for setresuid second as it conflicts with AIO on Linux. 
2937 # see http://samba.org/~tridge/junkcode/aio_uid.c
2938 if test $seteuid = no; then
2939 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2940 AC_TRY_RUN([
2941 #define AUTOCONF_TEST 1
2942 #define USE_SETRESUID 1
2943 #include "confdefs.h"
2944 #include "${srcdir-.}/lib/util_sec.c"],
2945            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2946 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2947     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2951 if test $seteuid = no; then
2952 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2953 AC_TRY_RUN([
2954 #define AUTOCONF_TEST 1
2955 #define USE_SETEUID 1
2956 #include "confdefs.h"
2957 #include "${srcdir-.}/lib/util_sec.c"],
2958            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2959 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2960     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2964 if test $seteuid = no; then
2965 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2966 AC_TRY_RUN([
2967 #define AUTOCONF_TEST 1
2968 #define USE_SETUIDX 1
2969 #include "confdefs.h"
2970 #include "${srcdir-.}/lib/util_sec.c"],
2971            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2972 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2973     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2977 AC_CACHE_CHECK([for the Darwin initgroups system call],
2978         samba_cv_DARWIN_INITGROUPS,
2979         AC_TRY_LINK([
2980 #include <sys/syscall.h>
2981 #include <unistd.h>
2982         ],
2983         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2984         samba_cv_DARWIN_INITGROUPS=yes,
2985         samba_cv_DARWIN_INITGROUPS=no)
2988 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2989     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2990         [Whether to use the Darwin-specific initgroups system call])
2993 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2994 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2995            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2996 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2997     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3000 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3001 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
3002            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3003 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3004     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3006 else
3009 dnl Don't check for 64 bit fcntl locking if we know that the
3010 dnl glibc2.1 broken check has succeeded.
3013   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3014   AC_TRY_RUN([
3015 #if defined(HAVE_UNISTD_H)
3016 #include <unistd.h>
3017 #endif
3018 #include <stdio.h>
3019 #include <stdlib.h>
3021 #ifdef HAVE_FCNTL_H
3022 #include <fcntl.h>
3023 #endif
3025 #ifdef HAVE_SYS_FCNTL_H
3026 #include <sys/fcntl.h>
3027 #endif
3028 main() { struct flock64 fl64;
3029 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3030 exit(0);
3031 #else
3032 exit(1);
3033 #endif
3035        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3037   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3038       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3039   fi
3042 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3043 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3044 AC_TRY_COMPILE([
3045   #define _XOPEN_SOURCE 600
3046   #include <stdlib.h>
3047   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3048     probably broken posix_fallocate
3049   #endif
3050 ], [
3051 ], 
3052 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3053 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3054         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3058 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3059 AC_TRY_COMPILE([#include <sys/types.h>
3060 #include <sys/stat.h>
3061 #include <unistd.h>],
3062 [struct stat st;  st.st_blocks = 0;],
3063 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3064 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3065     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3068 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3070 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3071 AC_TRY_COMPILE([#include <sys/types.h>
3072 #include <sys/stat.h>
3073 #include <unistd.h>],
3074 [struct stat st;  st.st_blksize = 0;],
3075 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3076 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3077     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3080 AC_CACHE_CHECK([for st_flags in struct stat],
3081         samba_cv_HAVE_STAT_ST_FLAGS,
3082         [
3083             AC_TRY_COMPILE([#include <sys/types.h>
3084 #include <sys/stat.h>
3085 #include <unistd.h>],
3086             [struct stat st;  st.st_flags = 0;],
3087             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3088             samba_cv_HAVE_STAT_ST_FLAGS=no,
3089             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3090         ])
3092 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3093     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3094                 [Whether the stat struct has a st_flags member])
3097 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3098 AC_TRY_COMPILE([
3099 #include <sys/types.h>
3100 #include <sys/acl.h>
3101 #if defined(HAVE_RPCSVC_NIS_H)
3102 #include <rpcsvc/nis.h>
3103 #endif],
3104 [int i;],
3105 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3106 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3107         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3110 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3111 AC_TRY_RUN([
3112 #include <stdio.h>
3113 #include <limits.h>
3114 #include <signal.h>
3116 void exit_on_core(int ignored) {
3117         exit(1);
3120 main() {
3121         char *newpath;
3122         signal(SIGSEGV, exit_on_core);
3123         newpath = realpath("/tmp", NULL);
3124         exit((newpath != NULL) ? 0 : 1);
3127 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3128 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3129     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3132 #################################################
3133 # check for AFS clear-text auth support
3134 samba_cv_WITH_AFS=no
3135 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3136 AC_ARG_WITH(afs,
3137 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3138 [ case "$withval" in
3139   yes|auto)
3140     AC_MSG_RESULT($withval)
3141     samba_cv_WITH_AFS=$withval
3142     ;;
3143   *)
3144     AC_MSG_RESULT(no)
3145     ;;
3146   esac ],
3147   AC_MSG_RESULT(no)
3150 ####################################################
3151 # check for Linux-specific AFS fake-kaserver support
3152 samba_cv_WITH_FAKE_KASERVER=no
3153 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3154 AC_ARG_WITH(fake-kaserver,
3155 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3156 [ case "$withval" in
3157   yes|auto)
3158     AC_MSG_RESULT($withval)
3159     samba_cv_WITH_FAKE_KASERVER=$withval
3160     ;;
3161   *)
3162     AC_MSG_RESULT(no)
3163     ;;
3164   esac ],
3165   AC_MSG_RESULT(no)
3168 #################################################
3169 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3170 if test x"$samba_cv_WITH_AFS" != x"no" ||
3171    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3173     # see if this box has the OpenSSL DES libraries
3174     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3176     # see if this box has the afs-headers in /usr/include/afs
3177     AC_MSG_CHECKING(for /usr/include/afs)
3178     if test -d /usr/include/afs; then
3179           AC_MSG_RESULT(yes)
3180     else
3181       AC_MSG_RESULT(no)
3182     fi
3184     # check for afs.h
3185     have_afs_headers=no
3186     AC_CHECK_HEADERS(afs.h afs/afs.h)
3187     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3188         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3189            test x"$samba_cv_WITH_AFS" = x"auto"; then
3190                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3191         else
3192                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3193         fi
3194     else
3195         have_afs_headers=yes
3196     fi
3199 FAKE_KASERVER_OBJ=""
3200 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3201     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3202     FAKE_KASERVER_OBJ="utils/net_afs.o"
3204 AC_SUBST(FAKE_KASERVER_OBJ)
3206 #################################################
3207 # check whether to compile AFS/NT ACL mapping module
3208 samba_cv_WITH_VFS_AFSACL=no
3209 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3210 AC_ARG_WITH(vfs-afsacl,
3211 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3212 [ case "$withval" in
3213   yes|auto)
3214     AC_MSG_RESULT($withval)
3215     samba_cv_WITH_VFS_AFSACL=yes
3216     ;;
3217   *)
3218     AC_MSG_RESULT(no)
3219     ;;
3220   esac ],
3221   AC_MSG_RESULT(no)
3224 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3225    default_shared_modules="$default_shared_modules vfs_afsacl"
3227         
3228 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3229     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3232 #################################################
3233 # check for the DFS clear-text auth system
3234 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3235 AC_ARG_WITH(dfs,
3236 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3237 [ case "$withval" in
3238   yes)
3239     AC_MSG_RESULT(yes)
3240     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3241     ;;
3242   *)
3243     AC_MSG_RESULT(no)
3244     ;;
3245   esac ],
3246   AC_MSG_RESULT(no)
3249 ########################################################
3250 # Compile with LDAP support?
3252 with_ldap_support=auto
3253 AC_MSG_CHECKING([for LDAP support])
3255 AC_ARG_WITH(ldap,
3256 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3257 [ case "$withval" in
3258     yes|no)
3259         with_ldap_support=$withval
3260         ;;
3261   esac ])
3263 AC_MSG_RESULT($with_ldap_support)
3265 SMBLDAP=""
3266 AC_SUBST(SMBLDAP)
3267 SMBLDAPUTIL=""
3268 AC_SUBST(SMBLDAPUTIL)
3270 if test x"$with_ldap_support" != x"no"; then
3272   ##################################################################
3273   # first test for ldap.h and lber.h
3274   # (ldap.h is required for this test)
3275   AC_CHECK_HEADERS(ldap.h lber.h)
3277   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3278         if test x"$with_ldap_support" = x"yes"; then
3279          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3280         else
3281          AC_MSG_WARN(ldap.h is needed for LDAP support)
3282         fi
3283         
3284         with_ldap_support=no
3285   fi
3287   ##################################################################
3288   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3289   # unsigned int in include/includes.h
3290   case $host_os in
3291         *hpux*)
3292          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3293          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3294         with_ldap_support=yes
3295         ;;
3296         *)
3297         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3298         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3299                 if test x"$with_ldap_support" = x"yes"; then
3300                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3301                 else
3302                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3303                 fi
3304                 with_ldap_support=no
3305         fi
3306         ;;
3307   esac
3310 if test x"$with_ldap_support" != x"no"; then
3311   ac_save_LIBS=$LIBS
3313   ##################################################################
3314   # we might need the lber lib on some systems. To avoid link errors
3315   # this test must be before the libldap test
3316   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3318   ########################################################
3319   # If ber_sockbuf_add_io() is available we can add
3320   # SASL wrapping hooks
3321   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3323   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3324                  AC_TRY_COMPILE([#include <ldap.h>],
3325                                 [int val = LDAP_OPT_SOCKBUF;],
3326                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3327                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3329   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3330           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3331         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3332   fi
3334   #######################################################
3335   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3336   # ldap logging and print it out in the samba logs
3337   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3338                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3339                  [AC_TRY_COMPILE([#include <lber.h>],
3340                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3341                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3342                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3344   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3345         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3346                   [Support for LDAP/LBER logging interception])
3347   fi
3349   ########################################################
3350   # now see if we can find the ldap libs in standard paths
3351   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3353   ########################################################
3354   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3355   # Check found in pam_ldap 145.
3356   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3358   LIBS="$LIBS $LDAP_LIBS"
3359   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3360     AC_TRY_COMPILE([
3361         #include <lber.h>
3362         #include <ldap.h>],
3363         [ldap_set_rebind_proc(0, 0, 0);],
3364         [smb_ldap_cv_ldap_set_rebind_proc=3],
3365         [smb_ldap_cv_ldap_set_rebind_proc=2]
3366     )
3367   ])
3369   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3371   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3373   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3374     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3375     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3376     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3377     default_shared_modules="$default_shared_modules";
3378     SMBLDAP="lib/smbldap.o"
3379     SMBLDAPUTIL="lib/smbldap_util.o"
3380     with_ldap_support=yes
3381     AC_MSG_CHECKING(whether LDAP support is used)
3382     AC_MSG_RESULT(yes)
3383   else
3384     if test x"$with_ldap_support" = x"yes"; then
3385         AC_MSG_ERROR(libldap is needed for LDAP support)
3386     else
3387         AC_MSG_WARN(libldap is needed for LDAP support)
3388     fi
3390     LDAP_LIBS=""
3391     with_ldap_support=no
3392   fi
3393   LIBS=$ac_save_LIBS
3397 #################################################
3398 # active directory support
3400 with_ads_support=auto
3401 AC_MSG_CHECKING([for Active Directory and krb5 support])
3403 AC_ARG_WITH(ads,
3404 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3405 [ case "$withval" in
3406     yes|no)
3407         with_ads_support="$withval"
3408         ;;
3409   esac ])
3411 AC_MSG_RESULT($with_ads_support)
3413 FOUND_KRB5=no
3414 KRB5_LIBS=""
3416 if test x"$with_ldap_support" != x"yes"; then
3418     if test x"$with_ads_support" = x"yes"; then
3419         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3420     elif test x"$with_ads_support" = x"auto"; then
3421         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3422         with_ads_support=no
3423     fi
3425 else
3427     # Check to see whether there is enough LDAP functionality to be able
3428     # to build AD support.
3430 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3431 case "$host_os" in
3432         *hpux*)
3433     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3435     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3436         if test x"$with_ads_support" = x"yes"; then
3437             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3438         elif test x"$with_ads_support" = x"auto"; then
3439             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3440             with_ads_support=no
3441         fi
3442     fi
3443     ;;
3444         *)
3445     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3447     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3448         if test x"$with_ads_support" = x"yes"; then
3449             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3450         elif test x"$with_ads_support" = x"auto"; then
3451             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3452             with_ads_support=no
3453         fi
3454     fi
3455     ;;
3456 esac
3459     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3461     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3462         if test x"$with_ads_support" = x"yes"; then
3463             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3464         elif test x"$with_ads_support" = x"auto"; then
3465             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3466             with_ads_support=no
3467         fi
3468     fi
3472 if test x"$with_ads_support" != x"no"; then
3474   # Do no harm to the values of CFLAGS and LIBS while testing for
3475   # Kerberos support.
3477   if test x$FOUND_KRB5 = x"no"; then
3478     #################################################
3479     # check for location of Kerberos 5 install
3480     AC_MSG_CHECKING(for kerberos 5 install path)
3481     AC_ARG_WITH(krb5,
3482     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3483     [ case "$withval" in
3484       no)
3485         AC_MSG_RESULT(no krb5-path given)
3486         ;;
3487       yes)
3488         AC_MSG_RESULT(/usr)
3489         FOUND_KRB5=yes
3490         ;;
3491       *)
3492         AC_MSG_RESULT($withval)
3493         KRB5_CFLAGS="-I$withval/include"
3494         KRB5_CPPFLAGS="-I$withval/include"
3495         KRB5_LDFLAGS="-L$withval/lib"
3496         FOUND_KRB5=yes
3497         if test -x "$withval/bin/krb5-config"; then
3498                 KRB5CONFIG=$withval/bin/krb5-config
3499         fi
3500         ;;
3501       esac ],
3502       AC_MSG_RESULT(no krb5-path given)
3503     )
3504   fi
3506   #################################################
3507   # check for krb5-config from recent MIT and Heimdal kerberos 5
3508   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3509   AC_MSG_CHECKING(for working krb5-config)
3510   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3511     ac_save_CFLAGS=$CFLAGS
3512     CFLAGS="";export CFLAGS
3513     ac_save_LDFLAGS=$LDFLAGS
3514     LDFLAGS="";export LDFLAGS
3515     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3516     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3517     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3518     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3519     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3520     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3521     FOUND_KRB5=yes
3522     AC_MSG_RESULT(yes)
3523   else
3524     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3525   fi
3527   if test x$FOUND_KRB5 = x"no"; then
3528     #################################################
3529     # see if this box has the SuSE location for the heimdal krb implementation
3530     AC_MSG_CHECKING(for /usr/include/heimdal)
3531     if test -d /usr/include/heimdal; then
3532       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3533           KRB5_CFLAGS="-I/usr/include/heimdal"
3534           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3535           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3536           FOUND_KRB5=yes
3537           AC_MSG_RESULT(yes)
3538       else
3539           KRB5_CFLAGS="-I/usr/include/heimdal"
3540           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3541           FOUND_KRB5=yes
3542           AC_MSG_RESULT(yes)
3543       fi
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 RedHat location for kerberos
3552     AC_MSG_CHECKING(for /usr/kerberos)
3553     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3554       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3555       KRB5_CFLAGS="-I/usr/kerberos/include"
3556       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3557       FOUND_KRB5=yes
3558       AC_MSG_RESULT(yes)
3559     else
3560       AC_MSG_RESULT(no)
3561     fi
3562   fi
3564   if test x$FOUND_KRB5 = x"no"; then
3565     #################################################
3566     # see if this box has the OpenBSD location for heimdal krb5
3567     AC_MSG_CHECKING(for /usr/include/kerberosV)
3568     if test -d /usr/include/kerberosV; then
3569       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3570       KRB5_LIBS="-lcrypto"
3571       FOUND_KRB5=yes
3572       AC_MSG_RESULT(yes)
3573     else
3574       AC_MSG_RESULT(no)
3575     fi
3576   fi
3578   ac_save_CFLAGS=$CFLAGS
3579   ac_save_CPPFLAGS=$CPPFLAGS
3580   ac_save_LDFLAGS=$LDFLAGS
3582   # remove needless evil rpath stuff as early as possible:
3583   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3584   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3585   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3586   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3587   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3589   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3591   # now check for krb5.h. Some systems have the libraries without the headers!
3592   # note that this check is done here to allow for different kerberos
3593   # include paths
3594   AC_CHECK_HEADERS(krb5.h)
3596   if test x"$ac_cv_header_krb5_h" = x"no"; then
3598     # Give a warning if AD support was not explicitly requested,
3599     # i.e with_ads_support = auto, otherwise die with an error.
3601     if test x"$with_ads_support" = x"yes"; then
3602       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3603     else
3604       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3605     fi
3607     # Turn off AD support and restore CFLAGS and LIBS variables
3609     with_ads_support="no"
3611     CFLAGS=$ac_save_CFLAGS
3612     CPPFLAGS=$ac_save_CPPFLAGS
3613     LDFLAGS=$ac_save_LDFLAGS
3614   fi
3615   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3616 [[#ifdef HAVE_KRB5_H
3617  #include <krb5.h>
3618  #endif
3621   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3622         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3623         if test x"$BLDSHARED" = x"true" ; then
3624                 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3625         fi
3626   fi
3628   # check for new heimdal KRB5_DEPRECATED handling
3630   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3631                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3632     AC_TRY_COMPILE(
3633       [#define KRB5_DEPRECATED 1
3634       #include <krb5.h>],
3635       [],
3636       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3637       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3639   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3640     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3641                [Whether to use deprecated krb5 interfaces])
3642   fi
3645 # Now we have determined whether we really want ADS support
3646 use_ads=no
3647 if test x"$with_ads_support" != x"no"; then
3648   use_ads=yes
3649   have_gssapi=no
3650   ac_save_LIBS=$LIBS
3652   # now check for gssapi headers.  This is also done here to allow for
3653   # different kerberos include paths
3654   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3656   ##################################################################
3657   # we might need the k5crypto and com_err libraries on some systems
3658   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3659   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3661   # Heimdal checks.
3662   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3663   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3664   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3666   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3667   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3669   ########################################################
3670   # now see if we can find the krb5 libs in standard paths
3671   # or as specified above
3672   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3673   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3675   ########################################################
3676   # now see if we can find the gssapi libs in standard paths
3677   if test x"$have_gssapi" != x"yes"; then
3678      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3679   fi
3681   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3682   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3683   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3684   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3685   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3686   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3687   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3688   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3689   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3690   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3691   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3692   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3693   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3694   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3695   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3696   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3697   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3698   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3699   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3700   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3701   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3702   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3703   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3704   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3705   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3706   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3707   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3708   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3709   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3710   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3711   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3712   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3713   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3714   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3715   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3716   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3717   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3718   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3719   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3720   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3721   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3722   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3723   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3724   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3725   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3726   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3727   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3728   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3729   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3731   # MIT krb5 1.8 does not expose this call (yet)
3732   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3734   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3735   # but does have the symbol
3736   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3738   LIBS="$KRB5_LIBS $LIBS"
3740   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3741         smb_krb5_cv_ticket_has_keyinfo,
3742         [
3743             AC_TRY_COMPILE(
3744             [
3745                 #include <krb5.h>
3746             ],
3747             [
3748                 krb5_ticket ticket;
3749                 krb5_kvno kvno;
3750                 krb5_enctype enctype;
3752                 enctype = ticket.enc_part.enctype;
3753                 kvno = ticket.enc_part.kvno;
3754             ],
3755             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3756             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3757         ])
3759   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3760         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3761             [Whether the krb5_ticket structure contains the kvno and enctype])
3762   fi
3764   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3765           smb_krb5_cv_creds_opt_free_context,
3766           [
3767                 AC_TRY_COMPILE([
3768                     #include <krb5.h>],
3769                     [
3770                         krb5_context ctx;
3771                         krb5_get_init_creds_opt *opt = NULL;
3772                         krb5_get_init_creds_opt_free(ctx, opt);
3773                     ],
3774                     [smb_krb5_cv_creds_opt_free_context=yes],
3775                     [smb_krb5_cv_creds_opt_free_context=no]
3776                 )
3777           ])
3779   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3780         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3781             [Whether krb5_get_init_creds_opt_free takes a context argument])
3782   fi
3784   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3785     AC_TRY_COMPILE([
3786         #include <krb5.h>],
3787         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3788         [smb_krb5_cv_verify_checksum=7],
3789         [smb_krb5_cv_verify_checksum=6],
3790     )
3791   ])
3792   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3794   AC_CACHE_CHECK([for checksum in krb5_checksum],
3795                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3796     AC_TRY_COMPILE([#include <krb5.h>],
3797       [krb5_checksum cksum; cksum.checksum.length = 0;],
3798       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3799       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3801   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3802     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3803                [Whether the krb5_checksum struct has a checksum property])
3804   fi
3806   AC_CACHE_CHECK([for etype in EncryptedData],
3807                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3808     AC_TRY_COMPILE([#include <krb5.h>],
3809       [EncryptedData edata; edata.etype = 0;],
3810       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3811       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3813   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3814     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3815                [Whether the EncryptedData struct has a etype property])
3816   fi
3818   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3819                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3820     AC_TRY_COMPILE([#include <krb5.h>],
3821       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3822       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3823       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3825   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3826     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3827                [Whether the krb5_ap_req struct has a ticket pointer])
3828   fi
3830   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3831                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3832     AC_TRY_COMPILE([#include <krb5.h>],
3833       [krb5_error err; err.e_data = NULL;],
3834       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3835       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3837   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3838     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3839                [Whether the krb5_error struct has a e_data pointer])
3840   fi
3842   AC_CACHE_CHECK([for krb5_crypto type],
3843                 samba_cv_HAVE_KRB5_CRYPTO,[
3844     AC_TRY_COMPILE([#include <krb5.h>],
3845       [krb5_crypto crypto;],
3846       samba_cv_HAVE_KRB5_CRYPTO=yes,
3847       samba_cv_HAVE_KRB5_CRYPTO=no)])
3849   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3850     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3851                [Whether the type krb5_crypto exists])
3852   fi
3854   AC_CACHE_CHECK([for krb5_encrypt_block type],
3855                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3856     AC_TRY_COMPILE([#include <krb5.h>],
3857       [krb5_encrypt_block block;],
3858       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3859       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3861   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3862     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3863                [Whether the type krb5_encrypt_block exists])
3864   fi
3866   AC_CACHE_CHECK([for addrtype in krb5_address],
3867                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3868     AC_TRY_COMPILE([#include <krb5.h>],
3869       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3870       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3871       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3873   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3874     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3875                [Whether the krb5_address struct has a addrtype property])
3876   fi
3878   AC_CACHE_CHECK([for addr_type in krb5_address],
3879                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3880     AC_TRY_COMPILE([#include <krb5.h>],
3881       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3882       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3883       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3885   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3886     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3887               [Whether the krb5_address struct has a addr_type property])
3888   fi
3890   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3891                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3892                  [AC_TRY_COMPILE([#include <krb5.h>],
3893     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3894     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3896   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3897     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3898               [Whether the krb5_ticket struct has a enc_part2 property])
3899   fi
3901   AC_CACHE_CHECK([for keyblock in krb5_creds],
3902                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3903     AC_TRY_COMPILE([#include <krb5.h>],
3904       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3905       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3906       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3908   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3909     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3910               [Whether the krb5_creds struct has a keyblock property])
3911   fi
3913   AC_CACHE_CHECK([for session in krb5_creds],
3914                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3915     AC_TRY_COMPILE([#include <krb5.h>],
3916       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3917       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3918       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3920   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3921     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3922               [Whether the krb5_creds struct has a session property])
3923   fi
3925   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3926                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3927     AC_TRY_COMPILE([#include <krb5.h>],
3928       [krb5_keyblock key; key.keyvalue.data = NULL;],
3929       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3930       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3932   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3933     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3934               [Whether the krb5_keyblock struct has a keyvalue property])
3935   fi
3937   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3938                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3939     AC_TRY_COMPILE([#include <krb5.h>],
3940       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3941       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3942       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3943   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3944                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3945     AC_TRY_COMPILE([#include <krb5.h>],
3946       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3947       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3948       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3949 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3950 # w.r.t. arcfour and windows, so we must not enable it here
3951   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3952           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3953     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3954               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3955   fi
3957   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3958                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3959     AC_TRY_COMPILE([#include <krb5.h>],
3960       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3961       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3962       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3964   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3965     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3966               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3967   fi
3969   AC_CACHE_CHECK([for KV5M_KEYTAB],
3970                  samba_cv_HAVE_KV5M_KEYTAB,[
3971     AC_TRY_COMPILE([#include <krb5.h>],
3972       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3973       samba_cv_HAVE_KV5M_KEYTAB=yes,
3974       samba_cv_HAVE_KV5M_KEYTAB=no)])
3976   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3977       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3978              [Whether the KV5M_KEYTAB option is available])
3979   fi
3981   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3982                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3983     AC_TRY_COMPILE([#include <krb5.h>],
3984       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3985       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3986       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3988   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3989     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3990               [Whether KRB5_KU_OTHER_CKSUM is available])
3991   fi
3993   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3994                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3995     AC_TRY_COMPILE([#include <krb5.h>],
3996       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3997       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3998       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4000   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4001     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4002               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4003   fi
4005   AC_CACHE_CHECK([for the krb5_princ_component macro],
4006                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4007     AC_TRY_LINK([#include <krb5.h>],
4008       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4009       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4010       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4012   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4013     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4014                [Whether krb5_princ_component is available])
4015   fi
4017   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4018                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4019     AC_TRY_COMPILE([#include <krb5.h>],
4020       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4021       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4022       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4024   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4025     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4026               [Whether krb5_keytab_entry has key member])
4027   fi
4029   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4030                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4031     AC_TRY_COMPILE([#include <krb5.h>],
4032       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4033       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4034       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4036   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4037     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4038               [Whether krb5_keytab_entry has keyblock member])
4039   fi
4041   AC_CACHE_CHECK([for magic in krb5_address],
4042                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4043     AC_TRY_COMPILE([#include <krb5.h>],
4044       [krb5_address addr; addr.magic = 0;],
4045       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4046       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4048   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4049     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4050               [Whether the krb5_address struct has a magic property])
4051   fi
4053   AC_CACHE_CHECK([for WRFILE: keytab support],
4054                 samba_cv_HAVE_WRFILE_KEYTAB,[
4055     AC_TRY_RUN([
4056 #include<krb5.h>
4057   main()
4058   {
4059     krb5_context context;
4060     krb5_keytab keytab;
4062     krb5_init_context(&context);
4063     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4064   }],
4065   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4066   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4068   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4069       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4070                [Whether the WRFILE:-keytab is supported])
4071   fi
4073   AC_CACHE_CHECK([for krb5_realm type],
4074                 samba_cv_HAVE_KRB5_REALM_TYPE,[
4075     AC_TRY_COMPILE([#include <krb5.h>],
4076       [krb5_realm realm;],
4077       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4078       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4080   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4081     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4082                [Whether the type krb5_realm exists])
4083   fi
4085   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4086                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4087     AC_TRY_COMPILE([#include <krb5.h>],
4088     [
4089     krb5_context context;
4090     krb5_principal principal;
4091     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4092     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4093     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4095   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4096     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4097               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4098   fi
4100   AC_CACHE_CHECK([for krb5_addresses type],
4101                 samba_cv_HAVE_KRB5_ADDRESSES,[
4102     AC_TRY_COMPILE([#include <krb5.h>],
4103       [krb5_addresses addr;],
4104       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4105       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4107   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4108     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4109                [Whether the type krb5_addresses type exists])
4110   fi
4112   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4113                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4114     AC_TRY_COMPILE([#include <krb5.h>],
4115     [
4116     krb5_mk_error(0,0,0);],
4117     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4118     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4120   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4121     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4122               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4123   fi
4125   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4126     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4127         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4128         AC_TRY_RUN_STRICT([
4129                 #include <stdlib.h>
4130                 #include <krb5.h>
4131                 int main(void) {
4132                         krb5_context context = NULL;
4133                         char *str = NULL;
4134                         krb5_enctype_to_string(context, 1, &str);
4135                         if (str) free (str); 
4136                         return 0;
4137                 }
4138                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4139                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4140                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4142     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4143       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4144                 [whether krb5_enctype_to_string takes krb5_context argument])
4145     fi
4147     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4148         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4149         AC_TRY_RUN_STRICT([
4150                 #include <krb5.h>
4151                 int main(void) {
4152                         char buf[256];
4153                         krb5_enctype_to_string(1, buf, 256);
4154                         return 0;
4155                 }
4156                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4157                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4158                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4160     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4161       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4162                 [whether krb5_enctype_to_string takes size_t argument])
4163     fi
4164   fi
4166   AC_CACHE_CHECK([for krb5_principal_get_realm],
4167                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4168     AC_TRY_LINK([#include <krb5.h>],
4169       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4170       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4171       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4173   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4174     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4175                [Whether the function krb5_principal_get_realm is defined])
4176   fi
4178   AC_CACHE_CHECK([for krb5_princ_realm],
4179                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4180     AC_TRY_LINK([#include <krb5.h>],
4181       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4182       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4183       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4185   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4186     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4187                [Whether the macro krb5_princ_realm is defined])
4188   fi
4190   #
4191   #
4192   # Now the decisions whether we can support krb5
4193   #
4194   # NOTE: all tests should be done before this block!
4195   #
4196   #
4197   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4198     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4199     use_ads=no
4200   fi
4202   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4203           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4204   then
4205     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4206     use_ads=no
4207   fi
4209   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4210           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4211   then
4212     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4213     use_ads=no
4214   fi
4216   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4217           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4218   then
4219     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4220     use_ads=no
4221   fi
4223   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4224           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4225   then
4226     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4227     use_ads=no
4228   fi
4230   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4232       # We only need the following functions if we can't get the enctype
4233       # and kvno out of the ticket directly (ie. on Heimdal).
4235       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4236       then
4237         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4238         use_ads=no
4239       fi
4241       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4242       then
4243         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4244         use_ads=no
4245       fi
4247   fi
4249   if test x"$use_ads" = x"yes"; then
4250     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4251     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4252     if test x"$have_gssapi" = x"yes"; then
4253       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4254     fi
4255   else
4256     if test x"$with_ads_support" = x"yes"; then
4257         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4258     else
4259         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4260     fi
4261     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4262     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4263     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4264     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4265     KRB5_LIBS=""
4266     with_ads_support=no
4267   fi
4268   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4269   AC_MSG_RESULT([$use_ads])
4271 LIBS="$ac_save_LIBS"
4274 if test x"$use_ads" != xyes; then
4275         merged_build_possible=no
4278 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4279 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4282 ########################################################
4283 # Compile with DNS Updates support?
4285 with_dnsupdate_support=auto
4286 AC_MSG_CHECKING([whether to enable DNS Updates support])
4288 AC_ARG_WITH(dnsupdate,
4289 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4290 [ case "$withval" in
4291     yes|no)
4292         with_dnsupdate_support=$withval
4293         ;;
4294   esac ])
4296 AC_MSG_RESULT($with_dnsupdate_support)
4298 if test x"$with_dnsupdate_support" != x"no"; then
4300   ################################################################
4301   # first test for AD / GSSAPI support being enabled
4302         if test x"$have_gssapi" != xyes ; then
4303                 if test x"$with_dnsupdate_support" = x"yes" ; then
4304                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4305                 else
4306                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4307                         with_dnsupdate_support=no
4308                 fi
4309         fi
4310   ##################################################################
4311   # then test for uuid.h (necessary to generate unique DNS keynames
4312   # (uuid.h is required for this test)
4313         AC_CHECK_HEADERS(uuid/uuid.h)
4315         
4316         if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4317                 if test x"$with_dnsupdate_support" = x"yes"; then
4318                         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4319                 else
4320                         AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4321                 fi
4322                 with_dnsupdate_support=no
4323         fi
4326 if test x"$with_dnsupdate_support" != x"no"; then
4328   ########################################################
4329   # Now see if we can find the uuid libs in standard paths
4330   # On some systems, the uuid API is in libc, so we have to
4331   # be careful not to insert a spurious -luuid.
4333   UUID_LIBS=""
4334   AC_LIBTESTFUNC(uuid, uuid_generate,
4335           [
4336             case " $LIBS " in
4337                 *\ -luuid\ *)
4338                 UUID_LIBS="-luuid"
4339                 SMB_REMOVE_LIB(uuid)
4340                 ;;
4341             esac
4343             with_dnsupdate_support=yes
4344             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4345         ],
4346         [
4347             if test x"$with_dnsupdate_support" = x"yes"; then
4348                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4349             else
4350                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4351             fi
4352             with_dnsupdate_support=no
4353         ])
4355   # finally print out the result:
4356 AC_MSG_CHECKING(whether DNS Updates support is used)
4357 AC_MSG_RESULT([$with_dnsupdate_support])
4360 #################################################
4361 # check for automount support
4362 AC_MSG_CHECKING(whether to use automount)
4363 AC_ARG_WITH(automount,
4364 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4365 [ case "$withval" in
4366   yes)
4367     AC_MSG_RESULT(yes)
4368     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4369     ;;
4370   *)
4371     AC_MSG_RESULT(no)
4372     ;;
4373   esac ],
4374   AC_MSG_RESULT(no)
4377 #################################################
4378 # Check for a PAM clear-text auth, accounts, password
4379 # and session support. Most PAM implementations keep their
4380 # headers in /usr/include/security. Darwin keeps its in
4381 # /usr/include/pam.
4383 with_pam_for_crypt=no
4384 try_pam=auto
4385 AC_MSG_CHECKING(whether to try PAM support)
4386 AC_ARG_WITH(pam,
4387 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4388 [ case "$withval" in
4389   yes|no|auto)
4390     try_pam=$withval
4391     ;;
4392   esac
4394 AC_MSG_RESULT([$try_pam])
4396 use_pam=no
4397 create_pam_modules=no
4398 if test x"${try_pam}" != x"no";then
4399         use_pam=yes
4400         create_pam_modules=yes
4402         # Most systems have PAM headers in /usr/include/security, but Darwin
4403         # has them in /usr/include/pam.
4404         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4405         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4406                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4407                 if test x"${try_pam}" = x"yes";then
4408                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4409                 fi
4410                 use_pam=no
4411                 create_pam_modules=no
4412         fi
4414         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4415         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4416                 if test x"${try_pam}" = x"yes";then
4417                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4418                 fi
4419                 use_pam=no
4420                 create_pam_modules=no
4421         fi
4423         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4424                 #if HAVE_SECURITY_PAM_APPL_H
4425                 #include <security/pam_appl.h>
4426                 #endif
4427                 #if HAVE_PAM_PAM_APPL_H
4428                 #include <pam/pam_appl.h>
4429                 #endif
4430         ]])
4431         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4432                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4433                 if test x"${try_pam}" = x"yes";then
4434                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4435        fi
4436                 create_pam_modules=no
4437     fi
4439         if test x"$use_pam" = x"yes"; then
4440     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4441                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4442                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4443     with_pam_for_crypt=yes
4445                 if test x"$create_pam_modules" = x"yes"; then
4446                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4447                         # this checks are optional,
4448                         # we don't care about the results here
4449                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4450                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4451                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4452                 else
4453                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4454                 fi
4455         fi
4456         AC_MSG_CHECKING(whether to use PAM support)
4457         AC_MSG_RESULT([$use_pam])
4459         AC_MSG_CHECKING(whether to have PAM MODULES support)
4460         AC_MSG_RESULT([$create_pam_modules])
4461 fi # try_pam != no
4463 #################################################
4464 # check for PAM_RADIO_TYPE
4465 AC_TRY_COMPILE([
4466 #if (!defined(LINUX))
4468 #define PAM_EXTERN extern
4469 #if defined(HAVE_SECURITY_PAM_APPL_H)
4470 #include <security/pam_appl.h>
4471 #elif defined(HAVE_PAM_PAM_APPL_H)
4472 #include <pam/pam_appl.h>
4473 #endif
4475 #endif
4477 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4478 #include <security/pam_modules.h>
4479 #elif defined(HAVE_PAM_PAM_MODULES_H)
4480 #include <pam/pam_modules.h>
4481 #endif
4483 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4484 #include <security/_pam_macros.h>
4485 #elif defined(HAVE_PAM__PAM_MACROS_H)
4486 #include <pam/_pam_macros.h>
4487 #endif
4489 #ifdef HAVE_SECURITY_PAM_EXT_H
4490 #include <security/pam_ext.h>
4491 #endif
4493 [int i; i = PAM_RADIO_TYPE; ],
4494 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4496 #################################################
4497 # check for pam_smbpass support
4498 PAM_MODULES=""
4499 INSTALL_PAM_MODULES=""
4500 UNINSTALL_PAM_MODULES=""
4502 try_pam_smbpass=auto
4503 AC_MSG_CHECKING(whether to use pam_smbpass)
4504 AC_ARG_WITH(pam_smbpass,
4505 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4506 [ case "$withval" in
4507   yes|no|auto)
4508     try_pam_smbpass=$withval
4509   ;;
4510   *)
4511     AC_MSG_ERROR([valid options are yes,no,auto])
4512   ;;
4513   esac
4516 if test x"${try_pam_smbpass}" = xno ; then
4517         use_pam_smbpass=no
4518 else
4519         use_pam_smbpass=yes
4520         # Conditions under which pam_smbpass can't be built.
4521         if test x"$BLDSHARED" != xtrue ; then
4522                 if test x"${try_pam_smbpass}" = xyes ; then
4523                         AC_MSG_ERROR([No support for shared modules])
4524                 fi
4525                 use_pam_smbpass=no
4526         elif test x"$create_pam_modules" != xyes ; then
4527                 if test x"${try_pam_smbpass}" = xyes ; then
4528                         AC_MSG_ERROR([No support for PAM MODULES])
4529                 fi
4530                 use_pam_smbpass=no
4531         fi
4533         if test x"${use_pam_smbpass}" = xyes ; then 
4534                 PAM_MODULES="pam_smbpass"
4535                 INSTALL_PAM_MODULES="installpammodules"
4536                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4537         fi
4539 AC_MSG_RESULT([$use_pam_smbpass])
4543 ## moved after the check for -lcrypt in order to
4544 ## ensure that the necessary libraries are included
4545 ## check checking for truncated salt.  Wrapped by the
4546 ## $with_pam_for_crypt variable as above   --jerry
4548 if test $with_pam_for_crypt = no; then
4549 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4550 crypt_LIBS="$LIBS"
4551 LIBS="$AUTH_LIBS $LIBS"
4552 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4553         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4554 LIBS="$crypt_LIBS"])
4555 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4556         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4560 #################################################
4561 # check for a NISPLUS_HOME support
4562 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4563 AC_ARG_WITH(nisplus-home,
4564 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4565 [ case "$withval" in
4566   yes)
4567     AC_MSG_RESULT(yes)
4568     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4569     ;;
4570   *)
4571     AC_MSG_RESULT(no)
4572     ;;
4573   esac ],
4574   AC_MSG_RESULT(no)
4577 #################################################
4578 # check for syslog logging
4579 AC_MSG_CHECKING(whether to use syslog logging)
4580 AC_ARG_WITH(syslog,
4581 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4582 [ case "$withval" in
4583   yes)
4584     AC_MSG_RESULT(yes)
4585     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4586     ;;
4587   *)
4588     AC_MSG_RESULT(no)
4589     ;;
4590   esac ],
4591   AC_MSG_RESULT(no)
4594 #################################################
4595 # check for custom syslog facility
4596 AC_MSG_CHECKING(whether to use a custom syslog facility)
4597 AC_ARG_WITH(syslog-facility,
4598 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4600   if test "$withval" = "no" ; then
4601     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4602   else
4603      if test "$withval" != "yes" ; then
4604         syslog_facility="$withval"
4605         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4606      fi
4607   fi
4610 #################################################
4611 # check for experimental disk-quotas support
4613 samba_cv_WITH_QUOTAS=auto
4614 samba_cv_TRY_QUOTAS=no
4615 samba_cv_RUN_QUOTA_TESTS=auto
4616 samba_cv_WITH_SYS_QUOTAS=auto
4617 samba_cv_TRY_SYS_QUOTAS=auto
4618 samba_cv_SYSQUOTA_FOUND=no
4620 AC_MSG_CHECKING(whether to try disk-quotas support)
4621 AC_ARG_WITH(quotas,
4622 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4623 [ case "$withval" in
4624   yes)
4625     AC_MSG_RESULT(yes)
4626     samba_cv_WITH_QUOTAS=yes
4627     samba_cv_TRY_QUOTAS=yes
4628     samba_cv_RUN_QUOTA_TESTS=yes
4629     #set sys quotas to auto in this case
4630     samba_cv_TRY_SYS_QUOTAS=auto
4631     ;;
4632   auto)
4633     AC_MSG_RESULT(auto)
4634     samba_cv_WITH_QUOTAS=auto
4635     samba_cv_TRY_QUOTAS=auto
4636     samba_cv_RUN_QUOTA_TESTS=auto
4637     #set sys quotas to auto in this case
4638     samba_cv_TRY_SYS_QUOTAS=auto
4639     ;;
4640   no)
4641     AC_MSG_RESULT(no)
4642     samba_cv_WITH_QUOTAS=no
4643     samba_cv_TRY_QUOTAS=no
4644     samba_cv_RUN_QUOTA_TESTS=no
4645     ;;
4646   *)
4647     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4648     ;;
4649   esac ],
4650   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4653 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4654 AC_ARG_WITH(sys-quotas,
4655 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4656 [ case "$withval" in
4657   yes)
4658     AC_MSG_RESULT(yes)
4659     samba_cv_WITH_SYS_QUOTAS=yes
4660     samba_cv_TRY_SYS_QUOTAS=yes
4661     samba_cv_RUN_QUOTA_TESTS=yes
4662     ;;
4663   auto)
4664     AC_MSG_RESULT(auto)
4665     samba_cv_WITH_SYS_QUOTAS=auto
4666     samba_cv_TRY_SYS_QUOTAS=auto
4667     samba_cv_RUN_QUOTA_TESTS=auto
4668     ;;
4669   no)
4670     AC_MSG_RESULT(no)
4671     samba_cv_WITH_SYS_QUOTAS=no
4672     samba_cv_TRY_SYS_QUOTAS=no
4673     ;;
4674   *)
4675     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4676     ;;
4677   esac ],
4678   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4681 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4682 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4683   case "$host_os" in
4684         *linux*)
4685             AC_MSG_RESULT(yes)
4686             samba_cv_TRY_SYS_QUOTAS=yes
4687             samba_cv_RUN_QUOTA_TESTS=yes
4688             ;;
4689         *)
4690             AC_MSG_RESULT(no)
4691             samba_cv_TRY_SYS_QUOTAS=no
4692             ;;
4693   esac
4696 #############################################
4697 # only check for quota stuff if --with-quotas
4698 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4700 case "$host_os" in
4701         # on linux we didn't need to test we have builtin support
4702         *linux*)
4703             samba_cv_SYSQUOTA_FOUND=yes
4704             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4705             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4706             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4707             AC_MSG_RESULT(yes)
4709             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4710             samba_cv_found_xfs_header=yes
4711             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4712             AC_MSG_RESULT(yes)
4713             ;;
4714         *solaris*)
4715             # need to set this define when using static linking (BUG 1473)
4716             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4717             ;;
4718         *)
4719             ;;
4720 esac
4722 # some broken header files need this
4723 AC_CHECK_HEADER(asm/types.h,[
4724             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4725             AC_ADD_INCLUDE(<asm/types.h>)
4726             ])
4728 # For quotas on Veritas VxFS filesystems
4729 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4731 # For quotas on Linux XFS filesystems
4732 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4734 # For sys/quota.h and linux/quota.h
4735 AC_CHECK_HEADERS(sys/quota.h)
4737 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4738 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4739 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4740 AC_TRY_COMPILE([
4741 #include "confdefs.h"
4742 #ifdef HAVE_SYS_TYPES_H
4743 #include <sys/types.h>
4744 #endif
4745 #ifdef HAVE_ASM_TYPES_H
4746 #include <asm/types.h>
4747 #endif
4748 #include <sys/quota.h>
4749 ],[int i = Q_XGETQUOTA;],
4750 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4751 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4752         samba_cv_found_xfs_header=yes
4756 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4757 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4758 AC_TRY_COMPILE([
4759 #include "confdefs.h"
4760 #ifdef HAVE_SYS_QUOTA_H
4761 #include <sys/quota.h>
4762 #endif
4764 struct dqblk D;
4765 D.dqb_fsoftlimit = 0;],
4766 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4767 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4768         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4771 ##################
4772 # look for a working quota system
4774 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4775 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4776 AC_TRY_RUN_STRICT([
4777 #define HAVE_QUOTACTL_4A 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_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4782 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4783     samba_cv_SYSQUOTA_FOUND=yes;
4784     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4785     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4789 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4790 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4791 AC_TRY_RUN_STRICT([
4792 #define HAVE_QUOTACTL_4B 1
4793 #define AUTOCONF_TEST 1
4794 #include "confdefs.h"
4795 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4796            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4797 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4798     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4799     samba_cv_SYSQUOTA_FOUND=yes;
4800     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4801     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4805 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4806 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4807 AC_TRY_RUN_STRICT([
4808 #define HAVE_QUOTACTL_3 1
4809 #define AUTOCONF_TEST 1
4810 #include "confdefs.h"
4811 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4812            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4813 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4814     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4815     samba_cv_SYSQUOTA_FOUND=yes;
4816     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4817     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4821 #################################################
4822 # check for mntent.h and struct mntent
4823 AC_CHECK_HEADERS(mntent.h)
4824 #################################################
4825 # check for setmntent,getmntent,endmntent
4826 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4828 #################################################
4829 # check for devnm.h and struct mntent
4830 AC_CHECK_HEADERS(devnm.h)
4831 #################################################
4832 # check for devnm
4833 AC_CHECK_FUNCS(devnm)
4835 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4836     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4837         # if --with-sys-quotas=yes then build it
4838         # you have can use the get/set quota command smb.conf
4839         # options then
4840         samba_cv_SYSQUOTA_FOUND=auto
4841     fi
4842     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4843         # if --with-sys-quotas=yes then build it
4844         # you have can use the get/set quota command smb.conf
4845         # options then
4846         samba_cv_TRY_SYS_QUOTAS=auto
4847     fi
4850 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4851 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4852 SAVE_CPPFLAGS="$CPPFLAGS"
4853 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4854 AC_TRY_COMPILE([
4855 #include "confdefs.h"
4856 #define NO_PROTO_H 1
4857 #define NO_CONFIG_H 1
4858 #define HAVE_SYS_QUOTAS 1
4859 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4860 #include "${srcdir-.}/lib/sysquotas.c"
4861 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4862 CPPFLAGS="$SAVE_CPPFLAGS"
4864 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4865 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4866     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4867         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4868         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4869         samba_cv_WE_USE_SYS_QUOTAS=yes
4870         AC_MSG_RESULT(yes)
4871     else
4872         AC_MSG_RESULT(no)
4873     fi
4877 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4878 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4879 SAVE_CPPFLAGS="$CPPFLAGS"
4880 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4881 AC_TRY_COMPILE([
4882 #include "confdefs.h"
4883 #define NO_PROTO_H 1
4884 #define NO_CONFIG_H 1
4885 #define HAVE_SYS_QUOTAS 1
4886 #define HAVE_XFS_QUOTAS 1
4887 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4888 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4889 CPPFLAGS="$SAVE_CPPFLAGS"
4891 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4892     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4893         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4894     fi
4898 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4899 SAVE_CPPFLAGS="$CPPFLAGS"
4900 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4901 AC_TRY_COMPILE([
4902 #include "confdefs.h"
4903 #define NO_PROTO_H 1
4904 #define NO_CONFIG_H 1
4905 #include "${srcdir-.}/smbd/quotas.c"
4906 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4907 CPPFLAGS="$SAVE_CPPFLAGS"
4909 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4910 AC_MSG_CHECKING(whether to use the old quota support)
4911     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4912       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4913         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4914         AC_MSG_RESULT(yes)
4915       else
4916         AC_MSG_RESULT(no)
4917       fi
4918     else
4919       AC_MSG_RESULT(no)
4920     fi
4923 ####################
4924 # End of quota check samba_cv_RUN_QUOTA_TESTS
4927 #################################################
4928 # check for experimental utmp accounting
4930 AC_MSG_CHECKING(whether to support utmp accounting)
4931 WITH_UTMP=yes
4932 AC_ARG_WITH(utmp,
4933 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4934 [ case "$withval" in
4935   no)
4936                 WITH_UTMP=no
4937                 ;;
4938   *)
4939                 WITH_UTMP=yes
4940                 ;;
4941   esac ],
4944 # utmp requires utmp.h
4945 # Note similar check earlier, when checking utmp details.
4947 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4948         utmp_no_reason=", no utmp.h on $host_os"
4949         WITH_UTMP=no
4952 # Display test results
4954 if test x"$WITH_UTMP" = x"yes"; then
4955         AC_MSG_RESULT(yes)
4956         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4957 else
4958         AC_MSG_RESULT(no$utmp_no_reason)
4962 #################################################
4963 # these tests are taken from the GNU fileutils package
4964 AC_CHECKING(how to get filesystem space usage)
4965 space=no
4967 # Test for statvfs64.
4968 if test $space = no; then
4969   # SVR4
4970   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4971   [AC_TRY_RUN([
4972 #if defined(HAVE_UNISTD_H)
4973 #include <unistd.h>
4974 #endif
4975 #include <sys/types.h>
4976 #include <sys/statvfs.h>
4977   main ()
4978   {
4979     struct statvfs64 fsd;
4980     exit (statvfs64 (".", &fsd));
4981   }],
4982   fu_cv_sys_stat_statvfs64=yes,
4983   fu_cv_sys_stat_statvfs64=no,
4984   fu_cv_sys_stat_statvfs64=cross)])
4985   if test $fu_cv_sys_stat_statvfs64 = yes; then
4986     space=yes
4987     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4988   fi
4991 # Perform only the link test since it seems there are no variants of the
4992 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4993 # because that got a false positive on SCO OSR5.  Adding the declaration
4994 # of a `struct statvfs' causes this test to fail (as it should) on such
4995 # systems.  That system is reported to work fine with STAT_STATFS4 which
4996 # is what it gets when this test fails.
4997 if test $space = no; then
4998   # SVR4
4999   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5000                  [AC_TRY_LINK([#include <sys/types.h>
5001 #include <sys/statvfs.h>],
5002                               [struct statvfs fsd; statvfs (0, &fsd);],
5003                               fu_cv_sys_stat_statvfs=yes,
5004                               fu_cv_sys_stat_statvfs=no)])
5005   if test $fu_cv_sys_stat_statvfs = yes; then
5006     space=yes
5007     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5008   fi
5011 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5012 # This is not the case on ancient Linux systems.
5014 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5015     AC_TRY_COMPILE([#include <sys/types.h>
5016 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5017         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5018 if test x"$samba_cv_fsid_int" = x"yes"; then
5019     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5022 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5023 # systems use f_bsize.
5024 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5025     AC_TRY_COMPILE([#include <sys/types.h>
5026 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5027         samba_cv_frsize=yes,samba_cv_frsize=no)])
5028 if test x"$samba_cv_frsize" = x"yes"; then
5029     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5032 # Some systems use f_flag in struct statvfs while others use f_flags
5033 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5034     AC_TRY_COMPILE([#include <sys/types.h>
5035 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5036         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5037 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5038     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5041 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5042     AC_TRY_COMPILE([#include <sys/types.h>
5043 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5044         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5045 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5046     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5049 if test $space = no; then
5050   # DEC Alpha running OSF/1
5051   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5052   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5053   [AC_TRY_RUN([
5054 #include <sys/param.h>
5055 #include <sys/types.h>
5056 #include <sys/mount.h>
5057   main ()
5058   {
5059     struct statfs fsd;
5060     fsd.f_fsize = 0;
5061     exit (statfs (".", &fsd, sizeof (struct statfs)));
5062   }],
5063   fu_cv_sys_stat_statfs3_osf1=yes,
5064   fu_cv_sys_stat_statfs3_osf1=no,
5065   fu_cv_sys_stat_statfs3_osf1=no)])
5066   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5067   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5068     space=yes
5069     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5070   fi
5073 if test $space = no; then
5074 # AIX
5075   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5076 member (AIX, 4.3BSD)])
5077   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5078   [AC_TRY_RUN([
5079 #ifdef HAVE_SYS_PARAM_H
5080 #include <sys/param.h>
5081 #endif
5082 #ifdef HAVE_SYS_MOUNT_H
5083 #include <sys/mount.h>
5084 #endif
5085 #ifdef HAVE_SYS_VFS_H
5086 #include <sys/vfs.h>
5087 #endif
5088   main ()
5089   {
5090   struct statfs fsd;
5091   fsd.f_bsize = 0;
5092   exit (statfs (".", &fsd));
5093   }],
5094   fu_cv_sys_stat_statfs2_bsize=yes,
5095   fu_cv_sys_stat_statfs2_bsize=no,
5096   fu_cv_sys_stat_statfs2_bsize=no)])
5097   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5098   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5099     space=yes
5100     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5101   fi
5104 if test $space = no; then
5105 # SVR3
5106   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5107   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5108   [AC_TRY_RUN([#include <sys/types.h>
5109 #include <sys/statfs.h>
5110   main ()
5111   {
5112   struct statfs fsd;
5113   exit (statfs (".", &fsd, sizeof fsd, 0));
5114   }],
5115     fu_cv_sys_stat_statfs4=yes,
5116     fu_cv_sys_stat_statfs4=no,
5117     fu_cv_sys_stat_statfs4=no)])
5118   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5119   if test $fu_cv_sys_stat_statfs4 = yes; then
5120     space=yes
5121     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5122   fi
5125 if test $space = no; then
5126 # 4.4BSD and NetBSD
5127   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5128 member (4.4BSD and NetBSD)])
5129   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5130   [AC_TRY_RUN([#include <sys/types.h>
5131 #ifdef HAVE_SYS_PARAM_H
5132 #include <sys/param.h>
5133 #endif
5134 #ifdef HAVE_SYS_MOUNT_H
5135 #include <sys/mount.h>
5136 #endif
5137   main ()
5138   {
5139   struct statfs fsd;
5140   fsd.f_fsize = 0;
5141   exit (statfs (".", &fsd));
5142   }],
5143   fu_cv_sys_stat_statfs2_fsize=yes,
5144   fu_cv_sys_stat_statfs2_fsize=no,
5145   fu_cv_sys_stat_statfs2_fsize=no)])
5146   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5147   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5148     space=yes
5149         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5150   fi
5153 if test $space = no; then
5154   # Ultrix
5155   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5156   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5157   [AC_TRY_RUN([#include <sys/types.h>
5158 #ifdef HAVE_SYS_PARAM_H
5159 #include <sys/param.h>
5160 #endif
5161 #ifdef HAVE_SYS_MOUNT_H
5162 #include <sys/mount.h>
5163 #endif
5164 #ifdef HAVE_SYS_FS_TYPES_H
5165 #include <sys/fs_types.h>
5166 #endif
5167   main ()
5168   {
5169   struct fs_data fsd;
5170   /* Ultrix's statfs returns 1 for success,
5171      0 for not mounted, -1 for failure.  */
5172   exit (statfs (".", &fsd) != 1);
5173   }],
5174   fu_cv_sys_stat_fs_data=yes,
5175   fu_cv_sys_stat_fs_data=no,
5176   fu_cv_sys_stat_fs_data=no)])
5177   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5178   if test $fu_cv_sys_stat_fs_data = yes; then
5179     space=yes
5180     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5181   fi
5185 # As a gating factor for large file support, in order to
5186 # use <4GB files we must have the following minimal support
5187 # available.
5188 # long long, and a 64 bit off_t or off64_t.
5189 # If we don't have all of these then disable large
5190 # file support.
5192 AC_MSG_CHECKING([if large file support can be enabled])
5193 AC_TRY_COMPILE([
5194 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5195 #include <sys/types.h>
5196 #else
5197 __COMPILE_ERROR_
5198 #endif
5200 [int i],
5201 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5202 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5203         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5205 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5207 #################################################
5208 # check for cluster extensions
5210 CTDB_CFLAGS=""
5211 AC_SUBST(CTDB_CFLAGS)
5212 AC_ARG_WITH(ctdb,
5213 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5214 [ case "$withval" in
5215   yes|no)
5216     AC_MSG_WARN([--with-ctdb called without argument])
5217     ;;
5218   *)
5219     CTDB_CPPFLAGS="-I$withval/include"
5220     ;;
5221   esac])
5223 SAVED_CPPFLAGS="$CPPFLAGS"
5224 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5225 ctdb_broken="missing or broken headers"
5227 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5228 #include "confdefs.h"
5229 #define NO_CONFIG_H
5230 #include "replace.h"
5231 #include "system/wait.h"
5232 #include "system/network.h"
5233 #define private #error __USED_RESERVED_WORD_private__
5234 #include <talloc.h>
5235 #include <tdb.h>
5236 #include <ctdb.h>
5239 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5240 #include "confdefs.h"
5241 #define NO_CONFIG_H
5242 #include "replace.h"
5243 #include "system/wait.h"
5244 #include "system/network.h"
5245 #include <talloc.h>
5246 #include <tdb.h>
5247 #include <ctdb.h>
5248 #include <ctdb_private.h>
5250 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5251         ctdb_broken=no
5252 else
5253         ctdb_broken="ctdb transaction support missing or too old"
5256 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5257 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5258         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5259 ],,[
5260 #include "confdefs.h"
5261 #define NO_CONFIG_H
5262 #include "replace.h"
5263 #include "system/wait.h"
5264 #include "system/network.h"
5265 #include <talloc.h>
5266 #include <tdb.h>
5267 #include <ctdb.h>
5268 #include <ctdb_private.h>
5271 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5272         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5274         ctdb_broken="missing struct ctdb_control_tcp"
5276 #include "confdefs.h"
5277 #define NO_CONFIG_H
5278 #include "replace.h"
5279 #include "system/wait.h"
5280 #include "system/network.h"
5281 #include <talloc.h>
5282 #include <tdb.h>
5283 #include <ctdb.h>
5284 #include <ctdb_private.h>
5287 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5288         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5289 ],,[
5290 #include "confdefs.h"
5291 #define NO_CONFIG_H
5292 #include "replace.h"
5293 #include "system/wait.h"
5294 #include "system/network.h"
5295 #include <talloc.h>
5296 #include <tdb.h>
5297 #include <ctdb.h>
5298 #include <ctdb_private.h>
5300 CPPFLAGS="$SAVED_CPPFLAGS"
5302 AC_MSG_CHECKING(cluster support)
5303 AC_ARG_WITH(cluster-support,
5304 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5306 if test x"$with_cluster_support" = x ; then
5307         with_cluster_support="auto"
5310 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5311         if test "x$with_cluster_support" = "xyes"; then
5312                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5313         fi
5314         with_cluster_support=no
5317 if test x"$ctdb_broken" != x"no"; then
5318         if test "x$with_cluster_support" = "xyes"; then
5319                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5320         fi
5321         with_cluster_support=no
5324 if test "x$with_cluster_support" != "xno"; then
5325     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5326     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5327     AC_MSG_RESULT(yes)
5328 else
5329     AC_MSG_RESULT(no)
5332 #################################################
5333 # check for ACL support
5335 AC_MSG_CHECKING(whether to support ACLs)
5336 AC_ARG_WITH(acl-support,
5337 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5338 [ case "$withval" in
5339         yes|no)
5340                 with_acl_support="$withval"
5341                 ;;
5342   esac ])
5344 if test x"$with_acl_support" = x ; then
5345         with_acl_support="auto"
5348 AC_MSG_RESULT($with_acl_support)
5350 if test x"$with_acl_support" = x"no"; then
5351         AC_MSG_RESULT(Disabling ACL support)
5352         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5353 else
5354         AC_MSG_NOTICE(checking whether ACL support is available:)
5355         case "$host_os" in
5356         *sysv5*)
5357                 AC_MSG_NOTICE(Using UnixWare ACLs)
5358                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5359                 default_static_modules="$default_static_modules vfs_solarisacl"
5360                 ;;
5361         *solaris*)
5362                 AC_MSG_NOTICE(Using solaris ACLs)
5363                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5364                 ACL_LIBS="$ACL_LIBS -lsec"
5365                 default_static_modules="$default_static_modules vfs_solarisacl"
5366                 ;;
5367         *hpux*)
5368                 AC_MSG_NOTICE(Using HPUX ACLs)
5369                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5370                 default_static_modules="$default_static_modules vfs_hpuxacl"
5371                 ;;
5372         *irix*)
5373                 AC_MSG_NOTICE(Using IRIX ACLs)
5374                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5375                 default_static_modules="$default_static_modules vfs_irixacl"
5376                 ;;
5377         *aix*)
5378                 AC_MSG_NOTICE(Using AIX ACLs)
5379                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5380                 default_static_modules="$default_static_modules vfs_aixacl"
5381                 ;;
5382         *osf*)
5383                 AC_MSG_NOTICE(Using Tru64 ACLs)
5384                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5385                 ACL_LIBS="$ACL_LIBS -lpacl"
5386                 default_static_modules="$default_static_modules vfs_tru64acl"
5387                 ;;
5388         *darwin*)
5389                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5390                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5391                 ;;
5392         *)
5393                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5394                 case "$host_os" in
5395                 *linux*)
5396                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5397                         ;;
5398                 esac
5399                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5400                         acl_LIBS=$LIBS
5401                         LIBS="$LIBS $ACL_LIBS"
5402                         AC_TRY_LINK([
5403                                 #include <sys/types.h>
5404                                 #include <sys/acl.h>
5405                         ],[
5406                                 acl_t acl;
5407                                 int entry_id;
5408                                 acl_entry_t *entry_p;
5409                                 return acl_get_entry(acl, entry_id, entry_p);
5410                         ],
5411                         [samba_cv_HAVE_POSIX_ACLS=yes],
5412                         [samba_cv_HAVE_POSIX_ACLS=no])
5413                         LIBS=$acl_LIBS
5414                 ])
5415                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5416                         AC_MSG_NOTICE(Using posix ACLs)
5417                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5418                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5419                                 acl_LIBS=$LIBS
5420                                 LIBS="$LIBS $ACL_LIBS"
5421                                 AC_TRY_LINK([
5422                                         #include <sys/types.h>
5423                                         #include <sys/acl.h>
5424                                 ],[
5425                                         acl_permset_t permset_d;
5426                                         acl_perm_t perm;
5427                                         return acl_get_perm_np(permset_d, perm);
5428                                 ],
5429                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5430                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5431                                 LIBS=$acl_LIBS
5432                         ])
5433                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5434                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5435                         fi
5436                         default_static_modules="$default_static_modules vfs_posixacl"
5437                 else
5438                         AC_MSG_NOTICE(ACL support is not avaliable)
5439                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5440                 fi
5441                 ;;
5442         esac
5443 fi # with_acl_support
5447 #################################################
5448 # check for AIO support
5450 AC_MSG_CHECKING(whether to support asynchronous io)
5451 AC_ARG_WITH(aio-support,
5452 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5453 [ case "$withval" in
5454   yes)
5456         AC_MSG_RESULT(yes)
5457         case "$host_os" in
5458         *)
5459                 AIO_LIBS=$LIBS
5460                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5461                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5462                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5463                 aio_LIBS=$LIBS
5464                 LIBS=$AIO_LIBS
5465                 AC_TRY_LINK([#include <sys/types.h>
5466 #include <aio.h>],
5467 [ struct aiocb a; return aio_read(&a);],
5468 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5469                 LIBS=$aio_LIBS])
5470                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5471                 aio_LIBS=$LIBS
5472                 LIBS=$AIO_LIBS
5473                 AC_TRY_LINK([#include <sys/types.h>
5474 #include <aio.h>],
5475 [ struct aiocb64 a; return aio_read64(&a);],
5476 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5477                 LIBS=$aio_LIBS])
5478                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5479                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5480                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5481                         LIBS=$AIO_LIBS
5482                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5483                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5484                         LIBS=$AIO_LIBS
5485                 fi
5487                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5488                         AC_MSG_CHECKING(for aio_read)
5489                         AC_LINK_IFELSE([#include <aio.h>
5490 int main() { struct aiocb a; return aio_read(&a); }],
5491 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5492 [AC_MSG_RESULT(no)])
5494                         AC_MSG_CHECKING(for aio_write)
5495                         AC_LINK_IFELSE([#include <aio.h>
5496 int main() { struct aiocb a; return aio_write(&a); }],
5497 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5498 [AC_MSG_RESULT(no)])
5500                         AC_MSG_CHECKING(for aio_fsync)
5501                         AC_LINK_IFELSE([#include <aio.h>
5502 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5503 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5504 [AC_MSG_RESULT(no)])
5506                         AC_MSG_CHECKING(for aio_return)
5507                         AC_LINK_IFELSE([#include <aio.h>
5508 int main() { struct aiocb a; return aio_return(&a); }],
5509 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5510 [AC_MSG_RESULT(no)])
5512                         AC_MSG_CHECKING(for aio_error)
5513                         AC_LINK_IFELSE([#include <aio.h>
5514 int main() { struct aiocb a; return aio_error(&a); }],
5515 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5516 [AC_MSG_RESULT(no)])
5518                         AC_MSG_CHECKING(for aio_cancel)
5519                         AC_LINK_IFELSE([#include <aio.h>
5520 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5521 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5522 [AC_MSG_RESULT(no)])
5524                         AC_MSG_CHECKING(for aio_suspend)
5525                         AC_LINK_IFELSE([#include <aio.h>
5526 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5527 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5528 [AC_MSG_RESULT(no)])
5529                 fi
5531                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5532                         AC_MSG_CHECKING(for aio_read64)
5533                         AC_LINK_IFELSE([#include <aio.h>
5534 int main() { struct aiocb a; return aio_read64(&a); }],
5535 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5536 [AC_MSG_RESULT(no)])
5538                         AC_MSG_CHECKING(for aio_write64)
5539                         AC_LINK_IFELSE([#include <aio.h>
5540 int main() { struct aiocb a; return aio_write64(&a); }],
5541 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5542 [AC_MSG_RESULT(no)])
5544                         AC_MSG_CHECKING(for aio_fsync64)
5545                         AC_LINK_IFELSE([#include <aio.h>
5546 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5547 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5548 [AC_MSG_RESULT(no)])
5550                         AC_MSG_CHECKING(for aio_return64)
5551                         AC_LINK_IFELSE([#include <aio.h>
5552 int main() { struct aiocb a; return aio_return64(&a); }],
5553 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5554 [AC_MSG_RESULT(no)])
5556                         AC_MSG_CHECKING(for aio_error64)
5557                         AC_LINK_IFELSE([#include <aio.h>
5558 int main() { struct aiocb a; return aio_error64(&a); }],
5559 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5560 [AC_MSG_RESULT(no)])
5562                         AC_MSG_CHECKING(for aio_cancel64)
5563                         AC_LINK_IFELSE([#include <aio.h>
5564 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5565 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5566 [AC_MSG_RESULT(no)])
5568                         AC_MSG_CHECKING(for aio_suspend64)
5569                         AC_LINK_IFELSE([#include <aio.h>
5570 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5571 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5572 [AC_MSG_RESULT(no)])
5573                 fi
5574             ;;
5575         esac
5576         ;;
5577   *)
5578     AC_MSG_RESULT(no)
5579     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5580     ;;
5581   esac ],
5582   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5583   AC_MSG_RESULT(no)
5586 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5587         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5588                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5589                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5590         fi
5593 #################################################
5594 # check for sendfile support
5596 with_sendfile_support=yes
5597 AC_MSG_CHECKING(whether to check to support sendfile)
5598 AC_ARG_WITH(sendfile-support,
5599 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5600 [ case "$withval" in
5601   yes)
5603         AC_MSG_RESULT(yes);
5605         case "$host_os" in
5606         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5607                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5608                 AC_TRY_LINK([#include <sys/sendfile.h>],
5610 int tofd, fromfd;
5611 off64_t offset;
5612 size_t total;
5613 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5615 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5617                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5618                 AC_TRY_LINK([#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_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5627 # Try and cope with broken Linux sendfile....
5628                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5629                 AC_TRY_LINK([\
5630 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5631 #undef _FILE_OFFSET_BITS
5632 #endif
5633 #include <sys/sendfile.h>],
5635 int tofd, fromfd;
5636 off_t offset;
5637 size_t total;
5638 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5640 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5642         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5643                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5644                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5645                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5646         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5647                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5648                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5649                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5650         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5651                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5652                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5653         else
5654                 AC_MSG_RESULT(no);
5655         fi
5657         ;;
5658         *freebsd* | *dragonfly* )
5659                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5660                 AC_TRY_LINK([\
5661 #include <sys/types.h>
5662 #include <unistd.h>
5663 #include <sys/socket.h>
5664 #include <sys/uio.h>],
5666         int fromfd, tofd, ret, total=0;
5667         off_t offset, nwritten;
5668         struct sf_hdtr hdr;
5669         struct iovec hdtrl;
5670         hdr.headers = &hdtrl;
5671         hdr.hdr_cnt = 1;
5672         hdr.trailers = NULL;
5673         hdr.trl_cnt = 0;
5674         hdtrl.iov_base = NULL;
5675         hdtrl.iov_len = 0;
5676         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5678 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5680         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5681                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5682                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5683                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5684         else
5685                 AC_MSG_RESULT(no);
5686         fi
5687         ;;
5689         *hpux*)
5690                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5691                 AC_TRY_LINK([\
5692 #include <sys/socket.h>
5693 #include <sys/uio.h>],
5695         int fromfd, tofd;
5696         size_t total=0;
5697         struct iovec hdtrl[2];
5698         ssize_t nwritten;
5699         off64_t offset;
5701         hdtrl[0].iov_base = 0;
5702         hdtrl[0].iov_len = 0;
5704         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5706 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5707         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5708                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5709                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5710                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5711         else
5712                 AC_MSG_RESULT(no);
5713         fi
5715                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5716                 AC_TRY_LINK([\
5717 #include <sys/socket.h>
5718 #include <sys/uio.h>],
5720         int fromfd, tofd;
5721         size_t total=0;
5722         struct iovec hdtrl[2];
5723         ssize_t nwritten;
5724         off_t offset;
5726         hdtrl[0].iov_base = 0;
5727         hdtrl[0].iov_len = 0;
5729         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5731 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5732         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5733                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5734                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5735                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5736         else
5737                 AC_MSG_RESULT(no);
5738         fi
5739         ;;
5741         *solaris*)
5742                 AC_CHECK_LIB(sendfile,sendfilev)
5743                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5744                 AC_TRY_LINK([\
5745 #include <sys/sendfile.h>],
5747         int sfvcnt;
5748         size_t xferred;
5749         struct sendfilevec vec[2];
5750         ssize_t nwritten;
5751         int tofd;
5753         sfvcnt = 2;
5755         vec[0].sfv_fd = SFV_FD_SELF;
5756         vec[0].sfv_flag = 0;
5757         vec[0].sfv_off = 0;
5758         vec[0].sfv_len = 0;
5760         vec[1].sfv_fd = 0;
5761         vec[1].sfv_flag = 0;
5762         vec[1].sfv_off = 0;
5763         vec[1].sfv_len = 0;
5764         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5766 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5768         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5769                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5770                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5771                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5772         else
5773                 AC_MSG_RESULT(no);
5774         fi
5776                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5777                 AC_TRY_LINK([\
5778 #include <sys/sendfile.h>],
5780         int sfvcnt;
5781         size_t xferred;
5782         struct sendfilevec vec[2];
5783         ssize_t nwritten;
5784         int tofd;
5786         sfvcnt = 2;
5788         vec[0].sfv_fd = SFV_FD_SELF;
5789         vec[0].sfv_flag = 0;
5790         vec[0].sfv_off = 0;
5791         vec[0].sfv_len = 0;
5793         vec[1].sfv_fd = 0;
5794         vec[1].sfv_flag = 0;
5795         vec[1].sfv_off = 0;
5796         vec[1].sfv_len = 0;
5797         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5799 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5801         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5802                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5803                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5804                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5805         else
5806                 AC_MSG_RESULT(no);
5807         fi
5808         ;;
5809         *aix*)
5810                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5811                 AC_TRY_LINK([\
5812 #include <sys/socket.h>],
5814         int fromfd, tofd;
5815         size_t total=0;
5816         struct sf_parms hdtrl;
5817         ssize_t nwritten;
5818         off64_t offset;
5820         hdtrl.header_data = 0;
5821         hdtrl.header_length = 0;
5822         hdtrl.file_descriptor = fromfd;
5823         hdtrl.file_offset = 0;
5824         hdtrl.file_bytes = 0;
5825         hdtrl.trailer_data = 0;
5826         hdtrl.trailer_length = 0;
5828         nwritten = send_file(&tofd, &hdtrl, 0);
5830 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5831         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5832                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5833                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5834                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5835         else
5836                 AC_MSG_RESULT(no);
5837         fi
5838         ;;
5839         *)
5840         ;;
5841         esac
5842         ;;
5843   *)
5844     AC_MSG_RESULT(no)
5845     ;;
5846   esac ],
5847   AC_MSG_RESULT(yes)
5850 ############################################
5851 # See if we have the Linux readahead syscall.
5853 AC_CACHE_CHECK([for Linux readahead],
5854                 samba_cv_HAVE_LINUX_READAHEAD,[
5855     AC_TRY_LINK([
5856 #if defined(HAVE_UNISTD_H)
5857 #include <unistd.h>
5858 #endif
5859 #include <fcntl.h>],
5860     [ssize_t err = readahead(0,0,0x80000);],
5861     samba_cv_HAVE_LINUX_READAHEAD=yes,
5862     samba_cv_HAVE_LINUX_READAHEAD=no)])
5864 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5865   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5866              [Whether Linux readahead is available])
5869 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5871 ############################################
5872 # See if we have the posix_fadvise syscall.
5874 AC_CACHE_CHECK([for posix_fadvise],
5875                 samba_cv_HAVE_POSIX_FADVISE,[
5876     AC_TRY_LINK([
5877 #if defined(HAVE_UNISTD_H)
5878 #include <unistd.h>
5879 #endif
5880 #include <fcntl.h>],
5881     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5882     samba_cv_HAVE_POSIX_FADVISE=yes,
5883     samba_cv_HAVE_POSIX_FADVISE=no)])
5885 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5886   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5887              [Whether posix_fadvise is available])
5890 ############################################
5891 # See if we have the Linux splice syscall.
5893 case "$host_os" in
5894 *linux*)
5895 AC_CACHE_CHECK([for Linux splice],
5896                 samba_cv_HAVE_LINUX_SPLICE,[
5897     AC_TRY_LINK([
5898 #if defined(HAVE_UNISTD_H)
5899 #include <unistd.h>
5900 #endif
5901 #include <fcntl.h>],
5902     [long ret = splice(0,0,1,0,400,0);],
5903     samba_cv_HAVE_LINUX_SPLICE=yes,
5904     samba_cv_HAVE_LINUX_SPLICE=no)])
5907 samba_cv_HAVE_LINUX_SPLICE=no
5909 esac
5911 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5912   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5913              [Whether Linux splice is available])
5916 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5918 ############################################
5919 # See if we have the a broken readlink syscall.
5921 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5922 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5923         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5925 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5926         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5929 #################################################
5930 # Check whether winbind is supported on this platform.  If so we need to
5931 # build and install client programs, sbin programs and shared libraries
5933 AC_MSG_CHECKING(whether to build winbind)
5935 # Initially, the value of $host_os decides whether winbind is supported
5937 HAVE_WINBIND=yes
5938 HAVE_WBCLIENT=no
5940 # Define external wbclient library to link against.  This disables winbind.
5941 # We define this here so --with-winbind can override it.
5942 AC_ARG_WITH(wbclient,
5943 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5945   case "$withval" in
5946         no)
5947                 HAVE_WBCLIENT=no
5948                 ;;
5949         yes)
5950                 HAVE_WBCLIENT=yes
5951                 HAVE_WINBIND=no
5952                 ;;
5953         *)
5954                 HAVE_WBCLIENT=yes
5955                 HAVE_WINBIND=no
5956                 WBCLIENT_INCLUDES="-I$withval/include"
5957                 WBCLIENT_LDFLAGS="-L$withval/lib"
5958                 ;;
5959   esac ],
5962 AC_SUBST(WBCLIENT_INCLUDES)
5963 AC_SUBST(WBCLIENT_LDFLAGS)
5964 AC_SUBST(WBCLIENT_LIBS)
5967 # Define the winbind shared library name and any specific linker flags
5968 # it needs to be built with.
5970 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5971 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5972 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5973 NSSSONAMEVERSIONSUFFIX=""
5975 case "$host_os" in
5976         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5977                 NSSSONAMEVERSIONSUFFIX=".2"
5978                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5979                 ;;
5980         *freebsd[[5-9]]*)
5981                 # FreeBSD winbind client is implemented as a wrapper around
5982                 # the Linux version.
5983                 NSSSONAMEVERSIONSUFFIX=".1"
5984                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5985                     ../nsswitch/winbind_nss_linux.o"
5986                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5987                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5988                 ;;
5990         *netbsd*[[3-9]]*)
5991                 # NetBSD winbind client is implemented as a wrapper
5992                 # around the Linux version. It needs getpwent_r() to
5993                 # indicate libc's use of the correct nsdispatch API.
5994                 #
5995                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5996                         WINBIND_NSS_EXTRA_OBJS="\
5997                             ../nsswitch/winbind_nss_netbsd.o \
5998                             ../nsswitch/winbind_nss_linux.o"
5999                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6000                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6001                 else
6002                         HAVE_WINBIND=no
6003                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6004                 fi
6005                 ;;
6006         *irix*)
6007                 # IRIX has differently named shared libraries
6008                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6009                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6010                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6011                 ;;
6012         *solaris*)
6013                 # Solaris winbind client is implemented as a wrapper around
6014                 # the Linux version.
6015                 NSSSONAMEVERSIONSUFFIX=".1"
6016                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6017                     ../nsswitch/winbind_nss_linux.o"
6018                 ;;
6019         *hpux11*)
6020                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6021                 ;;
6022         *aix*)
6023                 # AIX has even differently named shared libraries.  No
6024                 # WINS support has been implemented yet.
6025                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6026                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6027                 WINBIND_NSS="../nsswitch/WINBIND"
6028                 WINBIND_WINS_NSS=""
6029                 ;;
6030         *)
6031                 HAVE_WINBIND=no
6032                 winbind_no_reason=", unsupported on $host_os"
6033                 ;;
6034 esac
6036 # Check the setting of --with-winbind
6038 AC_ARG_WITH(winbind,
6039 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6041   case "$withval" in
6042         yes)
6043                 HAVE_WINBIND=yes
6044                 HAVE_WBCLIENT=no
6045                 ;;
6046         no)
6047                 HAVE_WINBIND=no
6048                 winbind_reason=""
6049                 ;;
6050   esac ],
6053 # We need unix domain sockets for winbind
6055 if test x"$HAVE_WINBIND" = x"yes"; then
6056         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6057                 winbind_no_reason=", no unix domain socket support on $host_os"
6058                 HAVE_WINBIND=no
6059         fi
6062 # Display test results
6064 if test x"$HAVE_WINBIND" = x"no"; then
6065         WINBIND_NSS=""
6066         WINBIND_WINS_NSS=""
6068 if test x"$HAVE_WBCLIENT" = x"yes"; then
6069         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6070                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6071         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6072         AC_MSG_RESULT(yes)
6073         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6074         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6075 else
6076         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6077                 BUILD_LIBWBCLIENT_SHARED=no
6078         else
6079                 BUILD_LIBWBCLIENT_SHARED=yes
6080         fi
6082         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6083         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6084         LIBWBCLIENT_SOVER=0
6085         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6086                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6087                 ## Only worry about libwbclient if we have shared
6088                 # library support
6089                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6090                 LIBWBCLIENT=libwbclient
6091                 INSTALL_LIBWBCLIENT=installlibwbclient
6092                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6093                 LIBWBCLIENT_LIBS="-lwbclient"
6094         else
6095                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6096                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6097         fi
6100 if test x"$HAVE_WINBIND" = x"yes"; then
6101         AC_MSG_RESULT(yes)
6102         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6104         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6105         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6106         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6107                 PAM_MODULES="$PAM_MODULES pam_winbind"
6108                 INSTALL_PAM_MODULES="installpammodules"
6109                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6110         fi
6111 else
6112         AC_MSG_RESULT(no$winbind_no_reason)
6115 AC_SUBST(WINBIND_NSS)
6116 AC_SUBST(WINBIND_WINS_NSS)
6117 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6118 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6119 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6121 AC_SUBST(WINBIND_KRB5_LOCATOR)
6123 # Solaris 10 does have new member in nss_XbyY_key
6124 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6125                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6126                 [#include <nss_dbdefs.h>])
6128 # Solaris has some extra fields in struct passwd that need to be
6129 # initialised otherwise nscd crashes.
6131 AC_CHECK_MEMBER(struct passwd.pw_comment,
6132                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6133                 [#include <pwd.h>])
6135 AC_CHECK_MEMBER(struct passwd.pw_age,
6136                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6137                 [#include <pwd.h>])
6139 # AIX 4.3.x and 5.1 do not have as many members in
6140 # struct secmethod_table as AIX 5.2
6141 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6142        [#include <usersec.h>])
6143 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6144        [#include <usersec.h>])
6146 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6147 AC_TRY_COMPILE([#include <sys/types.h>
6148 #include <sys/socket.h>],
6149 [struct ucred cred;
6150  socklen_t cred_len;
6151  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6153 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6154 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6155     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6159 #################################################
6160 # Check to see if we should use the included popt
6162 AC_ARG_WITH(included-popt,
6163 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6165   case "$withval" in
6166         yes)
6167                 INCLUDED_POPT=yes
6168                 ;;
6169         no)
6170                 INCLUDED_POPT=no
6171                 ;;
6172   esac ],
6174 if test x"$INCLUDED_POPT" != x"yes"; then
6175     AC_CHECK_LIB(popt, poptGetContext,
6176                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6179 AC_MSG_CHECKING(whether to use included popt)
6180 if test x"$INCLUDED_POPT" = x"yes"; then
6181     AC_MSG_RESULT(yes)
6182     BUILD_POPT='$(POPT_OBJ)'
6183     POPTLIBS='$(POPT_OBJ)'
6184     FLAGS1="-I\$(srcdir)/../lib/popt"
6185 else
6186     AC_MSG_RESULT(no)
6187         BUILD_POPT=""
6188     POPTLIBS="-lpopt"
6190 AC_SUBST(BUILD_POPT)
6191 AC_SUBST(POPTLIBS)
6192 AC_SUBST(FLAGS1)
6194 #################################################
6195 # Check if user wants DNS service discovery support
6197 AC_ARG_ENABLE(dnssd,
6198 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6200 AC_SUBST(DNSSD_LIBS)
6201 if test x"$enable_dnssd" = x"yes"; then
6202     have_dnssd_support=yes
6204     AC_CHECK_HEADERS(dns_sd.h)
6205     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6206         have_dnssd_support=no
6207     fi
6209     # On Darwin the DNSSD API is in libc, but on other platforms it's
6210     # probably in -ldns_sd
6211     AC_CHECK_FUNCS(DNSServiceRegister)
6212     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6213     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6214             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6215         have_dnssd_support=no
6216     fi
6218     if test x"$have_dnssd_support" = x"yes"; then
6219         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6220                 [Whether to enable DNS service discovery support])
6221     else
6222         if test x"$enable_dnssd" = x"yes"; then
6223             AC_MSG_ERROR(DNS service discovery support not available)
6224         fi
6225     fi
6229 #################################################
6230 # Check if user wants avahi support
6232 AC_ARG_ENABLE(avahi,
6233 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6235 if test x"$enable_avahi" != x"no"; then
6236     have_avahi_support=yes
6238     AC_CHECK_HEADERS(avahi-common/watch.h)
6239     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6240         have_avahi_support=no
6241     fi
6243     AC_CHECK_HEADERS(avahi-client/client.h)
6244     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6245         have_avahi_support=no
6246     fi
6248     save_LIBS="$LIBS"
6249     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6250     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6251     LIBS="$save_LIBS"
6253     if test x"$have_avahi_client_new" != x"yes" -o \
6254        x"$have_avahi_strerror" != x"yes" ; then
6255         have_avahi_support=no
6256     fi
6258     if test x"$have_avahi_support" = x"yes"; then
6259         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6260         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6261                 [Whether to enable avahi support])
6262         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6263     else
6264         if test x"$enable_avahi" = x"yes"; then
6265             AC_MSG_ERROR(avahi support not available)
6266         fi
6267     fi
6271 #################################################
6272 # Set pthread stuff
6274 PTHREAD_CFLAGS=error
6275 PTHREAD_LDFLAGS=error
6277 # If it's error, then the user didn't 
6278 # define it.
6279 if test "x$PTHREAD_LDFLAGS" = xerror; then
6280   AC_CHECK_LIB(pthread, pthread_attr_init, [
6281              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6282              PTHREAD_LDFLAGS="-lpthread" ])
6285 if test "x$PTHREAD_LDFLAGS" = xerror; then
6286   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6287              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6288              PTHREAD_LDFLAGS="-lpthreads" ])
6291 if test "x$PTHREAD_LDFLAGS" = xerror; then
6292    AC_CHECK_LIB(c_r, pthread_attr_init, [
6293                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6294                 PTHREAD_LDFLAGS="-pthread" ])
6297 if test "x$PTHREAD_LDFLAGS" = xerror; then
6298    AC_CHECK_FUNC(pthread_attr_init, [
6299                  PTHREAD_CFLAGS="-D_REENTRANT"
6300                  PTHREAD_LDFLAGS="-lpthread" ])
6303 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6304 # pthread_attr_init. On pthread_mutex_lock it works there...
6305 if test "x$PTHREAD_LDFLAGS" = xerror; then
6306    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6307                 PTHREAD_CFLAGS="-D_REENTRANT"
6308                 PTHREAD_LDFLAGS="-lpthread" ])
6311 AC_SUBST(PTHREAD_CFLAGS)
6312 AC_SUBST(PTHREAD_LDFLAGS)
6314 samba_cv_HAVE_PTHREAD=no
6315 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6316         samba_cv_HAVE_PTHREAD=yes
6317         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6318         ac_save_CFLAGS=$CFLAGS
6319         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6320         ac_save_LDFLAGS=$LDFLAGS
6321         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6322         AC_CHECK_HEADERS(pthread.h)
6323         CFLAGS=$ac_save_CFLAGS
6324         LDFLAGS=$ac_save_LDFLAGS
6325         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6328 #################################################
6329 # Check if user wants pthreadpool support
6331 AC_ARG_ENABLE(pthreadpool,
6332 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6334 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6335         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6338 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6339     LIBS="$LIBS $PTHREAD_LDFLAGS"
6340     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6341     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6342     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6345 #################################################
6346 # Check to see if we should use the included iniparser
6348 AC_ARG_WITH(included-iniparser,
6349 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6351   case "$withval" in
6352         yes)
6353                 INCLUDED_INIPARSER=yes
6354                 ;;
6355         no)
6356                 INCLUDED_INIPARSER=no
6357                 ;;
6358   esac ],
6360 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6361     AC_CHECK_LIB(iniparser, iniparser_load,
6362                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6365 AC_MSG_CHECKING(whether to use included iniparser)
6366 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6367     AC_MSG_RESULT(yes)
6368     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6369         INIPARSERLIBS=""
6370     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6371 else
6372     AC_MSG_RESULT(no)
6373         BUILD_INIPARSER=""
6374     INIPARSERLIBS="-liniparser"
6376 AC_SUBST(BUILD_INIPARSER)
6377 AC_SUBST(INIPARSERLIBS)
6378 AC_SUBST(FLAGS1)
6382 # Checks for the vfs_fileid module
6383 # Start
6384 AC_CHECK_FUNC(getmntent)
6386 AC_CHECK_HEADERS(sys/statfs.h)
6388 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6389 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6390              AC_TRY_RUN([
6391                 #include <sys/types.h>
6392                 #include <sys/statfs.h>
6393                 int main(void)
6394                 {
6395                         struct statfs fsd;
6396                         fsid_t fsid = fsd.f_fsid;
6397                         return statfs (".", &fsd);
6398                 }],
6399                 vfsfileid_cv_statfs=yes,
6400                 vfsfileid_cv_statfs=no,
6401                 vfsfileid_cv_statfs=cross)
6403 AC_MSG_RESULT($vfsfileid_cv_statfs)
6405 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6406         x"$vfsfileid_cv_statfs" = x"yes"; then
6407         default_shared_modules="$default_shared_modules vfs_fileid"
6409 # End
6410 # Checks for the vfs_fileid module
6413 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6415         eval MODULE_DEFAULT_$i=STATIC
6416 done
6418 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6420         dnl Fall back to static if we cannot build shared libraries
6421         eval MODULE_DEFAULT_$i=STATIC
6423         if test $BLDSHARED = true; then
6424                 eval MODULE_DEFAULT_$i=SHARED
6425         fi
6426 done
6428 dnl Always build these modules static
6429 MODULE_rpc_spoolss=STATIC
6430 MODULE_rpc_srvsvc=STATIC
6431 MODULE_idmap_tdb=STATIC
6432 MODULE_idmap_passdb=STATIC
6433 MODULE_idmap_nss=STATIC
6435 MODULE_nss_info_template=STATIC
6437 AC_ARG_WITH(static-modules,
6438 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6439 [ if test $withval; then
6440         for i in `echo $withval | sed -e 's/,/ /g'`
6441         do
6442                 eval MODULE_$i=STATIC
6443         done
6444 fi ])
6446 AC_ARG_WITH(shared-modules,
6447 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6448 [ if test $withval; then
6449         for i in `echo $withval | sed -e 's/,/ /g'`
6450         do
6451                         eval MODULE_$i=SHARED
6452         done
6453 fi ])
6455 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6456                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6457         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6458         AC_SUBST(SMBD_FAM_LIBS)
6461 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6462                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6463 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6464 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6465 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6466 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6467 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6470 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6471 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6472 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6473 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6474 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6475 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6476 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6477 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6478 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6479 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6480 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6481 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6482 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6483 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6484 SMB_SUBSYSTEM(RPC,smbd/process.o)
6486 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6487 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6488 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6489 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6490 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6491 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6492 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6493 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6494 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6495 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6497 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6498 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6500 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6501 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6502 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6503 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6504 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6506 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6507 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6508 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6509 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6510 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6511 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6512 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6513 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6514 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6515 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6517 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6518 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6519 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6520 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6521 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6522 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6523 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6524 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6525 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6526 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6527 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6528 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6529 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6530 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6531 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6532 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6533 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6534 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6535 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6536 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6537 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6538 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6539 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6540 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6541 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6542 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6543 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6544 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6545 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6546 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6547 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6548 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6549 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6550 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6551 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6552 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6553 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6554 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6555 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6556 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6557 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6558 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6559 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6560 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6561 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6563 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6565 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6566 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6567 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6569 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6570 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6571 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6572 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6574 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6576 #################################################
6577 # do extra things if we are running insure
6579 if test "${ac_cv_prog_CC}" = "insure"; then
6580         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6583 #################################################
6584 # If run from the build farm, enable NASTY hacks
6585 #################################################
6586 AC_MSG_CHECKING(whether to enable build farm hacks)
6587 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6588         AC_MSG_RESULT(yes)
6589         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6590 else
6591         AC_MSG_RESULT(no)
6594 #################################################
6595 # check for bad librt/libpthread interactions
6597 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6598     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6599     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6600     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6602 SMB_IF_RTSIGNAL_BUG(
6603         [
6604             # Have RT_SIGNAL bug, need to check whether the problem will
6605             # affect anything we have configured.
6607             rt_do_error=no
6608             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6609                 if test x"$rt_signal_lease_ok" = x"no" ; then
6610                     rt_do_error=yes
6611                 fi
6612             fi
6614             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6615                 if test x"$rt_signal_notify_ok" = x"no" ; then
6616                     rt_do_error=yes
6617                 fi
6618             fi
6620             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6621                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6622                 if test x"$rt_signal_aio_ok" = x"no" ; then
6623                     rt_do_error=yes
6624                 fi
6625             fi
6627             if test x"$rt_do_error" = x"yes" ; then
6628                 SMB_IS_LIBPTHREAD_LINKED(
6629                     [
6630                         cat<<MSG
6632 *** On this platforms, linking Samba against pthreads causes problems
6633 *** with the oplock and change notification mechanisms. You may be
6634 *** using pthreads as a side-effect of using the --with-aio-support
6635 *** or --with-profiling-data options. Please remove these and try again.
6638                     ],
6639                     [
6640                         cat<<MSG
6642 *** On this platform, the oplock and change notification mechanisms do not
6643 *** appear to work. Please report this problem to samba-technical@samba.org
6644 *** and attach the config.log file from this directory.
6647                     ])
6648                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6649             fi
6650         ],
6651         [
6652             # no RT_SIGNAL bug, we are golden
6653             SMB_IS_LIBPTHREAD_LINKED(
6654                 [
6655                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6656                 ])
6658         ],
6659         [
6660             # cross compiling, I hope you know what you are doing
6661             true
6662         ])
6666 AC_ARG_ENABLE(merged-build, 
6667 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6668 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6670 if test x"$enable_merged_build" = x"yes" -a \
6671         x"$merged_build_possible" = x"no" ; then
6672         AC_MSG_ERROR(Merged build required but not possible)
6675 m4_include(../lib/zlib/zlib.m4)
6677 if test x$enable_merged_build = xauto; then
6678         # Check for python
6679         m4_include(../m4/check_python.m4)
6680         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6682         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6683         AC_MSG_RESULT([$merged_build_possible])
6685         # Enable merged build automatically if possible, when in developer mode
6686         if test "x$developer" = xyes; then
6687                 enable_merged_build=$merged_build_possible
6688         fi
6691 if test x$enable_merged_build = xyes; then
6692         MERGED_BUILD=1
6693         saved_USESHARED="$USESHARED"
6694         USESHARED="false"
6695         smbtorture4_path="bin/smbtorture4"
6696         smbtorture4_option="-t bin/smbtorture4"
6697         AC_SUBST(smbtorture4_path)
6698         AC_SUBST(smbtorture4_option)
6699         USESHARED="$saved_USESHARED"
6700         SMBTORTURE4="bin/smbtorture4"
6701         AC_SUBST(SMBTORTURE4)
6704 AC_SUBST(ZLIB_LIBS)
6705 AC_SUBST(ZLIB_OBJS)
6706 AC_ZLIB([ZLIB_OBJS=""], [
6707         ZLIB_LIBS=""
6708         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6709                      deflate.o trees.o zutil.o inflate.o infback.o \
6710                          inftrees.o inffast.o
6711         do
6712                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6713         done
6714         CFLAGS="-I../lib/zlib $CFLAGS"
6717 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6719 if test "x$enable_dmalloc" = xyes
6720 then
6721         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6722         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6723                   [Define to check invariants around some common functions])
6724         LIBS="$LIBS -ldmalloc"
6727 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6728 LIB_REMOVE_USR_LIB(LDFLAGS)
6729 LIB_REMOVE_USR_LIB(LIBS)
6731 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6732 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6733 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6735 #################################################
6736 # Display summary of libraries detected
6738 AC_MSG_RESULT([Using libraries:])
6739 AC_MSG_RESULT([    LIBS = $LIBS])
6740 if test x"$with_ads_support" != x"no"; then
6741     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6743 if test x"$with_ldap_support" != x"no"; then
6744     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6746 if test x"$with_dnsupdate_support" != x"no"; then
6747     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6749 if test x"$have_dnssd_support" != x"no"; then
6750     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6752 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6754 #################################################
6755 # final configure stuff
6757 AC_MSG_CHECKING([configure summary])
6758 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6759            AC_MSG_RESULT(yes),
6760            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6761            AC_MSG_WARN([cannot run when cross-compiling]))
6763 dnl Merge in developer cflags from now on
6764 AC_SUBST(DEVELOPER_CFLAGS)
6765 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6766     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6769 # Stuff the smbd-only libraries at the end of the smbd link
6770 # path (if we have them).
6771 SMBD_LIBS="$samba_dmapi_libs"
6772 AC_SUBST(SMBD_LIBS)
6774 CFLAGS="${CFLAGS} \$(FLAGS)"
6775 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6777 # If we had to expand the includes, make tsure the output file is moved back
6778 AC_OUTPUT_COMMANDS([
6779 if test -f Makefile-noincludes -a ! -f Makefile -a ! -h Makefile ; then
6780         ln -s Makefile-noincludes Makefile
6784 AC_SUBST(MAKEFILE)
6785 if test x$samba_cv_gnu_make = xyes; then
6786         MAKEFILE=Makefile
6787 else
6788         # When we don't have GNU Make, generate a copy of Makefile.in 
6789         # that doesn't have the "include " statements but just includes 
6790         # the files verbatim.
6791         MAKEFILE=Makefile-noincludes
6792         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6794 AC_OUTPUT($MAKEFILE
6795           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6796           lib/netapi/examples/Makefile
6797           lib/netapi/tests/Makefile
6798           pkgconfig/smbclient.pc
6799           pkgconfig/wbclient.pc
6800           pkgconfig/netapi.pc
6801           pkgconfig/smbsharemodes.pc
6802           ../examples/libsmbclient/Makefile.internal
6803           )
6805 #################################################
6806 # Print very concise instructions on building/use
6807 if test "x$enable_dmalloc" = xyes
6808 then
6809         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6810         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])