s3:configure: search fdatasync also in librt
[Samba/ekacnet.git] / source3 / configure.in
blob050c16a0248270a02fa49d9dc282d53681290b71
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 # Probe the gcc version for extra CFLAGS. We always stash these in
128 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
129 # Makefile edit, avoiding the need to re-run configure.
130 if test x"$ac_cv_prog_gcc" = x"yes" ; then
131         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
132         # Add -Wdeclaration-after-statement if compiler supports it
133         AC_CACHE_CHECK(
134           [that the C compiler understands -Wdeclaration-after-statement],
135           samba_cv_HAVE_Wdeclaration_after_statement, [
136           AC_TRY_RUN_STRICT([
137             int main(void)
138             {
139                 return 0;
140             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
141             samba_cv_HAVE_Wdeclaration_after_statement=yes,
142             samba_cv_HAVE_Wdeclaration_after_statement=no,
143             samba_cv_HAVE_Wdeclaration_after_statement=cross)
144        ])
146         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
147             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
148         fi
150         #-Werror-implicit-function-declaration
151         AC_CACHE_CHECK(
152           [that the C compiler understands -Werror-implicit-function-declaration],
153           samba_cv_HAVE_Werror_implicit_function_declaration, [
154           AC_TRY_RUN_STRICT([
155             int main(void)
156             {
157                 return 0;
158             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
159             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
160             samba_cv_HAVE_Werror_implicit_function_declaration=no,
161             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
162        ])
163        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
164             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
165        fi
167         # krb5developer is like developer, except we don't get
168         # -Wstrict-prototypes.
169        if test x"$krb5_developer" != x"$yes" ; then
170             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
171        fi
173        if test x"$picky_developer" = x"yes"; then
174             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
175        fi
178 #################################################
179 # check for a shared memory profiling support
180 AC_MSG_CHECKING(whether to use profiling)
181 AC_ARG_WITH(profiling-data,
182 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
183 [ case "$withval" in
184   yes)
185     AC_MSG_RESULT(yes)
186     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
187     samba_cv_WITH_PROFILE=yes
188     ;;
189   *)
190     AC_MSG_RESULT(no)
191     samba_cv_WITH_PROFILE=no
192     ;;
193   esac ],
194   AC_MSG_RESULT(no)
197 dnl Checks for programs.
198 merged_build_possible=yes
200 AC_PROG_INSTALL
201 AC_PROG_AWK
202 # Check for GNU make
203 m4_include(../m4/check_make.m4)
204 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
206 # Check for perl
207 m4_include(../m4/check_perl.m4)
208 AC_SAMBA_PERL([true], [merged_build_possible=no])
210 AC_CHECK_TOOL(AR, ar)
212 dnl Check if we (actually our C compiler!) use GNU ld
213 AC_PROG_LD_GNU
215 dnl Certain versions of GNU ld the default is not to have the
216 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
217 dnl warnings when building modules.
218 if test "$ac_cv_prog_gnu_ld" = "yes"; then
219         ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>/dev/null | head -1`
220         AC_MSG_CHECKING(GNU ld release date)
221         changequote(,)dnl
222         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'`
223         changequote([,])dnl
224         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
225         if test -n "$ac_cv_gnu_ld_date"; then
226         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
227                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
228         fi
229         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
230                 ac_cv_gnu_ld_version_script=yes
231         fi
232         else
233            AC_MSG_CHECKING(GNU ld release version)
234            changequote(,)dnl
235            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'`
236            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
237            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
238            changequote([,])dnl
239            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
240            AC_MSG_CHECKING(GNU ld release version major)
241            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
242            AC_MSG_CHECKING(GNU ld release version minor)
243            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
244            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
245              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
246            fi
247            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
248              ac_cv_gnu_ld_version_script=yes
249            fi
250         fi
253 dnl look for executable suffix
254 AC_EXEEXT
256 dnl Check if C compiler understands -c and -o at the same time
257 AC_PROG_CC_C_O
258 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
259       BROKEN_CC=
260 else
261       BROKEN_CC=#
263 AC_SUBST(BROKEN_CC)
265 dnl Check if the C compiler understands -Werror
266 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
267  AC_TRY_RUN_STRICT([
268   int main(void)
269   {
270         return 0;
271   }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
272   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
273 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
274    Werror_FLAGS="-Werror"
275 else
276 dnl Check if the C compiler understands -w2
277 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
278  AC_TRY_RUN_STRICT([
279   int main(void)
280   {
281         return 0;
282   }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
283   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
284 if test x"$samba_cv_HAVE_w2" = x"yes"; then
285    Werror_FLAGS="-w2"
286 else
287 dnl Check if the C compiler understands -errwarn
288 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
289   AC_TRY_RUN_STRICT([
290    int main(void)
291    {
292         return 0;
293    }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
294    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
295 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
296    Werror_FLAGS="-errwarn=%all"
301 ############################################
302 # check if the compiler can handle negative enum values
303 # and don't truncate the values to INT_MAX
304 # a runtime test is needed here
305 AC_SUBST(PIDL_ARGS)
306 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
307     AC_TRY_RUN(
309         #include <stdio.h>
310         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
311         int main(void) {
312                 enum negative_values v1 = NEGATIVE_VALUE;
313                 unsigned v2 = NEGATIVE_VALUE;
315                 if (v1 != 0xFFFFFFFF) {
316                         printf("%u != 0xFFFFFFFF\n", v1);
317                         return 1;
318                 }
319                 if (v2 != 0xFFFFFFFF) {
320                         printf("%u != 0xFFFFFFFF\n", v2);
321                         return 1;
322                 }
324                 return 0;
325         }
327         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
328 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
329         AC_MSG_WARN([using --uint-enums for pidl])
330         PIDL_ARGS="$PIDL_ARGS --uint-enums"
333 dnl Figure out the flags to support named structure initializers
335 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
337 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
338 AC_MSG_CHECKING(uname -s)
339 AC_MSG_RESULT(${UNAME_S})
341 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
342 AC_MSG_CHECKING(uname -r)
343 AC_MSG_RESULT(${UNAME_R})
345 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
346 AC_MSG_CHECKING(uname -m)
347 AC_MSG_RESULT(${UNAME_M})
349 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
350 AC_MSG_CHECKING(uname -p)
351 AC_MSG_RESULT(${UNAME_P})
353 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
354 AC_MSG_CHECKING(uname -i)
355 AC_MSG_RESULT(${UNAME_I})
357 dnl Add #include for broken IRIX header files
358   case "$host_os" in
359         *irix6*)
360                 #TODO add to libreplace
361                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
362                         dnl Fix sensible defaults for MIPSPro compilers. The
363                         dnl error numbers are valid for the 7.3 compilers,
364                         dnl hopefully also valid for the 7.4 series.
365                         dnl
366                         dnl Bugzilla 3801. Force an error on warning 1035
367                         dnl so we don't incorrectly detect stdint.h. This
368                         dnl warning is emitted for #error directives.
369                         CFLAGS="$CFLAGS -diag_error 1035"
370                         dnl 1209: Controlling expression is constant
371                         dnl 1174: Function foo declared but never referenced
372                         dnl 3201: Parameter foo was never referenced
373                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
374                 fi
375         ;;
376 esac
378 DYNEXP=
379 AC_SUBST(DYNEXP)
380 LDSHFLAGS_Z_DEFS=
381 AC_SUBST(LDSHFLAGS_Z_DEFS)
382 LDSHFLAGS_Z_NODEFS=
383 AC_SUBST(LDSHFLAGS_Z_NODEFS)
385 dnl Add modules that have to be built by default here
386 dnl These have to be built static:
387 default_static_modules=""
388 default_static_modules="$default_static_modules pdb_smbpasswd"
389 default_static_modules="$default_static_modules pdb_tdbsam"
390 default_static_modules="$default_static_modules pdb_wbc_sam"
391 default_static_modules="$default_static_modules rpc_lsarpc"
392 default_static_modules="$default_static_modules rpc_samr"
393 default_static_modules="$default_static_modules rpc_winreg"
394 default_static_modules="$default_static_modules rpc_initshutdown"
395 default_static_modules="$default_static_modules rpc_dssetup"
396 default_static_modules="$default_static_modules rpc_wkssvc"
397 default_static_modules="$default_static_modules rpc_svcctl"
398 default_static_modules="$default_static_modules rpc_ntsvcs"
399 default_static_modules="$default_static_modules rpc_netlogon"
400 default_static_modules="$default_static_modules rpc_netdfs"
401 default_static_modules="$default_static_modules rpc_srvsvc"
402 default_static_modules="$default_static_modules rpc_spoolss"
403 default_static_modules="$default_static_modules rpc_eventlog"
404 default_static_modules="$default_static_modules auth_sam"
405 default_static_modules="$default_static_modules auth_unix"
406 default_static_modules="$default_static_modules auth_winbind"
407 default_static_modules="$default_static_modules auth_wbc"
408 default_static_modules="$default_static_modules auth_server"
409 default_static_modules="$default_static_modules auth_domain"
410 default_static_modules="$default_static_modules auth_builtin"
411 default_static_modules="$default_static_modules auth_netlogond"
412 default_static_modules="$default_static_modules vfs_default"
413 default_static_modules="$default_static_modules nss_info_template"
415 dnl These are preferably build shared, and static if dlopen() is not available
416 default_shared_modules=""
417 default_shared_modules="$default_shared_modules vfs_recycle"
418 default_shared_modules="$default_shared_modules vfs_audit"
419 default_shared_modules="$default_shared_modules vfs_extd_audit"
420 default_shared_modules="$default_shared_modules vfs_full_audit"
421 default_shared_modules="$default_shared_modules vfs_netatalk"
422 default_shared_modules="$default_shared_modules vfs_fake_perms"
423 default_shared_modules="$default_shared_modules vfs_default_quota"
424 default_shared_modules="$default_shared_modules vfs_readonly"
425 default_shared_modules="$default_shared_modules vfs_cap"
426 default_shared_modules="$default_shared_modules vfs_expand_msdfs"
427 default_shared_modules="$default_shared_modules vfs_shadow_copy"
428 default_shared_modules="$default_shared_modules vfs_shadow_copy2"
429 default_shared_modules="$default_shared_modules charset_CP850"
430 default_shared_modules="$default_shared_modules charset_CP437"
431 default_shared_modules="$default_shared_modules auth_script"
432 default_shared_modules="$default_shared_modules vfs_readahead"
433 default_shared_modules="$default_shared_modules vfs_xattr_tdb"
434 default_shared_modules="$default_shared_modules vfs_streams_xattr"
435 default_shared_modules="$default_shared_modules vfs_streams_depot"
436 default_shared_modules="$default_shared_modules vfs_acl_xattr"
437 default_shared_modules="$default_shared_modules vfs_acl_tdb"
438 default_shared_modules="$default_shared_modules vfs_smb_traffic_analyzer"
439 default_shared_modules="$default_shared_modules vfs_preopen"
440 default_shared_modules="$default_shared_modules vfs_catia"
441 default_shared_modules="$default_shared_modules vfs_scannedonly"
442 default_shared_modules="$default_shared_modules vfs_crossrename"
444 if test "x$developer" = xyes; then
445    default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
446    default_shared_modules="$default_shared_modules charset_weird perfcount_test"
450 # Config CPPFLAG settings for strange OS's that must be set
451 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
452 # case statement; its first reference must be unconditional.
454 case "$host_os" in
455     *hpux*)
457 # Defines needed for HPUX support.
458 # HPUX has bigcrypt but (sometimes?) doesn't use it for
459 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
461       case `uname -r` in
462                 *9*|*10*|*11)
463                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
464                 ;;
465       esac
466       ;;
469 # CRAY Unicos has broken const handling
470        *unicos*)
471           AC_MSG_RESULT([disabling const])
472           CPPFLAGS="$CPPFLAGS -Dconst="
473           ;;
474         
476 # AIX4.x doesn't even admit to having large
477 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
479     *aix4*)
480           AC_MSG_RESULT([enabling large file support])
481       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
482           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
483       ;;
485 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
486 # to the existance of large files..
487 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
488 # recommendations on large file support, however it makes the
489 # compile work using gcc 2.7 and 2.8, whereas using the Sun
490 # recommendation makes the compile fail on gcc2.7. JRA.
492 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
494         *solaris*)
495                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
496                 case `uname -r` in
497                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
498                                 AC_MSG_RESULT([no large file support])
499                                 ;;
500                         5.*)
501                         AC_MSG_RESULT([enabling large file support])
502                         if test "$ac_cv_prog_gcc" = yes; then
503                                 ${CC-cc} -v >conftest.c 2>&1
504                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
505                                 rm -fr conftest.c
506                                 case "$ac_cv_gcc_compiler_version_number" in
507                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
508                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
509                                                 LDFLAGS="$LDFLAGS -lthread"
510                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
511                                                 ;;
512                                         *)
513                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
514                                                 LDFLAGS="$LDFLAGS -lthread"
515                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
516                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
517                                                 ;;
518                                 esac
519                         else
520                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
521                                 LDFLAGS="$LDFLAGS -lthread"
522                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
523                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
524                         fi
525                         ;;
526                 esac
527                 ;;
529 # IRIX uses SYSV printing.  Make sure to set that here
531         *irix*)
532                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
533                 ;;
534         *freebsd*|*dragonfly*)
535                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
536                 ;;
538 # VOS may need to have POSIX support and System V compatibility enabled.
540     *vos*)
541     case "$CPPFLAGS" in
542           *-D_POSIX_C_SOURCE*)
543                 ;;
544           *)
545                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
546                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
547                 ;;
548     esac
549     case "$CPPFLAGS" in
550           *-D_SYSV*|*-D_SVID_SOURCE*)
551                 ;;
552           *)
553                 CPPFLAGS="$CPPFLAGS -D_SYSV"
554                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
555     esac
556     ;;
558 # Tests needed for SINIX large file support.
560     *sysv4*)
561       if test $host = mips-sni-sysv4 ; then
562         AC_MSG_CHECKING([for LFS support])
563         old_CPPFLAGS="$CPPFLAGS"
564         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
565         AC_TRY_RUN([
566 #include <unistd.h>
567 main () {
568 #if _LFS64_LARGEFILE == 1
569 exit(0);
570 #else
571 exit(1);
572 #endif
573 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
574         CPPFLAGS="$old_CPPFLAGS"
575         if test x$SINIX_LFS_SUPPORT = xyes ; then
576           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
577                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
578           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
579           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
580           LIBS="`getconf LFS64_LIBS` $LIBS"
581         fi
582       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
583       fi
584     ;;
586 # Systems with LFS support.
588     gnu* | k*bsd*-gnu | kopensolaris*-gnu)
589         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
590         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
591         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
592         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
593         ;;
595 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
597     *linux*)
598         AC_MSG_CHECKING([for LFS support])
599         old_CPPFLAGS="$CPPFLAGS"
600         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
601        AC_TRY_RUN([
602 #include <unistd.h>
603 #include <sys/utsname.h>
604 #include <string.h>
605 #include <stdlib.h>
606 main() {
607 #if _LFS64_LARGEFILE == 1
608        struct utsname uts;
609        char *release;
610        int major, minor;
612        /* Ensure this is glibc 2.2 or higher */
613 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
614        int libc_major = __GLIBC__;
615        int libc_minor = __GLIBC_MINOR__;
617        if (libc_major < 2)
618               exit(1);
619        if (libc_minor < 2)
620               exit(1);
621 #endif
623        /* Ensure this is kernel 2.4 or higher */
625        uname(&uts);
626        release = strdup(uts.release);
627        major = atoi(strsep(&release, "."));
628        minor = atoi(strsep(&release, "."));
630        if (major > 2 || (major == 2 && minor > 3))
631                exit(0);
632        exit(1);
633 #else
634        exit(1);
635 #endif
637 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
638         CPPFLAGS="$old_CPPFLAGS"
639         if test x$LINUX_LFS_SUPPORT = xyes ; then
640                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
641                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
642                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
643                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
644         fi
645         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
646         ;;
649 # MacOS X is the *only* system that uses compose character in utf8. This
650 # is so horribly broken....
652     *darwin*)
653         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
655 # Add a system specific charset module.
656         default_shared_modules="$default_shared_modules charset_macosxfs"
658         ;;
659     *hurd*)
660         AC_MSG_CHECKING([for LFS support])
661         old_CPPFLAGS="$CPPFLAGS"
662         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
663         AC_TRY_RUN([
664 #include <unistd.h>
665 main () {
666 #if _LFS64_LARGEFILE == 1
667 exit(0);
668 #else
669 exit(1);
670 #endif
671 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
672         CPPFLAGS="$old_CPPFLAGS"
673         if test x$GLIBC_LFS_SUPPORT = xyes ; then
674           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
675                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
676           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
677         fi
678       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
679     ;;
680     *qnx*)
681         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
682         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
683         ;;
685 esac
687 SAVE_CPPFLAGS="${CPPFLAGS}"
688 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
690 AC_LIBREPLACE_BROKEN_CHECKS
691 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
692 AC_LIBREPLACE_NETWORK_CHECKS
694 CPPFLAGS="${SAVE_CPPFLAGS}"
696 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
698 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
699 AC_SUBST(LIBREPLACE_OBJS)
701 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
702 AC_SUBST(LIBREPLACE_LIBS)
705 # add -ldl to the global LIBS
706 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
707 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
710 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
711 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
712 AC_CHECK_HEADERS(limits.h float.h libintl.h)
713 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
714 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)
715 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
716 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
717 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
718 AC_CHECK_HEADERS(sys/sysmacros.h)
719 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
720 AC_CHECK_HEADERS(langinfo.h locale.h)
721 AC_CHECK_HEADERS(xfs/libxfs.h)
722 AC_CHECK_HEADERS(netgroup.h)
724 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
725 #if HAVE_RPC_RPC_H
726 #include <rpc/rpc.h>
727 #endif
730 ## These fail to compile on IRIX so just check for their presence
731 AC_CHECK_HEADERS(sys/mode.h,,,)
733 # Look for Darwin headers
734 old_CPPFLAGS="$CPPFLAGS"
735 CPPFLAGS="-Iinclude $CPPFLAGS"
736 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
737 CPPFLAGS="$old_CPPFLAGS"
739 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
740 # subdirectory of headers.
741 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
744 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
745 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
747 case "$host_os" in
748     *hpux*)
749                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
750                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
751                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
752                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
753                 fi
754         ;;
755 esac
756 AC_CHECK_HEADERS(shadow.h)
757 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
758 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
760 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
761 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
763 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
765 # For experimental utmp support (lastlog on some BSD-like systems)
766 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
768 AC_CHECK_SIZEOF(int,cross)
769 AC_CHECK_SIZEOF(long,cross)
770 AC_CHECK_SIZEOF(long long,cross)
771 AC_CHECK_SIZEOF(short,cross)
773 AC_C_CONST
774 AC_C_INLINE
775 AC_C_BIGENDIAN
776 AC_C_CHAR_UNSIGNED
778 AC_TYPE_SIGNAL
779 AC_TYPE_UID_T
780 AC_TYPE_MODE_T
781 AC_TYPE_OFF_T
782 AC_TYPE_SIZE_T
783 AC_TYPE_PID_T
784 AC_STRUCT_ST_RDEV
785 AC_DIRENT_D_OFF
786 AC_CHECK_TYPE(ssize_t, int)
787 AC_CHECK_TYPE(wchar_t, unsigned short)
789 ############################################
790 # for cups support we need libcups, and a handful of header files
792 AC_ARG_ENABLE(cups,
793 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
795 if test x$enable_cups != xno; then
796         AC_PATH_PROG(CUPS_CONFIG, cups-config)
798         if test "x$CUPS_CONFIG" != x; then
800                 ac_save_CFLAGS=$CFLAGS
801                 ac_save_LDFLAGS=$LDFLAGS
802                 ac_save_PRINT_LIBS=$PRINT_LIBS
803                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
804                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
805                 PRINT_LIBS="$PRINT_LIBS -lcups"
806                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
807                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
808                         x"$ac_cv_header_cups_language_h" = xyes; then
809                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
810                         samba_cv_HAVE_CUPS=yes
811                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
812                 else
813                         AC_MSG_WARN([cups-config around but cups-devel not installed])
814                         CFLAGS=$ac_save_CFLAGS
815                         LDFLAGS=$ac_save_LDFLAGS
816                         PRINT_LIBS=$ac_save_PRINT_LIBS
817                 fi
819         elif test x"$enable_cups" = x"yes"; then
820                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
821         fi
824 AC_ARG_ENABLE(iprint,
825 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
827 if test x$enable_iprint != xno; then
828         if test x"$samba_cv_HAVE_CUPS" = xyes; then
829                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
830         elif test x"$enable_iprint" = x"yes"; then
831                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
832         fi
835 ############################################
836 # check if the compiler will optimize out function calls
837 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
838     AC_TRY_LINK([
839 #include <stdio.h>],
841                 if (0) {
842                    this_function_does_not_exist();
843                 } else {
844                   return 1;
845                 }
848         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
849 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
850    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
853 #############################################
854 # check for fd passing struct via msg_control
855 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
856     AC_TRY_COMPILE([
857 #include <sys/types.h>
858 #include <stdlib.h>
859 #include <stddef.h>
860 #include <sys/socket.h>
861 #include <sys/un.h>],
863         struct msghdr msg;
864         union {
865               struct cmsghdr cm;
866               char control[CMSG_SPACE(sizeof(int))];
867         } control_un;
868         msg.msg_control = control_un.control;
869         msg.msg_controllen = sizeof(control_un.control);
871         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
872 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
873    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
874              [If we can use msg_control for passing file descriptors])
877 #############################################
878 # check for fd passing struct via msg_acctrights
879 AC_CACHE_CHECK([for fd passing via msg_acctrights],
880                 samba_cv_msghdr_msg_acctrights, [
881     AC_TRY_COMPILE([
882 #include <sys/types.h>
883 #include <stdlib.h>
884 #include <stddef.h>
885 #include <sys/socket.h>
886 #include <sys/un.h>],
888         struct msghdr msg;
889         int fd;
890         msg.msg_acctrights = (caddr_t) &fd;
891         msg.msg_acctrightslen = sizeof(fd);
893         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
894 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
895    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
896              [If we can use msg_acctrights for passing file descriptors])
899 AC_CHECK_FUNCS(dirfd)
900 if test x"$ac_cv_func_dirfd" = x"yes"; then
901         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
904 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
905     AC_TRY_COMPILE([
906 #include <sys/types.h>
907 #if STDC_HEADERS
908 #include <stdlib.h>
909 #include <stddef.h>
910 #endif
911 #include <signal.h>],[struct sigevent s;],
912         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
913 if test x"$samba_cv_struct_sigevent" = x"yes"; then
914    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
915    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
916         [#include <signal.h>])
919 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
920     AC_TRY_COMPILE([
921 #include <sys/types.h>
922 #if STDC_HEADERS
923 #include <stdlib.h>
924 #include <stddef.h>
925 #endif
926 #if TIME_WITH_SYS_TIME
927 # include <sys/time.h>
928 # include <time.h>
929 #else
930 # if HAVE_SYS_TIME_H
931 #  include <sys/time.h>
932 # else
933 #  include <time.h>
934 # endif
935 #endif
936 ],[struct timespec ts;],
937         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
938 if test x"$samba_cv_struct_timespec" = x"yes"; then
939    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
942 # and glibc has setresuid under linux but the function does
943 # nothing until kernel 2.1.44! very dumb.
944 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
945     AC_TRY_RUN([#include <errno.h>
946 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
947         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
948 if test x"$samba_cv_have_setresuid" = x"yes"; then
949     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
952 # Do the same check for setresguid...
954 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
955     AC_TRY_RUN([#include <unistd.h>
956 #include <errno.h>
957 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
958         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
959 if test x"$samba_cv_have_setresgid" = x"yes"; then
960     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
963 AC_FUNC_MEMCMP
965 ###############################################
966 # Readline included by default unless explicitly asked not to
967 test "${with_readline+set}" != "set" && with_readline=yes
969 # test for where we get readline() from
970 AC_MSG_CHECKING(whether to use readline)
971 AC_ARG_WITH(readline,
972 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
973 [  case "$with_readline" in
974   yes)
975     AC_MSG_RESULT(yes)
977     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
978     AC_CHECK_HEADERS(readline/history.h)
980     AC_CHECK_HEADERS(readline.h readline/readline.h,[
981       for termlib in ncurses curses termcap terminfo termlib tinfo; do
982        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
983       done
984       AC_CHECK_LIB(readline, rl_callback_handler_install,
985        [TERMLIBS="-lreadline $TERMLIBS"
986        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
987        break], [TERMLIBS=], $TERMLIBS)])
988     ;;
989   no)
990     AC_MSG_RESULT(no)
991     ;;
992   *)
993     AC_MSG_RESULT(yes)
995     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
996     # alternate readline path
997     _ldflags=${LDFLAGS}
998     _cppflags=${CPPFLAGS}
1000     # Add additional search path
1001     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1002     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1004     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1005     AC_CHECK_HEADERS(readline/history.h)
1007     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1008       for termlib in ncurses curses termcap terminfo termlib; do
1009        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1010       done
1011       AC_CHECK_LIB(readline, rl_callback_handler_install,
1012        [TERMLDFLAGS="-L$with_readline/lib"
1013        TERMCPPFLAGS="-I$with_readline/include"
1014        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1015        TERMLIBS="-lreadline $TERMLIBS"
1016        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1017        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1019     LDFLAGS=$_ldflags
1020     ;;
1021   esac],
1022   AC_MSG_RESULT(no)
1024 AC_SUBST(TERMLIBS)
1025 AC_SUBST(TERMLDFLAGS)
1027 # The readline API changed slightly from readline3 to readline4, so
1028 # code will generate warnings on one of them unless we have a few
1029 # special cases.
1030 AC_CHECK_LIB(readline, rl_completion_matches,
1031              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1032                         [Do we have rl_completion_matches?])],
1033              [],
1034              [$TERMLIBS])
1036 # not all readline libs have rl_event_hook or history_list
1037 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1038 AC_CHECK_LIB(readline, history_list,
1039              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1040              [],
1041              [$TERMLIBS])
1043 ###############################################
1044 # test for where we get yp_get_default_domain() from
1045 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1046 AC_CHECK_FUNCS(yp_get_default_domain)
1048 # Check if we have execl, if not we need to compile smbrun.
1049 AC_CHECK_FUNCS(execl)
1050 if test x"$ac_cv_func_execl" = x"no"; then
1051     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1054 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1055 AC_CHECK_FUNCS(strtol)
1056 AC_CHECK_FUNCS(strchr chflags)
1057 AC_CHECK_FUNCS(getrlimit fsync setpgid)
1058 AC_CHECK_FUNCS(fdatasync,,[AC_CHECK_LIB_EXT(rt, LIBS, fdatasync)])
1059 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1060 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1061 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1062 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1063 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1064 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1065 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1066 AC_CHECK_FUNCS(getpwent_r)
1067 AC_CHECK_FUNCS(getdents64)
1068 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1069 AC_CHECK_FUNCS(syslog vsyslog timegm)
1070 AC_CHECK_FUNCS(setlocale nl_langinfo)
1071 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1072 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
1073 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1074 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1075 AC_CHECK_HEADERS(sys/mman.h)
1076 # setbuffer, shmget, shm_open are needed for smbtorture
1077 AC_CHECK_FUNCS(shmget shm_open)
1078 AC_CHECK_FUNCS(gettext dgettext)
1079 AC_CHECK_FUNCS(bindtextdomain textdomain)
1080 AC_CHECK_FUNCS(strupr)
1082 # Find a method of generating a stack trace
1083 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1084 # libexecinfo provides backtrace_symbols on FreeBSD
1085 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1086 AC_CHECK_FUNCS(backtrace_symbols)
1087 AC_CHECK_LIB(exc, trace_back_stack)
1089 # check for sysctlbyname for BSD systems
1090 AC_CHECK_FUNCS(sysctlbyname)
1092 #############################
1093 # check if building with gpfs
1094 AC_CHECK_HEADERS(gpfs_gpl.h)
1095 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1096     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1097     default_shared_modules="$default_shared_modules vfs_gpfs"
1100 #############################################
1101 # check if building on Isilon OneFS
1102 printf "%s" "checking for Isilon OneFS... "
1103 save_LIBS="$LIBS"
1104 LIBS="$LIBS -lisi_version"
1105 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1106           [get_isilon_copyright()],
1107           samba_cv_HAVE_ONEFS=yes,
1108           samba_cv_HAVE_ONEFS=no)
1109 echo $samba_cv_HAVE_ONEFS
1110 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1111     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1112     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1113     default_static_modules="$default_static_modules"
1114     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1115     # Need to also add general libs for oplocks support
1116     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1118 AC_SUBST(ONEFS_LIBS)
1119 LIBS="$save_LIBS"
1121 # Note that all the libunwind symbols in the API are defined to internal
1122 # platform-specific version, so we must include libunwind.h before checking
1123 # any of them.
1124 AC_MSG_CHECKING([for libunwind])
1125 save_LIBS=$LIBS
1127 UNWIND_ARCH="unknown"
1128 if test x"$UNAME_I" != x"unknown"; then
1129         UNWIND_ARCH="$UNAME_I"
1130 elif test x"$UNAME_M" != x"unknown"; then
1131         UNWIND_ARCH="$UNAME_M"
1132 elif test x"$UNAME_P" != x"unknown"; then
1133         UNWIND_ARCH="$UNAME_P"
1136 case "$UNWIND_ARCH" in
1137         unknown)
1138                 # This probably won't link without
1139                 # the platform-specific libunwind.
1140                 LIBS="$LIBS -lunwind"
1141                 ;;
1142         i386|i586|i686)
1143                 # Add the platform-specific libunwind module.
1144                 LIBS="$LIBS -lunwind -lunwind-x86"
1145                 ;;
1146         *)
1147                 # Add the platform-specific libunwind module.
1148                 # based on uname -i, uname -m or uname -p
1149                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1150                 ;;
1151 esac
1153 AC_TRY_LINK(
1154     [
1155 #ifdef HAVE_LIBUNWIND_H
1156 #include <libunwind.h>
1157 #endif
1158     ],
1159     [
1160         unw_context_t ctx; unw_cursor_t cur;
1161         char buf[256]; unw_word_t off;
1162         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1163         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1164     ],
1165     [
1166         AC_MSG_RESULT(yes)
1167         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1169         # If we have libunwind, test whether we also have libunwind-ptrace
1170         # which would let us unwind arbitrary processes.
1171         save_LIBS=$LIBS
1172         AC_CHECK_HEADERS(libunwind-ptrace.h)
1173         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1174             [
1175                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1176                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1177                     [Whether libunwind-ptrace.a is available.])
1178             ],
1179             [ LIBUNWIND_PTRACE="" ])
1181         LIBS=$save_LIBS
1182     ],
1183     [
1184         AC_MSG_RESULT(no)
1185         LIBS=$save_LIBS
1186     ])
1188 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1189 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1190     AC_CHECK_HEADERS(sys/ptrace.h)
1191     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1192     AC_TRY_LINK(
1193             [
1194 #if HAVE_SYS_TYPES_H
1195 #include <sys/types.h>
1196 #endif
1197 #if HAVE_SYS_PTRACE_H
1198 #include <sys/ptrace.h>
1199 #endif
1200             ],
1201             [
1202                 pid_t me = (pid_t)-1;
1203                 ptrace(PTRACE_ATTACH, me, 0, 0);
1204                 ptrace(PTRACE_DETACH, me, 0, 0);
1205                 return 0;
1206             ],
1207             [
1208                 AC_MSG_RESULT(yes)
1209                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1210                     [Whether the Linux ptrace(2) interface is available.])
1211             ],
1212             [
1213                 AC_MSG_RESULT(no)
1214                 LIBUNWIND_PTRACE=""
1215             ])
1218 AC_SUBST(LIBUNWIND_PTRACE)
1220 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1221 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1222 AC_CHECK_FUNCS(__getcwd _getcwd)
1223 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1224 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1225 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1226 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1227 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1228 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1229 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1230 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1231 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1232 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1233 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1234 AC_CHECK_FUNCS(prctl)
1236 AC_TRY_COMPILE([
1237 #ifdef HAVE_SYS_PRCTL_H
1238 #include <sys/prctl.h>
1239 #endif
1241 [int i; i = prtcl(0); ],
1242 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1247 case "$host_os" in
1248     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1249        # glibc <= 2.3.2 has a broken getgrouplist
1250        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1251 #include <unistd.h>
1252 #include <sys/utsname.h>
1253 main() {
1254        /* glibc up to 2.3 has a broken getgrouplist */
1255 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1256        int libc_major = __GLIBC__;
1257        int libc_minor = __GLIBC_MINOR__;
1259        if (libc_major < 2)
1260               exit(1);
1261        if ((libc_major == 2) && (libc_minor <= 3))
1262               exit(1);
1263 #endif
1264        exit(0);
1266 ], [samba_cv_linux_getgrouplist_ok=yes],
1267    [samba_cv_linux_getgrouplist_ok=no],
1268    [samba_cv_linux_getgrouplist_ok=cross])])
1269        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1270           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1271        fi
1272        ;;
1273     *)
1274        AC_CHECK_FUNCS(getgrouplist)
1275        ;;
1276 esac
1279 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1282 if test x$ac_cv_func_stat64 = xno ; then
1283   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1284   AC_TRY_LINK([
1285 #if defined(HAVE_UNISTD_H)
1286 #include <unistd.h>
1287 #endif
1288 #include <sys/stat.h>
1289 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1290   AC_MSG_RESULT([$ac_cv_func_stat64])
1291   if test x$ac_cv_func_stat64 = xyes ; then
1292     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1293   fi
1296 if test x$ac_cv_func_lstat64 = xno ; then
1297   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1298   AC_TRY_LINK([
1299 #if defined(HAVE_UNISTD_H)
1300 #include <unistd.h>
1301 #endif
1302 #include <sys/stat.h>
1303 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1304   AC_MSG_RESULT([$ac_cv_func_lstat64])
1305   if test x$ac_cv_func_lstat64 = xyes ; then
1306     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1307   fi
1310 if test x$ac_cv_func_fstat64 = xno ; then
1311   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1312   AC_TRY_LINK([
1313 #if defined(HAVE_UNISTD_H)
1314 #include <unistd.h>
1315 #endif
1316 #include <sys/stat.h>
1317 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1318   AC_MSG_RESULT([$ac_cv_func_fstat64])
1319   if test x$ac_cv_func_fstat64 = xyes ; then
1320     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1321   fi
1324 #################################################
1325 # Check whether struct stat has timestamps with sub-second resolution.
1328 samba_cv_stat_hires=no
1329 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1330         [samba_cv_stat_hires=yes])
1331 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1332         [samba_cv_stat_hires=yes])
1333 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1334         [samba_cv_stat_hires=yes])
1335 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1336         [samba_cv_stat_hires=yes])
1337 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1338         [samba_cv_stat_hires=yes])
1340 if test x"$samba_cv_stat_hires" = x"yes" ; then
1341     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1342             [whether struct stat has sub-second timestamps])
1345 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1346 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1347 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1350 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1351     [
1352         AC_TRY_COMPILE(
1353             [#include <sys/stat.h>],
1354             [
1355                 int a = UF_DOS_ARCHIVE;
1356                 int h = UF_DOS_HIDDEN;
1357                 int r = UF_DOS_RO;
1358                 int s = UF_DOS_SYSTEM;
1359                 int i = UF_DOS_NOINDEX;
1360                 int f = UF_DOS_FLAGS;
1361             ],
1362             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1363     ])
1365 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1366     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1369 #####################################
1370 # needed for SRV lookups
1371 AC_CHECK_LIB(resolv, dn_expand)
1372 AC_CHECK_LIB(resolv, _dn_expand)
1373 AC_CHECK_LIB(resolv, __dn_expand)
1376 # Check for the functions putprpwnam, set_auth_parameters,
1377 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1378 # Needed for OSF1 and HPUX.
1381 AC_LIBTESTFUNC(security, putprpwnam)
1382 AC_LIBTESTFUNC(sec, putprpwnam)
1384 AC_LIBTESTFUNC(security, set_auth_parameters)
1385 AC_LIBTESTFUNC(sec, set_auth_parameters)
1387 # UnixWare 7.x has its getspnam in -lgen
1388 AC_LIBTESTFUNC(gen, getspnam)
1390 AC_LIBTESTFUNC(security, getspnam)
1391 AC_LIBTESTFUNC(sec, getspnam)
1393 AC_LIBTESTFUNC(security, bigcrypt)
1394 AC_LIBTESTFUNC(sec, bigcrypt)
1396 AC_LIBTESTFUNC(security, getprpwnam)
1397 AC_LIBTESTFUNC(sec, getprpwnam)
1399 AC_CHECK_FUNCS(strsignal)
1401 ############################################
1402 # Check for EA implementations
1403 case "$host_os" in
1404   *osf*)
1405         AC_SEARCH_LIBS(getproplist, [proplist])
1406         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1407         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1408         AC_CHECK_FUNCS(sizeof_proplist_entry)
1409   ;;
1410   *freebsd4* | *dragonfly* )
1411         AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1412   ;;
1413   *solaris*)
1414         AC_CHECK_FUNCS(attropen)
1415   ;;
1416   *)
1417         AC_SEARCH_LIBS(getxattr, [attr])
1418         AC_CHECK_FUNCS(getxattr,[
1419                 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1420                 ])
1421         AC_CHECK_FUNCS(getea,[
1422                 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1423                 ])
1424         AC_CHECK_FUNCS(attr_get,[
1425                 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1426                 ])
1427         AC_CHECK_FUNCS(extattr_delete_file,[
1428                 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)
1429                 ])
1430   ;;
1431 esac
1433 ########################################################
1434 # Do xattr functions take additional options like on Darwin?
1435 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1436         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1437                 old_LIBS=$LIBS
1438                 LIBS="$LIBS $ACL_LIBS"
1439                 AC_TRY_COMPILE([
1440                         #include <sys/types.h>
1441                         #if HAVE_ATTR_XATTR_H
1442                         #include <attr/xattr.h>
1443                         #elif HAVE_SYS_XATTR_H
1444                         #include <sys/xattr.h>
1445                         #endif
1446                 ],[
1447                         getxattr(0, 0, 0, 0, 0, 0);
1448                 ],
1449                 [smb_attr_cv_xattr_add_opt=yes],
1450                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1451         ])
1452         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1453                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1454         fi
1457 AC_DISABLE_STATIC
1458 AC_ENABLE_SHARED
1460 # Set defaults
1461 PIE_CFLAGS=""
1462 PIE_LDFLAGS=""
1463 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1465 if test "x$enable_pie" != xno
1466 then
1467         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1468         [
1469                 cat > conftest.c <<EOF
1470 int foo;
1471 main () { return 0;}
1473                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1474                 then
1475                         samba_cv_fpie=yes
1476                 else
1477                         samba_cv_fpie=no
1478                 fi
1479                 rm -f conftest*
1480         ])
1481         if test x"${samba_cv_fpie}" = x"yes"
1482         then
1483                 PIE_CFLAGS="-fPIE"
1484                 PIE_LDFLAGS="-pie"
1485         fi
1488 # Set defaults
1489 RELRO_LDFLAGS=""
1490 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1492 if test "x$enable_relro" != xno
1493 then
1494         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1495         [
1496                 cat > conftest.c <<EOF
1497 int foo;
1498 main () { return 0;}
1500                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1501                 then
1502                         samba_cv_relro=yes
1503                 else
1504                         samba_cv_relro=no
1505                 fi
1506                 rm -f conftest*
1507         ])
1508         if test x"${samba_cv_relro}" = x"yes"
1509         then
1510                 RELRO_LDFLAGS="-Wl,-z,relro"
1511         fi
1514 # Set defaults
1515 SYMSEXT="syms"
1516 AC_SUBST(SYMSEXT)
1518 # Assume non-shared by default and override below
1519 BLDSHARED="false"
1521 # these are the defaults, good for lots of systems
1522 HOST_OS="$host_os"
1523 LDSHFLAGS="-shared"
1524 MODULE_EXPORTS=""
1525 SONAMEFLAG="#"
1526 SHLD="\${CC} \${CFLAGS}"
1527 PICFLAG="${PIE_CFLAGS}"
1528 SHLIBEXT="so"
1529 DSO_EXPORTS=""
1531 # this bit needs to be modified for each OS that supports share libs
1532 # You need to specify how to create a shared library and
1533   # how to compile C code to produce PIC object files
1535   AC_MSG_CHECKING([ability to build shared libraries])
1537   # and these are for particular systems
1538   case "$host_os" in
1539                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1540                         case "$host_os" in
1541                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1542                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1543                         esac
1544                         BLDSHARED="true"
1545                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1546                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1547                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1548                         fi
1549                         DYNEXP="-Wl,--export-dynamic"
1550                         PICFLAG="-fPIC"
1551                         SONAMEFLAG="-Wl,-soname="
1552                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1553                         ;;
1554                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1555                         BLDSHARED="true"
1556                         if test "${GCC}" = "yes"; then
1557                                 PICFLAG="-fPIC"
1558                                 SONAMEFLAG="-Wl,-soname="
1559                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1560                                         DYNEXP="-Wl,-E"
1561                                 fi
1562                                 # TODO: need to add $CFLAGS here for explicit 64-bit builds?
1563                                 LDSHFLAGS="-shared"
1564                         else
1565                                 PICFLAG="-KPIC"
1566                                 ## ${CFLAGS} added for building 64-bit shared
1567                                 ## libs using Sun's Compiler
1568                                 LDSHFLAGS="-G \${CFLAGS}"
1569                         fi
1570                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1571                                 SONAMEFLAG="-Wl,-soname="
1572                         else
1573                                 SONAMEFLAG="-Wl,-h,"
1574                         fi
1575                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1576                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1577                         ;;
1578                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1579                         BLDSHARED="true"
1580                         LDSHFLAGS="-G"
1581                         SONAMEFLAG="-Wl,-h,"
1582                         PICFLAG="-KPIC"   # Is this correct for SunOS
1583                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1584                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1585                         ;;
1586                 *netbsd* | *freebsd* | *dragonfly* )
1587                         BLDSHARED="true"
1588                         LDSHFLAGS="-shared"
1589                         DYNEXP="-Wl,--export-dynamic"
1590                         SONAMEFLAG="-Wl,-soname,"
1591                         PICFLAG="-fPIC -DPIC"
1592                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1593                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1594                         ;;
1595                 *openbsd*)  BLDSHARED="true"
1596                         LDSHFLAGS="-shared"
1597                         DYNEXP="-Wl,-Bdynamic"
1598                         SONAMEFLAG="-Wl,-soname,"
1599                         PICFLAG="-fPIC"
1600                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1601                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1602                         ;;
1603                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1604                         case "$host_os" in
1605                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1606                         ;;
1607                         esac
1608                         BLDSHARED="true"
1609                         LDSHFLAGS="-set_version sgi1.0 -shared"
1610                         SONAMEFLAG="-soname "
1611                         SHLD="\${LD}"
1612                         if test "${GCC}" = "yes"; then
1613                                 PICFLAG="-fPIC"
1614                         else
1615                                 PICFLAG="-KPIC"
1616                         fi
1617                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1618                         ;;
1619                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1620                         BLDSHARED="true"
1621                         # use expfull to export underscored symbols
1622                         # add rtl to remove /lib/crt0.o warning
1623                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1624                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1625                         PICFLAG="-O2"
1626                         # as AIX code is always position independent...
1627                         # .po will just create compile warnings, use po.o:
1628                         if test "${GCC}" != "yes"; then
1629                                 ## for funky AIX compiler using strncpy()
1630                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1631                         fi
1633                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1634                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1635                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1636                         ;;
1637                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1638                         # Use special PIC flags for the native HP-UX compiler.
1639                                 BLDSHARED="true"
1640                                 SHLD="cc"
1641                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1642                                 SONAMEFLAG="-Wl,+h "
1643                                 PICFLAG="+z"
1644                         if test "${GCC}" = "yes"; then
1645                                 PICFLAG="-fPIC"
1646                         else
1647                                 PICFLAG="+z +ESnolit"
1648                         fi
1649                         if test "$host_cpu" = "ia64"; then
1650                                 SHLIBEXT="so"
1651                               PICFLAG="+z"
1652                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1653                         else
1654                                 SHLIBEXT="sl"
1655                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1656                         fi
1657                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1658                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1659                         ;;
1660                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1661                         BLDSHARED="true"
1662                         LDSHFLAGS="-shared"
1663                         SONAMEFLAG="-Wl,-soname,"
1664                         PICFLAG="-fPIC"
1665                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1666                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1667                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1668                                 saved_ldflags="$LDFLAGS"
1669                                 AC_MSG_CHECKING([if $flags works])
1670                                 LDFLAGS="$flags $saved_ldflags"
1671                                 AC_TRY_LINK([],[],
1672                                         [AC_MSG_RESULT([yes])
1673                                         LDSHFLAGS_Z_NODEFS=$flags],
1674                                         AC_MSG_RESULT([no]))
1675                                 LDFLAGS="$saved_ldflags"
1676                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1677                         done
1678                         ;;
1679                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1680                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1681                         ;;
1682                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1683                         BLDSHARED="true"
1684                         LDSHFLAGS="-shared"
1685                         SONAMEFLAG="-Wl,-soname,"
1686                         PICFLAG="-KPIC"
1687                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1688                         ;;
1689                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1690                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1691                         ;;
1692                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1693                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1694                         ;;
1695                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1696                         case "$host" in
1697                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1698                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1699                                         fi
1700                                         LDSHFLAGS="-G"
1701                                         DYNEXP="-Bexport"
1702                                 ;;
1703                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1704                         esac
1705                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1706                         ;;
1708                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1709                         if [ test "$GCC" != yes ]; then
1710                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1711                         fi
1712                         LDSHFLAGS="-G"
1713                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1714                         ;;
1715                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1716                         BLDSHARED="false"
1717                         LDSHFLAGS=""
1718                         ;;
1720                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1721                         BLDSHARED="true"
1722                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1723                         CFLAGS="$CFLAGS -fno-common"
1724                         SHLD="\${CC}"
1725                         SHLIBEXT="dylib"
1726                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1727                         SHLIBEXT="dylib"
1728                         # Since gcc doesn't fail on unrecognised options, the
1729                         # PIE test incorrectly succeeds. Darwin gcc does not
1730                         # actually support the PIE stuff.
1731                         PIE_LDFLAGS=
1732                         PIE_CFLAGS=
1733                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1734                         ;;
1736                 *)
1737                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1738                         ;;
1739   esac
1741 if test "$enable_shared" != "yes"; then
1742         BLDSHARED=false
1745 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1746         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1749 if test x"$BLDSHARED" = x"true" ; then
1750         LDFLAGS="$LDFLAGS -L./bin"
1753 AC_MSG_RESULT($BLDSHARED)
1755 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1756         saved_ldflags="$LDFLAGS"
1757         AC_MSG_CHECKING([if $flags works])
1758         LDFLAGS="$flags $saved_ldflags"
1759         AC_TRY_LINK([],[],
1760                 [AC_MSG_RESULT([yes])
1761                 LD_AS_NEEDED_FLAG=$flags
1762                 ld_as_needed_flag_found=yes],
1763                 AC_MSG_RESULT([no]))
1764         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1765         test x"$ld_as_needed_flag_found" = xyes && break
1766 done
1768 # for historical reasons almost all linkers don't complain about unresolved
1769 # symbols in shared libs. Except for the internal samba modules we want to get
1770 # errors when we produce a shared lib with unresolved symbols. On some
1771 # platforms unresolved symbols might be intended, so we might have to add
1772 # platform specific exceptions here.
1774 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1775         saved_ldflags="$LDFLAGS"
1776         AC_MSG_CHECKING([if $flags works])
1777         LDFLAGS="$flags $saved_ldflags"
1778         AC_TRY_LINK([],[],
1779         [AC_MSG_RESULT([yes])
1780         LDSHFLAGS_Z_DEFS=$flags
1781         ldshflags_z_defs_found=yes],
1782         AC_MSG_RESULT([no]))
1783         LDFLAGS=$saved_ldflags
1784         test x"$ldshflags_z_defs_found" = xyes && break
1785 done
1787 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1788 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1789 AC_MSG_CHECKING([LDFLAGS])
1790 AC_MSG_RESULT([$LDFLAGS])
1791 AC_MSG_CHECKING([DYNEXP])
1792 AC_MSG_RESULT([$DYNEXP])
1794 #######################################################
1795 # test whether building a shared library actually works
1796 if test $BLDSHARED = true; then
1798 AC_MSG_CHECKING([SHLD])
1799 AC_MSG_RESULT([$SHLD])
1800 AC_MSG_CHECKING([LDSHFLAGS])
1801 AC_MSG_RESULT([$LDSHFLAGS])
1803 AC_MSG_CHECKING([SHLIBEXT])
1804 AC_MSG_RESULT([$SHLIBEXT])
1805 AC_MSG_CHECKING([SONAMEFLAG])
1806 AC_MSG_RESULT([$SONAMEFLAG])
1808 AC_MSG_CHECKING([PICFLAG])
1809 AC_MSG_RESULT([$PICFLAG])
1811 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1812 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1814 AC_CACHE_CHECK([whether building shared libraries actually works],
1815                [ac_cv_shlib_works],[
1816    # try building a trivial shared library
1817    ac_cv_shlib_works=no
1818    # The $SHLD and $LDSHFLAGS variables may contain references to other
1819    # variables so they need to be eval'ed.
1820    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1821         shlib.o ${srcdir-.}/../tests/shlib.c && \
1822    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1823         shlib.o && ac_cv_shlib_works=yes
1824    rm -f "shlib.$SHLIBEXT" shlib.o
1827 if test $ac_cv_shlib_works = no; then
1828    BLDSHARED=false
1832 if test x"$BLDSHARED" != x"true"; then
1833         LDSHFLAGS="shared-libraries-disabled"
1834         SONAMEFLAG="shared-libraries-disabled"
1835         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1836         SHLD="shared-libraries-disabled"
1837         PICFLAG="${PIE_CFLAGS}"
1838         SHLIBEXT="shared_libraries_disabled"
1839         merged_build_possible=no
1842 AC_MSG_CHECKING([used PICFLAG])
1843 AC_MSG_RESULT([$PICFLAG])
1845 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1847 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1850 ###########################################################
1852 # Configuration of subsystems / libraries
1854 ###########################################################
1856 INSTALLLIBCMD_SH=:
1857 INSTALLLIBCMD_A=:
1858 UNINSTALLLIBCMD_SH=:
1859 UNINSTALLLIBCMD_A=:
1861 if test $BLDSHARED = true; then
1862         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1863         UNINSTALLLIBCMD_SH="rm -f"
1865 if test $enable_static = yes; then
1866         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1867         UNINSTALLLIBCMD_A="rm -f"
1870 #################################################
1871 # --disable-shared-libs
1872 # can be used to disable the internal use of shared libs altogether
1873 # (this only has an effect when building shared libs is enabled)
1875 USESHARED=false
1876 AC_SUBST(USESHARED)
1878 AC_MSG_CHECKING(whether to use shared libraries internally)
1879 AC_ARG_ENABLE([shared-libs],
1880         AS_HELP_STRING([--enable-shared-libs],
1881                 [Use shared libraries internally (default=yes)]),
1882         [enable_shared_libs=$enableval],
1883         [enable_shared_libs=yes])
1885 if test x"$enable_shared_libs" != x"no" ; then
1886         USESHARED=$BLDSHARED
1889 AC_MSG_RESULT([$USESHARED])
1891 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1892         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1895 #################################################
1896 # --with-static-libs=LIBS:
1897 #   link (internal) libs dynamically or statically?
1899 # If a subsystem is built as a library then this controls whether they are
1900 # linked into Samba targets statically or dynamically:
1902 # * If we build the shared library at all, we link dynamically by default.
1904 # * We only link statically if we don't build shared or if the library
1905 #   appears in the --with-static-libs configure option.
1907 # Example:
1908 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1909 #   of linking the dynamic variant with -ltalloc.
1911 # NOTE: This option only affects libraries that we do not only build
1912 # but that samba also links against as libraries (as opposed to linking
1913 # the plain object files. - This has to be configured in Makefile.in.
1914 # So in particular it does not harm to give invalid or unknown names here.
1917 AC_ARG_WITH([static-libs],
1918         [AS_HELP_STRING([--with-static-libs=LIBS],
1919                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1920         [AS_IF([test $withval],
1921                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1922                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1923                         eval LINK_$lib=STATIC
1924                 done], [])],
1925         [])
1928 # WORKAROUND:
1929 #   until we have organized other internal subsystems (as util, registry
1930 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1931 #   dynamically to samba programs.
1933 LINK_LIBNETAPI=STATIC
1935 LINK_LIBSMBCLIENT=STATIC
1938 #  The library versions are hardcoded here
1939 #  and filled into the LIBFOO_SOVER variable.
1941 #  TODO: for talloc and tdb (at least), these should
1942 #  be extracted from their respective source directories
1944 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1945 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1947 if test "x$enable_external_libtalloc" != xno
1948 then
1949         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1950                 [ enable_external_libtalloc=yes ],
1951                 [ if test x$enable_external_libtalloc = xyes; then
1952                         AC_MSG_ERROR([Unable to find libtalloc])
1953                   else
1954                         enable_external_libtalloc=no
1955                   fi
1956                 ])
1959 if test "x$enable_external_libtalloc" = xno
1960 then
1961         m4_include(../lib/talloc/libtalloc.m4)
1962         LINK_LIBTALLOC=STATIC
1963         SMB_LIBRARY(talloc, 2)
1964         LIBTALLOC_OBJ0=""
1965         for obj in ${TALLOC_OBJ}; do
1966                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1967         done
1968         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1969         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1970         AC_SUBST(LIBTALLOC_OBJ0)
1972         TALLOCTORT="bin/talloctort\$(EXEEXT)"
1973         AC_SUBST(TALLOCTORT)
1977 AC_ARG_ENABLE(external_libtdb,
1978         [AS_HELP_STRING([--enable-external-libtdb],
1979                 [Enable external tdb [default=auto]])],
1980                 [ enable_external_libtalloc=$enableval ],
1981                 [ enable_external_libtalloc=auto ])
1983 if test "x$enable_external_libtdb" != xno
1984 then
1985         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.2,
1986                 [ enable_external_libtdb=yes ],
1987                 [
1988                 if test x$enable_external_libtdb = xyes; then
1989                         AC_MSG_ERROR([Unable to find libtdb])
1990                 else
1991                         enable_external_libtdb=no
1992                 fi
1993                 ])
1996 AC_SUBST(LIBTDB_OBJ0)
1997 if test "x$enable_external_libtdb" = xno
1998 then
1999         m4_include(../lib/tdb/libtdb.m4)
2000         LINK_LIBTDB=STATIC
2001         SMB_LIBRARY(tdb, 1)
2002         LIBTDB_OBJ0=""
2003         for obj in ${TDB_OBJ}; do
2004                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2005         done
2006         AC_SUBST(LIBTDB_OBJ0)
2007         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2008         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2010         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2011         AC_SUBST(TDBBACKUP)
2012         TDBDUMP="bin/tdbdump\$(EXEEXT)"
2013         AC_SUBST(TDBDUMP)
2014         TDBTOOL="bin/tdbtool\$(EXEEXT)"
2015         AC_SUBST(TDBTOOL)
2016         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2017         AC_SUBST(TDBTORTURE)
2018         ac_cv_have_tdb_err_nesting=yes
2019 else
2020         AC_TRY_COMPILE([#include "tdb.h"],
2021                        [enum TDB_ERROR err = TDB_ERR_NESTING],
2022                        ac_cv_have_tdb_err_nesting=yes,
2023                        ac_cv_have_tdb_err_nesting=no)
2026 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2027    AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2030 SMB_LIBRARY(netapi, 0)
2031 SMB_LIBRARY(smbclient, 0)
2032 SMB_LIBRARY(smbsharemodes, 0)
2033 SMB_LIBRARY(addns, 0, no, [undefined API])
2037 ################
2039 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2040 AC_TRY_RUN([#include <stdio.h>
2041 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2042 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2043 if test x"$samba_cv_have_longlong" = x"yes"; then
2044     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2045     AC_CHECK_TYPE(intptr_t, unsigned long long)
2046 else
2047     AC_CHECK_TYPE(intptr_t, unsigned long)
2051 # Check if the compiler supports the LL prefix on long long integers.
2052 # AIX needs this.
2054 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2055     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2056         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2057 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2058    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2062 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2063 AC_TRY_RUN([#include <time.h>
2064 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2065 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2066 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2067     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2070 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2071 AC_TRY_RUN([#include <stdio.h>
2072 #include <sys/stat.h>
2073 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2074 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2075 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2076     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2079 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2080 AC_TRY_RUN([
2081 #if defined(HAVE_UNISTD_H)
2082 #include <unistd.h>
2083 #endif
2084 #include <stdio.h>
2085 #include <sys/stat.h>
2086 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2087 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2088 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2089     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2092 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2093 AC_TRY_RUN([
2094 #if defined(HAVE_UNISTD_H)
2095 #include <unistd.h>
2096 #endif
2097 #include <stdio.h>
2098 #include <sys/stat.h>
2099 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2100 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2101 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2102     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2105 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2106 AC_TRY_RUN([
2107 #if defined(HAVE_UNISTD_H)
2108 #include <unistd.h>
2109 #endif
2110 #include <stdio.h>
2111 #include <sys/stat.h>
2112 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2113 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2114 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2115     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2118 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2119 AC_TRY_RUN([
2120 #if defined(HAVE_UNISTD_H)
2121 #include <unistd.h>
2122 #endif
2123 #include <stdio.h>
2124 #include <sys/stat.h>
2125 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2126 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2127 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2128     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2131 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2132 AC_TRY_RUN([
2133 #if defined(HAVE_UNISTD_H)
2134 #include <unistd.h>
2135 #endif
2136 #include <stdio.h>
2137 #include <sys/stat.h>
2138 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2139 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2140 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2141     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2144 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2145 AC_TRY_COMPILE([
2146 #if defined(HAVE_UNISTD_H)
2147 #include <unistd.h>
2148 #endif
2149 #include <sys/types.h>
2150 #include <dirent.h>],
2151 [DIR64 de;],
2152 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2153 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2154     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2157 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2158 AC_TRY_COMPILE([
2159 #if defined(HAVE_UNISTD_H)
2160 #include <unistd.h>
2161 #endif
2162 #include <sys/types.h>
2163 #include <dirent.h>],
2164 [struct dirent64 de;],
2165 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2166 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2167     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2170 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2171 AC_TRY_RUN([
2172 #if defined(HAVE_UNISTD_H)
2173 #include <unistd.h>
2174 #endif
2175 #include <sys/types.h>
2176 main() { dev_t dev; int i = major(dev); return 0; }],
2177 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2178 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2179     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2182 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2183 AC_TRY_RUN([
2184 #if defined(HAVE_UNISTD_H)
2185 #include <unistd.h>
2186 #endif
2187 #include <sys/types.h>
2188 main() { dev_t dev; int i = minor(dev); return 0; }],
2189 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2190 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2191     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2194 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2195 AC_TRY_RUN([
2196 #if defined(HAVE_UNISTD_H)
2197 #include <unistd.h>
2198 #endif
2199 #include <sys/types.h>
2200 main() { dev_t dev = makedev(1,2); return 0; }],
2201 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2202 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2203     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2206 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2207 AC_TRY_RUN([#include <stdio.h>
2208 main() { char c; c=250; exit((c > 0)?0:1); }],
2209 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2210 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2211     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2214 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2215 AC_TRY_COMPILE([#include <sys/types.h>
2216 #include <dirent.h>
2217 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2218 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2219 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2220     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2223 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2224 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2225 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2226 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2227     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2231 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2233     # On some systems (eg. Linux) librt can pull in libpthread. We
2234     # don't want this to happen because libpthreads changes signal delivery
2235     # semantics in ways we are not prepared for. This breaks Linux oplocks
2236     # which rely on signals.
2238     AC_LIBTESTFUNC(rt, clock_gettime,
2239             [
2240                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2241                                 [Whether clock_gettime is available])
2242                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2243                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2244                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2245                         ])
2249 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2250 AC_TRY_RUN([#include <sys/types.h>
2251 #include <dirent.h>
2252 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2253 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2254 di->d_name[0] == 0) exit(0); exit(1);} ],
2255 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2256 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2257     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2260 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2261 AC_TRY_COMPILE([#include <sys/types.h>
2262 #include <utime.h>],
2263 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2264 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2265 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2266     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2269 ##############
2270 # Check utmp details, but only if our OS offers utmp.h
2271 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2272 dnl  utmp and utmpx come in many flavours
2273 dnl  We need to check for many of them
2274 dnl  But we don't need to do each and every one, because our code uses
2275 dnl  mostly just the utmp (not utmpx) fields.
2277 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2279 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2280 AC_TRY_COMPILE([#include <sys/types.h>
2281 #include <utmp.h>],
2282 [struct utmp ut;  ut.ut_name[0] = 'a';],
2283 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2284 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2285     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2288 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2289 AC_TRY_COMPILE([#include <sys/types.h>
2290 #include <utmp.h>],
2291 [struct utmp ut;  ut.ut_user[0] = 'a';],
2292 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2293 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2294     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2297 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2298 AC_TRY_COMPILE([#include <sys/types.h>
2299 #include <utmp.h>],
2300 [struct utmp ut;  ut.ut_id[0] = 'a';],
2301 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2302 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2303     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2306 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2307 AC_TRY_COMPILE([#include <sys/types.h>
2308 #include <utmp.h>],
2309 [struct utmp ut;  ut.ut_host[0] = 'a';],
2310 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2311 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2312     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2315 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2316 AC_TRY_COMPILE([#include <sys/types.h>
2317 #include <utmp.h>],
2318 [struct utmp ut;  time_t t; ut.ut_time = t;],
2319 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2320 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2321     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2324 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2325 AC_TRY_COMPILE([#include <sys/types.h>
2326 #include <utmp.h>],
2327 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2328 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2329 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2330     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2333 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2334 AC_TRY_COMPILE([#include <sys/types.h>
2335 #include <utmp.h>],
2336 [struct utmp ut;  ut.ut_type = 0;],
2337 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2338 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2339     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2342 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2343 AC_TRY_COMPILE([#include <sys/types.h>
2344 #include <utmp.h>],
2345 [struct utmp ut;  ut.ut_pid = 0;],
2346 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2347 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2348     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2351 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2352 AC_TRY_COMPILE([#include <sys/types.h>
2353 #include <utmp.h>],
2354 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2355 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2356 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2357     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2360 dnl Look for the IPv6 varient by preference. Many systems have both.
2361 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2362 AC_TRY_COMPILE([#include <sys/types.h>
2363 #include <utmp.h>],
2364 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2365 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2366 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2367     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2370 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2371 AC_TRY_COMPILE([#include <sys/types.h>
2372 #include <utmp.h>],
2373 [struct utmp ut;  ut.ut_addr = 0;],
2374 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2375 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2376     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2379 if test x$ac_cv_func_pututline = xyes ; then
2380   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2381   AC_TRY_COMPILE([#include <sys/types.h>
2382 #include <utmp.h>],
2383   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2384   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2385   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2386       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2387   fi
2390 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2391 AC_TRY_COMPILE([#include <sys/types.h>
2392 #include <utmpx.h>],
2393 [struct utmpx ux;  ux.ut_syslen = 0;],
2394 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2395 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2396     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2400 # end utmp details
2403 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2404 AC_ARG_WITH(libiconv,
2405 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2407   if test "$withval" = "no" ; then
2408     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2409   else
2410      if test "$withval" != "yes" ; then
2411         ICONV_PATH_SPEC=yes
2412         ICONV_LOOK_DIRS="$withval"
2413      fi
2414   fi
2417 for i in $ICONV_LOOK_DIRS ; do
2419     save_LIBS="$LIBS"
2420     save_LDFLAGS="$LDFLAGS"
2421     save_CPPFLAGS="$CPPFLAGS"
2423     iconv_current_LIBS=""
2424     iconv_current_LDFLAGS=""
2425     iconv_current_CPPFLAGS=""
2427     ICONV_FOUND="no"
2428     unset libext
2430     #  This is here to handle -withval stuff for --with-libiconv
2431     #  Perhaps we should always add a -L
2432     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2434     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2435     # installation paths. This gets a little tricky since we might have iconv
2436     # in both libiconv and in libc. In this case the jm_ICONV test will always
2437     # succeed when the header is found. To counter this, make sure the
2438     # library directory is there and check the ABI directory first (which
2439     # should be harmless on other systems, but causes tons of linker warnings on
2440     # 64bit Ubuntu systems).
2441     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2442     # installed, I've decided to fix the linker warnings.
2443     # -- Kai
2444     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2445     for l in "lib" "lib32" "lib/hpux32"; do
2446         if test -d "$i/$l" ; then
2447                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2448                 LIBS=
2449                 export LDFLAGS LIBS CPPFLAGS
2450                 # Try to find iconv(3)
2451                 jm_ICONV($i/$l)
2452                 if test x"$ICONV_FOUND" = "xyes" ; then
2453                     libext="$l"
2454                     break
2455                 fi
2456         fi
2457     done
2459     if test x"$ICONV_FOUND" = "xyes" ; then
2460         iconv_current_LDFLAGS="-L$i/$libext"
2461         iconv_current_CPPFLAGS="-I$i/include"
2463         if test x"$jm_cv_lib_iconv" != x; then
2464             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2465         else
2466             # We found iconv in libc.
2467             iconv_current_LIBS=""
2468         fi
2470     fi
2472     if test x"$ICONV_FOUND" = "xyes" ; then
2474         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2475         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2476         LIBS="$save_LIBS $iconv_current_LIBS"
2477         export LDFLAGS LIBS CPPFLAGS
2479         default_dos_charset=no
2480         default_display_charset=no
2481         default_unix_charset=no
2483         # check for default dos charset name
2484         for j in CP850 IBM850 ; do
2485             rjs_CHARSET($j)
2486             default_dos_charset="$ICONV_CHARSET"
2487             if test x"$default_dos_charset" = x"$j"; then
2488                 break
2489             fi
2490         done
2492         # check for default display charset name
2493         for j in ASCII 646 ; do
2494             rjs_CHARSET($j)
2495             default_display_charset="$ICONV_CHARSET"
2496             if test x"$default_display_charset" = x"$j"; then
2497                 break
2498             fi
2499         done
2501         # check for default unix charset name
2502         for j in UTF-8 UTF8 ; do
2503             rjs_CHARSET($j)
2504             default_unix_charset="$ICONV_CHARSET"
2505             if test x"$default_unix_charset" = x"$j"; then
2506                 break
2507             fi
2508         done
2510         if test "$default_dos_charset" != "no" -a \
2511                 "$default_dos_charset" != "cross" -a \
2512                 "$default_display_charset" != "no" -a \
2513                 "$default_display_charset" != "cross" -a \
2514                 "$default_unix_charset" != "no" -a \
2515                 "$default_unix_charset" != "cross"
2516         then
2517                 samba_cv_HAVE_NATIVE_ICONV=yes
2518         else
2519             if test "$default_dos_charset" = "cross" -o \
2520                      "$default_display_charset" = "cross" -o \
2521                      "$default_unix_charset" = "cross"
2522             then
2523                     samba_cv_HAVE_NATIVE_ICONV=cross
2524             else
2525                     samba_cv_HAVE_NATIVE_ICONV=no
2526             fi
2527         fi
2529         # At this point, we have a libiconv candidate. We know that
2530         # we have the right headers and libraries, but we don't know
2531         # whether it does the conversions we want. We can't test this
2532         # because we are cross-compiling. This is not necessarily a big
2533         # deal, since we can't guarantee that the results we get now will
2534         # match the results we get at runtime anyway.
2535         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2536             default_dos_charset="CP850"
2537             default_display_charset="ASCII"
2538             default_unix_charset="UTF-8"
2539             samba_cv_HAVE_NATIVE_ICONV=yes
2540             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2541             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2542         fi
2544         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2546             CPPFLAGS=$save_CPPFLAGS
2547             LDFLAGS=$save_LDFLAGS
2548             LIBS=$save_LIBS
2550             if test x"$iconv_current_LIBS" != x; then
2551                 LIBS="$LIBS $iconv_current_LIBS"
2552             fi
2554             # Add the flags we need to CPPFLAGS and LDFLAGS
2555             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2556             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2558             # Turn the #defines into string literals
2559             default_dos_charset="\"$default_dos_charset\""
2560             default_display_charset="\"$default_display_charset\""
2561             default_unix_charset="\"$default_unix_charset\""
2563             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2564             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2565             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2566             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2568            break
2569         fi
2571     # We didn't find a working iconv, so keep going
2572     fi
2574     #  We only need to clean these up here for the next pass through the loop
2575     CPPFLAGS=$save_CPPFLAGS
2576     LDFLAGS=$save_LDFLAGS
2577     LIBS=$save_LIBS
2578     export LDFLAGS LIBS CPPFLAGS
2579 done
2580 unset libext
2583 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2584     AC_MSG_WARN([Sufficient support for iconv function was not found.
2585     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2586    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2587    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2588    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2592 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2593 AC_TRY_RUN([
2594 #include <sys/types.h>
2595 #include <fcntl.h>
2596 #ifndef F_GETLEASE
2597 #define F_GETLEASE      1025
2598 #endif
2599 main() {
2600        int fd = open("/dev/null", O_RDONLY);
2601        return fcntl(fd, F_GETLEASE, 0) == -1;
2604 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2605 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2606     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2609 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2610 AC_TRY_RUN([
2611 #include <sys/types.h>
2612 #include <fcntl.h>
2613 #include <signal.h>
2614 #ifndef F_NOTIFY
2615 #define F_NOTIFY 1026
2616 #endif
2617 main() {
2618         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2621 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2622 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2623     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2626 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2627 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2628 AC_CHECK_FUNCS(inotify_init)
2629 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2631 samba_cv_HAVE_INOTIFY=yes,
2632 samba_cv_HAVE_INOTIFY=no,
2633 samba_cv_HAVE_INOTIFY=cross)
2635 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2636     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2639 #################################################
2640 # Check if FAM notifications are available. For FAM info, see
2641 #       http://oss.sgi.com/projects/fam/
2642 #       http://savannah.nongnu.org/projects/fam/
2643 AC_ARG_ENABLE(fam,
2644 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2646 if test x$enable_fam != xno; then
2647     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2648     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2649         # On IRIX, libfam requires libC, but other FAM implementations
2650         # might not need it.
2651         AC_CHECK_LIB(fam, FAMOpen2,
2652             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2653             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2654             [samba_cv_HAVE_LIBFAM=no])
2656         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2657             samba_fam_xtra=-lC
2658             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2659                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2660                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2661                 [samba_cv_HAVE_LIBFAM=no])
2662             unset samba_fam_xtra
2663         fi
2664     fi
2665     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2666         default_shared_modules="$default_shared_modules vfs_notify_fam"
2667         AC_TRY_COMPILE([#include <fam.h>],
2668                     [enum FAMCodes code = FAMChanged;],
2669                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2670                         [Whether fam.h contains a typedef for enum FAMCodes]),
2671                     [])
2672     fi
2674     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2675         AC_CHECK_LIB(fam, FAMNoExists,
2676             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2677     fi
2679     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2680         AC_MSG_ERROR(FAM support requested but FAM library not available )
2681     fi
2684 AC_SUBST(SMB_FAM_LIBS)
2686 #################################################
2687 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2690 with_dmapi_support=auto
2691 AC_MSG_CHECKING(whether to use DMAPI support)
2692 AC_ARG_WITH(dmapi,
2693 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2694 [ case "$withval" in
2695   yes|no)
2696     with_dmapi_support=$withval
2697     ;;
2698   esac ]
2700 AC_MSG_RESULT([$with_dmapi_support])
2702 if test x"$with_dmapi_support" != xno ; then
2703         SMB_CHECK_DMAPI([], [
2704                 AC_MSG_NOTICE(DMAPI support not present)
2705                 if test x"$with_dmapi_support" = xyes ; then
2706                         AC_MSG_ERROR(no DMAPI support found but requested!)
2707                 fi
2708                 ]
2709         )
2712 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2713 # Theoretically it should work with AIX JFS2 too but this needs testing
2714 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2715     default_shared_modules="$default_shared_modules vfs_tsmsm"
2718 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2719 AC_TRY_RUN([
2720 #include <sys/types.h>
2721 #include <fcntl.h>
2722 #include <signal.h>
2723 #include <sys/file.h>
2724 #ifndef LOCK_MAND
2725 #define LOCK_MAND       32
2726 #define LOCK_READ       64
2727 #endif
2728 main() {
2729         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2732 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2733 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2734     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2738 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2739 AC_TRY_COMPILE([#include <sys/types.h>
2740 #include <fcntl.h>],
2741 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2742 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2743 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2744     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2747 #################################################
2748 # Check for POSIX capability support
2750 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2751     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2752     [], [])
2754 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2756     ac_save_LIBS=$LIBS
2757     AC_LIBTESTFUNC(cap, cap_get_proc)
2759     AC_CACHE_CHECK([for POSIX capabilities],
2760             samba_cv_HAVE_POSIX_CAPABILITIES,
2761             [
2762                 AC_TRY_RUN([
2763 #include <sys/types.h>
2764 #include <sys/capability.h>
2765 main() {
2766  cap_t cap;
2767  cap_value_t vals[1];
2768  if (!(cap = cap_get_proc()))
2769    exit(1);
2770  vals[0] = CAP_CHOWN;
2771  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2772  cap_set_proc(cap);
2773  exit(0);
2775                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2776                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2777                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2778             ])
2780 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2781     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2782             [Whether POSIX capabilities are available])
2783 else
2784     LIBS=$ac_save_LIBS
2790 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2791 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2794 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2795 AC_TRY_COMPILE([#include <sys/types.h>
2796 #if defined(HAVE_RPC_RPC_H)
2797 #include <rpc/rpc.h>
2798 #endif],
2799 [int16 testvar;],
2800 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2801 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2802     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2805 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2806 AC_TRY_COMPILE([#include <sys/types.h>
2807 #if defined(HAVE_RPC_RPC_H)
2808 #include <rpc/rpc.h>
2809 #endif],
2810 [uint16 testvar;],
2811 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2812 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2813     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2816 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2817 AC_TRY_COMPILE([#include <sys/types.h>
2818 #if defined(HAVE_RPC_RPC_H)
2819 #include <rpc/rpc.h>
2820 #endif],
2821 [int32 testvar;],
2822 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2823 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2824     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2827 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_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 [uint32 testvar;],
2833 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2834 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2835     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2839 dnl Some systems (SCO) have a problem including
2840 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2841 dnl as a #define in <prot.h> and as part of an enum
2842 dnl in <rpc/rpc.h>.
2845 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2846 AC_TRY_COMPILE([#include <sys/types.h>
2847 #ifdef HAVE_SYS_SECURITY_H
2848 #include <sys/security.h>
2849 #include <prot.h>
2850 #endif  /* HAVE_SYS_SECURITY_H */
2851 #if defined(HAVE_RPC_RPC_H)
2852 #include <rpc/rpc.h>
2853 #endif],
2854 [int testvar;],
2855 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2856 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2857     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2860 AC_MSG_CHECKING([for test routines])
2861 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2862            AC_MSG_RESULT(yes),
2863            AC_MSG_ERROR([cant find test code. Aborting config]),
2864            AC_MSG_WARN([cannot run when cross-compiling]))
2866 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2867 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2868            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2869 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2870     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2873 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2874 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2875            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2876 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2877     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2880 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2881 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2882 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2883 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2884 AC_CHECK_FUNCS(getpagesize)
2886 ################################################
2887 # look for a method of setting the effective uid
2888 seteuid=no;
2890 if test $seteuid = no; then
2891 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2892 AC_TRY_RUN([
2893 #define AUTOCONF_TEST 1
2894 #define USE_SETREUID 1
2895 #include "confdefs.h"
2896 #include "${srcdir-.}/lib/util_sec.c"],
2897            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2898 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2899     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2903 # we check for setresuid second as it conflicts with AIO on Linux. 
2904 # see http://samba.org/~tridge/junkcode/aio_uid.c
2905 if test $seteuid = no; then
2906 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2907 AC_TRY_RUN([
2908 #define AUTOCONF_TEST 1
2909 #define USE_SETRESUID 1
2910 #include "confdefs.h"
2911 #include "${srcdir-.}/lib/util_sec.c"],
2912            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2913 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2914     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2918 if test $seteuid = no; then
2919 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2920 AC_TRY_RUN([
2921 #define AUTOCONF_TEST 1
2922 #define USE_SETEUID 1
2923 #include "confdefs.h"
2924 #include "${srcdir-.}/lib/util_sec.c"],
2925            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2926 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2927     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2931 if test $seteuid = no; then
2932 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2933 AC_TRY_RUN([
2934 #define AUTOCONF_TEST 1
2935 #define USE_SETUIDX 1
2936 #include "confdefs.h"
2937 #include "${srcdir-.}/lib/util_sec.c"],
2938            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2939 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2940     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2944 AC_CACHE_CHECK([for the Darwin initgroups system call],
2945         samba_cv_DARWIN_INITGROUPS,
2946         AC_TRY_LINK([
2947 #include <sys/syscall.h>
2948 #include <unistd.h>
2949         ],
2950         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2951         samba_cv_DARWIN_INITGROUPS=yes,
2952         samba_cv_DARWIN_INITGROUPS=no)
2955 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2956     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2957         [Whether to use the Darwin-specific initgroups system call])
2960 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2961 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2962            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2963 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2964     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2967 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2968 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2969            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2970 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2971     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2973 else
2976 dnl Don't check for 64 bit fcntl locking if we know that the
2977 dnl glibc2.1 broken check has succeeded.
2980   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2981   AC_TRY_RUN([
2982 #if defined(HAVE_UNISTD_H)
2983 #include <unistd.h>
2984 #endif
2985 #include <stdio.h>
2986 #include <stdlib.h>
2988 #ifdef HAVE_FCNTL_H
2989 #include <fcntl.h>
2990 #endif
2992 #ifdef HAVE_SYS_FCNTL_H
2993 #include <sys/fcntl.h>
2994 #endif
2995 main() { struct flock64 fl64;
2996 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2997 exit(0);
2998 #else
2999 exit(1);
3000 #endif
3002        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3004   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3005       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3006   fi
3009 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3010 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3011 AC_TRY_COMPILE([
3012   #define _XOPEN_SOURCE 600
3013   #include <stdlib.h>
3014   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3015     probably broken posix_fallocate
3016   #endif
3017 ], [
3018 ], 
3019 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3020 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3021         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3025 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3026 AC_TRY_COMPILE([#include <sys/types.h>
3027 #include <sys/stat.h>
3028 #include <unistd.h>],
3029 [struct stat st;  st.st_blocks = 0;],
3030 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3031 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3032     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3035 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3037 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3038 AC_TRY_COMPILE([#include <sys/types.h>
3039 #include <sys/stat.h>
3040 #include <unistd.h>],
3041 [struct stat st;  st.st_blksize = 0;],
3042 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3043 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3044     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3047 AC_CACHE_CHECK([for st_flags in struct stat],
3048         samba_cv_HAVE_STAT_ST_FLAGS,
3049         [
3050             AC_TRY_COMPILE([#include <sys/types.h>
3051 #include <sys/stat.h>
3052 #include <unistd.h>],
3053             [struct stat st;  st.st_flags = 0;],
3054             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3055             samba_cv_HAVE_STAT_ST_FLAGS=no,
3056             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3057         ])
3059 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3060     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3061                 [Whether the stat struct has a st_flags member])
3064 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3065 AC_TRY_COMPILE([
3066 #include <sys/types.h>
3067 #include <sys/acl.h>
3068 #if defined(HAVE_RPCSVC_NIS_H)
3069 #include <rpcsvc/nis.h>
3070 #endif],
3071 [int i;],
3072 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3073 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3074         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3077 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3078 AC_TRY_RUN([
3079 #include <stdio.h>
3080 #include <limits.h>
3081 #include <signal.h>
3083 void exit_on_core(int ignored) {
3084         exit(1);
3087 main() {
3088         char *newpath;
3089         signal(SIGSEGV, exit_on_core);
3090         newpath = realpath("/tmp", NULL);
3091         exit((newpath != NULL) ? 0 : 1);
3094 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3095 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3096     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3099 #################################################
3100 # check for AFS clear-text auth support
3101 samba_cv_WITH_AFS=no
3102 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3103 AC_ARG_WITH(afs,
3104 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3105 [ case "$withval" in
3106   yes|auto)
3107     AC_MSG_RESULT($withval)
3108     samba_cv_WITH_AFS=$withval
3109     ;;
3110   *)
3111     AC_MSG_RESULT(no)
3112     ;;
3113   esac ],
3114   AC_MSG_RESULT(no)
3117 ####################################################
3118 # check for Linux-specific AFS fake-kaserver support
3119 samba_cv_WITH_FAKE_KASERVER=no
3120 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3121 AC_ARG_WITH(fake-kaserver,
3122 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3123 [ case "$withval" in
3124   yes|auto)
3125     AC_MSG_RESULT($withval)
3126     samba_cv_WITH_FAKE_KASERVER=$withval
3127     ;;
3128   *)
3129     AC_MSG_RESULT(no)
3130     ;;
3131   esac ],
3132   AC_MSG_RESULT(no)
3135 #################################################
3136 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3137 if test x"$samba_cv_WITH_AFS" != x"no" ||
3138    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3140     # see if this box has the OpenSSL DES libraries
3141     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3143     # see if this box has the afs-headers in /usr/include/afs
3144     AC_MSG_CHECKING(for /usr/include/afs)
3145     if test -d /usr/include/afs; then
3146           AC_MSG_RESULT(yes)
3147     else
3148       AC_MSG_RESULT(no)
3149     fi
3151     # check for afs.h
3152     have_afs_headers=no
3153     AC_CHECK_HEADERS(afs.h afs/afs.h)
3154     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3155         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3156            test x"$samba_cv_WITH_AFS" = x"auto"; then
3157                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3158         else
3159                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3160         fi
3161     else
3162         have_afs_headers=yes
3163     fi
3166 FAKE_KASERVER_OBJ=""
3167 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3168     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3169     FAKE_KASERVER_OBJ="utils/net_afs.o"
3171 AC_SUBST(FAKE_KASERVER_OBJ)
3173 #################################################
3174 # check whether to compile AFS/NT ACL mapping module
3175 samba_cv_WITH_VFS_AFSACL=no
3176 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3177 AC_ARG_WITH(vfs-afsacl,
3178 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3179 [ case "$withval" in
3180   yes|auto)
3181     AC_MSG_RESULT($withval)
3182     samba_cv_WITH_VFS_AFSACL=yes
3183     ;;
3184   *)
3185     AC_MSG_RESULT(no)
3186     ;;
3187   esac ],
3188   AC_MSG_RESULT(no)
3191 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3192    default_shared_modules="$default_shared_modules vfs_afsacl"
3194         
3195 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3196     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3199 #################################################
3200 # check for the DFS clear-text auth system
3201 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3202 AC_ARG_WITH(dfs,
3203 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3204 [ case "$withval" in
3205   yes)
3206     AC_MSG_RESULT(yes)
3207     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3208     ;;
3209   *)
3210     AC_MSG_RESULT(no)
3211     ;;
3212   esac ],
3213   AC_MSG_RESULT(no)
3216 ########################################################
3217 # Compile with LDAP support?
3219 with_ldap_support=auto
3220 AC_MSG_CHECKING([for LDAP support])
3222 AC_ARG_WITH(ldap,
3223 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3224 [ case "$withval" in
3225     yes|no)
3226         with_ldap_support=$withval
3227         ;;
3228   esac ])
3230 AC_MSG_RESULT($with_ldap_support)
3232 SMBLDAP=""
3233 AC_SUBST(SMBLDAP)
3234 SMBLDAPUTIL=""
3235 AC_SUBST(SMBLDAPUTIL)
3237 if test x"$with_ldap_support" != x"no"; then
3239   ##################################################################
3240   # first test for ldap.h and lber.h
3241   # (ldap.h is required for this test)
3242   AC_CHECK_HEADERS(ldap.h lber.h)
3244   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3245         if test x"$with_ldap_support" = x"yes"; then
3246          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3247         else
3248          AC_MSG_WARN(ldap.h is needed for LDAP support)
3249         fi
3250         
3251         with_ldap_support=no
3252   fi
3254   ##################################################################
3255   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3256   # unsigned int in include/includes.h
3257   case $host_os in
3258         *hpux*)
3259          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3260          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3261         with_ldap_support=yes
3262         ;;
3263         *)
3264         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3265         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3266                 if test x"$with_ldap_support" = x"yes"; then
3267                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3268                 else
3269                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3270                 fi
3271                 with_ldap_support=no
3272         fi
3273         ;;
3274   esac
3277 if test x"$with_ldap_support" != x"no"; then
3278   ac_save_LIBS=$LIBS
3280   ##################################################################
3281   # we might need the lber lib on some systems. To avoid link errors
3282   # this test must be before the libldap test
3283   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3285   ########################################################
3286   # If ber_sockbuf_add_io() is available we can add
3287   # SASL wrapping hooks
3288   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3290   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3291                  AC_TRY_COMPILE([#include <ldap.h>],
3292                                 [int val = LDAP_OPT_SOCKBUF;],
3293                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3294                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3296   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3297           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3298         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3299   fi
3301   #######################################################
3302   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3303   # ldap logging and print it out in the samba logs
3304   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3305                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3306                  [AC_TRY_COMPILE([#include <lber.h>],
3307                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3308                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3309                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3311   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3312         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3313                   [Support for LDAP/LBER logging interception])
3314   fi
3316   ########################################################
3317   # now see if we can find the ldap libs in standard paths
3318   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3320   ########################################################
3321   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3322   # Check found in pam_ldap 145.
3323   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3325   LIBS="$LIBS $LDAP_LIBS"
3326   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3327     AC_TRY_COMPILE([
3328         #include <lber.h>
3329         #include <ldap.h>],
3330         [ldap_set_rebind_proc(0, 0, 0);],
3331         [smb_ldap_cv_ldap_set_rebind_proc=3],
3332         [smb_ldap_cv_ldap_set_rebind_proc=2]
3333     )
3334   ])
3336   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3338   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3340   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3341     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3342     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3343     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3344     default_shared_modules="$default_shared_modules";
3345     SMBLDAP="lib/smbldap.o"
3346     SMBLDAPUTIL="lib/smbldap_util.o"
3347     with_ldap_support=yes
3348     AC_MSG_CHECKING(whether LDAP support is used)
3349     AC_MSG_RESULT(yes)
3350   else
3351     if test x"$with_ldap_support" = x"yes"; then
3352         AC_MSG_ERROR(libldap is needed for LDAP support)
3353     else
3354         AC_MSG_WARN(libldap is needed for LDAP support)
3355     fi
3357     LDAP_LIBS=""
3358     with_ldap_support=no
3359   fi
3360   LIBS=$ac_save_LIBS
3364 #################################################
3365 # active directory support
3367 with_ads_support=auto
3368 AC_MSG_CHECKING([for Active Directory and krb5 support])
3370 AC_ARG_WITH(ads,
3371 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3372 [ case "$withval" in
3373     yes|no)
3374         with_ads_support="$withval"
3375         ;;
3376   esac ])
3378 AC_MSG_RESULT($with_ads_support)
3380 FOUND_KRB5=no
3381 KRB5_LIBS=""
3383 if test x"$with_ldap_support" != x"yes"; then
3385     if test x"$with_ads_support" = x"yes"; then
3386         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3387     elif test x"$with_ads_support" = x"auto"; then
3388         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3389         with_ads_support=no
3390     fi
3392 else
3394     # Check to see whether there is enough LDAP functionality to be able
3395     # to build AD support.
3397 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3398 case "$host_os" in
3399         *hpux*)
3400     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3402     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3403         if test x"$with_ads_support" = x"yes"; then
3404             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3405         elif test x"$with_ads_support" = x"auto"; then
3406             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3407             with_ads_support=no
3408         fi
3409     fi
3410     ;;
3411         *)
3412     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3414     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3415         if test x"$with_ads_support" = x"yes"; then
3416             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3417         elif test x"$with_ads_support" = x"auto"; then
3418             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3419             with_ads_support=no
3420         fi
3421     fi
3422     ;;
3423 esac
3426     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3428     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3429         if test x"$with_ads_support" = x"yes"; then
3430             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3431         elif test x"$with_ads_support" = x"auto"; then
3432             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3433             with_ads_support=no
3434         fi
3435     fi
3439 if test x"$with_ads_support" != x"no"; then
3441   # Do no harm to the values of CFLAGS and LIBS while testing for
3442   # Kerberos support.
3444   if test x$FOUND_KRB5 = x"no"; then
3445     #################################################
3446     # check for location of Kerberos 5 install
3447     AC_MSG_CHECKING(for kerberos 5 install path)
3448     AC_ARG_WITH(krb5,
3449     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3450     [ case "$withval" in
3451       no)
3452         AC_MSG_RESULT(no krb5-path given)
3453         ;;
3454       yes)
3455         AC_MSG_RESULT(/usr)
3456         FOUND_KRB5=yes
3457         ;;
3458       *)
3459         AC_MSG_RESULT($withval)
3460         KRB5_CFLAGS="-I$withval/include"
3461         KRB5_CPPFLAGS="-I$withval/include"
3462         KRB5_LDFLAGS="-L$withval/lib"
3463         FOUND_KRB5=yes
3464         if test -x "$withval/bin/krb5-config"; then
3465                 KRB5CONFIG=$withval/bin/krb5-config
3466         fi
3467         ;;
3468       esac ],
3469       AC_MSG_RESULT(no krb5-path given)
3470     )
3471   fi
3473   #################################################
3474   # check for krb5-config from recent MIT and Heimdal kerberos 5
3475   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3476   AC_MSG_CHECKING(for working krb5-config)
3477   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3478     ac_save_CFLAGS=$CFLAGS
3479     CFLAGS="";export CFLAGS
3480     ac_save_LDFLAGS=$LDFLAGS
3481     LDFLAGS="";export LDFLAGS
3482     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3483     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3484     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3485     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3486     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3487     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3488     FOUND_KRB5=yes
3489     AC_MSG_RESULT(yes)
3490   else
3491     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3492   fi
3494   if test x$FOUND_KRB5 = x"no"; then
3495     #################################################
3496     # see if this box has the SuSE location for the heimdal krb implementation
3497     AC_MSG_CHECKING(for /usr/include/heimdal)
3498     if test -d /usr/include/heimdal; then
3499       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3500           KRB5_CFLAGS="-I/usr/include/heimdal"
3501           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3502           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3503           FOUND_KRB5=yes
3504           AC_MSG_RESULT(yes)
3505       else
3506           KRB5_CFLAGS="-I/usr/include/heimdal"
3507           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3508           FOUND_KRB5=yes
3509           AC_MSG_RESULT(yes)
3510       fi
3511     else
3512       AC_MSG_RESULT(no)
3513     fi
3514   fi
3516   if test x$FOUND_KRB5 = x"no"; then
3517     #################################################
3518     # see if this box has the RedHat location for kerberos
3519     AC_MSG_CHECKING(for /usr/kerberos)
3520     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3521       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3522       KRB5_CFLAGS="-I/usr/kerberos/include"
3523       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3524       FOUND_KRB5=yes
3525       AC_MSG_RESULT(yes)
3526     else
3527       AC_MSG_RESULT(no)
3528     fi
3529   fi
3531   if test x$FOUND_KRB5 = x"no"; then
3532     #################################################
3533     # see if this box has the OpenBSD location for heimdal krb5
3534     AC_MSG_CHECKING(for /usr/include/kerberosV)
3535     if test -d /usr/include/kerberosV; then
3536       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3537       KRB5_LIBS="-lcrypto"
3538       FOUND_KRB5=yes
3539       AC_MSG_RESULT(yes)
3540     else
3541       AC_MSG_RESULT(no)
3542     fi
3543   fi
3545   ac_save_CFLAGS=$CFLAGS
3546   ac_save_CPPFLAGS=$CPPFLAGS
3547   ac_save_LDFLAGS=$LDFLAGS
3549   # remove needless evil rpath stuff as early as possible:
3550   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3551   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3552   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3553   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3554   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3556   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3558   # now check for krb5.h. Some systems have the libraries without the headers!
3559   # note that this check is done here to allow for different kerberos
3560   # include paths
3561   AC_CHECK_HEADERS(krb5.h)
3563   if test x"$ac_cv_header_krb5_h" = x"no"; then
3565     # Give a warning if AD support was not explicitly requested,
3566     # i.e with_ads_support = auto, otherwise die with an error.
3568     if test x"$with_ads_support" = x"yes"; then
3569       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3570     else
3571       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3572     fi
3574     # Turn off AD support and restore CFLAGS and LIBS variables
3576     with_ads_support="no"
3578     CFLAGS=$ac_save_CFLAGS
3579     CPPFLAGS=$ac_save_CPPFLAGS
3580     LDFLAGS=$ac_save_LDFLAGS
3581   fi
3582   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3583 [[#ifdef HAVE_KRB5_H
3584  #include <krb5.h>
3585  #endif
3588   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3589         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3590         if test x"$BLDSHARED" = x"true" ; then
3591                 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3592         fi
3593   fi
3595   # check for new heimdal KRB5_DEPRECATED handling
3597   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3598                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3599     AC_TRY_COMPILE(
3600       [#define KRB5_DEPRECATED 1
3601       #include <krb5.h>],
3602       [],
3603       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3604       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3606   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3607     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3608                [Whether to use deprecated krb5 interfaces])
3609   fi
3612 # Now we have determined whether we really want ADS support
3613 use_ads=no
3614 if test x"$with_ads_support" != x"no"; then
3615   use_ads=yes
3616   have_gssapi=no
3617   ac_save_LIBS=$LIBS
3619   # now check for gssapi headers.  This is also done here to allow for
3620   # different kerberos include paths
3621   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3623   ##################################################################
3624   # we might need the k5crypto and com_err libraries on some systems
3625   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3626   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3628   # Heimdal checks.
3629   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3630   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3631   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3633   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3634   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3636   ########################################################
3637   # now see if we can find the krb5 libs in standard paths
3638   # or as specified above
3639   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3640   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3642   ########################################################
3643   # now see if we can find the gssapi libs in standard paths
3644   if test x"$have_gssapi" != x"yes"; then
3645      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3646   fi
3648   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3649   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3650   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3651   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3652   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3653   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3654   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3655   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3656   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3657   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3658   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3659   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3660   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3661   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3662   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3663   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3664   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3665   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3666   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3667   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3668   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3669   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3670   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3671   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3672   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3673   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3674   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3675   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3676   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3677   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3678   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3679   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3680   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3681   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3682   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3683   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3684   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3685   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3686   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3687   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3688   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3689   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3690   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3691   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3692   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3693   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3694   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3695   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3696   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3698   # MIT krb5 1.8 does not expose this call (yet)
3699   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3701   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3702   # but does have the symbol
3703   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3705   LIBS="$KRB5_LIBS $LIBS"
3707   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3708         smb_krb5_cv_ticket_has_keyinfo,
3709         [
3710             AC_TRY_COMPILE(
3711             [
3712                 #include <krb5.h>
3713             ],
3714             [
3715                 krb5_ticket ticket;
3716                 krb5_kvno kvno;
3717                 krb5_enctype enctype;
3719                 enctype = ticket.enc_part.enctype;
3720                 kvno = ticket.enc_part.kvno;
3721             ],
3722             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3723             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3724         ])
3726   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3727         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3728             [Whether the krb5_ticket structure contains the kvno and enctype])
3729   fi
3731   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3732           smb_krb5_cv_creds_opt_free_context,
3733           [
3734                 AC_TRY_COMPILE([
3735                     #include <krb5.h>],
3736                     [
3737                         krb5_context ctx;
3738                         krb5_get_init_creds_opt *opt = NULL;
3739                         krb5_get_init_creds_opt_free(ctx, opt);
3740                     ],
3741                     [smb_krb5_cv_creds_opt_free_context=yes],
3742                     [smb_krb5_cv_creds_opt_free_context=no]
3743                 )
3744           ])
3746   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3747         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3748             [Whether krb5_get_init_creds_opt_free takes a context argument])
3749   fi
3751   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3752     AC_TRY_COMPILE([
3753         #include <krb5.h>],
3754         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3755         [smb_krb5_cv_verify_checksum=7],
3756         [smb_krb5_cv_verify_checksum=6],
3757     )
3758   ])
3759   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3761   AC_CACHE_CHECK([for checksum in krb5_checksum],
3762                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3763     AC_TRY_COMPILE([#include <krb5.h>],
3764       [krb5_checksum cksum; cksum.checksum.length = 0;],
3765       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3766       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3768   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3769     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3770                [Whether the krb5_checksum struct has a checksum property])
3771   fi
3773   AC_CACHE_CHECK([for etype in EncryptedData],
3774                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3775     AC_TRY_COMPILE([#include <krb5.h>],
3776       [EncryptedData edata; edata.etype = 0;],
3777       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3778       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3780   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3781     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3782                [Whether the EncryptedData struct has a etype property])
3783   fi
3785   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3786                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3787     AC_TRY_COMPILE([#include <krb5.h>],
3788       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3789       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3790       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3792   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3793     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3794                [Whether the krb5_ap_req struct has a ticket pointer])
3795   fi
3797   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3798                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3799     AC_TRY_COMPILE([#include <krb5.h>],
3800       [krb5_error err; err.e_data = NULL;],
3801       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3802       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3804   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3805     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3806                [Whether the krb5_error struct has a e_data pointer])
3807   fi
3809   AC_CACHE_CHECK([for krb5_crypto type],
3810                 samba_cv_HAVE_KRB5_CRYPTO,[
3811     AC_TRY_COMPILE([#include <krb5.h>],
3812       [krb5_crypto crypto;],
3813       samba_cv_HAVE_KRB5_CRYPTO=yes,
3814       samba_cv_HAVE_KRB5_CRYPTO=no)])
3816   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3817     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3818                [Whether the type krb5_crypto exists])
3819   fi
3821   AC_CACHE_CHECK([for krb5_encrypt_block type],
3822                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3823     AC_TRY_COMPILE([#include <krb5.h>],
3824       [krb5_encrypt_block block;],
3825       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3826       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3828   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3829     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3830                [Whether the type krb5_encrypt_block exists])
3831   fi
3833   AC_CACHE_CHECK([for addrtype in krb5_address],
3834                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3835     AC_TRY_COMPILE([#include <krb5.h>],
3836       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3837       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3838       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3840   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3841     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3842                [Whether the krb5_address struct has a addrtype property])
3843   fi
3845   AC_CACHE_CHECK([for addr_type in krb5_address],
3846                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3847     AC_TRY_COMPILE([#include <krb5.h>],
3848       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3849       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3850       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3852   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3853     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3854               [Whether the krb5_address struct has a addr_type property])
3855   fi
3857   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3858                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3859                  [AC_TRY_COMPILE([#include <krb5.h>],
3860     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3861     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3863   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3864     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3865               [Whether the krb5_ticket struct has a enc_part2 property])
3866   fi
3868   AC_CACHE_CHECK([for keyblock in krb5_creds],
3869                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3870     AC_TRY_COMPILE([#include <krb5.h>],
3871       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3872       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3873       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3875   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3876     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3877               [Whether the krb5_creds struct has a keyblock property])
3878   fi
3880   AC_CACHE_CHECK([for session in krb5_creds],
3881                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3882     AC_TRY_COMPILE([#include <krb5.h>],
3883       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3884       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3885       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3887   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3888     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3889               [Whether the krb5_creds struct has a session property])
3890   fi
3892   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3893                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3894     AC_TRY_COMPILE([#include <krb5.h>],
3895       [krb5_keyblock key; key.keyvalue.data = NULL;],
3896       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3897       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3899   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3900     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3901               [Whether the krb5_keyblock struct has a keyvalue property])
3902   fi
3904   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3905                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3906     AC_TRY_COMPILE([#include <krb5.h>],
3907       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3908       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3909       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3910   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3911                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3912     AC_TRY_COMPILE([#include <krb5.h>],
3913       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3914       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3915       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3916 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3917 # w.r.t. arcfour and windows, so we must not enable it here
3918   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3919           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3920     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3921               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3922   fi
3924   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3925                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3926     AC_TRY_COMPILE([#include <krb5.h>],
3927       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3928       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3929       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3931   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3932     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3933               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3934   fi
3936   AC_CACHE_CHECK([for KV5M_KEYTAB],
3937                  samba_cv_HAVE_KV5M_KEYTAB,[
3938     AC_TRY_COMPILE([#include <krb5.h>],
3939       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3940       samba_cv_HAVE_KV5M_KEYTAB=yes,
3941       samba_cv_HAVE_KV5M_KEYTAB=no)])
3943   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3944       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3945              [Whether the KV5M_KEYTAB option is available])
3946   fi
3948   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3949                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3950     AC_TRY_COMPILE([#include <krb5.h>],
3951       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3952       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3953       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3955   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3956     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3957               [Whether KRB5_KU_OTHER_CKSUM is available])
3958   fi
3960   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3961                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3962     AC_TRY_COMPILE([#include <krb5.h>],
3963       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3964       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3965       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3967   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3968     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3969               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3970   fi
3972   AC_CACHE_CHECK([for the krb5_princ_component macro],
3973                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3974     AC_TRY_LINK([#include <krb5.h>],
3975       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3976       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3977       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3979   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3980     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3981                [Whether krb5_princ_component is available])
3982   fi
3984   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3985                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3986     AC_TRY_COMPILE([#include <krb5.h>],
3987       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3988       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3989       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3991   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3992     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3993               [Whether krb5_keytab_entry has key member])
3994   fi
3996   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3997                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3998     AC_TRY_COMPILE([#include <krb5.h>],
3999       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4000       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4001       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4003   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4004     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4005               [Whether krb5_keytab_entry has keyblock member])
4006   fi
4008   AC_CACHE_CHECK([for magic in krb5_address],
4009                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4010     AC_TRY_COMPILE([#include <krb5.h>],
4011       [krb5_address addr; addr.magic = 0;],
4012       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4013       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4015   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4016     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4017               [Whether the krb5_address struct has a magic property])
4018   fi
4020   AC_CACHE_CHECK([for WRFILE: keytab support],
4021                 samba_cv_HAVE_WRFILE_KEYTAB,[
4022     AC_TRY_RUN([
4023 #include<krb5.h>
4024   main()
4025   {
4026     krb5_context context;
4027     krb5_keytab keytab;
4029     krb5_init_context(&context);
4030     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4031   }],
4032   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4033   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4035   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4036       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4037                [Whether the WRFILE:-keytab is supported])
4038   fi
4040   AC_CACHE_CHECK([for krb5_realm type],
4041                 samba_cv_HAVE_KRB5_REALM_TYPE,[
4042     AC_TRY_COMPILE([#include <krb5.h>],
4043       [krb5_realm realm;],
4044       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4045       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4047   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4048     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4049                [Whether the type krb5_realm exists])
4050   fi
4052   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4053                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4054     AC_TRY_COMPILE([#include <krb5.h>],
4055     [
4056     krb5_context context;
4057     krb5_principal principal;
4058     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4059     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4060     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4062   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4063     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4064               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4065   fi
4067   AC_CACHE_CHECK([for krb5_addresses type],
4068                 samba_cv_HAVE_KRB5_ADDRESSES,[
4069     AC_TRY_COMPILE([#include <krb5.h>],
4070       [krb5_addresses addr;],
4071       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4072       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4074   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4075     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4076                [Whether the type krb5_addresses type exists])
4077   fi
4079   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4080                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4081     AC_TRY_COMPILE([#include <krb5.h>],
4082     [
4083     krb5_mk_error(0,0,0);],
4084     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4085     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4087   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4088     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4089               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4090   fi
4092   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4093     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4094         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4095         AC_TRY_RUN_STRICT([
4096                 #include <stdlib.h>
4097                 #include <krb5.h>
4098                 int main(void) {
4099                         krb5_context context = NULL;
4100                         char *str = NULL;
4101                         krb5_enctype_to_string(context, 1, &str);
4102                         if (str) free (str); 
4103                         return 0;
4104                 }
4105                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4106                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4107                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4109     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4110       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4111                 [whether krb5_enctype_to_string takes krb5_context argument])
4112     fi
4114     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4115         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4116         AC_TRY_RUN_STRICT([
4117                 #include <krb5.h>
4118                 int main(void) {
4119                         char buf[256];
4120                         krb5_enctype_to_string(1, buf, 256);
4121                         return 0;
4122                 }
4123                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4124                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4125                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4127     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4128       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4129                 [whether krb5_enctype_to_string takes size_t argument])
4130     fi
4131   fi
4133   AC_CACHE_CHECK([for krb5_principal_get_realm],
4134                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4135     AC_TRY_LINK([#include <krb5.h>],
4136       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4137       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4138       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4140   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4141     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4142                [Whether the function krb5_principal_get_realm is defined])
4143   fi
4145   AC_CACHE_CHECK([for krb5_princ_realm],
4146                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4147     AC_TRY_LINK([#include <krb5.h>],
4148       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4149       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4150       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4152   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4153     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4154                [Whether the macro krb5_princ_realm is defined])
4155   fi
4157   #
4158   #
4159   # Now the decisions whether we can support krb5
4160   #
4161   # NOTE: all tests should be done before this block!
4162   #
4163   #
4164   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4165     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4166     use_ads=no
4167   fi
4169   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4170           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4171   then
4172     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4173     use_ads=no
4174   fi
4176   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4177           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4178   then
4179     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4180     use_ads=no
4181   fi
4183   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4184           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4185   then
4186     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4187     use_ads=no
4188   fi
4190   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4191           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4192   then
4193     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4194     use_ads=no
4195   fi
4197   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4199       # We only need the following functions if we can't get the enctype
4200       # and kvno out of the ticket directly (ie. on Heimdal).
4202       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4203       then
4204         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4205         use_ads=no
4206       fi
4208       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4209       then
4210         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4211         use_ads=no
4212       fi
4214   fi
4216   if test x"$use_ads" = x"yes"; then
4217     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4218     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4219     if test x"$have_gssapi" = x"yes"; then
4220       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4221     fi
4222   else
4223     if test x"$with_ads_support" = x"yes"; then
4224         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4225     else
4226         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4227     fi
4228     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4229     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4230     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4231     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4232     KRB5_LIBS=""
4233     with_ads_support=no
4234   fi
4235   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4236   AC_MSG_RESULT([$use_ads])
4238 LIBS="$ac_save_LIBS"
4241 if test x"$use_ads" != xyes; then
4242         merged_build_possible=no
4245 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4246 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4249 ########################################################
4250 # Compile with DNS Updates support?
4252 with_dnsupdate_support=auto
4253 AC_MSG_CHECKING([whether to enable DNS Updates support])
4255 AC_ARG_WITH(dnsupdate,
4256 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4257 [ case "$withval" in
4258     yes|no)
4259         with_dnsupdate_support=$withval
4260         ;;
4261   esac ])
4263 AC_MSG_RESULT($with_dnsupdate_support)
4265 if test x"$with_dnsupdate_support" != x"no"; then
4267   ################################################################
4268   # first test for AD / GSSAPI support being enabled
4269         if test x"$have_gssapi" != xyes ; then
4270                 if test x"$with_dnsupdate_support" = x"yes" ; then
4271                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4272                 else
4273                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4274                         with_dnsupdate_support=no
4275                 fi
4276         fi
4277   ##################################################################
4278   # then test for uuid.h (necessary to generate unique DNS keynames
4279   # (uuid.h is required for this test)
4280         AC_CHECK_HEADERS(uuid/uuid.h)
4282         
4283         if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4284                 if test x"$with_dnsupdate_support" = x"yes"; then
4285                         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4286                 else
4287                         AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4288                 fi
4289                 with_dnsupdate_support=no
4290         fi
4293 if test x"$with_dnsupdate_support" != x"no"; then
4295   ########################################################
4296   # Now see if we can find the uuid libs in standard paths
4297   # On some systems, the uuid API is in libc, so we have to
4298   # be careful not to insert a spurious -luuid.
4300   UUID_LIBS=""
4301   AC_LIBTESTFUNC(uuid, uuid_generate,
4302           [
4303             case " $LIBS " in
4304                 *\ -luuid\ *)
4305                 UUID_LIBS="-luuid"
4306                 SMB_REMOVE_LIB(uuid)
4307                 ;;
4308             esac
4310             with_dnsupdate_support=yes
4311             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4312         ],
4313         [
4314             if test x"$with_dnsupdate_support" = x"yes"; then
4315                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4316             else
4317                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4318             fi
4319             with_dnsupdate_support=no
4320         ])
4322   # finally print out the result:
4323 AC_MSG_CHECKING(whether DNS Updates support is used)
4324 AC_MSG_RESULT([$with_dnsupdate_support])
4327 #################################################
4328 # check for automount support
4329 AC_MSG_CHECKING(whether to use automount)
4330 AC_ARG_WITH(automount,
4331 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4332 [ case "$withval" in
4333   yes)
4334     AC_MSG_RESULT(yes)
4335     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4336     ;;
4337   *)
4338     AC_MSG_RESULT(no)
4339     ;;
4340   esac ],
4341   AC_MSG_RESULT(no)
4344 #################################################
4345 # Check for a PAM clear-text auth, accounts, password
4346 # and session support. Most PAM implementations keep their
4347 # headers in /usr/include/security. Darwin keeps its in
4348 # /usr/include/pam.
4350 with_pam_for_crypt=no
4351 try_pam=auto
4352 AC_MSG_CHECKING(whether to try PAM support)
4353 AC_ARG_WITH(pam,
4354 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4355 [ case "$withval" in
4356   yes|no|auto)
4357     try_pam=$withval
4358     ;;
4359   esac
4361 AC_MSG_RESULT([$try_pam])
4363 use_pam=no
4364 create_pam_modules=no
4365 if test x"${try_pam}" != x"no";then
4366         use_pam=yes
4367         create_pam_modules=yes
4369         # Most systems have PAM headers in /usr/include/security, but Darwin
4370         # has them in /usr/include/pam.
4371         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4372         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4373                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4374                 if test x"${try_pam}" = x"yes";then
4375                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4376                 fi
4377                 use_pam=no
4378                 create_pam_modules=no
4379         fi
4381         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4382         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4383                 if test x"${try_pam}" = x"yes";then
4384                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4385                 fi
4386                 use_pam=no
4387                 create_pam_modules=no
4388         fi
4390         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4391                 #if HAVE_SECURITY_PAM_APPL_H
4392                 #include <security/pam_appl.h>
4393                 #endif
4394                 #if HAVE_PAM_PAM_APPL_H
4395                 #include <pam/pam_appl.h>
4396                 #endif
4397         ]])
4398         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4399                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4400                 if test x"${try_pam}" = x"yes";then
4401                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4402        fi
4403                 create_pam_modules=no
4404     fi
4406         if test x"$use_pam" = x"yes"; then
4407     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4408                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4409                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4410     with_pam_for_crypt=yes
4412                 if test x"$create_pam_modules" = x"yes"; then
4413                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4414                         # this checks are optional,
4415                         # we don't care about the results here
4416                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4417                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4418                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4419                 else
4420                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4421                 fi
4422         fi
4423         AC_MSG_CHECKING(whether to use PAM support)
4424         AC_MSG_RESULT([$use_pam])
4426         AC_MSG_CHECKING(whether to have PAM MODULES support)
4427         AC_MSG_RESULT([$create_pam_modules])
4428 fi # try_pam != no
4430 #################################################
4431 # check for PAM_RADIO_TYPE
4432 AC_TRY_COMPILE([
4433 #if (!defined(LINUX))
4435 #define PAM_EXTERN extern
4436 #if defined(HAVE_SECURITY_PAM_APPL_H)
4437 #include <security/pam_appl.h>
4438 #elif defined(HAVE_PAM_PAM_APPL_H)
4439 #include <pam/pam_appl.h>
4440 #endif
4442 #endif
4444 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4445 #include <security/pam_modules.h>
4446 #elif defined(HAVE_PAM_PAM_MODULES_H)
4447 #include <pam/pam_modules.h>
4448 #endif
4450 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4451 #include <security/_pam_macros.h>
4452 #elif defined(HAVE_PAM__PAM_MACROS_H)
4453 #include <pam/_pam_macros.h>
4454 #endif
4456 #ifdef HAVE_SECURITY_PAM_EXT_H
4457 #include <security/pam_ext.h>
4458 #endif
4460 [int i; i = PAM_RADIO_TYPE; ],
4461 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4463 #################################################
4464 # check for pam_smbpass support
4465 PAM_MODULES=""
4466 INSTALL_PAM_MODULES=""
4467 UNINSTALL_PAM_MODULES=""
4469 try_pam_smbpass=auto
4470 AC_MSG_CHECKING(whether to use pam_smbpass)
4471 AC_ARG_WITH(pam_smbpass,
4472 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4473 [ case "$withval" in
4474   yes|no|auto)
4475     try_pam_smbpass=$withval
4476   ;;
4477   *)
4478     AC_MSG_ERROR([valid options are yes,no,auto])
4479   ;;
4480   esac
4483 if test x"${try_pam_smbpass}" = xno ; then
4484         use_pam_smbpass=no
4485 else
4486         use_pam_smbpass=yes
4487         # Conditions under which pam_smbpass can't be built.
4488         if test x"$BLDSHARED" != xtrue ; then
4489                 if test x"${try_pam_smbpass}" = xyes ; then
4490                         AC_MSG_ERROR([No support for shared modules])
4491                 fi
4492                 use_pam_smbpass=no
4493         elif test x"$create_pam_modules" != xyes ; then
4494                 if test x"${try_pam_smbpass}" = xyes ; then
4495                         AC_MSG_ERROR([No support for PAM MODULES])
4496                 fi
4497                 use_pam_smbpass=no
4498         fi
4500         if test x"${use_pam_smbpass}" = xyes ; then 
4501                 PAM_MODULES="pam_smbpass"
4502                 INSTALL_PAM_MODULES="installpammodules"
4503                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4504         fi
4506 AC_MSG_RESULT([$use_pam_smbpass])
4510 ## moved after the check for -lcrypt in order to
4511 ## ensure that the necessary libraries are included
4512 ## check checking for truncated salt.  Wrapped by the
4513 ## $with_pam_for_crypt variable as above   --jerry
4515 if test $with_pam_for_crypt = no; then
4516 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4517 crypt_LIBS="$LIBS"
4518 LIBS="$AUTH_LIBS $LIBS"
4519 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4520         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4521 LIBS="$crypt_LIBS"])
4522 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4523         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4527 #################################################
4528 # check for a NISPLUS_HOME support
4529 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4530 AC_ARG_WITH(nisplus-home,
4531 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4532 [ case "$withval" in
4533   yes)
4534     AC_MSG_RESULT(yes)
4535     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4536     ;;
4537   *)
4538     AC_MSG_RESULT(no)
4539     ;;
4540   esac ],
4541   AC_MSG_RESULT(no)
4544 #################################################
4545 # check for syslog logging
4546 AC_MSG_CHECKING(whether to use syslog logging)
4547 AC_ARG_WITH(syslog,
4548 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4549 [ case "$withval" in
4550   yes)
4551     AC_MSG_RESULT(yes)
4552     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4553     ;;
4554   *)
4555     AC_MSG_RESULT(no)
4556     ;;
4557   esac ],
4558   AC_MSG_RESULT(no)
4561 #################################################
4562 # check for custom syslog facility
4563 AC_MSG_CHECKING(whether to use a custom syslog facility)
4564 AC_ARG_WITH(syslog-facility,
4565 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4567   if test "$withval" = "no" ; then
4568     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4569   else
4570      if test "$withval" != "yes" ; then
4571         syslog_facility="$withval"
4572         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4573      fi
4574   fi
4577 #################################################
4578 # check for experimental disk-quotas support
4580 samba_cv_WITH_QUOTAS=auto
4581 samba_cv_TRY_QUOTAS=no
4582 samba_cv_RUN_QUOTA_TESTS=auto
4583 samba_cv_WITH_SYS_QUOTAS=auto
4584 samba_cv_TRY_SYS_QUOTAS=auto
4585 samba_cv_SYSQUOTA_FOUND=no
4587 AC_MSG_CHECKING(whether to try disk-quotas support)
4588 AC_ARG_WITH(quotas,
4589 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4590 [ case "$withval" in
4591   yes)
4592     AC_MSG_RESULT(yes)
4593     samba_cv_WITH_QUOTAS=yes
4594     samba_cv_TRY_QUOTAS=yes
4595     samba_cv_RUN_QUOTA_TESTS=yes
4596     #set sys quotas to auto in this case
4597     samba_cv_TRY_SYS_QUOTAS=auto
4598     ;;
4599   auto)
4600     AC_MSG_RESULT(auto)
4601     samba_cv_WITH_QUOTAS=auto
4602     samba_cv_TRY_QUOTAS=auto
4603     samba_cv_RUN_QUOTA_TESTS=auto
4604     #set sys quotas to auto in this case
4605     samba_cv_TRY_SYS_QUOTAS=auto
4606     ;;
4607   no)
4608     AC_MSG_RESULT(no)
4609     samba_cv_WITH_QUOTAS=no
4610     samba_cv_TRY_QUOTAS=no
4611     samba_cv_RUN_QUOTA_TESTS=no
4612     ;;
4613   *)
4614     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4615     ;;
4616   esac ],
4617   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4620 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4621 AC_ARG_WITH(sys-quotas,
4622 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4623 [ case "$withval" in
4624   yes)
4625     AC_MSG_RESULT(yes)
4626     samba_cv_WITH_SYS_QUOTAS=yes
4627     samba_cv_TRY_SYS_QUOTAS=yes
4628     samba_cv_RUN_QUOTA_TESTS=yes
4629     ;;
4630   auto)
4631     AC_MSG_RESULT(auto)
4632     samba_cv_WITH_SYS_QUOTAS=auto
4633     samba_cv_TRY_SYS_QUOTAS=auto
4634     samba_cv_RUN_QUOTA_TESTS=auto
4635     ;;
4636   no)
4637     AC_MSG_RESULT(no)
4638     samba_cv_WITH_SYS_QUOTAS=no
4639     samba_cv_TRY_SYS_QUOTAS=no
4640     ;;
4641   *)
4642     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4643     ;;
4644   esac ],
4645   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4648 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4649 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4650   case "$host_os" in
4651         *linux*)
4652             AC_MSG_RESULT(yes)
4653             samba_cv_TRY_SYS_QUOTAS=yes
4654             samba_cv_RUN_QUOTA_TESTS=yes
4655             ;;
4656         *)
4657             AC_MSG_RESULT(no)
4658             samba_cv_TRY_SYS_QUOTAS=no
4659             ;;
4660   esac
4663 #############################################
4664 # only check for quota stuff if --with-quotas
4665 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4667 case "$host_os" in
4668         # on linux we didn't need to test we have builtin support
4669         *linux*)
4670             samba_cv_SYSQUOTA_FOUND=yes
4671             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4672             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4673             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4674             AC_MSG_RESULT(yes)
4676             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4677             samba_cv_found_xfs_header=yes
4678             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4679             AC_MSG_RESULT(yes)
4680             ;;
4681         *solaris*)
4682             # need to set this define when using static linking (BUG 1473)
4683             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4684             ;;
4685         *)
4686             ;;
4687 esac
4689 # some broken header files need this
4690 AC_CHECK_HEADER(asm/types.h,[
4691             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4692             AC_ADD_INCLUDE(<asm/types.h>)
4693             ])
4695 # For quotas on Veritas VxFS filesystems
4696 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4698 # For quotas on Linux XFS filesystems
4699 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4701 # For sys/quota.h and linux/quota.h
4702 AC_CHECK_HEADERS(sys/quota.h)
4704 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4705 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4706 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4707 AC_TRY_COMPILE([
4708 #include "confdefs.h"
4709 #ifdef HAVE_SYS_TYPES_H
4710 #include <sys/types.h>
4711 #endif
4712 #ifdef HAVE_ASM_TYPES_H
4713 #include <asm/types.h>
4714 #endif
4715 #include <sys/quota.h>
4716 ],[int i = Q_XGETQUOTA;],
4717 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4718 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4719         samba_cv_found_xfs_header=yes
4723 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4724 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4725 AC_TRY_COMPILE([
4726 #include "confdefs.h"
4727 #ifdef HAVE_SYS_QUOTA_H
4728 #include <sys/quota.h>
4729 #endif
4731 struct dqblk D;
4732 D.dqb_fsoftlimit = 0;],
4733 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4734 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4735         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4738 ##################
4739 # look for a working quota system
4741 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4742 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4743 AC_TRY_RUN_STRICT([
4744 #define HAVE_QUOTACTL_4A 1
4745 #define AUTOCONF_TEST 1
4746 #include "confdefs.h"
4747 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4748            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4749 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4750     samba_cv_SYSQUOTA_FOUND=yes;
4751     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4752     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4756 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4757 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4758 AC_TRY_RUN_STRICT([
4759 #define HAVE_QUOTACTL_4B 1
4760 #define AUTOCONF_TEST 1
4761 #include "confdefs.h"
4762 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4763            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4764 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4765     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4766     samba_cv_SYSQUOTA_FOUND=yes;
4767     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4768     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4772 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4773 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4774 AC_TRY_RUN_STRICT([
4775 #define HAVE_QUOTACTL_3 1
4776 #define AUTOCONF_TEST 1
4777 #include "confdefs.h"
4778 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4779            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4780 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4781     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4782     samba_cv_SYSQUOTA_FOUND=yes;
4783     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4784     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4788 #################################################
4789 # check for mntent.h and struct mntent
4790 AC_CHECK_HEADERS(mntent.h)
4791 #################################################
4792 # check for setmntent,getmntent,endmntent
4793 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4795 #################################################
4796 # check for devnm.h and struct mntent
4797 AC_CHECK_HEADERS(devnm.h)
4798 #################################################
4799 # check for devnm
4800 AC_CHECK_FUNCS(devnm)
4802 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4803     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4804         # if --with-sys-quotas=yes then build it
4805         # you have can use the get/set quota command smb.conf
4806         # options then
4807         samba_cv_SYSQUOTA_FOUND=auto
4808     fi
4809     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4810         # if --with-sys-quotas=yes then build it
4811         # you have can use the get/set quota command smb.conf
4812         # options then
4813         samba_cv_TRY_SYS_QUOTAS=auto
4814     fi
4817 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4818 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4819 SAVE_CPPFLAGS="$CPPFLAGS"
4820 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4821 AC_TRY_COMPILE([
4822 #include "confdefs.h"
4823 #define NO_PROTO_H 1
4824 #define NO_CONFIG_H 1
4825 #define HAVE_SYS_QUOTAS 1
4826 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4827 #include "${srcdir-.}/lib/sysquotas.c"
4828 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4829 CPPFLAGS="$SAVE_CPPFLAGS"
4831 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4832 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4833     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4834         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4835         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4836         samba_cv_WE_USE_SYS_QUOTAS=yes
4837         AC_MSG_RESULT(yes)
4838     else
4839         AC_MSG_RESULT(no)
4840     fi
4844 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4845 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4846 SAVE_CPPFLAGS="$CPPFLAGS"
4847 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4848 AC_TRY_COMPILE([
4849 #include "confdefs.h"
4850 #define NO_PROTO_H 1
4851 #define NO_CONFIG_H 1
4852 #define HAVE_SYS_QUOTAS 1
4853 #define HAVE_XFS_QUOTAS 1
4854 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4855 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4856 CPPFLAGS="$SAVE_CPPFLAGS"
4858 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4859     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4860         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4861     fi
4865 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4866 SAVE_CPPFLAGS="$CPPFLAGS"
4867 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4868 AC_TRY_COMPILE([
4869 #include "confdefs.h"
4870 #define NO_PROTO_H 1
4871 #define NO_CONFIG_H 1
4872 #include "${srcdir-.}/smbd/quotas.c"
4873 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4874 CPPFLAGS="$SAVE_CPPFLAGS"
4876 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4877 AC_MSG_CHECKING(whether to use the old quota support)
4878     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4879       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4880         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4881         AC_MSG_RESULT(yes)
4882       else
4883         AC_MSG_RESULT(no)
4884       fi
4885     else
4886       AC_MSG_RESULT(no)
4887     fi
4890 ####################
4891 # End of quota check samba_cv_RUN_QUOTA_TESTS
4894 #################################################
4895 # check for experimental utmp accounting
4897 AC_MSG_CHECKING(whether to support utmp accounting)
4898 WITH_UTMP=yes
4899 AC_ARG_WITH(utmp,
4900 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4901 [ case "$withval" in
4902   no)
4903                 WITH_UTMP=no
4904                 ;;
4905   *)
4906                 WITH_UTMP=yes
4907                 ;;
4908   esac ],
4911 # utmp requires utmp.h
4912 # Note similar check earlier, when checking utmp details.
4914 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4915         utmp_no_reason=", no utmp.h on $host_os"
4916         WITH_UTMP=no
4919 # Display test results
4921 if test x"$WITH_UTMP" = x"yes"; then
4922         AC_MSG_RESULT(yes)
4923         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4924 else
4925         AC_MSG_RESULT(no$utmp_no_reason)
4929 #################################################
4930 # these tests are taken from the GNU fileutils package
4931 AC_CHECKING(how to get filesystem space usage)
4932 space=no
4934 # Test for statvfs64.
4935 if test $space = no; then
4936   # SVR4
4937   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4938   [AC_TRY_RUN([
4939 #if defined(HAVE_UNISTD_H)
4940 #include <unistd.h>
4941 #endif
4942 #include <sys/types.h>
4943 #include <sys/statvfs.h>
4944   main ()
4945   {
4946     struct statvfs64 fsd;
4947     exit (statvfs64 (".", &fsd));
4948   }],
4949   fu_cv_sys_stat_statvfs64=yes,
4950   fu_cv_sys_stat_statvfs64=no,
4951   fu_cv_sys_stat_statvfs64=cross)])
4952   if test $fu_cv_sys_stat_statvfs64 = yes; then
4953     space=yes
4954     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4955   fi
4958 # Perform only the link test since it seems there are no variants of the
4959 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4960 # because that got a false positive on SCO OSR5.  Adding the declaration
4961 # of a `struct statvfs' causes this test to fail (as it should) on such
4962 # systems.  That system is reported to work fine with STAT_STATFS4 which
4963 # is what it gets when this test fails.
4964 if test $space = no; then
4965   # SVR4
4966   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4967                  [AC_TRY_LINK([#include <sys/types.h>
4968 #include <sys/statvfs.h>],
4969                               [struct statvfs fsd; statvfs (0, &fsd);],
4970                               fu_cv_sys_stat_statvfs=yes,
4971                               fu_cv_sys_stat_statvfs=no)])
4972   if test $fu_cv_sys_stat_statvfs = yes; then
4973     space=yes
4974     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4975   fi
4978 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4979 # This is not the case on ancient Linux systems.
4981 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4982     AC_TRY_COMPILE([#include <sys/types.h>
4983 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4984         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4985 if test x"$samba_cv_fsid_int" = x"yes"; then
4986     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4989 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4990 # systems use f_bsize.
4991 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4992     AC_TRY_COMPILE([#include <sys/types.h>
4993 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4994         samba_cv_frsize=yes,samba_cv_frsize=no)])
4995 if test x"$samba_cv_frsize" = x"yes"; then
4996     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4999 # Some systems use f_flag in struct statvfs while others use f_flags
5000 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5001     AC_TRY_COMPILE([#include <sys/types.h>
5002 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5003         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5004 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5005     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5008 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5009     AC_TRY_COMPILE([#include <sys/types.h>
5010 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5011         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5012 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5013     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5016 if test $space = no; then
5017   # DEC Alpha running OSF/1
5018   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5019   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5020   [AC_TRY_RUN([
5021 #include <sys/param.h>
5022 #include <sys/types.h>
5023 #include <sys/mount.h>
5024   main ()
5025   {
5026     struct statfs fsd;
5027     fsd.f_fsize = 0;
5028     exit (statfs (".", &fsd, sizeof (struct statfs)));
5029   }],
5030   fu_cv_sys_stat_statfs3_osf1=yes,
5031   fu_cv_sys_stat_statfs3_osf1=no,
5032   fu_cv_sys_stat_statfs3_osf1=no)])
5033   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5034   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5035     space=yes
5036     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5037   fi
5040 if test $space = no; then
5041 # AIX
5042   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5043 member (AIX, 4.3BSD)])
5044   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5045   [AC_TRY_RUN([
5046 #ifdef HAVE_SYS_PARAM_H
5047 #include <sys/param.h>
5048 #endif
5049 #ifdef HAVE_SYS_MOUNT_H
5050 #include <sys/mount.h>
5051 #endif
5052 #ifdef HAVE_SYS_VFS_H
5053 #include <sys/vfs.h>
5054 #endif
5055   main ()
5056   {
5057   struct statfs fsd;
5058   fsd.f_bsize = 0;
5059   exit (statfs (".", &fsd));
5060   }],
5061   fu_cv_sys_stat_statfs2_bsize=yes,
5062   fu_cv_sys_stat_statfs2_bsize=no,
5063   fu_cv_sys_stat_statfs2_bsize=no)])
5064   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5065   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5066     space=yes
5067     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5068   fi
5071 if test $space = no; then
5072 # SVR3
5073   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5074   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5075   [AC_TRY_RUN([#include <sys/types.h>
5076 #include <sys/statfs.h>
5077   main ()
5078   {
5079   struct statfs fsd;
5080   exit (statfs (".", &fsd, sizeof fsd, 0));
5081   }],
5082     fu_cv_sys_stat_statfs4=yes,
5083     fu_cv_sys_stat_statfs4=no,
5084     fu_cv_sys_stat_statfs4=no)])
5085   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5086   if test $fu_cv_sys_stat_statfs4 = yes; then
5087     space=yes
5088     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5089   fi
5092 if test $space = no; then
5093 # 4.4BSD and NetBSD
5094   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5095 member (4.4BSD and NetBSD)])
5096   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5097   [AC_TRY_RUN([#include <sys/types.h>
5098 #ifdef HAVE_SYS_PARAM_H
5099 #include <sys/param.h>
5100 #endif
5101 #ifdef HAVE_SYS_MOUNT_H
5102 #include <sys/mount.h>
5103 #endif
5104   main ()
5105   {
5106   struct statfs fsd;
5107   fsd.f_fsize = 0;
5108   exit (statfs (".", &fsd));
5109   }],
5110   fu_cv_sys_stat_statfs2_fsize=yes,
5111   fu_cv_sys_stat_statfs2_fsize=no,
5112   fu_cv_sys_stat_statfs2_fsize=no)])
5113   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5114   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5115     space=yes
5116         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5117   fi
5120 if test $space = no; then
5121   # Ultrix
5122   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5123   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5124   [AC_TRY_RUN([#include <sys/types.h>
5125 #ifdef HAVE_SYS_PARAM_H
5126 #include <sys/param.h>
5127 #endif
5128 #ifdef HAVE_SYS_MOUNT_H
5129 #include <sys/mount.h>
5130 #endif
5131 #ifdef HAVE_SYS_FS_TYPES_H
5132 #include <sys/fs_types.h>
5133 #endif
5134   main ()
5135   {
5136   struct fs_data fsd;
5137   /* Ultrix's statfs returns 1 for success,
5138      0 for not mounted, -1 for failure.  */
5139   exit (statfs (".", &fsd) != 1);
5140   }],
5141   fu_cv_sys_stat_fs_data=yes,
5142   fu_cv_sys_stat_fs_data=no,
5143   fu_cv_sys_stat_fs_data=no)])
5144   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5145   if test $fu_cv_sys_stat_fs_data = yes; then
5146     space=yes
5147     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5148   fi
5152 # As a gating factor for large file support, in order to
5153 # use <4GB files we must have the following minimal support
5154 # available.
5155 # long long, and a 64 bit off_t or off64_t.
5156 # If we don't have all of these then disable large
5157 # file support.
5159 AC_MSG_CHECKING([if large file support can be enabled])
5160 AC_TRY_COMPILE([
5161 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5162 #include <sys/types.h>
5163 #else
5164 __COMPILE_ERROR_
5165 #endif
5167 [int i],
5168 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5169 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5170         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5172 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5174 #################################################
5175 # check for cluster extensions
5177 CTDB_CFLAGS=""
5178 AC_SUBST(CTDB_CFLAGS)
5179 AC_ARG_WITH(ctdb,
5180 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5181 [ case "$withval" in
5182   yes|no)
5183     AC_MSG_WARN([--with-ctdb called without argument])
5184     ;;
5185   *)
5186     CTDB_CPPFLAGS="-I$withval/include"
5187     ;;
5188   esac])
5190 SAVED_CPPFLAGS="$CPPFLAGS"
5191 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5192 ctdb_broken="missing or broken headers"
5194 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5195 #include "confdefs.h"
5196 #define NO_CONFIG_H
5197 #include "replace.h"
5198 #include "system/wait.h"
5199 #include "system/network.h"
5200 #define private #error __USED_RESERVED_WORD_private__
5201 #include <talloc.h>
5202 #include <tdb.h>
5203 #include <ctdb.h>
5206 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5207 #include "confdefs.h"
5208 #define NO_CONFIG_H
5209 #include "replace.h"
5210 #include "system/wait.h"
5211 #include "system/network.h"
5212 #include <talloc.h>
5213 #include <tdb.h>
5214 #include <ctdb.h>
5215 #include <ctdb_private.h>
5217 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5218         ctdb_broken=no
5219 else
5220         ctdb_broken="ctdb transaction support missing or too old"
5223 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5224 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5225         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5226 ],,[
5227 #include "confdefs.h"
5228 #define NO_CONFIG_H
5229 #include "replace.h"
5230 #include "system/wait.h"
5231 #include "system/network.h"
5232 #include <talloc.h>
5233 #include <tdb.h>
5234 #include <ctdb.h>
5235 #include <ctdb_private.h>
5238 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5239         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5241         ctdb_broken="missing struct ctdb_control_tcp"
5243 #include "confdefs.h"
5244 #define NO_CONFIG_H
5245 #include "replace.h"
5246 #include "system/wait.h"
5247 #include "system/network.h"
5248 #include <talloc.h>
5249 #include <tdb.h>
5250 #include <ctdb.h>
5251 #include <ctdb_private.h>
5254 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5255         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5256 ],,[
5257 #include "confdefs.h"
5258 #define NO_CONFIG_H
5259 #include "replace.h"
5260 #include "system/wait.h"
5261 #include "system/network.h"
5262 #include <talloc.h>
5263 #include <tdb.h>
5264 #include <ctdb.h>
5265 #include <ctdb_private.h>
5267 CPPFLAGS="$SAVED_CPPFLAGS"
5269 AC_MSG_CHECKING(cluster support)
5270 AC_ARG_WITH(cluster-support,
5271 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5273 if test x"$with_cluster_support" = x ; then
5274         with_cluster_support="auto"
5277 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5278         if test "x$with_cluster_support" = "xyes"; then
5279                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5280         fi
5281         with_cluster_support=no
5284 if test x"$ctdb_broken" != x"no"; then
5285         if test "x$with_cluster_support" = "xyes"; then
5286                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5287         fi
5288         with_cluster_support=no
5291 if test "x$with_cluster_support" != "xno"; then
5292     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5293     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5294     AC_MSG_RESULT(yes)
5295 else
5296     AC_MSG_RESULT(no)
5299 #################################################
5300 # check for ACL support
5302 AC_MSG_CHECKING(whether to support ACLs)
5303 AC_ARG_WITH(acl-support,
5304 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5305 [ case "$withval" in
5306         yes|no)
5307                 with_acl_support="$withval"
5308                 ;;
5309   esac ])
5311 if test x"$with_acl_support" = x ; then
5312         with_acl_support="auto"
5315 AC_MSG_RESULT($with_acl_support)
5317 if test x"$with_acl_support" = x"no"; then
5318         AC_MSG_RESULT(Disabling ACL support)
5319         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5320 else
5321         AC_MSG_NOTICE(checking whether ACL support is available:)
5322         case "$host_os" in
5323         *sysv5*)
5324                 AC_MSG_NOTICE(Using UnixWare ACLs)
5325                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5326                 default_static_modules="$default_static_modules vfs_solarisacl"
5327                 ;;
5328         *solaris*)
5329                 AC_MSG_NOTICE(Using solaris ACLs)
5330                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5331                 ACL_LIBS="$ACL_LIBS -lsec"
5332                 default_static_modules="$default_static_modules vfs_solarisacl"
5333                 ;;
5334         *hpux*)
5335                 AC_MSG_NOTICE(Using HPUX ACLs)
5336                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5337                 default_static_modules="$default_static_modules vfs_hpuxacl"
5338                 ;;
5339         *irix*)
5340                 AC_MSG_NOTICE(Using IRIX ACLs)
5341                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5342                 default_static_modules="$default_static_modules vfs_irixacl"
5343                 ;;
5344         *aix*)
5345                 AC_MSG_NOTICE(Using AIX ACLs)
5346                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5347                 default_static_modules="$default_static_modules vfs_aixacl"
5348                 ;;
5349         *osf*)
5350                 AC_MSG_NOTICE(Using Tru64 ACLs)
5351                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5352                 ACL_LIBS="$ACL_LIBS -lpacl"
5353                 default_static_modules="$default_static_modules vfs_tru64acl"
5354                 ;;
5355         *darwin*)
5356                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5357                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5358                 ;;
5359         *)
5360                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5361                 case "$host_os" in
5362                 *linux*)
5363                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5364                         ;;
5365                 esac
5366                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5367                         acl_LIBS=$LIBS
5368                         LIBS="$LIBS $ACL_LIBS"
5369                         AC_TRY_LINK([
5370                                 #include <sys/types.h>
5371                                 #include <sys/acl.h>
5372                         ],[
5373                                 acl_t acl;
5374                                 int entry_id;
5375                                 acl_entry_t *entry_p;
5376                                 return acl_get_entry(acl, entry_id, entry_p);
5377                         ],
5378                         [samba_cv_HAVE_POSIX_ACLS=yes],
5379                         [samba_cv_HAVE_POSIX_ACLS=no])
5380                         LIBS=$acl_LIBS
5381                 ])
5382                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5383                         AC_MSG_NOTICE(Using posix ACLs)
5384                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5385                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5386                                 acl_LIBS=$LIBS
5387                                 LIBS="$LIBS $ACL_LIBS"
5388                                 AC_TRY_LINK([
5389                                         #include <sys/types.h>
5390                                         #include <sys/acl.h>
5391                                 ],[
5392                                         acl_permset_t permset_d;
5393                                         acl_perm_t perm;
5394                                         return acl_get_perm_np(permset_d, perm);
5395                                 ],
5396                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5397                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5398                                 LIBS=$acl_LIBS
5399                         ])
5400                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5401                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5402                         fi
5403                         default_static_modules="$default_static_modules vfs_posixacl"
5404                 else
5405                         AC_MSG_NOTICE(ACL support is not avaliable)
5406                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5407                 fi
5408                 ;;
5409         esac
5410 fi # with_acl_support
5414 #################################################
5415 # check for AIO support
5417 AC_MSG_CHECKING(whether to support asynchronous io)
5418 AC_ARG_WITH(aio-support,
5419 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5420 [ case "$withval" in
5421   yes)
5423         AC_MSG_RESULT(yes)
5424         case "$host_os" in
5425         *)
5426                 AIO_LIBS=$LIBS
5427                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5428                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5429                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5430                 aio_LIBS=$LIBS
5431                 LIBS=$AIO_LIBS
5432                 AC_TRY_LINK([#include <sys/types.h>
5433 #include <aio.h>],
5434 [ struct aiocb a; return aio_read(&a);],
5435 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5436                 LIBS=$aio_LIBS])
5437                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5438                 aio_LIBS=$LIBS
5439                 LIBS=$AIO_LIBS
5440                 AC_TRY_LINK([#include <sys/types.h>
5441 #include <aio.h>],
5442 [ struct aiocb64 a; return aio_read64(&a);],
5443 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5444                 LIBS=$aio_LIBS])
5445                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5446                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5447                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5448                         LIBS=$AIO_LIBS
5449                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5450                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5451                         LIBS=$AIO_LIBS
5452                 fi
5454                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5455                         AC_MSG_CHECKING(for aio_read)
5456                         AC_LINK_IFELSE([#include <aio.h>
5457 int main() { struct aiocb a; return aio_read(&a); }],
5458 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5459 [AC_MSG_RESULT(no)])
5461                         AC_MSG_CHECKING(for aio_write)
5462                         AC_LINK_IFELSE([#include <aio.h>
5463 int main() { struct aiocb a; return aio_write(&a); }],
5464 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5465 [AC_MSG_RESULT(no)])
5467                         AC_MSG_CHECKING(for aio_fsync)
5468                         AC_LINK_IFELSE([#include <aio.h>
5469 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5470 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5471 [AC_MSG_RESULT(no)])
5473                         AC_MSG_CHECKING(for aio_return)
5474                         AC_LINK_IFELSE([#include <aio.h>
5475 int main() { struct aiocb a; return aio_return(&a); }],
5476 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5477 [AC_MSG_RESULT(no)])
5479                         AC_MSG_CHECKING(for aio_error)
5480                         AC_LINK_IFELSE([#include <aio.h>
5481 int main() { struct aiocb a; return aio_error(&a); }],
5482 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5483 [AC_MSG_RESULT(no)])
5485                         AC_MSG_CHECKING(for aio_cancel)
5486                         AC_LINK_IFELSE([#include <aio.h>
5487 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5488 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5489 [AC_MSG_RESULT(no)])
5491                         AC_MSG_CHECKING(for aio_suspend)
5492                         AC_LINK_IFELSE([#include <aio.h>
5493 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5494 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5495 [AC_MSG_RESULT(no)])
5496                 fi
5498                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5499                         AC_MSG_CHECKING(for aio_read64)
5500                         AC_LINK_IFELSE([#include <aio.h>
5501 int main() { struct aiocb a; return aio_read64(&a); }],
5502 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5503 [AC_MSG_RESULT(no)])
5505                         AC_MSG_CHECKING(for aio_write64)
5506                         AC_LINK_IFELSE([#include <aio.h>
5507 int main() { struct aiocb a; return aio_write64(&a); }],
5508 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5509 [AC_MSG_RESULT(no)])
5511                         AC_MSG_CHECKING(for aio_fsync64)
5512                         AC_LINK_IFELSE([#include <aio.h>
5513 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5514 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5515 [AC_MSG_RESULT(no)])
5517                         AC_MSG_CHECKING(for aio_return64)
5518                         AC_LINK_IFELSE([#include <aio.h>
5519 int main() { struct aiocb a; return aio_return64(&a); }],
5520 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5521 [AC_MSG_RESULT(no)])
5523                         AC_MSG_CHECKING(for aio_error64)
5524                         AC_LINK_IFELSE([#include <aio.h>
5525 int main() { struct aiocb a; return aio_error64(&a); }],
5526 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5527 [AC_MSG_RESULT(no)])
5529                         AC_MSG_CHECKING(for aio_cancel64)
5530                         AC_LINK_IFELSE([#include <aio.h>
5531 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5532 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5533 [AC_MSG_RESULT(no)])
5535                         AC_MSG_CHECKING(for aio_suspend64)
5536                         AC_LINK_IFELSE([#include <aio.h>
5537 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5538 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5539 [AC_MSG_RESULT(no)])
5540                 fi
5541             ;;
5542         esac
5543         ;;
5544   *)
5545     AC_MSG_RESULT(no)
5546     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5547     ;;
5548   esac ],
5549   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5550   AC_MSG_RESULT(no)
5553 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5554         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5555                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5556                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5557         fi
5560 #################################################
5561 # check for sendfile support
5563 with_sendfile_support=yes
5564 AC_MSG_CHECKING(whether to check to support sendfile)
5565 AC_ARG_WITH(sendfile-support,
5566 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5567 [ case "$withval" in
5568   yes)
5570         AC_MSG_RESULT(yes);
5572         case "$host_os" in
5573         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5574                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5575                 AC_TRY_LINK([#include <sys/sendfile.h>],
5577 int tofd, fromfd;
5578 off64_t offset;
5579 size_t total;
5580 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5582 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5584                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5585                 AC_TRY_LINK([#include <sys/sendfile.h>],
5587 int tofd, fromfd;
5588 off_t offset;
5589 size_t total;
5590 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5592 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5594 # Try and cope with broken Linux sendfile....
5595                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5596                 AC_TRY_LINK([\
5597 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5598 #undef _FILE_OFFSET_BITS
5599 #endif
5600 #include <sys/sendfile.h>],
5602 int tofd, fromfd;
5603 off_t offset;
5604 size_t total;
5605 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5607 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5609         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5610                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5611                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5612                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5613         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5614                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5615                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5616                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5617         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5618                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5619                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5620         else
5621                 AC_MSG_RESULT(no);
5622         fi
5624         ;;
5625         *freebsd* | *dragonfly* )
5626                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5627                 AC_TRY_LINK([\
5628 #include <sys/types.h>
5629 #include <unistd.h>
5630 #include <sys/socket.h>
5631 #include <sys/uio.h>],
5633         int fromfd, tofd, ret, total=0;
5634         off_t offset, nwritten;
5635         struct sf_hdtr hdr;
5636         struct iovec hdtrl;
5637         hdr.headers = &hdtrl;
5638         hdr.hdr_cnt = 1;
5639         hdr.trailers = NULL;
5640         hdr.trl_cnt = 0;
5641         hdtrl.iov_base = NULL;
5642         hdtrl.iov_len = 0;
5643         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5645 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5647         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5648                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5649                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5650                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5651         else
5652                 AC_MSG_RESULT(no);
5653         fi
5654         ;;
5656         *hpux*)
5657                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5658                 AC_TRY_LINK([\
5659 #include <sys/socket.h>
5660 #include <sys/uio.h>],
5662         int fromfd, tofd;
5663         size_t total=0;
5664         struct iovec hdtrl[2];
5665         ssize_t nwritten;
5666         off64_t offset;
5668         hdtrl[0].iov_base = 0;
5669         hdtrl[0].iov_len = 0;
5671         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5673 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5674         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5675                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5676                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5677                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5678         else
5679                 AC_MSG_RESULT(no);
5680         fi
5682                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5683                 AC_TRY_LINK([\
5684 #include <sys/socket.h>
5685 #include <sys/uio.h>],
5687         int fromfd, tofd;
5688         size_t total=0;
5689         struct iovec hdtrl[2];
5690         ssize_t nwritten;
5691         off_t offset;
5693         hdtrl[0].iov_base = 0;
5694         hdtrl[0].iov_len = 0;
5696         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5698 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5699         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5700                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5701                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5702                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5703         else
5704                 AC_MSG_RESULT(no);
5705         fi
5706         ;;
5708         *solaris*)
5709                 AC_CHECK_LIB(sendfile,sendfilev)
5710                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5711                 AC_TRY_LINK([\
5712 #include <sys/sendfile.h>],
5714         int sfvcnt;
5715         size_t xferred;
5716         struct sendfilevec vec[2];
5717         ssize_t nwritten;
5718         int tofd;
5720         sfvcnt = 2;
5722         vec[0].sfv_fd = SFV_FD_SELF;
5723         vec[0].sfv_flag = 0;
5724         vec[0].sfv_off = 0;
5725         vec[0].sfv_len = 0;
5727         vec[1].sfv_fd = 0;
5728         vec[1].sfv_flag = 0;
5729         vec[1].sfv_off = 0;
5730         vec[1].sfv_len = 0;
5731         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5733 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5735         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5736                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5737                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5738                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5739         else
5740                 AC_MSG_RESULT(no);
5741         fi
5743                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
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 = sendfilev(tofd, vec, sfvcnt, &xferred);
5766 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5768         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5769                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5770                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5771                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5772         else
5773                 AC_MSG_RESULT(no);
5774         fi
5775         ;;
5776         *aix*)
5777                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5778                 AC_TRY_LINK([\
5779 #include <sys/socket.h>],
5781         int fromfd, tofd;
5782         size_t total=0;
5783         struct sf_parms hdtrl;
5784         ssize_t nwritten;
5785         off64_t offset;
5787         hdtrl.header_data = 0;
5788         hdtrl.header_length = 0;
5789         hdtrl.file_descriptor = fromfd;
5790         hdtrl.file_offset = 0;
5791         hdtrl.file_bytes = 0;
5792         hdtrl.trailer_data = 0;
5793         hdtrl.trailer_length = 0;
5795         nwritten = send_file(&tofd, &hdtrl, 0);
5797 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5798         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5799                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5800                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5801                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5802         else
5803                 AC_MSG_RESULT(no);
5804         fi
5805         ;;
5806         *)
5807         ;;
5808         esac
5809         ;;
5810   *)
5811     AC_MSG_RESULT(no)
5812     ;;
5813   esac ],
5814   AC_MSG_RESULT(yes)
5817 ############################################
5818 # See if we have the Linux readahead syscall.
5820 AC_CACHE_CHECK([for Linux readahead],
5821                 samba_cv_HAVE_LINUX_READAHEAD,[
5822     AC_TRY_LINK([
5823 #if defined(HAVE_UNISTD_H)
5824 #include <unistd.h>
5825 #endif
5826 #include <fcntl.h>],
5827     [ssize_t err = readahead(0,0,0x80000);],
5828     samba_cv_HAVE_LINUX_READAHEAD=yes,
5829     samba_cv_HAVE_LINUX_READAHEAD=no)])
5831 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5832   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5833              [Whether Linux readahead is available])
5836 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5838 ############################################
5839 # See if we have the posix_fadvise syscall.
5841 AC_CACHE_CHECK([for posix_fadvise],
5842                 samba_cv_HAVE_POSIX_FADVISE,[
5843     AC_TRY_LINK([
5844 #if defined(HAVE_UNISTD_H)
5845 #include <unistd.h>
5846 #endif
5847 #include <fcntl.h>],
5848     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5849     samba_cv_HAVE_POSIX_FADVISE=yes,
5850     samba_cv_HAVE_POSIX_FADVISE=no)])
5852 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5853   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5854              [Whether posix_fadvise is available])
5857 ############################################
5858 # See if we have the Linux splice syscall.
5860 case "$host_os" in
5861 *linux*)
5862 AC_CACHE_CHECK([for Linux splice],
5863                 samba_cv_HAVE_LINUX_SPLICE,[
5864     AC_TRY_LINK([
5865 #if defined(HAVE_UNISTD_H)
5866 #include <unistd.h>
5867 #endif
5868 #include <fcntl.h>],
5869     [long ret = splice(0,0,1,0,400,0);],
5870     samba_cv_HAVE_LINUX_SPLICE=yes,
5871     samba_cv_HAVE_LINUX_SPLICE=no)])
5874 samba_cv_HAVE_LINUX_SPLICE=no
5876 esac
5878 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5879   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5880              [Whether Linux splice is available])
5883 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5885 ############################################
5886 # See if we have the a broken readlink syscall.
5888 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5889 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5890         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5892 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5893         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5896 #################################################
5897 # Check whether winbind is supported on this platform.  If so we need to
5898 # build and install client programs, sbin programs and shared libraries
5900 AC_MSG_CHECKING(whether to build winbind)
5902 # Initially, the value of $host_os decides whether winbind is supported
5904 HAVE_WINBIND=yes
5905 HAVE_WBCLIENT=no
5907 # Define external wbclient library to link against.  This disables winbind.
5908 # We define this here so --with-winbind can override it.
5909 AC_ARG_WITH(wbclient,
5910 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5912   case "$withval" in
5913         no)
5914                 HAVE_WBCLIENT=no
5915                 ;;
5916         yes)
5917                 HAVE_WBCLIENT=yes
5918                 HAVE_WINBIND=no
5919                 ;;
5920         *)
5921                 HAVE_WBCLIENT=yes
5922                 HAVE_WINBIND=no
5923                 WBCLIENT_INCLUDES="-I$withval/include"
5924                 WBCLIENT_LDFLAGS="-L$withval/lib"
5925                 ;;
5926   esac ],
5929 AC_SUBST(WBCLIENT_INCLUDES)
5930 AC_SUBST(WBCLIENT_LDFLAGS)
5931 AC_SUBST(WBCLIENT_LIBS)
5934 # Define the winbind shared library name and any specific linker flags
5935 # it needs to be built with.
5937 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5938 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5939 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5940 NSSSONAMEVERSIONSUFFIX=""
5942 case "$host_os" in
5943         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5944                 NSSSONAMEVERSIONSUFFIX=".2"
5945                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5946                 ;;
5947         *freebsd[[5-9]]*)
5948                 # FreeBSD winbind client is implemented as a wrapper around
5949                 # the Linux version.
5950                 NSSSONAMEVERSIONSUFFIX=".1"
5951                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5952                     ../nsswitch/winbind_nss_linux.o"
5953                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5954                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5955                 ;;
5957         *netbsd*[[3-9]]*)
5958                 # NetBSD winbind client is implemented as a wrapper
5959                 # around the Linux version. It needs getpwent_r() to
5960                 # indicate libc's use of the correct nsdispatch API.
5961                 #
5962                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5963                         WINBIND_NSS_EXTRA_OBJS="\
5964                             ../nsswitch/winbind_nss_netbsd.o \
5965                             ../nsswitch/winbind_nss_linux.o"
5966                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5967                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5968                 else
5969                         HAVE_WINBIND=no
5970                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5971                 fi
5972                 ;;
5973         *irix*)
5974                 # IRIX has differently named shared libraries
5975                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5976                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5977                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5978                 ;;
5979         *solaris*)
5980                 # Solaris winbind client is implemented as a wrapper around
5981                 # the Linux version.
5982                 NSSSONAMEVERSIONSUFFIX=".1"
5983                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5984                     ../nsswitch/winbind_nss_linux.o"
5985                 ;;
5986         *hpux11*)
5987                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5988                 ;;
5989         *aix*)
5990                 # AIX has even differently named shared libraries.  No
5991                 # WINS support has been implemented yet.
5992                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5993                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5994                 WINBIND_NSS="../nsswitch/WINBIND"
5995                 WINBIND_WINS_NSS=""
5996                 ;;
5997         *)
5998                 HAVE_WINBIND=no
5999                 winbind_no_reason=", unsupported on $host_os"
6000                 ;;
6001 esac
6003 # Check the setting of --with-winbind
6005 AC_ARG_WITH(winbind,
6006 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6008   case "$withval" in
6009         yes)
6010                 HAVE_WINBIND=yes
6011                 HAVE_WBCLIENT=no
6012                 ;;
6013         no)
6014                 HAVE_WINBIND=no
6015                 winbind_reason=""
6016                 ;;
6017   esac ],
6020 # We need unix domain sockets for winbind
6022 if test x"$HAVE_WINBIND" = x"yes"; then
6023         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6024                 winbind_no_reason=", no unix domain socket support on $host_os"
6025                 HAVE_WINBIND=no
6026         fi
6029 # Display test results
6031 if test x"$HAVE_WINBIND" = x"no"; then
6032         WINBIND_NSS=""
6033         WINBIND_WINS_NSS=""
6035 if test x"$HAVE_WBCLIENT" = x"yes"; then
6036         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6037                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6038         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6039         AC_MSG_RESULT(yes)
6040         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6041         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6042 else
6043         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6044                 BUILD_LIBWBCLIENT_SHARED=no
6045         else
6046                 BUILD_LIBWBCLIENT_SHARED=yes
6047         fi
6049         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6050         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6051         LIBWBCLIENT_SOVER=0
6052         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6053                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6054                 ## Only worry about libwbclient if we have shared
6055                 # library support
6056                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6057                 LIBWBCLIENT=libwbclient
6058                 INSTALL_LIBWBCLIENT=installlibwbclient
6059                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6060                 LIBWBCLIENT_LIBS="-lwbclient"
6061         else
6062                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6063                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6064         fi
6067 if test x"$HAVE_WINBIND" = x"yes"; then
6068         AC_MSG_RESULT(yes)
6069         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6071         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6072         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6073         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6074                 PAM_MODULES="$PAM_MODULES pam_winbind"
6075                 INSTALL_PAM_MODULES="installpammodules"
6076                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6077         fi
6078 else
6079         AC_MSG_RESULT(no$winbind_no_reason)
6082 AC_SUBST(WINBIND_NSS)
6083 AC_SUBST(WINBIND_WINS_NSS)
6084 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6085 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6086 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6088 AC_SUBST(WINBIND_KRB5_LOCATOR)
6090 # Solaris 10 does have new member in nss_XbyY_key
6091 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6092                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6093                 [#include <nss_dbdefs.h>])
6095 # Solaris has some extra fields in struct passwd that need to be
6096 # initialised otherwise nscd crashes.
6098 AC_CHECK_MEMBER(struct passwd.pw_comment,
6099                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6100                 [#include <pwd.h>])
6102 AC_CHECK_MEMBER(struct passwd.pw_age,
6103                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6104                 [#include <pwd.h>])
6106 # AIX 4.3.x and 5.1 do not have as many members in
6107 # struct secmethod_table as AIX 5.2
6108 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6109        [#include <usersec.h>])
6110 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6111        [#include <usersec.h>])
6113 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6114 AC_TRY_COMPILE([#include <sys/types.h>
6115 #include <sys/socket.h>],
6116 [struct ucred cred;
6117  socklen_t cred_len;
6118  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6120 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6121 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6122     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6126 #################################################
6127 # Check to see if we should use the included popt
6129 AC_ARG_WITH(included-popt,
6130 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6132   case "$withval" in
6133         yes)
6134                 INCLUDED_POPT=yes
6135                 ;;
6136         no)
6137                 INCLUDED_POPT=no
6138                 ;;
6139   esac ],
6141 if test x"$INCLUDED_POPT" != x"yes"; then
6142     AC_CHECK_LIB(popt, poptGetContext,
6143                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6146 AC_MSG_CHECKING(whether to use included popt)
6147 if test x"$INCLUDED_POPT" = x"yes"; then
6148     AC_MSG_RESULT(yes)
6149     BUILD_POPT='$(POPT_OBJ)'
6150     POPTLIBS='$(POPT_OBJ)'
6151     FLAGS1="-I\$(srcdir)/../lib/popt"
6152 else
6153     AC_MSG_RESULT(no)
6154         BUILD_POPT=""
6155     POPTLIBS="-lpopt"
6157 AC_SUBST(BUILD_POPT)
6158 AC_SUBST(POPTLIBS)
6159 AC_SUBST(FLAGS1)
6161 #################################################
6162 # Check if user wants DNS service discovery support
6164 AC_ARG_ENABLE(dnssd,
6165 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6167 AC_SUBST(DNSSD_LIBS)
6168 if test x"$enable_dnssd" = x"yes"; then
6169     have_dnssd_support=yes
6171     AC_CHECK_HEADERS(dns_sd.h)
6172     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6173         have_dnssd_support=no
6174     fi
6176     # On Darwin the DNSSD API is in libc, but on other platforms it's
6177     # probably in -ldns_sd
6178     AC_CHECK_FUNCS(DNSServiceRegister)
6179     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6180     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6181             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6182         have_dnssd_support=no
6183     fi
6185     if test x"$have_dnssd_support" = x"yes"; then
6186         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6187                 [Whether to enable DNS service discovery support])
6188     else
6189         if test x"$enable_dnssd" = x"yes"; then
6190             AC_MSG_ERROR(DNS service discovery support not available)
6191         fi
6192     fi
6196 #################################################
6197 # Check if user wants avahi support
6199 AC_ARG_ENABLE(avahi,
6200 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6202 if test x"$enable_avahi" != x"no"; then
6203     have_avahi_support=yes
6205     AC_CHECK_HEADERS(avahi-common/watch.h)
6206     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6207         have_avahi_support=no
6208     fi
6210     AC_CHECK_HEADERS(avahi-client/client.h)
6211     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6212         have_avahi_support=no
6213     fi
6215     save_LIBS="$LIBS"
6216     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6217     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6218     LIBS="$save_LIBS"
6220     if test x"$have_avahi_client_new" != x"yes" -o \
6221        x"$have_avahi_strerror" != x"yes" ; then
6222         have_avahi_support=no
6223     fi
6225     if test x"$have_avahi_support" = x"yes"; then
6226         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6227         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6228                 [Whether to enable avahi support])
6229         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6230     else
6231         if test x"$enable_avahi" = x"yes"; then
6232             AC_MSG_ERROR(avahi support not available)
6233         fi
6234     fi
6238 #################################################
6239 # Set pthread stuff
6241 PTHREAD_CFLAGS=error
6242 PTHREAD_LDFLAGS=error
6244 # If it's error, then the user didn't 
6245 # define it.
6246 if test "x$PTHREAD_LDFLAGS" = xerror; then
6247   AC_CHECK_LIB(pthread, pthread_attr_init, [
6248              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6249              PTHREAD_LDFLAGS="-lpthread" ])
6252 if test "x$PTHREAD_LDFLAGS" = xerror; then
6253   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6254              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6255              PTHREAD_LDFLAGS="-lpthreads" ])
6258 if test "x$PTHREAD_LDFLAGS" = xerror; then
6259    AC_CHECK_LIB(c_r, pthread_attr_init, [
6260                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6261                 PTHREAD_LDFLAGS="-pthread" ])
6264 if test "x$PTHREAD_LDFLAGS" = xerror; then
6265    AC_CHECK_FUNC(pthread_attr_init, [
6266                  PTHREAD_CFLAGS="-D_REENTRANT"
6267                  PTHREAD_LDFLAGS="-lpthread" ])
6270 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6271 # pthread_attr_init. On pthread_mutex_lock it works there...
6272 if test "x$PTHREAD_LDFLAGS" = xerror; then
6273    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6274                 PTHREAD_CFLAGS="-D_REENTRANT"
6275                 PTHREAD_LDFLAGS="-lpthread" ])
6278 AC_SUBST(PTHREAD_CFLAGS)
6279 AC_SUBST(PTHREAD_LDFLAGS)
6281 samba_cv_HAVE_PTHREAD=no
6282 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6283         samba_cv_HAVE_PTHREAD=yes
6284         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6285         ac_save_CFLAGS=$CFLAGS
6286         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6287         ac_save_LDFLAGS=$LDFLAGS
6288         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6289         AC_CHECK_HEADERS(pthread.h)
6290         CFLAGS=$ac_save_CFLAGS
6291         LDFLAGS=$ac_save_LDFLAGS
6292         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6295 #################################################
6296 # Check if user wants pthreadpool support
6298 AC_ARG_ENABLE(pthreadpool,
6299 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6301 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6302         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was found])
6305 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6306     LIBS="$LIBS $PTHREAD_LDFLAGS"
6307     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6308     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6309     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6312 #################################################
6313 # Check to see if we should use the included iniparser
6315 AC_ARG_WITH(included-iniparser,
6316 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6318   case "$withval" in
6319         yes)
6320                 INCLUDED_INIPARSER=yes
6321                 ;;
6322         no)
6323                 INCLUDED_INIPARSER=no
6324                 ;;
6325   esac ],
6327 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6328     AC_CHECK_LIB(iniparser, iniparser_load,
6329                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6332 AC_MSG_CHECKING(whether to use included iniparser)
6333 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6334     AC_MSG_RESULT(yes)
6335     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6336         INIPARSERLIBS=""
6337     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6338 else
6339     AC_MSG_RESULT(no)
6340         BUILD_INIPARSER=""
6341     INIPARSERLIBS="-liniparser"
6343 AC_SUBST(BUILD_INIPARSER)
6344 AC_SUBST(INIPARSERLIBS)
6345 AC_SUBST(FLAGS1)
6349 # Checks for the vfs_fileid module
6350 # Start
6351 AC_CHECK_FUNC(getmntent)
6353 AC_CHECK_HEADERS(sys/statfs.h)
6355 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6356 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6357              AC_TRY_RUN([
6358                 #include <sys/types.h>
6359                 #include <sys/statfs.h>
6360                 int main(void)
6361                 {
6362                         struct statfs fsd;
6363                         fsid_t fsid = fsd.f_fsid;
6364                         return statfs (".", &fsd);
6365                 }],
6366                 vfsfileid_cv_statfs=yes,
6367                 vfsfileid_cv_statfs=no,
6368                 vfsfileid_cv_statfs=cross)
6370 AC_MSG_RESULT($vfsfileid_cv_statfs)
6372 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6373         x"$vfsfileid_cv_statfs" = x"yes"; then
6374         default_shared_modules="$default_shared_modules vfs_fileid"
6376 # End
6377 # Checks for the vfs_fileid module
6380 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6382         eval MODULE_DEFAULT_$i=STATIC
6383 done
6385 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6387         dnl Fall back to static if we cannot build shared libraries
6388         eval MODULE_DEFAULT_$i=STATIC
6390         if test $BLDSHARED = true; then
6391                 eval MODULE_DEFAULT_$i=SHARED
6392         fi
6393 done
6395 dnl Always build these modules static
6396 MODULE_rpc_spoolss=STATIC
6397 MODULE_rpc_srvsvc=STATIC
6398 MODULE_idmap_tdb=STATIC
6399 MODULE_idmap_passdb=STATIC
6400 MODULE_idmap_nss=STATIC
6402 MODULE_nss_info_template=STATIC
6404 AC_ARG_WITH(static-modules,
6405 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6406 [ if test $withval; then
6407         for i in `echo $withval | sed -e 's/,/ /g'`
6408         do
6409                 eval MODULE_$i=STATIC
6410         done
6411 fi ])
6413 AC_ARG_WITH(shared-modules,
6414 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6415 [ if test $withval; then
6416         for i in `echo $withval | sed -e 's/,/ /g'`
6417         do
6418                         eval MODULE_$i=SHARED
6419         done
6420 fi ])
6422 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6423                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6424         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6425         AC_SUBST(SMBD_FAM_LIBS)
6428 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6429                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6430 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6431 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6432 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6433 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6434 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6437 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6438 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6439 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6440 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6441 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6442 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6443 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6444 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6445 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6446 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6447 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6448 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6449 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6450 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6451 SMB_SUBSYSTEM(RPC,smbd/process.o)
6453 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6454 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6455 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6456 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6457 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6458 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6459 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6460 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6461 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6462 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6464 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6465 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6467 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6468 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6469 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6470 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6471 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6473 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6474 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6475 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6476 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6477 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6478 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6479 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6480 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6481 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6482 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6484 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6512 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6513 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6514 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6515 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6516 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6517 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6518 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6519 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6520 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6521 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6522 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6523 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6524 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6525 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6526 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6527 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6528 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6530 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6532 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6533 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6534 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6536 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6537 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6538 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6539 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6541 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6543 #################################################
6544 # do extra things if we are running insure
6546 if test "${ac_cv_prog_CC}" = "insure"; then
6547         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6550 #################################################
6551 # If run from the build farm, enable NASTY hacks
6552 #################################################
6553 AC_MSG_CHECKING(whether to enable build farm hacks)
6554 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6555         AC_MSG_RESULT(yes)
6556         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6557 else
6558         AC_MSG_RESULT(no)
6561 #################################################
6562 # check for bad librt/libpthread interactions
6564 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6565     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6566     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6567     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6569 SMB_IF_RTSIGNAL_BUG(
6570         [
6571             # Have RT_SIGNAL bug, need to check whether the problem will
6572             # affect anything we have configured.
6574             rt_do_error=no
6575             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6576                 if test x"$rt_signal_lease_ok" = x"no" ; then
6577                     rt_do_error=yes
6578                 fi
6579             fi
6581             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6582                 if test x"$rt_signal_notify_ok" = x"no" ; then
6583                     rt_do_error=yes
6584                 fi
6585             fi
6587             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6588                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6589                 if test x"$rt_signal_aio_ok" = x"no" ; then
6590                     rt_do_error=yes
6591                 fi
6592             fi
6594             if test x"$rt_do_error" = x"yes" ; then
6595                 SMB_IS_LIBPTHREAD_LINKED(
6596                     [
6597                         cat<<MSG
6599 *** On this platforms, linking Samba against pthreads causes problems
6600 *** with the oplock and change notification mechanisms. You may be
6601 *** using pthreads as a side-effect of using the --with-aio-support
6602 *** or --with-profiling-data options. Please remove these and try again.
6605                     ],
6606                     [
6607                         cat<<MSG
6609 *** On this platform, the oplock and change notification mechanisms do not
6610 *** appear to work. Please report this problem to samba-technical@samba.org
6611 *** and attach the config.log file from this directory.
6614                     ])
6615                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6616             fi
6617         ],
6618         [
6619             # no RT_SIGNAL bug, we are golden
6620             SMB_IS_LIBPTHREAD_LINKED(
6621                 [
6622                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6623                 ])
6625         ],
6626         [
6627             # cross compiling, I hope you know what you are doing
6628             true
6629         ])
6633 AC_ARG_ENABLE(merged-build, 
6634 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6635 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6637 if test x"$enable_merged_build" = x"yes" -a \
6638         x"$merged_build_possible" = x"no" ; then
6639         AC_MSG_ERROR(Merged build required but not possible)
6642 m4_include(../lib/zlib/zlib.m4)
6644 if test x$enable_merged_build = xauto; then
6645         # Check for python
6646         m4_include(../m4/check_python.m4)
6647         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6649         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6650         AC_MSG_RESULT([$merged_build_possible])
6652         # Enable merged build automatically if possible, when in developer mode
6653         if test "x$developer" = xyes; then
6654                 enable_merged_build=$merged_build_possible
6655         fi
6658 if test x$enable_merged_build = xyes; then
6659         MERGED_BUILD=1
6660         saved_USESHARED="$USESHARED"
6661         USESHARED="false"
6662         m4_include(samba4.m4)
6663         USESHARED="$saved_USESHARED"
6666 AC_SUBST(ZLIB_LIBS)
6667 AC_SUBST(ZLIB_OBJS)
6668 AC_ZLIB([ZLIB_OBJS=""], [
6669         ZLIB_LIBS=""
6670         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6671                      deflate.o trees.o zutil.o inflate.o infback.o \
6672                          inftrees.o inffast.o
6673         do
6674                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6675         done
6676         CFLAGS="-I../lib/zlib $CFLAGS"
6679 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6681 if test "x$enable_dmalloc" = xyes
6682 then
6683         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6684         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6685                   [Define to check invariants around some common functions])
6686         LIBS="$LIBS -ldmalloc"
6689 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6690 LIB_REMOVE_USR_LIB(LDFLAGS)
6691 LIB_REMOVE_USR_LIB(LIBS)
6693 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6694 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6695 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6697 #################################################
6698 # Display summary of libraries detected
6700 AC_MSG_RESULT([Using libraries:])
6701 AC_MSG_RESULT([    LIBS = $LIBS])
6702 if test x"$with_ads_support" != x"no"; then
6703     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6705 if test x"$with_ldap_support" != x"no"; then
6706     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6708 if test x"$with_dnsupdate_support" != x"no"; then
6709     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6711 if test x"$have_dnssd_support" != x"no"; then
6712     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6714 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6716 #################################################
6717 # final configure stuff
6719 AC_MSG_CHECKING([configure summary])
6720 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6721            AC_MSG_RESULT(yes),
6722            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6723            AC_MSG_WARN([cannot run when cross-compiling]))
6725 dnl Merge in developer cflags from now on
6726 AC_SUBST(DEVELOPER_CFLAGS)
6727 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6728     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6731 # Stuff the smbd-only libraries at the end of the smbd link
6732 # path (if we have them).
6733 SMBD_LIBS="$samba_dmapi_libs"
6734 AC_SUBST(SMBD_LIBS)
6736 CFLAGS="${CFLAGS} \$(FLAGS)"
6738 if test x$MERGED_BUILD != x1; then
6739         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6740 else
6741         if test x"$BLDSHARED" = x"true" ; then
6742                 LDFLAGS="$LDFLAGS -L./bin"
6743         fi
6746 AC_SUBST(MAKEFILE)
6747 if test x$samba_cv_gnu_make = xyes; then
6748         MAKEFILE=Makefile
6749 else
6750         # When we don't have GNU Make, generate a copy of Makefile.in 
6751         # that doesn't have the "include " statements but just includes 
6752         # the files verbatim.
6753         MAKEFILE=Makefile-noincludes
6754         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6756 AC_OUTPUT($MAKEFILE
6757           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6758           lib/netapi/examples/Makefile
6759           lib/netapi/tests/Makefile
6760           pkgconfig/smbclient.pc
6761           pkgconfig/wbclient.pc
6762           pkgconfig/netapi.pc
6763           pkgconfig/smbsharemodes.pc
6764           ../examples/libsmbclient/Makefile.internal
6765           )
6766 dnl If we had to expand the includes, make tsure the output file is moved back
6767 AC_OUTPUT_COMMANDS([
6768 if test x$MAKEFILE != Makefile; then
6769         mv $MAKEFILE Makefile
6773 #################################################
6774 # Print very concise instructions on building/use
6775 if test "x$enable_dmalloc" = xyes
6776 then
6777         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6778         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])