s3-waf: Remove references to LDB
[Samba/gebeck_regimport.git] / source3 / configure.in
blob04a1c05b5b01263ad4ff2c8d7c70fa93fe698814
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], [true])
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 AC_CACHE_CHECK([whether we can compile with __attribute__((destructor))],
1370                samba_cv_function_attribute_destructor,
1371                [
1372                  AC_COMPILE_IFELSE(
1373                         [
1374                                 __attribute__((destructor))
1375                                 static void cleanup(void) { }
1376                         ],
1377                         samba_cv_function_attribute_destructor=yes)
1378                 ])
1380 if test x"$samba_cv_function_attribute_destructor" = xyes ; then
1381    AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
1382              [whether we can compile with __attribute__((destructor))])
1385 #####################################
1386 # needed for SRV lookups
1387 AC_CHECK_LIB(resolv, dn_expand)
1388 AC_CHECK_LIB(resolv, _dn_expand)
1389 AC_CHECK_LIB(resolv, __dn_expand)
1392 # Check for the functions putprpwnam, set_auth_parameters,
1393 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1394 # Needed for OSF1 and HPUX.
1397 AC_LIBTESTFUNC(security, putprpwnam)
1398 AC_LIBTESTFUNC(sec, putprpwnam)
1400 AC_LIBTESTFUNC(security, set_auth_parameters)
1401 AC_LIBTESTFUNC(sec, set_auth_parameters)
1403 # UnixWare 7.x has its getspnam in -lgen
1404 AC_LIBTESTFUNC(gen, getspnam)
1406 AC_LIBTESTFUNC(security, getspnam)
1407 AC_LIBTESTFUNC(sec, getspnam)
1409 AC_LIBTESTFUNC(security, bigcrypt)
1410 AC_LIBTESTFUNC(sec, bigcrypt)
1412 AC_LIBTESTFUNC(security, getprpwnam)
1413 AC_LIBTESTFUNC(sec, getprpwnam)
1415 AC_CHECK_FUNCS(strsignal)
1417 ############################################
1418 # Check for EA implementations
1419 case "$host_os" in
1420   *osf*)
1421         AC_SEARCH_LIBS(getproplist, [proplist])
1422         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1423         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1424         AC_CHECK_FUNCS(sizeof_proplist_entry)
1425   ;;
1426   *freebsd4* | *dragonfly* )
1427         AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1428   ;;
1429   *solaris*)
1430         AC_CHECK_FUNCS(attropen)
1431   ;;
1432   *)
1433         AC_SEARCH_LIBS(getxattr, [attr])
1434         AC_CHECK_FUNCS(getxattr,[
1435                 AC_CHECK_FUNCS(lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr setxattr lsetxattr fsetxattr)
1436                 ])
1437         AC_CHECK_FUNCS(getea,[
1438                 AC_CHECK_FUNCS(fgetea lgetea listea flistea llistea removeea fremoveea lremoveea setea fsetea lsetea)
1439                 ])
1440         AC_CHECK_FUNCS(attr_get,[
1441                 AC_CHECK_FUNCS(attr_list attr_set attr_remove attr_getf attr_listf attr_setf attr_removef)
1442                 ])
1443         AC_CHECK_FUNCS(extattr_delete_file,[
1444                 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)
1445                 ])
1446   ;;
1447 esac
1449 ########################################################
1450 # Do xattr functions take additional options like on Darwin?
1451 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1452         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1453                 old_LIBS=$LIBS
1454                 LIBS="$LIBS $ACL_LIBS"
1455                 AC_TRY_COMPILE([
1456                         #include <sys/types.h>
1457                         #if HAVE_ATTR_XATTR_H
1458                         #include <attr/xattr.h>
1459                         #elif HAVE_SYS_XATTR_H
1460                         #include <sys/xattr.h>
1461                         #endif
1462                 ],[
1463                         getxattr(0, 0, 0, 0, 0, 0);
1464                 ],
1465                 [smb_attr_cv_xattr_add_opt=yes],
1466                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1467         ])
1468         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1469                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1470         fi
1473 AC_DISABLE_STATIC
1474 AC_ENABLE_SHARED
1476 # Set defaults
1477 PIE_CFLAGS=""
1478 PIE_LDFLAGS=""
1479 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1481 if test "x$enable_pie" != xno
1482 then
1483         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1484         [
1485                 cat > conftest.c <<EOF
1486 int foo;
1487 main () { return 0;}
1489                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1490                 then
1491                         samba_cv_fpie=yes
1492                 else
1493                         samba_cv_fpie=no
1494                 fi
1495                 rm -f conftest*
1496         ])
1497         if test x"${samba_cv_fpie}" = x"yes"
1498         then
1499                 PIE_CFLAGS="-fPIE"
1500                 PIE_LDFLAGS="-pie"
1501         fi
1504 # Set defaults
1505 RELRO_LDFLAGS=""
1506 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1508 if test "x$enable_relro" != xno
1509 then
1510         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1511         [
1512                 cat > conftest.c <<EOF
1513 int foo;
1514 main () { return 0;}
1516                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1517                 then
1518                         samba_cv_relro=yes
1519                 else
1520                         samba_cv_relro=no
1521                 fi
1522                 rm -f conftest*
1523         ])
1524         if test x"${samba_cv_relro}" = x"yes"
1525         then
1526                 RELRO_LDFLAGS="-Wl,-z,relro"
1527         fi
1530 # Set defaults
1531 SYMSEXT="syms"
1532 AC_SUBST(SYMSEXT)
1534 # Assume non-shared by default and override below
1535 BLDSHARED="false"
1537 # these are the defaults, good for lots of systems
1538 HOST_OS="$host_os"
1539 LDSHFLAGS="-shared"
1540 MODULE_EXPORTS=""
1541 SONAMEFLAG="#"
1542 SHLD="\${CC} \${CFLAGS}"
1543 PICFLAG="${PIE_CFLAGS}"
1544 SHLIBEXT="so"
1545 DSO_EXPORTS=""
1547 # this bit needs to be modified for each OS that supports share libs
1548 # You need to specify how to create a shared library and
1549   # how to compile C code to produce PIC object files
1551   AC_MSG_CHECKING([ability to build shared libraries])
1553   # and these are for particular systems
1554   case "$host_os" in
1555                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1556                         case "$host_os" in
1557                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1558                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1559                         esac
1560                         BLDSHARED="true"
1561                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1562                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1563                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1564                         fi
1565                         DYNEXP="-Wl,--export-dynamic"
1566                         PICFLAG="-fPIC"
1567                         SONAMEFLAG="-Wl,-soname="
1568                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1569                         ;;
1570                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1571                         BLDSHARED="true"
1572                         if test "${GCC}" = "yes"; then
1573                                 PICFLAG="-fPIC"
1574                                 SONAMEFLAG="-Wl,-soname="
1575                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1576                                         DYNEXP="-Wl,-E"
1577                                 fi
1578                                 # TODO: need to add $CFLAGS here for explicit 64-bit builds?
1579                                 LDSHFLAGS="-shared"
1580                         else
1581                                 PICFLAG="-KPIC"
1582                                 ## ${CFLAGS} added for building 64-bit shared
1583                                 ## libs using Sun's Compiler
1584                                 LDSHFLAGS="-G \${CFLAGS}"
1585                         fi
1586                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1587                                 SONAMEFLAG="-Wl,-soname="
1588                         else
1589                                 SONAMEFLAG="-Wl,-h,"
1590                         fi
1591                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1592                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1593                         ;;
1594                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1595                         BLDSHARED="true"
1596                         LDSHFLAGS="-G"
1597                         SONAMEFLAG="-Wl,-h,"
1598                         PICFLAG="-KPIC"   # Is this correct for SunOS
1599                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1600                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1601                         ;;
1602                 *netbsd* | *freebsd* | *dragonfly* )
1603                         BLDSHARED="true"
1604                         LDSHFLAGS="-shared"
1605                         DYNEXP="-Wl,--export-dynamic"
1606                         SONAMEFLAG="-Wl,-soname,"
1607                         PICFLAG="-fPIC -DPIC"
1608                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1609                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1610                         ;;
1611                 *openbsd*)  BLDSHARED="true"
1612                         LDSHFLAGS="-shared"
1613                         DYNEXP="-Wl,-Bdynamic"
1614                         SONAMEFLAG="-Wl,-soname,"
1615                         PICFLAG="-fPIC"
1616                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1617                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1618                         ;;
1619                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1620                         case "$host_os" in
1621                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1622                         ;;
1623                         esac
1624                         BLDSHARED="true"
1625                         LDSHFLAGS="-set_version sgi1.0 -shared"
1626                         SONAMEFLAG="-soname "
1627                         SHLD="\${LD}"
1628                         if test "${GCC}" = "yes"; then
1629                                 PICFLAG="-fPIC"
1630                         else
1631                                 PICFLAG="-KPIC"
1632                         fi
1633                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1634                         ;;
1635                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1636                         BLDSHARED="true"
1637                         # use expfull to export underscored symbols
1638                         # add rtl to remove /lib/crt0.o warning
1639                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1640                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1641                         PICFLAG="-O2"
1642                         # as AIX code is always position independent...
1643                         # .po will just create compile warnings, use po.o:
1644                         if test "${GCC}" != "yes"; then
1645                                 ## for funky AIX compiler using strncpy()
1646                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1647                         fi
1649                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1650                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1651                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1652                         ;;
1653                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1654                         # Use special PIC flags for the native HP-UX compiler.
1655                                 BLDSHARED="true"
1656                                 SHLD="cc"
1657                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1658                                 SONAMEFLAG="-Wl,+h "
1659                                 PICFLAG="+z"
1660                         if test "${GCC}" = "yes"; then
1661                                 PICFLAG="-fPIC"
1662                         else
1663                                 PICFLAG="+z +ESnolit"
1664                         fi
1665                         if test "$host_cpu" = "ia64"; then
1666                                 SHLIBEXT="so"
1667                               PICFLAG="+z"
1668                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1669                         else
1670                                 SHLIBEXT="sl"
1671                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1672                         fi
1673                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1674                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1675                         ;;
1676                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1677                         BLDSHARED="true"
1678                         LDSHFLAGS="-shared"
1679                         SONAMEFLAG="-Wl,-soname,"
1680                         PICFLAG="-fPIC"
1681                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1682                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1683                         for flags in "-expect_unresolved '*'" "-Wl,-expect_unresolved,'*'" ; do
1684                                 saved_ldflags="$LDFLAGS"
1685                                 AC_MSG_CHECKING([if $flags works])
1686                                 LDFLAGS="$flags $saved_ldflags"
1687                                 AC_TRY_LINK([],[],
1688                                         [AC_MSG_RESULT([yes])
1689                                         LDSHFLAGS_Z_NODEFS=$flags],
1690                                         AC_MSG_RESULT([no]))
1691                                 LDFLAGS="$saved_ldflags"
1692                                 test x"$LDSHFLAGS_Z_NODEFS" != x && break
1693                         done
1694                         ;;
1695                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1696                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1697                         ;;
1698                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1699                         BLDSHARED="true"
1700                         LDSHFLAGS="-shared"
1701                         SONAMEFLAG="-Wl,-soname,"
1702                         PICFLAG="-KPIC"
1703                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1704                         ;;
1705                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1706                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1707                         ;;
1708                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1709                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1710                         ;;
1711                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1712                         case "$host" in
1713                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1714                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1715                                         fi
1716                                         LDSHFLAGS="-G"
1717                                         DYNEXP="-Bexport"
1718                                 ;;
1719                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1720                         esac
1721                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1722                         ;;
1724                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1725                         if [ test "$GCC" != yes ]; then
1726                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1727                         fi
1728                         LDSHFLAGS="-G"
1729                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1730                         ;;
1731                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1732                         BLDSHARED="false"
1733                         LDSHFLAGS=""
1734                         ;;
1736                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1737                         BLDSHARED="true"
1738                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1739                         CFLAGS="$CFLAGS -fno-common"
1740                         SHLD="\${CC}"
1741                         SHLIBEXT="dylib"
1742                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1743                         SHLIBEXT="dylib"
1744                         # Since gcc doesn't fail on unrecognised options, the
1745                         # PIE test incorrectly succeeds. Darwin gcc does not
1746                         # actually support the PIE stuff.
1747                         PIE_LDFLAGS=
1748                         PIE_CFLAGS=
1749                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1750                         ;;
1752                 *)
1753                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1754                         ;;
1755   esac
1757 if test "$enable_shared" != "yes"; then
1758         BLDSHARED=false
1761 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1762         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1765 if test x"$BLDSHARED" = x"true" ; then
1766         LDFLAGS="$LDFLAGS -L./bin"
1769 AC_MSG_RESULT($BLDSHARED)
1771 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1772         saved_ldflags="$LDFLAGS"
1773         AC_MSG_CHECKING([if $flags works])
1774         LDFLAGS="$flags $saved_ldflags"
1775         AC_TRY_LINK([],[],
1776                 [AC_MSG_RESULT([yes])
1777                 LD_AS_NEEDED_FLAG=$flags
1778                 ld_as_needed_flag_found=yes],
1779                 AC_MSG_RESULT([no]))
1780         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1781         test x"$ld_as_needed_flag_found" = xyes && break
1782 done
1784 # for historical reasons almost all linkers don't complain about unresolved
1785 # symbols in shared libs. Except for the internal samba modules we want to get
1786 # errors when we produce a shared lib with unresolved symbols. On some
1787 # platforms unresolved symbols might be intended, so we might have to add
1788 # platform specific exceptions here.
1790 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1791         saved_ldflags="$LDFLAGS"
1792         AC_MSG_CHECKING([if $flags works])
1793         LDFLAGS="$flags $saved_ldflags"
1794         AC_TRY_LINK([],[],
1795         [AC_MSG_RESULT([yes])
1796         LDSHFLAGS_Z_DEFS=$flags
1797         ldshflags_z_defs_found=yes],
1798         AC_MSG_RESULT([no]))
1799         LDFLAGS=$saved_ldflags
1800         test x"$ldshflags_z_defs_found" = xyes && break
1801 done
1803 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1804 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1805 AC_MSG_CHECKING([LDFLAGS])
1806 AC_MSG_RESULT([$LDFLAGS])
1807 AC_MSG_CHECKING([DYNEXP])
1808 AC_MSG_RESULT([$DYNEXP])
1810 #######################################################
1811 # test whether building a shared library actually works
1812 if test $BLDSHARED = true; then
1814 AC_MSG_CHECKING([SHLD])
1815 AC_MSG_RESULT([$SHLD])
1816 AC_MSG_CHECKING([LDSHFLAGS])
1817 AC_MSG_RESULT([$LDSHFLAGS])
1819 AC_MSG_CHECKING([SHLIBEXT])
1820 AC_MSG_RESULT([$SHLIBEXT])
1821 AC_MSG_CHECKING([SONAMEFLAG])
1822 AC_MSG_RESULT([$SONAMEFLAG])
1824 AC_MSG_CHECKING([PICFLAG])
1825 AC_MSG_RESULT([$PICFLAG])
1827 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1828 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1830 AC_CACHE_CHECK([whether building shared libraries actually works],
1831                [ac_cv_shlib_works],[
1832    # try building a trivial shared library
1833    ac_cv_shlib_works=no
1834    # The $SHLD and $LDSHFLAGS variables may contain references to other
1835    # variables so they need to be eval'ed.
1836    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1837         shlib.o ${srcdir-.}/../tests/shlib.c && \
1838    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1839         shlib.o && ac_cv_shlib_works=yes
1840    rm -f "shlib.$SHLIBEXT" shlib.o
1843 if test $ac_cv_shlib_works = no; then
1844    BLDSHARED=false
1848 if test x"$BLDSHARED" != x"true"; then
1849         LDSHFLAGS="shared-libraries-disabled"
1850         SONAMEFLAG="shared-libraries-disabled"
1851         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1852         SHLD="shared-libraries-disabled"
1853         PICFLAG="${PIE_CFLAGS}"
1854         SHLIBEXT="shared_libraries_disabled"
1855         merged_build_possible=no
1858 AC_MSG_CHECKING([used PICFLAG])
1859 AC_MSG_RESULT([$PICFLAG])
1861 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1863 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1866 ###########################################################
1868 # Configuration of subsystems / libraries
1870 ###########################################################
1872 INSTALLLIBCMD_SH=:
1873 INSTALLLIBCMD_A=:
1874 UNINSTALLLIBCMD_SH=:
1875 UNINSTALLLIBCMD_A=:
1877 if test $BLDSHARED = true; then
1878         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1879         UNINSTALLLIBCMD_SH="rm -f"
1881 if test $enable_static = yes; then
1882         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1883         UNINSTALLLIBCMD_A="rm -f"
1886 #################################################
1887 # --disable-shared-libs
1888 # can be used to disable the internal use of shared libs altogether
1889 # (this only has an effect when building shared libs is enabled)
1891 USESHARED=false
1892 AC_SUBST(USESHARED)
1894 AC_MSG_CHECKING(whether to use shared libraries internally)
1895 AC_ARG_ENABLE([shared-libs],
1896         AS_HELP_STRING([--enable-shared-libs],
1897                 [Use shared libraries internally (default=yes)]),
1898         [enable_shared_libs=$enableval],
1899         [enable_shared_libs=yes])
1901 if test x"$enable_shared_libs" != x"no" ; then
1902         USESHARED=$BLDSHARED
1905 AC_MSG_RESULT([$USESHARED])
1907 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1908         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1911 #################################################
1912 # --with-static-libs=LIBS:
1913 #   link (internal) libs dynamically or statically?
1915 # If a subsystem is built as a library then this controls whether they are
1916 # linked into Samba targets statically or dynamically:
1918 # * If we build the shared library at all, we link dynamically by default.
1920 # * We only link statically if we don't build shared or if the library
1921 #   appears in the --with-static-libs configure option.
1923 # Example:
1924 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1925 #   of linking the dynamic variant with -ltalloc.
1927 # NOTE: This option only affects libraries that we do not only build
1928 # but that samba also links against as libraries (as opposed to linking
1929 # the plain object files. - This has to be configured in Makefile.in.
1930 # So in particular it does not harm to give invalid or unknown names here.
1933 AC_ARG_WITH([static-libs],
1934         [AS_HELP_STRING([--with-static-libs=LIBS],
1935                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1936         [AS_IF([test $withval],
1937                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1938                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1939                         eval LINK_$lib=STATIC
1940                 done], [])],
1941         [])
1944 # WORKAROUND:
1945 #   until we have organized other internal subsystems (as util, registry
1946 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1947 #   dynamically to samba programs.
1949 LINK_LIBNETAPI=STATIC
1951 LINK_LIBSMBCLIENT=STATIC
1954 #  The library versions are hardcoded here
1955 #  and filled into the LIBFOO_SOVER variable.
1957 #  TODO: for talloc and tdb (at least), these should
1958 #  be extracted from their respective source directories
1960 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1961 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1963 if test "x$enable_external_libtalloc" != xno
1964 then
1965         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1966                 [ enable_external_libtalloc=yes ],
1967                 [ if test x$enable_external_libtalloc = xyes; then
1968                         AC_MSG_ERROR([Unable to find libtalloc])
1969                   else
1970                         enable_external_libtalloc=no
1971                   fi
1972                 ])
1975 if test "x$enable_external_libtalloc" = xno
1976 then
1977         m4_include(../lib/talloc/libtalloc.m4)
1978         LINK_LIBTALLOC=STATIC
1979         SMB_LIBRARY(talloc, 2)
1980         LIBTALLOC_OBJ0=""
1981         for obj in ${TALLOC_OBJ}; do
1982                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1983         done
1984         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1985         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1986         AC_SUBST(LIBTALLOC_OBJ0)
1988         TALLOCTORT="bin/talloctort\$(EXEEXT)"
1989         AC_SUBST(TALLOCTORT)
1993 AC_ARG_ENABLE(external_libtdb,
1994         [AS_HELP_STRING([--enable-external-libtdb],
1995                 [Enable external tdb [default=auto]])],
1996                 [ enable_external_libtalloc=$enableval ],
1997                 [ enable_external_libtalloc=auto ])
1999 if test "x$enable_external_libtdb" != xno
2000 then
2001         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.2,
2002                 [ enable_external_libtdb=yes ],
2003                 [
2004                 if test x$enable_external_libtdb = xyes; then
2005                         AC_MSG_ERROR([Unable to find libtdb])
2006                 else
2007                         enable_external_libtdb=no
2008                 fi
2009                 ])
2012 AC_SUBST(LIBTDB_OBJ0)
2013 if test "x$enable_external_libtdb" = xno
2014 then
2015         m4_include(../lib/tdb/libtdb.m4)
2016         LINK_LIBTDB=STATIC
2017         SMB_LIBRARY(tdb, 1)
2018         LIBTDB_OBJ0=""
2019         for obj in ${TDB_OBJ}; do
2020                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
2021         done
2022         AC_SUBST(LIBTDB_OBJ0)
2023         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
2024         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
2026         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
2027         AC_SUBST(TDBBACKUP)
2028         TDBDUMP="bin/tdbdump\$(EXEEXT)"
2029         AC_SUBST(TDBDUMP)
2030         TDBTOOL="bin/tdbtool\$(EXEEXT)"
2031         AC_SUBST(TDBTOOL)
2032         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
2033         AC_SUBST(TDBTORTURE)
2034         ac_cv_have_tdb_err_nesting=yes
2035 else
2036         AC_TRY_COMPILE([#include "tdb.h"],
2037                        [enum TDB_ERROR err = TDB_ERR_NESTING],
2038                        ac_cv_have_tdb_err_nesting=yes,
2039                        ac_cv_have_tdb_err_nesting=no)
2042 if test x"$ac_cv_have_tdb_err_nesting" = xyes; then
2043    AC_DEFINE(HAVE_TDB_ERR_NESTING, 1, [Whether we have TDB_ERR_NESTING])
2046 SMB_LIBRARY(netapi, 0)
2047 SMB_LIBRARY(smbclient, 0)
2048 SMB_LIBRARY(smbsharemodes, 0)
2049 SMB_LIBRARY(addns, 0, no, [undefined API])
2053 ################
2055 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2056 AC_TRY_RUN([#include <stdio.h>
2057 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2058 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2059 if test x"$samba_cv_have_longlong" = x"yes"; then
2060     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2061     AC_CHECK_TYPE(intptr_t, unsigned long long)
2062 else
2063     AC_CHECK_TYPE(intptr_t, unsigned long)
2067 # Check if the compiler supports the LL prefix on long long integers.
2068 # AIX needs this.
2070 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2071     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2072         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2073 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2074    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2078 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2079 AC_TRY_RUN([#include <time.h>
2080 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2081 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2082 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2083     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2086 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2087 AC_TRY_RUN([#include <stdio.h>
2088 #include <sys/stat.h>
2089 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2090 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2091 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2092     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2095 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2096 AC_TRY_RUN([
2097 #if defined(HAVE_UNISTD_H)
2098 #include <unistd.h>
2099 #endif
2100 #include <stdio.h>
2101 #include <sys/stat.h>
2102 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2103 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2104 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2105     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2108 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2109 AC_TRY_RUN([
2110 #if defined(HAVE_UNISTD_H)
2111 #include <unistd.h>
2112 #endif
2113 #include <stdio.h>
2114 #include <sys/stat.h>
2115 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2116 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2117 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2118     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2121 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2122 AC_TRY_RUN([
2123 #if defined(HAVE_UNISTD_H)
2124 #include <unistd.h>
2125 #endif
2126 #include <stdio.h>
2127 #include <sys/stat.h>
2128 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2129 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2130 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2131     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2134 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2135 AC_TRY_RUN([
2136 #if defined(HAVE_UNISTD_H)
2137 #include <unistd.h>
2138 #endif
2139 #include <stdio.h>
2140 #include <sys/stat.h>
2141 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2142 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2143 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2144     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2147 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2148 AC_TRY_RUN([
2149 #if defined(HAVE_UNISTD_H)
2150 #include <unistd.h>
2151 #endif
2152 #include <stdio.h>
2153 #include <sys/stat.h>
2154 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2155 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2156 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2157     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2160 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2161 AC_TRY_COMPILE([
2162 #if defined(HAVE_UNISTD_H)
2163 #include <unistd.h>
2164 #endif
2165 #include <sys/types.h>
2166 #include <dirent.h>],
2167 [DIR64 de;],
2168 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2169 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2170     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2173 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2174 AC_TRY_COMPILE([
2175 #if defined(HAVE_UNISTD_H)
2176 #include <unistd.h>
2177 #endif
2178 #include <sys/types.h>
2179 #include <dirent.h>],
2180 [struct dirent64 de;],
2181 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2182 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2183     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2186 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2187 AC_TRY_RUN([
2188 #if defined(HAVE_UNISTD_H)
2189 #include <unistd.h>
2190 #endif
2191 #include <sys/types.h>
2192 main() { dev_t dev; int i = major(dev); return 0; }],
2193 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2194 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2195     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2198 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2199 AC_TRY_RUN([
2200 #if defined(HAVE_UNISTD_H)
2201 #include <unistd.h>
2202 #endif
2203 #include <sys/types.h>
2204 main() { dev_t dev; int i = minor(dev); return 0; }],
2205 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2206 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2207     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2210 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2211 AC_TRY_RUN([
2212 #if defined(HAVE_UNISTD_H)
2213 #include <unistd.h>
2214 #endif
2215 #include <sys/types.h>
2216 main() { dev_t dev = makedev(1,2); return 0; }],
2217 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2218 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2219     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2222 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2223 AC_TRY_RUN([#include <stdio.h>
2224 main() { char c; c=250; exit((c > 0)?0:1); }],
2225 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2226 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2227     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2230 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2231 AC_TRY_COMPILE([#include <sys/types.h>
2232 #include <dirent.h>
2233 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2234 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2235 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2236     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2239 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2240 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2241 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2242 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2243     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2247 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2249     # On some systems (eg. Linux) librt can pull in libpthread. We
2250     # don't want this to happen because libpthreads changes signal delivery
2251     # semantics in ways we are not prepared for. This breaks Linux oplocks
2252     # which rely on signals.
2254     AC_LIBTESTFUNC(rt, clock_gettime,
2255             [
2256                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2257                                 [Whether clock_gettime is available])
2258                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2259                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2260                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2261                         ])
2265 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2266 AC_TRY_RUN([#include <sys/types.h>
2267 #include <dirent.h>
2268 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2269 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2270 di->d_name[0] == 0) exit(0); exit(1);} ],
2271 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2272 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2273     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2276 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2277 AC_TRY_COMPILE([#include <sys/types.h>
2278 #include <utime.h>],
2279 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2280 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2281 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2282     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2285 ##############
2286 # Check utmp details, but only if our OS offers utmp.h
2287 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2288 dnl  utmp and utmpx come in many flavours
2289 dnl  We need to check for many of them
2290 dnl  But we don't need to do each and every one, because our code uses
2291 dnl  mostly just the utmp (not utmpx) fields.
2293 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2295 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2296 AC_TRY_COMPILE([#include <sys/types.h>
2297 #include <utmp.h>],
2298 [struct utmp ut;  ut.ut_name[0] = 'a';],
2299 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2300 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2301     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2304 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2305 AC_TRY_COMPILE([#include <sys/types.h>
2306 #include <utmp.h>],
2307 [struct utmp ut;  ut.ut_user[0] = 'a';],
2308 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2309 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2310     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2313 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2314 AC_TRY_COMPILE([#include <sys/types.h>
2315 #include <utmp.h>],
2316 [struct utmp ut;  ut.ut_id[0] = 'a';],
2317 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2318 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2319     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2322 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2323 AC_TRY_COMPILE([#include <sys/types.h>
2324 #include <utmp.h>],
2325 [struct utmp ut;  ut.ut_host[0] = 'a';],
2326 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2327 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2328     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2331 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2332 AC_TRY_COMPILE([#include <sys/types.h>
2333 #include <utmp.h>],
2334 [struct utmp ut;  time_t t; ut.ut_time = t;],
2335 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2336 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2337     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2340 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2341 AC_TRY_COMPILE([#include <sys/types.h>
2342 #include <utmp.h>],
2343 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2344 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2345 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2346     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2349 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2350 AC_TRY_COMPILE([#include <sys/types.h>
2351 #include <utmp.h>],
2352 [struct utmp ut;  ut.ut_type = 0;],
2353 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2354 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2355     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2358 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2359 AC_TRY_COMPILE([#include <sys/types.h>
2360 #include <utmp.h>],
2361 [struct utmp ut;  ut.ut_pid = 0;],
2362 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2363 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2364     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2367 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2368 AC_TRY_COMPILE([#include <sys/types.h>
2369 #include <utmp.h>],
2370 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2371 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2372 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2373     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2376 dnl Look for the IPv6 varient by preference. Many systems have both.
2377 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2378 AC_TRY_COMPILE([#include <sys/types.h>
2379 #include <utmp.h>],
2380 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2381 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2382 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2383     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2386 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2387 AC_TRY_COMPILE([#include <sys/types.h>
2388 #include <utmp.h>],
2389 [struct utmp ut;  ut.ut_addr = 0;],
2390 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2391 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2392     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2395 if test x$ac_cv_func_pututline = xyes ; then
2396   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2397   AC_TRY_COMPILE([#include <sys/types.h>
2398 #include <utmp.h>],
2399   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2400   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2401   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2402       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2403   fi
2406 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2407 AC_TRY_COMPILE([#include <sys/types.h>
2408 #include <utmpx.h>],
2409 [struct utmpx ux;  ux.ut_syslen = 0;],
2410 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2411 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2412     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2416 # end utmp details
2419 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2420 AC_ARG_WITH(libiconv,
2421 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2423   if test "$withval" = "no" ; then
2424     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2425   else
2426      if test "$withval" != "yes" ; then
2427         ICONV_PATH_SPEC=yes
2428         ICONV_LOOK_DIRS="$withval"
2429      fi
2430   fi
2433 for i in $ICONV_LOOK_DIRS ; do
2435     save_LIBS="$LIBS"
2436     save_LDFLAGS="$LDFLAGS"
2437     save_CPPFLAGS="$CPPFLAGS"
2439     iconv_current_LIBS=""
2440     iconv_current_LDFLAGS=""
2441     iconv_current_CPPFLAGS=""
2443     ICONV_FOUND="no"
2444     unset libext
2446     #  This is here to handle -withval stuff for --with-libiconv
2447     #  Perhaps we should always add a -L
2448     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2450     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2451     # installation paths. This gets a little tricky since we might have iconv
2452     # in both libiconv and in libc. In this case the jm_ICONV test will always
2453     # succeed when the header is found. To counter this, make sure the
2454     # library directory is there and check the ABI directory first (which
2455     # should be harmless on other systems, but causes tons of linker warnings on
2456     # 64bit Ubuntu systems).
2457     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2458     # installed, I've decided to fix the linker warnings.
2459     # -- Kai
2460     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2461     for l in "lib" "lib32" "lib/hpux32"; do
2462         if test -d "$i/$l" ; then
2463                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2464                 LIBS=
2465                 export LDFLAGS LIBS CPPFLAGS
2466                 # Try to find iconv(3)
2467                 jm_ICONV($i/$l)
2468                 if test x"$ICONV_FOUND" = "xyes" ; then
2469                     libext="$l"
2470                     break
2471                 fi
2472         fi
2473     done
2475     if test x"$ICONV_FOUND" = "xyes" ; then
2476         iconv_current_LDFLAGS="-L$i/$libext"
2477         iconv_current_CPPFLAGS="-I$i/include"
2479         if test x"$jm_cv_lib_iconv" != x; then
2480             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2481         else
2482             # We found iconv in libc.
2483             iconv_current_LIBS=""
2484         fi
2486     fi
2488     if test x"$ICONV_FOUND" = "xyes" ; then
2490         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2491         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2492         LIBS="$save_LIBS $iconv_current_LIBS"
2493         export LDFLAGS LIBS CPPFLAGS
2495         default_dos_charset=no
2496         default_display_charset=no
2497         default_unix_charset=no
2499         # check for default dos charset name
2500         for j in CP850 IBM850 ; do
2501             rjs_CHARSET($j)
2502             default_dos_charset="$ICONV_CHARSET"
2503             if test x"$default_dos_charset" = x"$j"; then
2504                 break
2505             fi
2506         done
2508         # check for default display charset name
2509         for j in ASCII 646 ; do
2510             rjs_CHARSET($j)
2511             default_display_charset="$ICONV_CHARSET"
2512             if test x"$default_display_charset" = x"$j"; then
2513                 break
2514             fi
2515         done
2517         # check for default unix charset name
2518         for j in UTF-8 UTF8 ; do
2519             rjs_CHARSET($j)
2520             default_unix_charset="$ICONV_CHARSET"
2521             if test x"$default_unix_charset" = x"$j"; then
2522                 break
2523             fi
2524         done
2526         if test "$default_dos_charset" != "no" -a \
2527                 "$default_dos_charset" != "cross" -a \
2528                 "$default_display_charset" != "no" -a \
2529                 "$default_display_charset" != "cross" -a \
2530                 "$default_unix_charset" != "no" -a \
2531                 "$default_unix_charset" != "cross"
2532         then
2533                 samba_cv_HAVE_NATIVE_ICONV=yes
2534         else
2535             if test "$default_dos_charset" = "cross" -o \
2536                      "$default_display_charset" = "cross" -o \
2537                      "$default_unix_charset" = "cross"
2538             then
2539                     samba_cv_HAVE_NATIVE_ICONV=cross
2540             else
2541                     samba_cv_HAVE_NATIVE_ICONV=no
2542             fi
2543         fi
2545         # At this point, we have a libiconv candidate. We know that
2546         # we have the right headers and libraries, but we don't know
2547         # whether it does the conversions we want. We can't test this
2548         # because we are cross-compiling. This is not necessarily a big
2549         # deal, since we can't guarantee that the results we get now will
2550         # match the results we get at runtime anyway.
2551         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2552             default_dos_charset="CP850"
2553             default_display_charset="ASCII"
2554             default_unix_charset="UTF-8"
2555             samba_cv_HAVE_NATIVE_ICONV=yes
2556             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2557             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2558         fi
2560         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2562             CPPFLAGS=$save_CPPFLAGS
2563             LDFLAGS=$save_LDFLAGS
2564             LIBS=$save_LIBS
2566             if test x"$iconv_current_LIBS" != x; then
2567                 LIBS="$LIBS $iconv_current_LIBS"
2568             fi
2570             # Add the flags we need to CPPFLAGS and LDFLAGS
2571             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2572             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2574             # Turn the #defines into string literals
2575             default_dos_charset="\"$default_dos_charset\""
2576             default_display_charset="\"$default_display_charset\""
2577             default_unix_charset="\"$default_unix_charset\""
2579             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2580             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2581             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2582             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2584            break
2585         fi
2587     # We didn't find a working iconv, so keep going
2588     fi
2590     #  We only need to clean these up here for the next pass through the loop
2591     CPPFLAGS=$save_CPPFLAGS
2592     LDFLAGS=$save_LDFLAGS
2593     LIBS=$save_LIBS
2594     export LDFLAGS LIBS CPPFLAGS
2595 done
2596 unset libext
2599 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2600     AC_MSG_WARN([Sufficient support for iconv function was not found.
2601     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2602    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2603    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2604    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2608 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2609 AC_TRY_RUN([
2610 #include <sys/types.h>
2611 #include <fcntl.h>
2612 #ifndef F_GETLEASE
2613 #define F_GETLEASE      1025
2614 #endif
2615 main() {
2616        int fd = open("/dev/null", O_RDONLY);
2617        return fcntl(fd, F_GETLEASE, 0) == -1;
2620 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2621 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2622     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2625 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2626 AC_TRY_RUN([
2627 #include <sys/types.h>
2628 #include <fcntl.h>
2629 #include <signal.h>
2630 #ifndef F_NOTIFY
2631 #define F_NOTIFY 1026
2632 #endif
2633 main() {
2634         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2637 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2638 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2639     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2642 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2643 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2644 AC_CHECK_FUNCS(inotify_init)
2645 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2647 samba_cv_HAVE_INOTIFY=yes,
2648 samba_cv_HAVE_INOTIFY=no,
2649 samba_cv_HAVE_INOTIFY=cross)
2651 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2652     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2655 #################################################
2656 # Check if FAM notifications are available. For FAM info, see
2657 #       http://oss.sgi.com/projects/fam/
2658 #       http://savannah.nongnu.org/projects/fam/
2659 AC_ARG_ENABLE(fam,
2660 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2662 if test x$enable_fam != xno; then
2663     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2664     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2665         # On IRIX, libfam requires libC, but other FAM implementations
2666         # might not need it.
2667         AC_CHECK_LIB(fam, FAMOpen2,
2668             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
2669             AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2670             [samba_cv_HAVE_LIBFAM=no])
2672         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2673             samba_fam_xtra=-lC
2674             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2675                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
2676                 AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
2677                 [samba_cv_HAVE_LIBFAM=no])
2678             unset samba_fam_xtra
2679         fi
2680     fi
2681     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2682         default_shared_modules="$default_shared_modules vfs_notify_fam"
2683         AC_TRY_COMPILE([#include <fam.h>],
2684                     [enum FAMCodes code = FAMChanged;],
2685                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2686                         [Whether fam.h contains a typedef for enum FAMCodes]),
2687                     [])
2688     fi
2690     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2691         AC_CHECK_LIB(fam, FAMNoExists,
2692             [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
2693     fi
2695     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2696         AC_MSG_ERROR(FAM support requested but FAM library not available )
2697     fi
2700 AC_SUBST(SMB_FAM_LIBS)
2702 #################################################
2703 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2706 with_dmapi_support=auto
2707 AC_MSG_CHECKING(whether to use DMAPI support)
2708 AC_ARG_WITH(dmapi,
2709 [AS_HELP_STRING([--with-dmapi], [Include DMAPI/XDSM support (default=auto)])],
2710 [ case "$withval" in
2711   yes|no)
2712     with_dmapi_support=$withval
2713     ;;
2714   esac ]
2716 AC_MSG_RESULT([$with_dmapi_support])
2718 if test x"$with_dmapi_support" != xno ; then
2719         SMB_CHECK_DMAPI([], [
2720                 AC_MSG_NOTICE(DMAPI support not present)
2721                 if test x"$with_dmapi_support" = xyes ; then
2722                         AC_MSG_ERROR(no DMAPI support found but requested!)
2723                 fi
2724                 ]
2725         )
2728 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2729 # Theoretically it should work with AIX JFS2 too but this needs testing
2730 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2731     default_shared_modules="$default_shared_modules vfs_tsmsm"
2734 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2735 AC_TRY_RUN([
2736 #include <sys/types.h>
2737 #include <fcntl.h>
2738 #include <signal.h>
2739 #include <sys/file.h>
2740 #ifndef LOCK_MAND
2741 #define LOCK_MAND       32
2742 #define LOCK_READ       64
2743 #endif
2744 main() {
2745         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2748 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2749 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2750     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2754 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2755 AC_TRY_COMPILE([#include <sys/types.h>
2756 #include <fcntl.h>],
2757 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2758 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2759 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2760     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2763 #################################################
2764 # Check for POSIX capability support
2766 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2767     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2768     [], [])
2770 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2772     ac_save_LIBS=$LIBS
2773     AC_LIBTESTFUNC(cap, cap_get_proc)
2775     AC_CACHE_CHECK([for POSIX capabilities],
2776             samba_cv_HAVE_POSIX_CAPABILITIES,
2777             [
2778                 AC_TRY_RUN([
2779 #include <sys/types.h>
2780 #include <sys/capability.h>
2781 main() {
2782  cap_t cap;
2783  cap_value_t vals[1];
2784  if (!(cap = cap_get_proc()))
2785    exit(1);
2786  vals[0] = CAP_CHOWN;
2787  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2788  cap_set_proc(cap);
2789  exit(0);
2791                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2792                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2793                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2794             ])
2796 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2797     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2798             [Whether POSIX capabilities are available])
2799 else
2800     LIBS=$ac_save_LIBS
2806 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2807 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2810 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2811 AC_TRY_COMPILE([#include <sys/types.h>
2812 #if defined(HAVE_RPC_RPC_H)
2813 #include <rpc/rpc.h>
2814 #endif],
2815 [int16 testvar;],
2816 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2817 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2818     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2821 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2822 AC_TRY_COMPILE([#include <sys/types.h>
2823 #if defined(HAVE_RPC_RPC_H)
2824 #include <rpc/rpc.h>
2825 #endif],
2826 [uint16 testvar;],
2827 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2828 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2829     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2832 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2833 AC_TRY_COMPILE([#include <sys/types.h>
2834 #if defined(HAVE_RPC_RPC_H)
2835 #include <rpc/rpc.h>
2836 #endif],
2837 [int32 testvar;],
2838 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2839 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2840     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2843 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2844 AC_TRY_COMPILE([#include <sys/types.h>
2845 #if defined(HAVE_RPC_RPC_H)
2846 #include <rpc/rpc.h>
2847 #endif],
2848 [uint32 testvar;],
2849 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2850 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2851     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2855 dnl Some systems (SCO) have a problem including
2856 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2857 dnl as a #define in <prot.h> and as part of an enum
2858 dnl in <rpc/rpc.h>.
2861 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2862 AC_TRY_COMPILE([#include <sys/types.h>
2863 #ifdef HAVE_SYS_SECURITY_H
2864 #include <sys/security.h>
2865 #include <prot.h>
2866 #endif  /* HAVE_SYS_SECURITY_H */
2867 #if defined(HAVE_RPC_RPC_H)
2868 #include <rpc/rpc.h>
2869 #endif],
2870 [int testvar;],
2871 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2872 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2873     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2876 AC_MSG_CHECKING([for test routines])
2877 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2878            AC_MSG_RESULT(yes),
2879            AC_MSG_ERROR([cant find test code. Aborting config]),
2880            AC_MSG_WARN([cannot run when cross-compiling]))
2882 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2883 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2884            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2885 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2886     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2889 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2890 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2891            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2892 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2893     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2896 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2897 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2898 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2899 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2900 AC_CHECK_FUNCS(getpagesize)
2902 ################################################
2903 # look for a method of setting the effective uid
2904 seteuid=no;
2906 if test $seteuid = no; then
2907 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2908 AC_TRY_RUN([
2909 #define AUTOCONF_TEST 1
2910 #define USE_SETREUID 1
2911 #include "confdefs.h"
2912 #include "${srcdir-.}/lib/util_sec.c"],
2913            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2914 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2915     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2919 # we check for setresuid second as it conflicts with AIO on Linux. 
2920 # see http://samba.org/~tridge/junkcode/aio_uid.c
2921 if test $seteuid = no; then
2922 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2923 AC_TRY_RUN([
2924 #define AUTOCONF_TEST 1
2925 #define USE_SETRESUID 1
2926 #include "confdefs.h"
2927 #include "${srcdir-.}/lib/util_sec.c"],
2928            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2929 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2930     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2934 if test $seteuid = no; then
2935 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2936 AC_TRY_RUN([
2937 #define AUTOCONF_TEST 1
2938 #define USE_SETEUID 1
2939 #include "confdefs.h"
2940 #include "${srcdir-.}/lib/util_sec.c"],
2941            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2942 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2943     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2947 if test $seteuid = no; then
2948 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2949 AC_TRY_RUN([
2950 #define AUTOCONF_TEST 1
2951 #define USE_SETUIDX 1
2952 #include "confdefs.h"
2953 #include "${srcdir-.}/lib/util_sec.c"],
2954            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2955 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2956     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2960 AC_CACHE_CHECK([for the Darwin initgroups system call],
2961         samba_cv_DARWIN_INITGROUPS,
2962         AC_TRY_LINK([
2963 #include <sys/syscall.h>
2964 #include <unistd.h>
2965         ],
2966         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2967         samba_cv_DARWIN_INITGROUPS=yes,
2968         samba_cv_DARWIN_INITGROUPS=no)
2971 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2972     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2973         [Whether to use the Darwin-specific initgroups system call])
2976 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2977 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2978            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2979 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2980     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2983 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2984 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2985            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2986 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2987     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2989 else
2992 dnl Don't check for 64 bit fcntl locking if we know that the
2993 dnl glibc2.1 broken check has succeeded.
2996   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2997   AC_TRY_RUN([
2998 #if defined(HAVE_UNISTD_H)
2999 #include <unistd.h>
3000 #endif
3001 #include <stdio.h>
3002 #include <stdlib.h>
3004 #ifdef HAVE_FCNTL_H
3005 #include <fcntl.h>
3006 #endif
3008 #ifdef HAVE_SYS_FCNTL_H
3009 #include <sys/fcntl.h>
3010 #endif
3011 main() { struct flock64 fl64;
3012 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3013 exit(0);
3014 #else
3015 exit(1);
3016 #endif
3018        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3020   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3021       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3022   fi
3025 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
3026 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
3027 AC_TRY_COMPILE([
3028   #define _XOPEN_SOURCE 600
3029   #include <stdlib.h>
3030   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
3031     probably broken posix_fallocate
3032   #endif
3033 ], [
3034 ], 
3035 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
3036 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
3037         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
3041 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3042 AC_TRY_COMPILE([#include <sys/types.h>
3043 #include <sys/stat.h>
3044 #include <unistd.h>],
3045 [struct stat st;  st.st_blocks = 0;],
3046 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3047 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3048     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3051 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
3053 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3054 AC_TRY_COMPILE([#include <sys/types.h>
3055 #include <sys/stat.h>
3056 #include <unistd.h>],
3057 [struct stat st;  st.st_blksize = 0;],
3058 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3059 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3060     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3063 AC_CACHE_CHECK([for st_flags in struct stat],
3064         samba_cv_HAVE_STAT_ST_FLAGS,
3065         [
3066             AC_TRY_COMPILE([#include <sys/types.h>
3067 #include <sys/stat.h>
3068 #include <unistd.h>],
3069             [struct stat st;  st.st_flags = 0;],
3070             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3071             samba_cv_HAVE_STAT_ST_FLAGS=no,
3072             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3073         ])
3075 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3076     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3077                 [Whether the stat struct has a st_flags member])
3080 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3081 AC_TRY_COMPILE([
3082 #include <sys/types.h>
3083 #include <sys/acl.h>
3084 #if defined(HAVE_RPCSVC_NIS_H)
3085 #include <rpcsvc/nis.h>
3086 #endif],
3087 [int i;],
3088 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3089 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3090         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3093 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3094 AC_TRY_RUN([
3095 #include <stdio.h>
3096 #include <limits.h>
3097 #include <signal.h>
3099 void exit_on_core(int ignored) {
3100         exit(1);
3103 main() {
3104         char *newpath;
3105         signal(SIGSEGV, exit_on_core);
3106         newpath = realpath("/tmp", NULL);
3107         exit((newpath != NULL) ? 0 : 1);
3110 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3111 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3112     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3115 #################################################
3116 # check for AFS clear-text auth support
3117 samba_cv_WITH_AFS=no
3118 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3119 AC_ARG_WITH(afs,
3120 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3121 [ case "$withval" in
3122   yes|auto)
3123     AC_MSG_RESULT($withval)
3124     samba_cv_WITH_AFS=$withval
3125     ;;
3126   *)
3127     AC_MSG_RESULT(no)
3128     ;;
3129   esac ],
3130   AC_MSG_RESULT(no)
3133 ####################################################
3134 # check for Linux-specific AFS fake-kaserver support
3135 samba_cv_WITH_FAKE_KASERVER=no
3136 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3137 AC_ARG_WITH(fake-kaserver,
3138 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3139 [ case "$withval" in
3140   yes|auto)
3141     AC_MSG_RESULT($withval)
3142     samba_cv_WITH_FAKE_KASERVER=$withval
3143     ;;
3144   *)
3145     AC_MSG_RESULT(no)
3146     ;;
3147   esac ],
3148   AC_MSG_RESULT(no)
3151 #################################################
3152 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3153 if test x"$samba_cv_WITH_AFS" != x"no" ||
3154    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3156     # see if this box has the OpenSSL DES libraries
3157     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3159     # see if this box has the afs-headers in /usr/include/afs
3160     AC_MSG_CHECKING(for /usr/include/afs)
3161     if test -d /usr/include/afs; then
3162           AC_MSG_RESULT(yes)
3163     else
3164       AC_MSG_RESULT(no)
3165     fi
3167     # check for afs.h
3168     have_afs_headers=no
3169     AC_CHECK_HEADERS(afs.h afs/afs.h)
3170     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3171         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3172            test x"$samba_cv_WITH_AFS" = x"auto"; then
3173                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3174         else
3175                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3176         fi
3177     else
3178         have_afs_headers=yes
3179     fi
3182 FAKE_KASERVER_OBJ=""
3183 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3184     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3185     FAKE_KASERVER_OBJ="utils/net_afs.o"
3187 AC_SUBST(FAKE_KASERVER_OBJ)
3189 #################################################
3190 # check whether to compile AFS/NT ACL mapping module
3191 samba_cv_WITH_VFS_AFSACL=no
3192 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3193 AC_ARG_WITH(vfs-afsacl,
3194 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3195 [ case "$withval" in
3196   yes|auto)
3197     AC_MSG_RESULT($withval)
3198     samba_cv_WITH_VFS_AFSACL=yes
3199     ;;
3200   *)
3201     AC_MSG_RESULT(no)
3202     ;;
3203   esac ],
3204   AC_MSG_RESULT(no)
3207 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3208    default_shared_modules="$default_shared_modules vfs_afsacl"
3210         
3211 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3212     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3215 #################################################
3216 # check for the DFS clear-text auth system
3217 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3218 AC_ARG_WITH(dfs,
3219 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3220 [ case "$withval" in
3221   yes)
3222     AC_MSG_RESULT(yes)
3223     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3224     ;;
3225   *)
3226     AC_MSG_RESULT(no)
3227     ;;
3228   esac ],
3229   AC_MSG_RESULT(no)
3232 ########################################################
3233 # Compile with LDAP support?
3235 with_ldap_support=auto
3236 AC_MSG_CHECKING([for LDAP support])
3238 AC_ARG_WITH(ldap,
3239 [AS_HELP_STRING([--with-ldap], [LDAP support (default=auto)])],
3240 [ case "$withval" in
3241     yes|no)
3242         with_ldap_support=$withval
3243         ;;
3244   esac ])
3246 AC_MSG_RESULT($with_ldap_support)
3248 SMBLDAP=""
3249 AC_SUBST(SMBLDAP)
3250 SMBLDAPUTIL=""
3251 AC_SUBST(SMBLDAPUTIL)
3253 if test x"$with_ldap_support" != x"no"; then
3255   ##################################################################
3256   # first test for ldap.h and lber.h
3257   # (ldap.h is required for this test)
3258   AC_CHECK_HEADERS(ldap.h lber.h)
3260   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3261         if test x"$with_ldap_support" = x"yes"; then
3262          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3263         else
3264          AC_MSG_WARN(ldap.h is needed for LDAP support)
3265         fi
3266         
3267         with_ldap_support=no
3268   fi
3270   ##################################################################
3271   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3272   # unsigned int in include/includes.h
3273   case $host_os in
3274         *hpux*)
3275          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3276          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3277         with_ldap_support=yes
3278         ;;
3279         *)
3280         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3281         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3282                 if test x"$with_ldap_support" = x"yes"; then
3283                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3284                 else
3285                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3286                 fi
3287                 with_ldap_support=no
3288         fi
3289         ;;
3290   esac
3293 if test x"$with_ldap_support" != x"no"; then
3294   ac_save_LIBS=$LIBS
3296   ##################################################################
3297   # we might need the lber lib on some systems. To avoid link errors
3298   # this test must be before the libldap test
3299   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3301   ########################################################
3302   # If ber_sockbuf_add_io() is available we can add
3303   # SASL wrapping hooks
3304   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3306   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3307                  AC_TRY_COMPILE([#include <ldap.h>],
3308                                 [int val = LDAP_OPT_SOCKBUF;],
3309                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3310                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3312   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3313           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3314         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3315   fi
3317   #######################################################
3318   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3319   # ldap logging and print it out in the samba logs
3320   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3321                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3322                  [AC_TRY_COMPILE([#include <lber.h>],
3323                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3324                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3325                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3327   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3328         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3329                   [Support for LDAP/LBER logging interception])
3330   fi
3332   ########################################################
3333   # now see if we can find the ldap libs in standard paths
3334   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3336   ########################################################
3337   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3338   # Check found in pam_ldap 145.
3339   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3341   LIBS="$LIBS $LDAP_LIBS"
3342   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3343     AC_TRY_COMPILE([
3344         #include <lber.h>
3345         #include <ldap.h>],
3346         [ldap_set_rebind_proc(0, 0, 0);],
3347         [smb_ldap_cv_ldap_set_rebind_proc=3],
3348         [smb_ldap_cv_ldap_set_rebind_proc=2]
3349     )
3350   ])
3352   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3354   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3356   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3357     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3358     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3359     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3360     default_shared_modules="$default_shared_modules";
3361     SMBLDAP="lib/smbldap.o"
3362     SMBLDAPUTIL="lib/smbldap_util.o"
3363     with_ldap_support=yes
3364     AC_MSG_CHECKING(whether LDAP support is used)
3365     AC_MSG_RESULT(yes)
3366   else
3367     if test x"$with_ldap_support" = x"yes"; then
3368         AC_MSG_ERROR(libldap is needed for LDAP support)
3369     else
3370         AC_MSG_WARN(libldap is needed for LDAP support)
3371     fi
3373     LDAP_LIBS=""
3374     with_ldap_support=no
3375   fi
3376   LIBS=$ac_save_LIBS
3380 #################################################
3381 # active directory support
3383 with_ads_support=auto
3384 AC_MSG_CHECKING([for Active Directory and krb5 support])
3386 AC_ARG_WITH(ads,
3387 [AS_HELP_STRING([--with-ads], [Active Directory support (default=auto)])],
3388 [ case "$withval" in
3389     yes|no)
3390         with_ads_support="$withval"
3391         ;;
3392   esac ])
3394 AC_MSG_RESULT($with_ads_support)
3396 FOUND_KRB5=no
3397 KRB5_LIBS=""
3399 if test x"$with_ldap_support" != x"yes"; then
3401     if test x"$with_ads_support" = x"yes"; then
3402         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3403     elif test x"$with_ads_support" = x"auto"; then
3404         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3405         with_ads_support=no
3406     fi
3408 else
3410     # Check to see whether there is enough LDAP functionality to be able
3411     # to build AD support.
3413 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3414 case "$host_os" in
3415         *hpux*)
3416     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3418     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3419         if test x"$with_ads_support" = x"yes"; then
3420             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3421         elif test x"$with_ads_support" = x"auto"; then
3422             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3423             with_ads_support=no
3424         fi
3425     fi
3426     ;;
3427         *)
3428     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3430     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3431         if test x"$with_ads_support" = x"yes"; then
3432             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3433         elif test x"$with_ads_support" = x"auto"; then
3434             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3435             with_ads_support=no
3436         fi
3437     fi
3438     ;;
3439 esac
3442     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3444     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3445         if test x"$with_ads_support" = x"yes"; then
3446             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3447         elif test x"$with_ads_support" = x"auto"; then
3448             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3449             with_ads_support=no
3450         fi
3451     fi
3455 if test x"$with_ads_support" != x"no"; then
3457   # Do no harm to the values of CFLAGS and LIBS while testing for
3458   # Kerberos support.
3460   if test x$FOUND_KRB5 = x"no"; then
3461     #################################################
3462     # check for location of Kerberos 5 install
3463     AC_MSG_CHECKING(for kerberos 5 install path)
3464     AC_ARG_WITH(krb5,
3465     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3466     [ case "$withval" in
3467       no)
3468         AC_MSG_RESULT(no krb5-path given)
3469         ;;
3470       yes)
3471         AC_MSG_RESULT(/usr)
3472         FOUND_KRB5=yes
3473         ;;
3474       *)
3475         AC_MSG_RESULT($withval)
3476         KRB5_CFLAGS="-I$withval/include"
3477         KRB5_CPPFLAGS="-I$withval/include"
3478         KRB5_LDFLAGS="-L$withval/lib"
3479         FOUND_KRB5=yes
3480         if test -x "$withval/bin/krb5-config"; then
3481                 KRB5CONFIG=$withval/bin/krb5-config
3482         fi
3483         ;;
3484       esac ],
3485       AC_MSG_RESULT(no krb5-path given)
3486     )
3487   fi
3489   #################################################
3490   # check for krb5-config from recent MIT and Heimdal kerberos 5
3491   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3492   AC_MSG_CHECKING(for working krb5-config)
3493   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3494     ac_save_CFLAGS=$CFLAGS
3495     CFLAGS="";export CFLAGS
3496     ac_save_LDFLAGS=$LDFLAGS
3497     LDFLAGS="";export LDFLAGS
3498     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3499     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3500     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3501     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3502     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3503     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3504     FOUND_KRB5=yes
3505     AC_MSG_RESULT(yes)
3506   else
3507     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3508   fi
3510   if test x$FOUND_KRB5 = x"no"; then
3511     #################################################
3512     # see if this box has the SuSE location for the heimdal krb implementation
3513     AC_MSG_CHECKING(for /usr/include/heimdal)
3514     if test -d /usr/include/heimdal; then
3515       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3516           KRB5_CFLAGS="-I/usr/include/heimdal"
3517           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3518           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3519           FOUND_KRB5=yes
3520           AC_MSG_RESULT(yes)
3521       else
3522           KRB5_CFLAGS="-I/usr/include/heimdal"
3523           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3524           FOUND_KRB5=yes
3525           AC_MSG_RESULT(yes)
3526       fi
3527     else
3528       AC_MSG_RESULT(no)
3529     fi
3530   fi
3532   if test x$FOUND_KRB5 = x"no"; then
3533     #################################################
3534     # see if this box has the RedHat location for kerberos
3535     AC_MSG_CHECKING(for /usr/kerberos)
3536     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3537       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3538       KRB5_CFLAGS="-I/usr/kerberos/include"
3539       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3540       FOUND_KRB5=yes
3541       AC_MSG_RESULT(yes)
3542     else
3543       AC_MSG_RESULT(no)
3544     fi
3545   fi
3547   if test x$FOUND_KRB5 = x"no"; then
3548     #################################################
3549     # see if this box has the OpenBSD location for heimdal krb5
3550     AC_MSG_CHECKING(for /usr/include/kerberosV)
3551     if test -d /usr/include/kerberosV; then
3552       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3553       KRB5_LIBS="-lcrypto"
3554       FOUND_KRB5=yes
3555       AC_MSG_RESULT(yes)
3556     else
3557       AC_MSG_RESULT(no)
3558     fi
3559   fi
3561   ac_save_CFLAGS=$CFLAGS
3562   ac_save_CPPFLAGS=$CPPFLAGS
3563   ac_save_LDFLAGS=$LDFLAGS
3565   # remove needless evil rpath stuff as early as possible:
3566   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3567   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3568   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3569   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3570   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3572   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3574   # now check for krb5.h. Some systems have the libraries without the headers!
3575   # note that this check is done here to allow for different kerberos
3576   # include paths
3577   AC_CHECK_HEADERS(krb5.h)
3579   if test x"$ac_cv_header_krb5_h" = x"no"; then
3581     # Give a warning if AD support was not explicitly requested,
3582     # i.e with_ads_support = auto, otherwise die with an error.
3584     if test x"$with_ads_support" = x"yes"; then
3585       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3586     else
3587       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3588     fi
3590     # Turn off AD support and restore CFLAGS and LIBS variables
3592     with_ads_support="no"
3594     CFLAGS=$ac_save_CFLAGS
3595     CPPFLAGS=$ac_save_CPPFLAGS
3596     LDFLAGS=$ac_save_LDFLAGS
3597   fi
3598   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3599 [[#ifdef HAVE_KRB5_H
3600  #include <krb5.h>
3601  #endif
3604   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3605         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3606         if test x"$BLDSHARED" = x"true" ; then
3607                 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3608         fi
3609   fi
3611   # check for new heimdal KRB5_DEPRECATED handling
3613   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3614                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3615     AC_TRY_COMPILE(
3616       [#define KRB5_DEPRECATED 1
3617       #include <krb5.h>],
3618       [],
3619       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3620       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3622   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3623     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3624                [Whether to use deprecated krb5 interfaces])
3625   fi
3628 # Now we have determined whether we really want ADS support
3629 use_ads=no
3630 if test x"$with_ads_support" != x"no"; then
3631   use_ads=yes
3632   have_gssapi=no
3633   ac_save_LIBS=$LIBS
3635   # now check for gssapi headers.  This is also done here to allow for
3636   # different kerberos include paths
3637   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3639   ##################################################################
3640   # we might need the k5crypto and com_err libraries on some systems
3641   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3642   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3644   # Heimdal checks.
3645   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3646   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3647   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3649   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3650   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3652   ########################################################
3653   # now see if we can find the krb5 libs in standard paths
3654   # or as specified above
3655   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3656   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3658   ########################################################
3659   # now see if we can find the gssapi libs in standard paths
3660   if test x"$have_gssapi" != x"yes"; then
3661      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3662   fi
3664   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3665   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3666   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3667   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3668   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3669   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3670   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3671   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3672   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3673   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3674   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3675   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3676   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3677   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3678   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3679   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3680   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3681   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3682   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3683   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3684   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3685   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3686   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3687   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3688   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3689   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3690   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3691   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3692   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3693   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3694   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3695   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3696   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3697   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3698   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3699   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3700   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3701   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3702   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3703   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3704   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3705   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3706   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3707   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3708   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3709   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3710   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3711   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3712   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3714   # MIT krb5 1.8 does not expose this call (yet)
3715   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3717   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3718   # but does have the symbol
3719   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3721   LIBS="$KRB5_LIBS $LIBS"
3723   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3724         smb_krb5_cv_ticket_has_keyinfo,
3725         [
3726             AC_TRY_COMPILE(
3727             [
3728                 #include <krb5.h>
3729             ],
3730             [
3731                 krb5_ticket ticket;
3732                 krb5_kvno kvno;
3733                 krb5_enctype enctype;
3735                 enctype = ticket.enc_part.enctype;
3736                 kvno = ticket.enc_part.kvno;
3737             ],
3738             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3739             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3740         ])
3742   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3743         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3744             [Whether the krb5_ticket structure contains the kvno and enctype])
3745   fi
3747   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3748           smb_krb5_cv_creds_opt_free_context,
3749           [
3750                 AC_TRY_COMPILE([
3751                     #include <krb5.h>],
3752                     [
3753                         krb5_context ctx;
3754                         krb5_get_init_creds_opt *opt = NULL;
3755                         krb5_get_init_creds_opt_free(ctx, opt);
3756                     ],
3757                     [smb_krb5_cv_creds_opt_free_context=yes],
3758                     [smb_krb5_cv_creds_opt_free_context=no]
3759                 )
3760           ])
3762   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3763         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3764             [Whether krb5_get_init_creds_opt_free takes a context argument])
3765   fi
3767   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3768     AC_TRY_COMPILE([
3769         #include <krb5.h>],
3770         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3771         [smb_krb5_cv_verify_checksum=7],
3772         [smb_krb5_cv_verify_checksum=6],
3773     )
3774   ])
3775   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3777   AC_CACHE_CHECK([for checksum in krb5_checksum],
3778                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3779     AC_TRY_COMPILE([#include <krb5.h>],
3780       [krb5_checksum cksum; cksum.checksum.length = 0;],
3781       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3782       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3784   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3785     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3786                [Whether the krb5_checksum struct has a checksum property])
3787   fi
3789   AC_CACHE_CHECK([for etype in EncryptedData],
3790                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3791     AC_TRY_COMPILE([#include <krb5.h>],
3792       [EncryptedData edata; edata.etype = 0;],
3793       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3794       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3796   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3797     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3798                [Whether the EncryptedData struct has a etype property])
3799   fi
3801   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3802                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3803     AC_TRY_COMPILE([#include <krb5.h>],
3804       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3805       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3806       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3808   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3809     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3810                [Whether the krb5_ap_req struct has a ticket pointer])
3811   fi
3813   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3814                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3815     AC_TRY_COMPILE([#include <krb5.h>],
3816       [krb5_error err; err.e_data = NULL;],
3817       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3818       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3820   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3821     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3822                [Whether the krb5_error struct has a e_data pointer])
3823   fi
3825   AC_CACHE_CHECK([for krb5_crypto type],
3826                 samba_cv_HAVE_KRB5_CRYPTO,[
3827     AC_TRY_COMPILE([#include <krb5.h>],
3828       [krb5_crypto crypto;],
3829       samba_cv_HAVE_KRB5_CRYPTO=yes,
3830       samba_cv_HAVE_KRB5_CRYPTO=no)])
3832   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3833     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3834                [Whether the type krb5_crypto exists])
3835   fi
3837   AC_CACHE_CHECK([for krb5_encrypt_block type],
3838                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3839     AC_TRY_COMPILE([#include <krb5.h>],
3840       [krb5_encrypt_block block;],
3841       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3842       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3844   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3845     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3846                [Whether the type krb5_encrypt_block exists])
3847   fi
3849   AC_CACHE_CHECK([for addrtype in krb5_address],
3850                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3851     AC_TRY_COMPILE([#include <krb5.h>],
3852       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3853       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3854       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3856   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3857     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3858                [Whether the krb5_address struct has a addrtype property])
3859   fi
3861   AC_CACHE_CHECK([for addr_type in krb5_address],
3862                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3863     AC_TRY_COMPILE([#include <krb5.h>],
3864       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3865       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3866       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3868   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3869     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3870               [Whether the krb5_address struct has a addr_type property])
3871   fi
3873   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3874                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3875                  [AC_TRY_COMPILE([#include <krb5.h>],
3876     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3877     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3879   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3880     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3881               [Whether the krb5_ticket struct has a enc_part2 property])
3882   fi
3884   AC_CACHE_CHECK([for keyblock in krb5_creds],
3885                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3886     AC_TRY_COMPILE([#include <krb5.h>],
3887       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3888       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3889       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3891   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3892     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3893               [Whether the krb5_creds struct has a keyblock property])
3894   fi
3896   AC_CACHE_CHECK([for session in krb5_creds],
3897                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3898     AC_TRY_COMPILE([#include <krb5.h>],
3899       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3900       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3901       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3903   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3904     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3905               [Whether the krb5_creds struct has a session property])
3906   fi
3908   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3909                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3910     AC_TRY_COMPILE([#include <krb5.h>],
3911       [krb5_keyblock key; key.keyvalue.data = NULL;],
3912       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3913       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3915   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3916     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3917               [Whether the krb5_keyblock struct has a keyvalue property])
3918   fi
3920   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3921                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3922     AC_TRY_COMPILE([#include <krb5.h>],
3923       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3924       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3925       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3926   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3927                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3928     AC_TRY_COMPILE([#include <krb5.h>],
3929       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3930       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3931       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3932 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3933 # w.r.t. arcfour and windows, so we must not enable it here
3934   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3935           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3936     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3937               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3938   fi
3940   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3941                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3942     AC_TRY_COMPILE([#include <krb5.h>],
3943       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3944       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3945       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3947   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3948     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3949               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3950   fi
3952   AC_CACHE_CHECK([for KV5M_KEYTAB],
3953                  samba_cv_HAVE_KV5M_KEYTAB,[
3954     AC_TRY_COMPILE([#include <krb5.h>],
3955       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3956       samba_cv_HAVE_KV5M_KEYTAB=yes,
3957       samba_cv_HAVE_KV5M_KEYTAB=no)])
3959   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3960       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3961              [Whether the KV5M_KEYTAB option is available])
3962   fi
3964   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3965                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3966     AC_TRY_COMPILE([#include <krb5.h>],
3967       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3968       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3969       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3971   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3972     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3973               [Whether KRB5_KU_OTHER_CKSUM is available])
3974   fi
3976   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3977                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3978     AC_TRY_COMPILE([#include <krb5.h>],
3979       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3980       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3981       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3983   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3984     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3985               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3986   fi
3988   AC_CACHE_CHECK([for the krb5_princ_component macro],
3989                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3990     AC_TRY_LINK([#include <krb5.h>],
3991       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3992       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3993       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3995   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3996     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3997                [Whether krb5_princ_component is available])
3998   fi
4000   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4001                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4002     AC_TRY_COMPILE([#include <krb5.h>],
4003       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4004       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4005       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4007   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4008     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4009               [Whether krb5_keytab_entry has key member])
4010   fi
4012   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4013                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4014     AC_TRY_COMPILE([#include <krb5.h>],
4015       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4016       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4017       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4019   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4020     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4021               [Whether krb5_keytab_entry has keyblock member])
4022   fi
4024   AC_CACHE_CHECK([for magic in krb5_address],
4025                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4026     AC_TRY_COMPILE([#include <krb5.h>],
4027       [krb5_address addr; addr.magic = 0;],
4028       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4029       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4031   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4032     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4033               [Whether the krb5_address struct has a magic property])
4034   fi
4036   AC_CACHE_CHECK([for WRFILE: keytab support],
4037                 samba_cv_HAVE_WRFILE_KEYTAB,[
4038     AC_TRY_RUN([
4039 #include<krb5.h>
4040   main()
4041   {
4042     krb5_context context;
4043     krb5_keytab keytab;
4045     krb5_init_context(&context);
4046     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4047   }],
4048   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4049   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4051   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4052       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4053                [Whether the WRFILE:-keytab is supported])
4054   fi
4056   AC_CACHE_CHECK([for krb5_realm type],
4057                 samba_cv_HAVE_KRB5_REALM_TYPE,[
4058     AC_TRY_COMPILE([#include <krb5.h>],
4059       [krb5_realm realm;],
4060       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4061       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4063   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4064     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4065                [Whether the type krb5_realm exists])
4066   fi
4068   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4069                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4070     AC_TRY_COMPILE([#include <krb5.h>],
4071     [
4072     krb5_context context;
4073     krb5_principal principal;
4074     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4075     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4076     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4078   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4079     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4080               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4081   fi
4083   AC_CACHE_CHECK([for krb5_addresses type],
4084                 samba_cv_HAVE_KRB5_ADDRESSES,[
4085     AC_TRY_COMPILE([#include <krb5.h>],
4086       [krb5_addresses addr;],
4087       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4088       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4090   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4091     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4092                [Whether the type krb5_addresses type exists])
4093   fi
4095   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4096                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4097     AC_TRY_COMPILE([#include <krb5.h>],
4098     [
4099     krb5_mk_error(0,0,0);],
4100     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4101     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4103   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4104     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4105               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4106   fi
4108   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4109     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4110         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4111         AC_TRY_RUN_STRICT([
4112                 #include <stdlib.h>
4113                 #include <krb5.h>
4114                 int main(void) {
4115                         krb5_context context = NULL;
4116                         char *str = NULL;
4117                         krb5_enctype_to_string(context, 1, &str);
4118                         if (str) free (str); 
4119                         return 0;
4120                 }
4121                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4122                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4123                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4125     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4126       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4127                 [whether krb5_enctype_to_string takes krb5_context argument])
4128     fi
4130     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4131         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4132         AC_TRY_RUN_STRICT([
4133                 #include <krb5.h>
4134                 int main(void) {
4135                         char buf[256];
4136                         krb5_enctype_to_string(1, buf, 256);
4137                         return 0;
4138                 }
4139                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4140                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4141                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4143     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4144       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4145                 [whether krb5_enctype_to_string takes size_t argument])
4146     fi
4147   fi
4149   AC_CACHE_CHECK([for krb5_principal_get_realm],
4150                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4151     AC_TRY_LINK([#include <krb5.h>],
4152       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4153       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4154       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4156   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4157     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4158                [Whether the function krb5_principal_get_realm is defined])
4159   fi
4161   AC_CACHE_CHECK([for krb5_princ_realm],
4162                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4163     AC_TRY_LINK([#include <krb5.h>],
4164       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4165       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4166       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4168   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4169     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4170                [Whether the macro krb5_princ_realm is defined])
4171   fi
4173   #
4174   #
4175   # Now the decisions whether we can support krb5
4176   #
4177   # NOTE: all tests should be done before this block!
4178   #
4179   #
4180   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4181     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4182     use_ads=no
4183   fi
4185   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4186           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4187   then
4188     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4189     use_ads=no
4190   fi
4192   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4193           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4194   then
4195     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4196     use_ads=no
4197   fi
4199   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4200           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4201   then
4202     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4203     use_ads=no
4204   fi
4206   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4207           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4208   then
4209     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4210     use_ads=no
4211   fi
4213   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4215       # We only need the following functions if we can't get the enctype
4216       # and kvno out of the ticket directly (ie. on Heimdal).
4218       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4219       then
4220         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4221         use_ads=no
4222       fi
4224       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4225       then
4226         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4227         use_ads=no
4228       fi
4230   fi
4232   if test x"$use_ads" = x"yes"; then
4233     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4234     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4235     if test x"$have_gssapi" = x"yes"; then
4236       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4237     fi
4238   else
4239     if test x"$with_ads_support" = x"yes"; then
4240         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4241     else
4242         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4243     fi
4244     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4245     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4246     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4247     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4248     KRB5_LIBS=""
4249     with_ads_support=no
4250   fi
4251   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4252   AC_MSG_RESULT([$use_ads])
4254 LIBS="$ac_save_LIBS"
4257 if test x"$use_ads" != xyes; then
4258         merged_build_possible=no
4261 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4262 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4265 ########################################################
4266 # Compile with DNS Updates support?
4268 with_dnsupdate_support=auto
4269 AC_MSG_CHECKING([whether to enable DNS Updates support])
4271 AC_ARG_WITH(dnsupdate,
4272 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default=auto)])],
4273 [ case "$withval" in
4274     yes|no)
4275         with_dnsupdate_support=$withval
4276         ;;
4277   esac ])
4279 AC_MSG_RESULT($with_dnsupdate_support)
4281 if test x"$with_dnsupdate_support" != x"no"; then
4283   ################################################################
4284   # first test for AD / GSSAPI support being enabled
4285         if test x"$have_gssapi" != xyes ; then
4286                 if test x"$with_dnsupdate_support" = x"yes" ; then
4287                         AC_MSG_ERROR(DNS Updates support only possible with AD and GSSAPI support)
4288                 else
4289                         AC_MSG_NOTICE(DNS Updates support only possible with AD and GSSAPI support)
4290                         with_dnsupdate_support=no
4291                 fi
4292         fi
4293   ##################################################################
4294   # then test for uuid.h (necessary to generate unique DNS keynames
4295   # (uuid.h is required for this test)
4296         AC_CHECK_HEADERS(uuid/uuid.h)
4298         
4299         if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4300                 if test x"$with_dnsupdate_support" = x"yes"; then
4301                         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4302                 else
4303                         AC_MSG_NOTICE(uuid.h is needed to enable DNS Updates support)
4304                 fi
4305                 with_dnsupdate_support=no
4306         fi
4309 if test x"$with_dnsupdate_support" != x"no"; then
4311   ########################################################
4312   # Now see if we can find the uuid libs in standard paths
4313   # On some systems, the uuid API is in libc, so we have to
4314   # be careful not to insert a spurious -luuid.
4316   UUID_LIBS=""
4317   AC_LIBTESTFUNC(uuid, uuid_generate,
4318           [
4319             case " $LIBS " in
4320                 *\ -luuid\ *)
4321                 UUID_LIBS="-luuid"
4322                 SMB_REMOVE_LIB(uuid)
4323                 ;;
4324             esac
4326             with_dnsupdate_support=yes
4327             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4328         ],
4329         [
4330             if test x"$with_dnsupdate_support" = x"yes"; then
4331                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4332             else
4333                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4334             fi
4335             with_dnsupdate_support=no
4336         ])
4338   # finally print out the result:
4339 AC_MSG_CHECKING(whether DNS Updates support is used)
4340 AC_MSG_RESULT([$with_dnsupdate_support])
4343 #################################################
4344 # check for automount support
4345 AC_MSG_CHECKING(whether to use automount)
4346 AC_ARG_WITH(automount,
4347 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4348 [ case "$withval" in
4349   yes)
4350     AC_MSG_RESULT(yes)
4351     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4352     ;;
4353   *)
4354     AC_MSG_RESULT(no)
4355     ;;
4356   esac ],
4357   AC_MSG_RESULT(no)
4360 #################################################
4361 # Check for a PAM clear-text auth, accounts, password
4362 # and session support. Most PAM implementations keep their
4363 # headers in /usr/include/security. Darwin keeps its in
4364 # /usr/include/pam.
4366 with_pam_for_crypt=no
4367 try_pam=auto
4368 AC_MSG_CHECKING(whether to try PAM support)
4369 AC_ARG_WITH(pam,
4370 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4371 [ case "$withval" in
4372   yes|no|auto)
4373     try_pam=$withval
4374     ;;
4375   esac
4377 AC_MSG_RESULT([$try_pam])
4379 use_pam=no
4380 create_pam_modules=no
4381 if test x"${try_pam}" != x"no";then
4382         use_pam=yes
4383         create_pam_modules=yes
4385         # Most systems have PAM headers in /usr/include/security, but Darwin
4386         # has them in /usr/include/pam.
4387         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4388         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4389                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4390                 if test x"${try_pam}" = x"yes";then
4391                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4392                 fi
4393                 use_pam=no
4394                 create_pam_modules=no
4395         fi
4397         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4398         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4399                 if test x"${try_pam}" = x"yes";then
4400                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4401                 fi
4402                 use_pam=no
4403                 create_pam_modules=no
4404         fi
4406         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4407                 #if HAVE_SECURITY_PAM_APPL_H
4408                 #include <security/pam_appl.h>
4409                 #endif
4410                 #if HAVE_PAM_PAM_APPL_H
4411                 #include <pam/pam_appl.h>
4412                 #endif
4413         ]])
4414         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4415                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4416                 if test x"${try_pam}" = x"yes";then
4417                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4418        fi
4419                 create_pam_modules=no
4420     fi
4422         if test x"$use_pam" = x"yes"; then
4423     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4424                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4425                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4426     with_pam_for_crypt=yes
4428                 if test x"$create_pam_modules" = x"yes"; then
4429                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4430                         # this checks are optional,
4431                         # we don't care about the results here
4432                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4433                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4434                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4435                 else
4436                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4437                 fi
4438         fi
4439         AC_MSG_CHECKING(whether to use PAM support)
4440         AC_MSG_RESULT([$use_pam])
4442         AC_MSG_CHECKING(whether to have PAM MODULES support)
4443         AC_MSG_RESULT([$create_pam_modules])
4444 fi # try_pam != no
4446 #################################################
4447 # check for PAM_RADIO_TYPE
4448 AC_TRY_COMPILE([
4449 #if (!defined(LINUX))
4451 #define PAM_EXTERN extern
4452 #if defined(HAVE_SECURITY_PAM_APPL_H)
4453 #include <security/pam_appl.h>
4454 #elif defined(HAVE_PAM_PAM_APPL_H)
4455 #include <pam/pam_appl.h>
4456 #endif
4458 #endif
4460 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4461 #include <security/pam_modules.h>
4462 #elif defined(HAVE_PAM_PAM_MODULES_H)
4463 #include <pam/pam_modules.h>
4464 #endif
4466 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4467 #include <security/_pam_macros.h>
4468 #elif defined(HAVE_PAM__PAM_MACROS_H)
4469 #include <pam/_pam_macros.h>
4470 #endif
4472 #ifdef HAVE_SECURITY_PAM_EXT_H
4473 #include <security/pam_ext.h>
4474 #endif
4476 [int i; i = PAM_RADIO_TYPE; ],
4477 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4479 #################################################
4480 # check for pam_smbpass support
4481 PAM_MODULES=""
4482 INSTALL_PAM_MODULES=""
4483 UNINSTALL_PAM_MODULES=""
4485 try_pam_smbpass=auto
4486 AC_MSG_CHECKING(whether to use pam_smbpass)
4487 AC_ARG_WITH(pam_smbpass,
4488 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4489 [ case "$withval" in
4490   yes|no|auto)
4491     try_pam_smbpass=$withval
4492   ;;
4493   *)
4494     AC_MSG_ERROR([valid options are yes,no,auto])
4495   ;;
4496   esac
4499 if test x"${try_pam_smbpass}" = xno ; then
4500         use_pam_smbpass=no
4501 else
4502         use_pam_smbpass=yes
4503         # Conditions under which pam_smbpass can't be built.
4504         if test x"$BLDSHARED" != xtrue ; then
4505                 if test x"${try_pam_smbpass}" = xyes ; then
4506                         AC_MSG_ERROR([No support for shared modules])
4507                 fi
4508                 use_pam_smbpass=no
4509         elif test x"$create_pam_modules" != xyes ; then
4510                 if test x"${try_pam_smbpass}" = xyes ; then
4511                         AC_MSG_ERROR([No support for PAM MODULES])
4512                 fi
4513                 use_pam_smbpass=no
4514         fi
4516         if test x"${use_pam_smbpass}" = xyes ; then 
4517                 PAM_MODULES="pam_smbpass"
4518                 INSTALL_PAM_MODULES="installpammodules"
4519                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4520         fi
4522 AC_MSG_RESULT([$use_pam_smbpass])
4526 ## moved after the check for -lcrypt in order to
4527 ## ensure that the necessary libraries are included
4528 ## check checking for truncated salt.  Wrapped by the
4529 ## $with_pam_for_crypt variable as above   --jerry
4531 if test $with_pam_for_crypt = no; then
4532 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4533 crypt_LIBS="$LIBS"
4534 LIBS="$AUTH_LIBS $LIBS"
4535 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4536         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4537 LIBS="$crypt_LIBS"])
4538 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4539         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4543 #################################################
4544 # check for a NISPLUS_HOME support
4545 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4546 AC_ARG_WITH(nisplus-home,
4547 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4548 [ case "$withval" in
4549   yes)
4550     AC_MSG_RESULT(yes)
4551     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4552     ;;
4553   *)
4554     AC_MSG_RESULT(no)
4555     ;;
4556   esac ],
4557   AC_MSG_RESULT(no)
4560 #################################################
4561 # check for syslog logging
4562 AC_MSG_CHECKING(whether to use syslog logging)
4563 AC_ARG_WITH(syslog,
4564 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4565 [ case "$withval" in
4566   yes)
4567     AC_MSG_RESULT(yes)
4568     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4569     ;;
4570   *)
4571     AC_MSG_RESULT(no)
4572     ;;
4573   esac ],
4574   AC_MSG_RESULT(no)
4577 #################################################
4578 # check for custom syslog facility
4579 AC_MSG_CHECKING(whether to use a custom syslog facility)
4580 AC_ARG_WITH(syslog-facility,
4581 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4583   if test "$withval" = "no" ; then
4584     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4585   else
4586      if test "$withval" != "yes" ; then
4587         syslog_facility="$withval"
4588         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4589      fi
4590   fi
4593 #################################################
4594 # check for experimental disk-quotas support
4596 samba_cv_WITH_QUOTAS=auto
4597 samba_cv_TRY_QUOTAS=no
4598 samba_cv_RUN_QUOTA_TESTS=auto
4599 samba_cv_WITH_SYS_QUOTAS=auto
4600 samba_cv_TRY_SYS_QUOTAS=auto
4601 samba_cv_SYSQUOTA_FOUND=no
4603 AC_MSG_CHECKING(whether to try disk-quotas support)
4604 AC_ARG_WITH(quotas,
4605 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4606 [ case "$withval" in
4607   yes)
4608     AC_MSG_RESULT(yes)
4609     samba_cv_WITH_QUOTAS=yes
4610     samba_cv_TRY_QUOTAS=yes
4611     samba_cv_RUN_QUOTA_TESTS=yes
4612     #set sys quotas to auto in this case
4613     samba_cv_TRY_SYS_QUOTAS=auto
4614     ;;
4615   auto)
4616     AC_MSG_RESULT(auto)
4617     samba_cv_WITH_QUOTAS=auto
4618     samba_cv_TRY_QUOTAS=auto
4619     samba_cv_RUN_QUOTA_TESTS=auto
4620     #set sys quotas to auto in this case
4621     samba_cv_TRY_SYS_QUOTAS=auto
4622     ;;
4623   no)
4624     AC_MSG_RESULT(no)
4625     samba_cv_WITH_QUOTAS=no
4626     samba_cv_TRY_QUOTAS=no
4627     samba_cv_RUN_QUOTA_TESTS=no
4628     ;;
4629   *)
4630     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4631     ;;
4632   esac ],
4633   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4636 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4637 AC_ARG_WITH(sys-quotas,
4638 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4639 [ case "$withval" in
4640   yes)
4641     AC_MSG_RESULT(yes)
4642     samba_cv_WITH_SYS_QUOTAS=yes
4643     samba_cv_TRY_SYS_QUOTAS=yes
4644     samba_cv_RUN_QUOTA_TESTS=yes
4645     ;;
4646   auto)
4647     AC_MSG_RESULT(auto)
4648     samba_cv_WITH_SYS_QUOTAS=auto
4649     samba_cv_TRY_SYS_QUOTAS=auto
4650     samba_cv_RUN_QUOTA_TESTS=auto
4651     ;;
4652   no)
4653     AC_MSG_RESULT(no)
4654     samba_cv_WITH_SYS_QUOTAS=no
4655     samba_cv_TRY_SYS_QUOTAS=no
4656     ;;
4657   *)
4658     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4659     ;;
4660   esac ],
4661   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4664 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4665 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4666   case "$host_os" in
4667         *linux*)
4668             AC_MSG_RESULT(yes)
4669             samba_cv_TRY_SYS_QUOTAS=yes
4670             samba_cv_RUN_QUOTA_TESTS=yes
4671             ;;
4672         *)
4673             AC_MSG_RESULT(no)
4674             samba_cv_TRY_SYS_QUOTAS=no
4675             ;;
4676   esac
4679 #############################################
4680 # only check for quota stuff if --with-quotas
4681 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4683 case "$host_os" in
4684         # on linux we didn't need to test we have builtin support
4685         *linux*)
4686             samba_cv_SYSQUOTA_FOUND=yes
4687             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4688             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4689             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4690             AC_MSG_RESULT(yes)
4692             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4693             samba_cv_found_xfs_header=yes
4694             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4695             AC_MSG_RESULT(yes)
4696             ;;
4697         *solaris*)
4698             # need to set this define when using static linking (BUG 1473)
4699             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4700             ;;
4701         *)
4702             ;;
4703 esac
4705 # some broken header files need this
4706 AC_CHECK_HEADER(asm/types.h,[
4707             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4708             AC_ADD_INCLUDE(<asm/types.h>)
4709             ])
4711 # For quotas on Veritas VxFS filesystems
4712 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4714 # For quotas on Linux XFS filesystems
4715 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4717 # For sys/quota.h and linux/quota.h
4718 AC_CHECK_HEADERS(sys/quota.h)
4720 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4721 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4722 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4723 AC_TRY_COMPILE([
4724 #include "confdefs.h"
4725 #ifdef HAVE_SYS_TYPES_H
4726 #include <sys/types.h>
4727 #endif
4728 #ifdef HAVE_ASM_TYPES_H
4729 #include <asm/types.h>
4730 #endif
4731 #include <sys/quota.h>
4732 ],[int i = Q_XGETQUOTA;],
4733 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4734 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4735         samba_cv_found_xfs_header=yes
4739 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4740 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4741 AC_TRY_COMPILE([
4742 #include "confdefs.h"
4743 #ifdef HAVE_SYS_QUOTA_H
4744 #include <sys/quota.h>
4745 #endif
4747 struct dqblk D;
4748 D.dqb_fsoftlimit = 0;],
4749 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4750 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4751         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4754 ##################
4755 # look for a working quota system
4757 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4758 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4759 AC_TRY_RUN_STRICT([
4760 #define HAVE_QUOTACTL_4A 1
4761 #define AUTOCONF_TEST 1
4762 #include "confdefs.h"
4763 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4764            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4765 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4766     samba_cv_SYSQUOTA_FOUND=yes;
4767     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4768     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4772 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4773 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4774 AC_TRY_RUN_STRICT([
4775 #define HAVE_QUOTACTL_4B 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_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4780 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4781     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4782     samba_cv_SYSQUOTA_FOUND=yes;
4783     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4784     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4788 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4789 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4790 AC_TRY_RUN_STRICT([
4791 #define HAVE_QUOTACTL_3 1
4792 #define AUTOCONF_TEST 1
4793 #include "confdefs.h"
4794 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4795            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4796 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4797     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4798     samba_cv_SYSQUOTA_FOUND=yes;
4799     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4800     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4804 #################################################
4805 # check for mntent.h and struct mntent
4806 AC_CHECK_HEADERS(mntent.h)
4807 #################################################
4808 # check for setmntent,getmntent,endmntent
4809 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4811 #################################################
4812 # check for devnm.h and struct mntent
4813 AC_CHECK_HEADERS(devnm.h)
4814 #################################################
4815 # check for devnm
4816 AC_CHECK_FUNCS(devnm)
4818 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4819     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4820         # if --with-sys-quotas=yes then build it
4821         # you have can use the get/set quota command smb.conf
4822         # options then
4823         samba_cv_SYSQUOTA_FOUND=auto
4824     fi
4825     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4826         # if --with-sys-quotas=yes then build it
4827         # you have can use the get/set quota command smb.conf
4828         # options then
4829         samba_cv_TRY_SYS_QUOTAS=auto
4830     fi
4833 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4834 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4835 SAVE_CPPFLAGS="$CPPFLAGS"
4836 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4837 AC_TRY_COMPILE([
4838 #include "confdefs.h"
4839 #define NO_PROTO_H 1
4840 #define NO_CONFIG_H 1
4841 #define HAVE_SYS_QUOTAS 1
4842 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4843 #include "${srcdir-.}/lib/sysquotas.c"
4844 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4845 CPPFLAGS="$SAVE_CPPFLAGS"
4847 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4848 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4849     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4850         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4851         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4852         samba_cv_WE_USE_SYS_QUOTAS=yes
4853         AC_MSG_RESULT(yes)
4854     else
4855         AC_MSG_RESULT(no)
4856     fi
4860 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4861 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4862 SAVE_CPPFLAGS="$CPPFLAGS"
4863 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4864 AC_TRY_COMPILE([
4865 #include "confdefs.h"
4866 #define NO_PROTO_H 1
4867 #define NO_CONFIG_H 1
4868 #define HAVE_SYS_QUOTAS 1
4869 #define HAVE_XFS_QUOTAS 1
4870 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4871 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4872 CPPFLAGS="$SAVE_CPPFLAGS"
4874 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4875     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4876         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4877     fi
4881 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4882 SAVE_CPPFLAGS="$CPPFLAGS"
4883 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4884 AC_TRY_COMPILE([
4885 #include "confdefs.h"
4886 #define NO_PROTO_H 1
4887 #define NO_CONFIG_H 1
4888 #include "${srcdir-.}/smbd/quotas.c"
4889 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4890 CPPFLAGS="$SAVE_CPPFLAGS"
4892 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4893 AC_MSG_CHECKING(whether to use the old quota support)
4894     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4895       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4896         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4897         AC_MSG_RESULT(yes)
4898       else
4899         AC_MSG_RESULT(no)
4900       fi
4901     else
4902       AC_MSG_RESULT(no)
4903     fi
4906 ####################
4907 # End of quota check samba_cv_RUN_QUOTA_TESTS
4910 #################################################
4911 # check for experimental utmp accounting
4913 AC_MSG_CHECKING(whether to support utmp accounting)
4914 WITH_UTMP=yes
4915 AC_ARG_WITH(utmp,
4916 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4917 [ case "$withval" in
4918   no)
4919                 WITH_UTMP=no
4920                 ;;
4921   *)
4922                 WITH_UTMP=yes
4923                 ;;
4924   esac ],
4927 # utmp requires utmp.h
4928 # Note similar check earlier, when checking utmp details.
4930 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4931         utmp_no_reason=", no utmp.h on $host_os"
4932         WITH_UTMP=no
4935 # Display test results
4937 if test x"$WITH_UTMP" = x"yes"; then
4938         AC_MSG_RESULT(yes)
4939         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4940 else
4941         AC_MSG_RESULT(no$utmp_no_reason)
4945 #################################################
4946 # these tests are taken from the GNU fileutils package
4947 AC_CHECKING(how to get filesystem space usage)
4948 space=no
4950 # Test for statvfs64.
4951 if test $space = no; then
4952   # SVR4
4953   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4954   [AC_TRY_RUN([
4955 #if defined(HAVE_UNISTD_H)
4956 #include <unistd.h>
4957 #endif
4958 #include <sys/types.h>
4959 #include <sys/statvfs.h>
4960   main ()
4961   {
4962     struct statvfs64 fsd;
4963     exit (statvfs64 (".", &fsd));
4964   }],
4965   fu_cv_sys_stat_statvfs64=yes,
4966   fu_cv_sys_stat_statvfs64=no,
4967   fu_cv_sys_stat_statvfs64=cross)])
4968   if test $fu_cv_sys_stat_statvfs64 = yes; then
4969     space=yes
4970     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4971   fi
4974 # Perform only the link test since it seems there are no variants of the
4975 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4976 # because that got a false positive on SCO OSR5.  Adding the declaration
4977 # of a `struct statvfs' causes this test to fail (as it should) on such
4978 # systems.  That system is reported to work fine with STAT_STATFS4 which
4979 # is what it gets when this test fails.
4980 if test $space = no; then
4981   # SVR4
4982   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4983                  [AC_TRY_LINK([#include <sys/types.h>
4984 #include <sys/statvfs.h>],
4985                               [struct statvfs fsd; statvfs (0, &fsd);],
4986                               fu_cv_sys_stat_statvfs=yes,
4987                               fu_cv_sys_stat_statvfs=no)])
4988   if test $fu_cv_sys_stat_statvfs = yes; then
4989     space=yes
4990     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4991   fi
4994 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4995 # This is not the case on ancient Linux systems.
4997 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4998     AC_TRY_COMPILE([#include <sys/types.h>
4999 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5000         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5001 if test x"$samba_cv_fsid_int" = x"yes"; then
5002     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5005 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5006 # systems use f_bsize.
5007 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5008     AC_TRY_COMPILE([#include <sys/types.h>
5009 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5010         samba_cv_frsize=yes,samba_cv_frsize=no)])
5011 if test x"$samba_cv_frsize" = x"yes"; then
5012     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5015 # Some systems use f_flag in struct statvfs while others use f_flags
5016 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5017     AC_TRY_COMPILE([#include <sys/types.h>
5018 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5019         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5020 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5021     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5024 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5025     AC_TRY_COMPILE([#include <sys/types.h>
5026 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5027         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5028 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5029     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5032 if test $space = no; then
5033   # DEC Alpha running OSF/1
5034   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5035   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5036   [AC_TRY_RUN([
5037 #include <sys/param.h>
5038 #include <sys/types.h>
5039 #include <sys/mount.h>
5040   main ()
5041   {
5042     struct statfs fsd;
5043     fsd.f_fsize = 0;
5044     exit (statfs (".", &fsd, sizeof (struct statfs)));
5045   }],
5046   fu_cv_sys_stat_statfs3_osf1=yes,
5047   fu_cv_sys_stat_statfs3_osf1=no,
5048   fu_cv_sys_stat_statfs3_osf1=no)])
5049   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5050   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5051     space=yes
5052     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5053   fi
5056 if test $space = no; then
5057 # AIX
5058   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5059 member (AIX, 4.3BSD)])
5060   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5061   [AC_TRY_RUN([
5062 #ifdef HAVE_SYS_PARAM_H
5063 #include <sys/param.h>
5064 #endif
5065 #ifdef HAVE_SYS_MOUNT_H
5066 #include <sys/mount.h>
5067 #endif
5068 #ifdef HAVE_SYS_VFS_H
5069 #include <sys/vfs.h>
5070 #endif
5071   main ()
5072   {
5073   struct statfs fsd;
5074   fsd.f_bsize = 0;
5075   exit (statfs (".", &fsd));
5076   }],
5077   fu_cv_sys_stat_statfs2_bsize=yes,
5078   fu_cv_sys_stat_statfs2_bsize=no,
5079   fu_cv_sys_stat_statfs2_bsize=no)])
5080   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5081   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5082     space=yes
5083     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5084   fi
5087 if test $space = no; then
5088 # SVR3
5089   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5090   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5091   [AC_TRY_RUN([#include <sys/types.h>
5092 #include <sys/statfs.h>
5093   main ()
5094   {
5095   struct statfs fsd;
5096   exit (statfs (".", &fsd, sizeof fsd, 0));
5097   }],
5098     fu_cv_sys_stat_statfs4=yes,
5099     fu_cv_sys_stat_statfs4=no,
5100     fu_cv_sys_stat_statfs4=no)])
5101   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5102   if test $fu_cv_sys_stat_statfs4 = yes; then
5103     space=yes
5104     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5105   fi
5108 if test $space = no; then
5109 # 4.4BSD and NetBSD
5110   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5111 member (4.4BSD and NetBSD)])
5112   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5113   [AC_TRY_RUN([#include <sys/types.h>
5114 #ifdef HAVE_SYS_PARAM_H
5115 #include <sys/param.h>
5116 #endif
5117 #ifdef HAVE_SYS_MOUNT_H
5118 #include <sys/mount.h>
5119 #endif
5120   main ()
5121   {
5122   struct statfs fsd;
5123   fsd.f_fsize = 0;
5124   exit (statfs (".", &fsd));
5125   }],
5126   fu_cv_sys_stat_statfs2_fsize=yes,
5127   fu_cv_sys_stat_statfs2_fsize=no,
5128   fu_cv_sys_stat_statfs2_fsize=no)])
5129   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5130   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5131     space=yes
5132         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5133   fi
5136 if test $space = no; then
5137   # Ultrix
5138   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5139   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5140   [AC_TRY_RUN([#include <sys/types.h>
5141 #ifdef HAVE_SYS_PARAM_H
5142 #include <sys/param.h>
5143 #endif
5144 #ifdef HAVE_SYS_MOUNT_H
5145 #include <sys/mount.h>
5146 #endif
5147 #ifdef HAVE_SYS_FS_TYPES_H
5148 #include <sys/fs_types.h>
5149 #endif
5150   main ()
5151   {
5152   struct fs_data fsd;
5153   /* Ultrix's statfs returns 1 for success,
5154      0 for not mounted, -1 for failure.  */
5155   exit (statfs (".", &fsd) != 1);
5156   }],
5157   fu_cv_sys_stat_fs_data=yes,
5158   fu_cv_sys_stat_fs_data=no,
5159   fu_cv_sys_stat_fs_data=no)])
5160   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5161   if test $fu_cv_sys_stat_fs_data = yes; then
5162     space=yes
5163     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5164   fi
5168 # As a gating factor for large file support, in order to
5169 # use <4GB files we must have the following minimal support
5170 # available.
5171 # long long, and a 64 bit off_t or off64_t.
5172 # If we don't have all of these then disable large
5173 # file support.
5175 AC_MSG_CHECKING([if large file support can be enabled])
5176 AC_TRY_COMPILE([
5177 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5178 #include <sys/types.h>
5179 #else
5180 __COMPILE_ERROR_
5181 #endif
5183 [int i],
5184 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5185 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5186         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5188 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5190 #################################################
5191 # check for cluster extensions
5193 CTDB_CFLAGS=""
5194 AC_SUBST(CTDB_CFLAGS)
5195 AC_ARG_WITH(ctdb,
5196 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5197 [ case "$withval" in
5198   yes|no)
5199     AC_MSG_WARN([--with-ctdb called without argument])
5200     ;;
5201   *)
5202     CTDB_CPPFLAGS="-I$withval/include"
5203     ;;
5204   esac])
5206 SAVED_CPPFLAGS="$CPPFLAGS"
5207 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5208 ctdb_broken="missing or broken headers"
5210 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5211 #include "confdefs.h"
5212 #define NO_CONFIG_H
5213 #include "replace.h"
5214 #include "system/wait.h"
5215 #include "system/network.h"
5216 #define private #error __USED_RESERVED_WORD_private__
5217 #include <talloc.h>
5218 #include <tdb.h>
5219 #include <ctdb.h>
5222 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5223 #include "confdefs.h"
5224 #define NO_CONFIG_H
5225 #include "replace.h"
5226 #include "system/wait.h"
5227 #include "system/network.h"
5228 #include <talloc.h>
5229 #include <tdb.h>
5230 #include <ctdb.h>
5231 #include <ctdb_private.h>
5233 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5234         ctdb_broken=no
5235 else
5236         ctdb_broken="ctdb transaction support missing or too old"
5239 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5240 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5241         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5242 ],,[
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,[
5255         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5257         ctdb_broken="missing struct ctdb_control_tcp"
5259 #include "confdefs.h"
5260 #define NO_CONFIG_H
5261 #include "replace.h"
5262 #include "system/wait.h"
5263 #include "system/network.h"
5264 #include <talloc.h>
5265 #include <tdb.h>
5266 #include <ctdb.h>
5267 #include <ctdb_private.h>
5270 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5271         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5272 ],,[
5273 #include "confdefs.h"
5274 #define NO_CONFIG_H
5275 #include "replace.h"
5276 #include "system/wait.h"
5277 #include "system/network.h"
5278 #include <talloc.h>
5279 #include <tdb.h>
5280 #include <ctdb.h>
5281 #include <ctdb_private.h>
5283 CPPFLAGS="$SAVED_CPPFLAGS"
5285 AC_MSG_CHECKING(cluster support)
5286 AC_ARG_WITH(cluster-support,
5287 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5289 if test x"$with_cluster_support" = x ; then
5290         with_cluster_support="auto"
5293 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5294         if test "x$with_cluster_support" = "xyes"; then
5295                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5296         fi
5297         with_cluster_support=no
5300 if test x"$ctdb_broken" != x"no"; then
5301         if test "x$with_cluster_support" = "xyes"; then
5302                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5303         fi
5304         with_cluster_support=no
5307 if test "x$with_cluster_support" != "xno"; then
5308     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5309     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5310     AC_MSG_RESULT(yes)
5311 else
5312     AC_MSG_RESULT(no)
5315 #################################################
5316 # check for ACL support
5318 AC_MSG_CHECKING(whether to support ACLs)
5319 AC_ARG_WITH(acl-support,
5320 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5321 [ case "$withval" in
5322         yes|no)
5323                 with_acl_support="$withval"
5324                 ;;
5325   esac ])
5327 if test x"$with_acl_support" = x ; then
5328         with_acl_support="auto"
5331 AC_MSG_RESULT($with_acl_support)
5333 if test x"$with_acl_support" = x"no"; then
5334         AC_MSG_RESULT(Disabling ACL support)
5335         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5336 else
5337         AC_MSG_NOTICE(checking whether ACL support is available:)
5338         case "$host_os" in
5339         *sysv5*)
5340                 AC_MSG_NOTICE(Using UnixWare ACLs)
5341                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5342                 default_static_modules="$default_static_modules vfs_solarisacl"
5343                 ;;
5344         *solaris*)
5345                 AC_MSG_NOTICE(Using solaris ACLs)
5346                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5347                 ACL_LIBS="$ACL_LIBS -lsec"
5348                 default_static_modules="$default_static_modules vfs_solarisacl"
5349                 ;;
5350         *hpux*)
5351                 AC_MSG_NOTICE(Using HPUX ACLs)
5352                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5353                 default_static_modules="$default_static_modules vfs_hpuxacl"
5354                 ;;
5355         *irix*)
5356                 AC_MSG_NOTICE(Using IRIX ACLs)
5357                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5358                 default_static_modules="$default_static_modules vfs_irixacl"
5359                 ;;
5360         *aix*)
5361                 AC_MSG_NOTICE(Using AIX ACLs)
5362                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5363                 default_static_modules="$default_static_modules vfs_aixacl"
5364                 ;;
5365         *osf*)
5366                 AC_MSG_NOTICE(Using Tru64 ACLs)
5367                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5368                 ACL_LIBS="$ACL_LIBS -lpacl"
5369                 default_static_modules="$default_static_modules vfs_tru64acl"
5370                 ;;
5371         *darwin*)
5372                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5373                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5374                 ;;
5375         *)
5376                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5377                 case "$host_os" in
5378                 *linux*)
5379                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5380                         ;;
5381                 esac
5382                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5383                         acl_LIBS=$LIBS
5384                         LIBS="$LIBS $ACL_LIBS"
5385                         AC_TRY_LINK([
5386                                 #include <sys/types.h>
5387                                 #include <sys/acl.h>
5388                         ],[
5389                                 acl_t acl;
5390                                 int entry_id;
5391                                 acl_entry_t *entry_p;
5392                                 return acl_get_entry(acl, entry_id, entry_p);
5393                         ],
5394                         [samba_cv_HAVE_POSIX_ACLS=yes],
5395                         [samba_cv_HAVE_POSIX_ACLS=no])
5396                         LIBS=$acl_LIBS
5397                 ])
5398                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5399                         AC_MSG_NOTICE(Using posix ACLs)
5400                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5401                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5402                                 acl_LIBS=$LIBS
5403                                 LIBS="$LIBS $ACL_LIBS"
5404                                 AC_TRY_LINK([
5405                                         #include <sys/types.h>
5406                                         #include <sys/acl.h>
5407                                 ],[
5408                                         acl_permset_t permset_d;
5409                                         acl_perm_t perm;
5410                                         return acl_get_perm_np(permset_d, perm);
5411                                 ],
5412                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5413                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5414                                 LIBS=$acl_LIBS
5415                         ])
5416                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5417                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5418                         fi
5419                         default_static_modules="$default_static_modules vfs_posixacl"
5420                 else
5421                         AC_MSG_NOTICE(ACL support is not avaliable)
5422                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5423                 fi
5424                 ;;
5425         esac
5426 fi # with_acl_support
5430 #################################################
5431 # check for AIO support
5433 AC_MSG_CHECKING(whether to support asynchronous io)
5434 AC_ARG_WITH(aio-support,
5435 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5436 [ case "$withval" in
5437   yes)
5439         AC_MSG_RESULT(yes)
5440         case "$host_os" in
5441         *)
5442                 AIO_LIBS=$LIBS
5443                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5444                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5445                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5446                 aio_LIBS=$LIBS
5447                 LIBS=$AIO_LIBS
5448                 AC_TRY_LINK([#include <sys/types.h>
5449 #include <aio.h>],
5450 [ struct aiocb a; return aio_read(&a);],
5451 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5452                 LIBS=$aio_LIBS])
5453                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5454                 aio_LIBS=$LIBS
5455                 LIBS=$AIO_LIBS
5456                 AC_TRY_LINK([#include <sys/types.h>
5457 #include <aio.h>],
5458 [ struct aiocb64 a; return aio_read64(&a);],
5459 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5460                 LIBS=$aio_LIBS])
5461                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5462                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5463                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5464                         LIBS=$AIO_LIBS
5465                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5466                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5467                         LIBS=$AIO_LIBS
5468                 fi
5470                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5471                         AC_MSG_CHECKING(for aio_read)
5472                         AC_LINK_IFELSE([#include <aio.h>
5473 int main() { struct aiocb a; return aio_read(&a); }],
5474 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5475 [AC_MSG_RESULT(no)])
5477                         AC_MSG_CHECKING(for aio_write)
5478                         AC_LINK_IFELSE([#include <aio.h>
5479 int main() { struct aiocb a; return aio_write(&a); }],
5480 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5481 [AC_MSG_RESULT(no)])
5483                         AC_MSG_CHECKING(for aio_fsync)
5484                         AC_LINK_IFELSE([#include <aio.h>
5485 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5486 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5487 [AC_MSG_RESULT(no)])
5489                         AC_MSG_CHECKING(for aio_return)
5490                         AC_LINK_IFELSE([#include <aio.h>
5491 int main() { struct aiocb a; return aio_return(&a); }],
5492 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5493 [AC_MSG_RESULT(no)])
5495                         AC_MSG_CHECKING(for aio_error)
5496                         AC_LINK_IFELSE([#include <aio.h>
5497 int main() { struct aiocb a; return aio_error(&a); }],
5498 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5499 [AC_MSG_RESULT(no)])
5501                         AC_MSG_CHECKING(for aio_cancel)
5502                         AC_LINK_IFELSE([#include <aio.h>
5503 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5504 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5505 [AC_MSG_RESULT(no)])
5507                         AC_MSG_CHECKING(for aio_suspend)
5508                         AC_LINK_IFELSE([#include <aio.h>
5509 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5510 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5511 [AC_MSG_RESULT(no)])
5512                 fi
5514                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5515                         AC_MSG_CHECKING(for aio_read64)
5516                         AC_LINK_IFELSE([#include <aio.h>
5517 int main() { struct aiocb a; return aio_read64(&a); }],
5518 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5519 [AC_MSG_RESULT(no)])
5521                         AC_MSG_CHECKING(for aio_write64)
5522                         AC_LINK_IFELSE([#include <aio.h>
5523 int main() { struct aiocb a; return aio_write64(&a); }],
5524 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5525 [AC_MSG_RESULT(no)])
5527                         AC_MSG_CHECKING(for aio_fsync64)
5528                         AC_LINK_IFELSE([#include <aio.h>
5529 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5530 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5531 [AC_MSG_RESULT(no)])
5533                         AC_MSG_CHECKING(for aio_return64)
5534                         AC_LINK_IFELSE([#include <aio.h>
5535 int main() { struct aiocb a; return aio_return64(&a); }],
5536 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5537 [AC_MSG_RESULT(no)])
5539                         AC_MSG_CHECKING(for aio_error64)
5540                         AC_LINK_IFELSE([#include <aio.h>
5541 int main() { struct aiocb a; return aio_error64(&a); }],
5542 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5543 [AC_MSG_RESULT(no)])
5545                         AC_MSG_CHECKING(for aio_cancel64)
5546                         AC_LINK_IFELSE([#include <aio.h>
5547 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5548 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5549 [AC_MSG_RESULT(no)])
5551                         AC_MSG_CHECKING(for aio_suspend64)
5552                         AC_LINK_IFELSE([#include <aio.h>
5553 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5554 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5555 [AC_MSG_RESULT(no)])
5556                 fi
5557             ;;
5558         esac
5559         ;;
5560   *)
5561     AC_MSG_RESULT(no)
5562     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5563     ;;
5564   esac ],
5565   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5566   AC_MSG_RESULT(no)
5569 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5570         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5571                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5572                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5573         fi
5576 #################################################
5577 # check for sendfile support
5579 with_sendfile_support=yes
5580 AC_MSG_CHECKING(whether to check to support sendfile)
5581 AC_ARG_WITH(sendfile-support,
5582 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5583 [ case "$withval" in
5584   yes)
5586         AC_MSG_RESULT(yes);
5588         case "$host_os" in
5589         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5590                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5591                 AC_TRY_LINK([#include <sys/sendfile.h>],
5593 int tofd, fromfd;
5594 off64_t offset;
5595 size_t total;
5596 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5598 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5600                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5601                 AC_TRY_LINK([#include <sys/sendfile.h>],
5603 int tofd, fromfd;
5604 off_t offset;
5605 size_t total;
5606 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5608 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5610 # Try and cope with broken Linux sendfile....
5611                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5612                 AC_TRY_LINK([\
5613 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5614 #undef _FILE_OFFSET_BITS
5615 #endif
5616 #include <sys/sendfile.h>],
5618 int tofd, fromfd;
5619 off_t offset;
5620 size_t total;
5621 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5623 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5625         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5626                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5627                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5628                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5629         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5630                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5631                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5632                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5633         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5634                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5635                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5636         else
5637                 AC_MSG_RESULT(no);
5638         fi
5640         ;;
5641         *freebsd* | *dragonfly* )
5642                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5643                 AC_TRY_LINK([\
5644 #include <sys/types.h>
5645 #include <unistd.h>
5646 #include <sys/socket.h>
5647 #include <sys/uio.h>],
5649         int fromfd, tofd, ret, total=0;
5650         off_t offset, nwritten;
5651         struct sf_hdtr hdr;
5652         struct iovec hdtrl;
5653         hdr.headers = &hdtrl;
5654         hdr.hdr_cnt = 1;
5655         hdr.trailers = NULL;
5656         hdr.trl_cnt = 0;
5657         hdtrl.iov_base = NULL;
5658         hdtrl.iov_len = 0;
5659         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5661 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5663         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5664                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5665                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5666                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5667         else
5668                 AC_MSG_RESULT(no);
5669         fi
5670         ;;
5672         *hpux*)
5673                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5674                 AC_TRY_LINK([\
5675 #include <sys/socket.h>
5676 #include <sys/uio.h>],
5678         int fromfd, tofd;
5679         size_t total=0;
5680         struct iovec hdtrl[2];
5681         ssize_t nwritten;
5682         off64_t offset;
5684         hdtrl[0].iov_base = 0;
5685         hdtrl[0].iov_len = 0;
5687         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5689 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5690         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5691                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5692                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5693                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5694         else
5695                 AC_MSG_RESULT(no);
5696         fi
5698                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5699                 AC_TRY_LINK([\
5700 #include <sys/socket.h>
5701 #include <sys/uio.h>],
5703         int fromfd, tofd;
5704         size_t total=0;
5705         struct iovec hdtrl[2];
5706         ssize_t nwritten;
5707         off_t offset;
5709         hdtrl[0].iov_base = 0;
5710         hdtrl[0].iov_len = 0;
5712         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5714 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5715         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5716                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5717                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5718                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5719         else
5720                 AC_MSG_RESULT(no);
5721         fi
5722         ;;
5724         *solaris*)
5725                 AC_CHECK_LIB(sendfile,sendfilev)
5726                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5727                 AC_TRY_LINK([\
5728 #include <sys/sendfile.h>],
5730         int sfvcnt;
5731         size_t xferred;
5732         struct sendfilevec vec[2];
5733         ssize_t nwritten;
5734         int tofd;
5736         sfvcnt = 2;
5738         vec[0].sfv_fd = SFV_FD_SELF;
5739         vec[0].sfv_flag = 0;
5740         vec[0].sfv_off = 0;
5741         vec[0].sfv_len = 0;
5743         vec[1].sfv_fd = 0;
5744         vec[1].sfv_flag = 0;
5745         vec[1].sfv_off = 0;
5746         vec[1].sfv_len = 0;
5747         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5749 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5751         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5752                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5753                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5754                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5755         else
5756                 AC_MSG_RESULT(no);
5757         fi
5759                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5760                 AC_TRY_LINK([\
5761 #include <sys/sendfile.h>],
5763         int sfvcnt;
5764         size_t xferred;
5765         struct sendfilevec vec[2];
5766         ssize_t nwritten;
5767         int tofd;
5769         sfvcnt = 2;
5771         vec[0].sfv_fd = SFV_FD_SELF;
5772         vec[0].sfv_flag = 0;
5773         vec[0].sfv_off = 0;
5774         vec[0].sfv_len = 0;
5776         vec[1].sfv_fd = 0;
5777         vec[1].sfv_flag = 0;
5778         vec[1].sfv_off = 0;
5779         vec[1].sfv_len = 0;
5780         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5782 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5784         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5785                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5786                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5787                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5788         else
5789                 AC_MSG_RESULT(no);
5790         fi
5791         ;;
5792         *aix*)
5793                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5794                 AC_TRY_LINK([\
5795 #include <sys/socket.h>],
5797         int fromfd, tofd;
5798         size_t total=0;
5799         struct sf_parms hdtrl;
5800         ssize_t nwritten;
5801         off64_t offset;
5803         hdtrl.header_data = 0;
5804         hdtrl.header_length = 0;
5805         hdtrl.file_descriptor = fromfd;
5806         hdtrl.file_offset = 0;
5807         hdtrl.file_bytes = 0;
5808         hdtrl.trailer_data = 0;
5809         hdtrl.trailer_length = 0;
5811         nwritten = send_file(&tofd, &hdtrl, 0);
5813 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5814         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5815                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5816                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5817                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5818         else
5819                 AC_MSG_RESULT(no);
5820         fi
5821         ;;
5822         *)
5823         ;;
5824         esac
5825         ;;
5826   *)
5827     AC_MSG_RESULT(no)
5828     ;;
5829   esac ],
5830   AC_MSG_RESULT(yes)
5833 ############################################
5834 # See if we have the Linux readahead syscall.
5836 AC_CACHE_CHECK([for Linux readahead],
5837                 samba_cv_HAVE_LINUX_READAHEAD,[
5838     AC_TRY_LINK([
5839 #if defined(HAVE_UNISTD_H)
5840 #include <unistd.h>
5841 #endif
5842 #include <fcntl.h>],
5843     [ssize_t err = readahead(0,0,0x80000);],
5844     samba_cv_HAVE_LINUX_READAHEAD=yes,
5845     samba_cv_HAVE_LINUX_READAHEAD=no)])
5847 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5848   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5849              [Whether Linux readahead is available])
5852 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5854 ############################################
5855 # See if we have the posix_fadvise syscall.
5857 AC_CACHE_CHECK([for posix_fadvise],
5858                 samba_cv_HAVE_POSIX_FADVISE,[
5859     AC_TRY_LINK([
5860 #if defined(HAVE_UNISTD_H)
5861 #include <unistd.h>
5862 #endif
5863 #include <fcntl.h>],
5864     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5865     samba_cv_HAVE_POSIX_FADVISE=yes,
5866     samba_cv_HAVE_POSIX_FADVISE=no)])
5868 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5869   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5870              [Whether posix_fadvise is available])
5873 ############################################
5874 # See if we have the Linux splice syscall.
5876 case "$host_os" in
5877 *linux*)
5878 AC_CACHE_CHECK([for Linux splice],
5879                 samba_cv_HAVE_LINUX_SPLICE,[
5880     AC_TRY_LINK([
5881 #if defined(HAVE_UNISTD_H)
5882 #include <unistd.h>
5883 #endif
5884 #include <fcntl.h>],
5885     [long ret = splice(0,0,1,0,400,0);],
5886     samba_cv_HAVE_LINUX_SPLICE=yes,
5887     samba_cv_HAVE_LINUX_SPLICE=no)])
5890 samba_cv_HAVE_LINUX_SPLICE=no
5892 esac
5894 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5895   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5896              [Whether Linux splice is available])
5899 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5901 ############################################
5902 # See if we have the a broken readlink syscall.
5904 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5905 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5906         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5908 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5909         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5912 #################################################
5913 # Check whether winbind is supported on this platform.  If so we need to
5914 # build and install client programs, sbin programs and shared libraries
5916 AC_MSG_CHECKING(whether to build winbind)
5918 # Initially, the value of $host_os decides whether winbind is supported
5920 HAVE_WINBIND=yes
5921 HAVE_WBCLIENT=no
5923 # Define external wbclient library to link against.  This disables winbind.
5924 # We define this here so --with-winbind can override it.
5925 AC_ARG_WITH(wbclient,
5926 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5928   case "$withval" in
5929         no)
5930                 HAVE_WBCLIENT=no
5931                 ;;
5932         yes)
5933                 HAVE_WBCLIENT=yes
5934                 HAVE_WINBIND=no
5935                 ;;
5936         *)
5937                 HAVE_WBCLIENT=yes
5938                 HAVE_WINBIND=no
5939                 WBCLIENT_INCLUDES="-I$withval/include"
5940                 WBCLIENT_LDFLAGS="-L$withval/lib"
5941                 ;;
5942   esac ],
5945 AC_SUBST(WBCLIENT_INCLUDES)
5946 AC_SUBST(WBCLIENT_LDFLAGS)
5947 AC_SUBST(WBCLIENT_LIBS)
5950 # Define the winbind shared library name and any specific linker flags
5951 # it needs to be built with.
5953 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5954 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5955 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5956 NSSSONAMEVERSIONSUFFIX=""
5958 case "$host_os" in
5959         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5960                 NSSSONAMEVERSIONSUFFIX=".2"
5961                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5962                 ;;
5963         *freebsd[[5-9]]*)
5964                 # FreeBSD winbind client is implemented as a wrapper around
5965                 # the Linux version.
5966                 NSSSONAMEVERSIONSUFFIX=".1"
5967                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5968                     ../nsswitch/winbind_nss_linux.o"
5969                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5970                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5971                 ;;
5973         *netbsd*[[3-9]]*)
5974                 # NetBSD winbind client is implemented as a wrapper
5975                 # around the Linux version. It needs getpwent_r() to
5976                 # indicate libc's use of the correct nsdispatch API.
5977                 #
5978                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5979                         WINBIND_NSS_EXTRA_OBJS="\
5980                             ../nsswitch/winbind_nss_netbsd.o \
5981                             ../nsswitch/winbind_nss_linux.o"
5982                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5983                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5984                 else
5985                         HAVE_WINBIND=no
5986                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5987                 fi
5988                 ;;
5989         *irix*)
5990                 # IRIX has differently named shared libraries
5991                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5992                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5993                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5994                 ;;
5995         *solaris*)
5996                 # Solaris winbind client is implemented as a wrapper around
5997                 # the Linux version.
5998                 NSSSONAMEVERSIONSUFFIX=".1"
5999                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6000                     ../nsswitch/winbind_nss_linux.o"
6001                 ;;
6002         *hpux11*)
6003                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6004                 ;;
6005         *aix*)
6006                 # AIX has even differently named shared libraries.  No
6007                 # WINS support has been implemented yet.
6008                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6009                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6010                 WINBIND_NSS="../nsswitch/WINBIND"
6011                 WINBIND_WINS_NSS=""
6012                 ;;
6013         *)
6014                 HAVE_WINBIND=no
6015                 winbind_no_reason=", unsupported on $host_os"
6016                 ;;
6017 esac
6019 # Check the setting of --with-winbind
6021 AC_ARG_WITH(winbind,
6022 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6024   case "$withval" in
6025         yes)
6026                 HAVE_WINBIND=yes
6027                 HAVE_WBCLIENT=no
6028                 ;;
6029         no)
6030                 HAVE_WINBIND=no
6031                 winbind_reason=""
6032                 ;;
6033   esac ],
6036 # We need unix domain sockets for winbind
6038 if test x"$HAVE_WINBIND" = x"yes"; then
6039         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6040                 winbind_no_reason=", no unix domain socket support on $host_os"
6041                 HAVE_WINBIND=no
6042         fi
6045 # Display test results
6047 if test x"$HAVE_WINBIND" = x"no"; then
6048         WINBIND_NSS=""
6049         WINBIND_WINS_NSS=""
6051 if test x"$HAVE_WBCLIENT" = x"yes"; then
6052         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6053                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6054         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6055         AC_MSG_RESULT(yes)
6056         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6057         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6058 else
6059         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6060                 BUILD_LIBWBCLIENT_SHARED=no
6061         else
6062                 BUILD_LIBWBCLIENT_SHARED=yes
6063         fi
6065         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6066         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6067         LIBWBCLIENT_SOVER=0
6068         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6069                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6070                 ## Only worry about libwbclient if we have shared
6071                 # library support
6072                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6073                 LIBWBCLIENT=libwbclient
6074                 INSTALL_LIBWBCLIENT=installlibwbclient
6075                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6076                 LIBWBCLIENT_LIBS="-lwbclient"
6077         else
6078                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6079                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6080         fi
6083 if test x"$HAVE_WINBIND" = x"yes"; then
6084         AC_MSG_RESULT(yes)
6085         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6087         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6088         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6089         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6090                 PAM_MODULES="$PAM_MODULES pam_winbind"
6091                 INSTALL_PAM_MODULES="installpammodules"
6092                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6093         fi
6094 else
6095         AC_MSG_RESULT(no$winbind_no_reason)
6098 AC_SUBST(WINBIND_NSS)
6099 AC_SUBST(WINBIND_WINS_NSS)
6100 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6101 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6102 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6104 AC_SUBST(WINBIND_KRB5_LOCATOR)
6106 # Solaris 10 does have new member in nss_XbyY_key
6107 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6108                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6109                 [#include <nss_dbdefs.h>])
6111 # Solaris has some extra fields in struct passwd that need to be
6112 # initialised otherwise nscd crashes.
6114 AC_CHECK_MEMBER(struct passwd.pw_comment,
6115                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6116                 [#include <pwd.h>])
6118 AC_CHECK_MEMBER(struct passwd.pw_age,
6119                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6120                 [#include <pwd.h>])
6122 # AIX 4.3.x and 5.1 do not have as many members in
6123 # struct secmethod_table as AIX 5.2
6124 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6125        [#include <usersec.h>])
6126 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6127        [#include <usersec.h>])
6129 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6130 AC_TRY_COMPILE([#include <sys/types.h>
6131 #include <sys/socket.h>],
6132 [struct ucred cred;
6133  socklen_t cred_len;
6134  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6136 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6137 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6138     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6142 #################################################
6143 # Check to see if we should use the included popt
6145 AC_ARG_WITH(included-popt,
6146 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6148   case "$withval" in
6149         yes)
6150                 INCLUDED_POPT=yes
6151                 ;;
6152         no)
6153                 INCLUDED_POPT=no
6154                 ;;
6155   esac ],
6157 if test x"$INCLUDED_POPT" != x"yes"; then
6158     AC_CHECK_LIB(popt, poptGetContext,
6159                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6162 AC_MSG_CHECKING(whether to use included popt)
6163 if test x"$INCLUDED_POPT" = x"yes"; then
6164     AC_MSG_RESULT(yes)
6165     BUILD_POPT='$(POPT_OBJ)'
6166     POPTLIBS='$(POPT_OBJ)'
6167     FLAGS1="-I\$(srcdir)/../lib/popt"
6168 else
6169     AC_MSG_RESULT(no)
6170         BUILD_POPT=""
6171     POPTLIBS="-lpopt"
6173 AC_SUBST(BUILD_POPT)
6174 AC_SUBST(POPTLIBS)
6175 AC_SUBST(FLAGS1)
6177 #################################################
6178 # Check if user wants DNS service discovery support
6180 AC_ARG_ENABLE(dnssd,
6181 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6183 AC_SUBST(DNSSD_LIBS)
6184 if test x"$enable_dnssd" = x"yes"; then
6185     have_dnssd_support=yes
6187     AC_CHECK_HEADERS(dns_sd.h)
6188     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6189         have_dnssd_support=no
6190     fi
6192     # On Darwin the DNSSD API is in libc, but on other platforms it's
6193     # probably in -ldns_sd
6194     AC_CHECK_FUNCS(DNSServiceRegister)
6195     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6196     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6197             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6198         have_dnssd_support=no
6199     fi
6201     if test x"$have_dnssd_support" = x"yes"; then
6202         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6203                 [Whether to enable DNS service discovery support])
6204     else
6205         if test x"$enable_dnssd" = x"yes"; then
6206             AC_MSG_ERROR(DNS service discovery support not available)
6207         fi
6208     fi
6212 #################################################
6213 # Check if user wants avahi support
6215 AC_ARG_ENABLE(avahi,
6216 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6218 if test x"$enable_avahi" != x"no"; then
6219     have_avahi_support=yes
6221     AC_CHECK_HEADERS(avahi-common/watch.h)
6222     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6223         have_avahi_support=no
6224     fi
6226     AC_CHECK_HEADERS(avahi-client/client.h)
6227     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6228         have_avahi_support=no
6229     fi
6231     save_LIBS="$LIBS"
6232     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6233     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6234     LIBS="$save_LIBS"
6236     if test x"$have_avahi_client_new" != x"yes" -o \
6237        x"$have_avahi_strerror" != x"yes" ; then
6238         have_avahi_support=no
6239     fi
6241     if test x"$have_avahi_support" = x"yes"; then
6242         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6243         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6244                 [Whether to enable avahi support])
6245         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6246     else
6247         if test x"$enable_avahi" = x"yes"; then
6248             AC_MSG_ERROR(avahi support not available)
6249         fi
6250     fi
6254 #################################################
6255 # Set pthread stuff
6257 PTHREAD_CFLAGS=error
6258 PTHREAD_LDFLAGS=error
6260 # If it's error, then the user didn't 
6261 # define it.
6262 if test "x$PTHREAD_LDFLAGS" = xerror; then
6263   AC_CHECK_LIB(pthread, pthread_attr_init, [
6264              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6265              PTHREAD_LDFLAGS="-lpthread" ])
6268 if test "x$PTHREAD_LDFLAGS" = xerror; then
6269   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6270              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6271              PTHREAD_LDFLAGS="-lpthreads" ])
6274 if test "x$PTHREAD_LDFLAGS" = xerror; then
6275    AC_CHECK_LIB(c_r, pthread_attr_init, [
6276                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6277                 PTHREAD_LDFLAGS="-pthread" ])
6280 if test "x$PTHREAD_LDFLAGS" = xerror; then
6281    AC_CHECK_FUNC(pthread_attr_init, [
6282                  PTHREAD_CFLAGS="-D_REENTRANT"
6283                  PTHREAD_LDFLAGS="-lpthread" ])
6286 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6287 # pthread_attr_init. On pthread_mutex_lock it works there...
6288 if test "x$PTHREAD_LDFLAGS" = xerror; then
6289    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6290                 PTHREAD_CFLAGS="-D_REENTRANT"
6291                 PTHREAD_LDFLAGS="-lpthread" ])
6294 AC_SUBST(PTHREAD_CFLAGS)
6295 AC_SUBST(PTHREAD_LDFLAGS)
6297 samba_cv_HAVE_PTHREAD=no
6298 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6299         samba_cv_HAVE_PTHREAD=yes
6300         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6301         ac_save_CFLAGS=$CFLAGS
6302         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6303         ac_save_LDFLAGS=$LDFLAGS
6304         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6305         AC_CHECK_HEADERS(pthread.h)
6306         CFLAGS=$ac_save_CFLAGS
6307         LDFLAGS=$ac_save_LDFLAGS
6308         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6311 #################################################
6312 # Check if user wants pthreadpool support
6314 AC_ARG_ENABLE(pthreadpool,
6315 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6317 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6318         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was not found])
6321 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6322     LIBS="$LIBS $PTHREAD_LDFLAGS"
6323     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6324     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6325     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6328 #################################################
6329 # Check to see if we should use the included iniparser
6331 AC_ARG_WITH(included-iniparser,
6332 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6334   case "$withval" in
6335         yes)
6336                 INCLUDED_INIPARSER=yes
6337                 ;;
6338         no)
6339                 INCLUDED_INIPARSER=no
6340                 ;;
6341   esac ],
6343 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6344     AC_CHECK_LIB(iniparser, iniparser_load,
6345                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6348 AC_MSG_CHECKING(whether to use included iniparser)
6349 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6350     AC_MSG_RESULT(yes)
6351     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6352         INIPARSERLIBS=""
6353     FLAGS1="$FLAGS1 -I\$(srcdir)/../lib/iniparser/src"
6354 else
6355     AC_MSG_RESULT(no)
6356         BUILD_INIPARSER=""
6357     INIPARSERLIBS="-liniparser"
6359 AC_SUBST(BUILD_INIPARSER)
6360 AC_SUBST(INIPARSERLIBS)
6361 AC_SUBST(FLAGS1)
6365 # Checks for the vfs_fileid module
6366 # Start
6367 AC_CHECK_FUNC(getmntent)
6369 AC_CHECK_HEADERS(sys/statfs.h)
6371 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6372 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6373              AC_TRY_RUN([
6374                 #include <sys/types.h>
6375                 #include <sys/statfs.h>
6376                 int main(void)
6377                 {
6378                         struct statfs fsd;
6379                         fsid_t fsid = fsd.f_fsid;
6380                         return statfs (".", &fsd);
6381                 }],
6382                 vfsfileid_cv_statfs=yes,
6383                 vfsfileid_cv_statfs=no,
6384                 vfsfileid_cv_statfs=cross)
6386 AC_MSG_RESULT($vfsfileid_cv_statfs)
6388 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6389         x"$vfsfileid_cv_statfs" = x"yes"; then
6390         default_shared_modules="$default_shared_modules vfs_fileid"
6392 # End
6393 # Checks for the vfs_fileid module
6396 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6398         eval MODULE_DEFAULT_$i=STATIC
6399 done
6401 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6403         dnl Fall back to static if we cannot build shared libraries
6404         eval MODULE_DEFAULT_$i=STATIC
6406         if test $BLDSHARED = true; then
6407                 eval MODULE_DEFAULT_$i=SHARED
6408         fi
6409 done
6411 dnl Always build these modules static
6412 MODULE_rpc_spoolss=STATIC
6413 MODULE_rpc_srvsvc=STATIC
6414 MODULE_idmap_tdb=STATIC
6415 MODULE_idmap_passdb=STATIC
6416 MODULE_idmap_nss=STATIC
6418 MODULE_nss_info_template=STATIC
6420 AC_ARG_WITH(static-modules,
6421 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6422 [ if test $withval; then
6423         for i in `echo $withval | sed -e 's/,/ /g'`
6424         do
6425                 eval MODULE_$i=STATIC
6426         done
6427 fi ])
6429 AC_ARG_WITH(shared-modules,
6430 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6431 [ if test $withval; then
6432         for i in `echo $withval | sed -e 's/,/ /g'`
6433         do
6434                         eval MODULE_$i=SHARED
6435         done
6436 fi ])
6438 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6439                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6440         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6441         AC_SUBST(SMBD_FAM_LIBS)
6444 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6445                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6446 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6447 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6448 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6449 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6450 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6453 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6454 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6455 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6456 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6457 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6458 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6459 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6460 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6461 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6462 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6463 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6464 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6465 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6466 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6467 SMB_SUBSYSTEM(RPC,smbd/process.o)
6469 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6470 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6471 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6472 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6473 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6474 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6475 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6476 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6477 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6478 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6480 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6481 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6483 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6484 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6485 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6486 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6487 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6489 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6490 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6491 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6492 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6493 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6494 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6495 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6496 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6497 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6498 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6500 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6512 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6513 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6514 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6515 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6516 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6517 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6518 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6519 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6520 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6521 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6522 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6523 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6524 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6525 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6526 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6527 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6528 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6529 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6530 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6531 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6532 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6533 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6534 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6535 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6536 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6537 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6538 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6539 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6540 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6541 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6542 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6543 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6544 SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS)
6546 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6548 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6549 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6550 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6552 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6553 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6554 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6555 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6557 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6559 #################################################
6560 # do extra things if we are running insure
6562 if test "${ac_cv_prog_CC}" = "insure"; then
6563         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6566 #################################################
6567 # If run from the build farm, enable NASTY hacks
6568 #################################################
6569 AC_MSG_CHECKING(whether to enable build farm hacks)
6570 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6571         AC_MSG_RESULT(yes)
6572         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6573 else
6574         AC_MSG_RESULT(no)
6577 #################################################
6578 # check for bad librt/libpthread interactions
6580 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6581     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6582     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6583     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6585 SMB_IF_RTSIGNAL_BUG(
6586         [
6587             # Have RT_SIGNAL bug, need to check whether the problem will
6588             # affect anything we have configured.
6590             rt_do_error=no
6591             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6592                 if test x"$rt_signal_lease_ok" = x"no" ; then
6593                     rt_do_error=yes
6594                 fi
6595             fi
6597             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6598                 if test x"$rt_signal_notify_ok" = x"no" ; then
6599                     rt_do_error=yes
6600                 fi
6601             fi
6603             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6604                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6605                 if test x"$rt_signal_aio_ok" = x"no" ; then
6606                     rt_do_error=yes
6607                 fi
6608             fi
6610             if test x"$rt_do_error" = x"yes" ; then
6611                 SMB_IS_LIBPTHREAD_LINKED(
6612                     [
6613                         cat<<MSG
6615 *** On this platforms, linking Samba against pthreads causes problems
6616 *** with the oplock and change notification mechanisms. You may be
6617 *** using pthreads as a side-effect of using the --with-aio-support
6618 *** or --with-profiling-data options. Please remove these and try again.
6621                     ],
6622                     [
6623                         cat<<MSG
6625 *** On this platform, the oplock and change notification mechanisms do not
6626 *** appear to work. Please report this problem to samba-technical@samba.org
6627 *** and attach the config.log file from this directory.
6630                     ])
6631                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6632             fi
6633         ],
6634         [
6635             # no RT_SIGNAL bug, we are golden
6636             SMB_IS_LIBPTHREAD_LINKED(
6637                 [
6638                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6639                 ])
6641         ],
6642         [
6643             # cross compiling, I hope you know what you are doing
6644             true
6645         ])
6649 AC_ARG_ENABLE(merged-build, 
6650 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6651 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6653 if test x"$enable_merged_build" = x"yes" -a \
6654         x"$merged_build_possible" = x"no" ; then
6655         AC_MSG_ERROR(Merged build required but not possible)
6658 m4_include(../lib/zlib/zlib.m4)
6660 if test x$enable_merged_build = xauto; then
6661         # Check for python
6662         m4_include(../m4/check_python.m4)
6663         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6665         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6666         AC_MSG_RESULT([$merged_build_possible])
6668         # Enable merged build automatically if possible, when in developer mode
6669         if test "x$developer" = xyes; then
6670                 enable_merged_build=$merged_build_possible
6671         fi
6674 if test x$enable_merged_build = xyes; then
6675         MERGED_BUILD=1
6676         saved_USESHARED="$USESHARED"
6677         USESHARED="false"
6678         smbtorture4_path="bin/smbtorture4"
6679         smbtorture4_option="-t bin/smbtorture4"
6680         AC_SUBST(smbtorture4_path)
6681         AC_SUBST(smbtorture4_option)
6682         USESHARED="$saved_USESHARED"
6683         SMBTORTURE4="bin/smbtorture4"
6684         AC_SUBST(SMBTORTURE4)
6687 AC_SUBST(ZLIB_LIBS)
6688 AC_SUBST(ZLIB_OBJS)
6689 AC_ZLIB([ZLIB_OBJS=""], [
6690         ZLIB_LIBS=""
6691         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6692                      deflate.o trees.o zutil.o inflate.o infback.o \
6693                          inftrees.o inffast.o
6694         do
6695                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6696         done
6697         CFLAGS="-I../lib/zlib $CFLAGS"
6700 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6702 if test "x$enable_dmalloc" = xyes
6703 then
6704         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6705         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6706                   [Define to check invariants around some common functions])
6707         LIBS="$LIBS -ldmalloc"
6710 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6711 LIB_REMOVE_USR_LIB(LDFLAGS)
6712 LIB_REMOVE_USR_LIB(LIBS)
6714 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6715 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6716 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6718 #################################################
6719 # Display summary of libraries detected
6721 AC_MSG_RESULT([Using libraries:])
6722 AC_MSG_RESULT([    LIBS = $LIBS])
6723 if test x"$with_ads_support" != x"no"; then
6724     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6726 if test x"$with_ldap_support" != x"no"; then
6727     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6729 if test x"$with_dnsupdate_support" != x"no"; then
6730     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6732 if test x"$have_dnssd_support" != x"no"; then
6733     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6735 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6737 #################################################
6738 # final configure stuff
6740 AC_MSG_CHECKING([configure summary])
6741 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6742            AC_MSG_RESULT(yes),
6743            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6744            AC_MSG_WARN([cannot run when cross-compiling]))
6746 dnl Merge in developer cflags from now on
6747 AC_SUBST(DEVELOPER_CFLAGS)
6748 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6749     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6752 # Stuff the smbd-only libraries at the end of the smbd link
6753 # path (if we have them).
6754 SMBD_LIBS="$samba_dmapi_libs"
6755 AC_SUBST(SMBD_LIBS)
6757 CFLAGS="${CFLAGS} \$(FLAGS)"
6758 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6760 AC_SUBST(MAKEFILE)
6761 if test x$samba_cv_gnu_make = xyes; then
6762         MAKEFILE=Makefile
6763 else
6764         # When we don't have GNU Make, generate a copy of Makefile.in 
6765         # that doesn't have the "include " statements but just includes 
6766         # the files verbatim.
6767         MAKEFILE=Makefile-noincludes
6768         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6770 AC_OUTPUT($MAKEFILE
6771           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6772           lib/netapi/examples/Makefile
6773           lib/netapi/tests/Makefile
6774           pkgconfig/smbclient.pc
6775           pkgconfig/wbclient.pc
6776           pkgconfig/netapi.pc
6777           pkgconfig/smbsharemodes.pc
6778           ../examples/libsmbclient/Makefile.internal
6779           )
6780 dnl If we had to expand the includes, make tsure the output file is moved back
6781 AC_OUTPUT_COMMANDS([
6782 if test x$MAKEFILE != Makefile; then
6783         mv $MAKEFILE Makefile
6787 #################################################
6788 # Print very concise instructions on building/use
6789 if test "x$enable_dmalloc" = xyes
6790 then
6791         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6792         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])