WHATSNEW: Update changes.
[Samba.git] / source3 / configure.in
blobe527a1896ba219e08e4dbe90935ff5cfe2bee5cf
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)
124 m4_include(m4/swat.m4)
126 # Probe the gcc version for extra CFLAGS. We always stash these in
127 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
128 # Makefile edit, avoiding the need to re-run configure.
129 if test x"$ac_cv_prog_gcc" = x"yes" ; then
130         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
131         # Add -Wdeclaration-after-statement if compiler supports it
132         AC_CACHE_CHECK(
133           [that the C compiler understands -Wdeclaration-after-statement],
134           samba_cv_HAVE_Wdeclaration_after_statement, [
135           AC_TRY_RUN_STRICT([
136             int main(void)
137             {
138                 return 0;
139             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
140             samba_cv_HAVE_Wdeclaration_after_statement=yes,
141             samba_cv_HAVE_Wdeclaration_after_statement=no,
142             samba_cv_HAVE_Wdeclaration_after_statement=cross)
143        ])
145         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
146             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
147         fi
149         #-Werror-implicit-function-declaration
150         AC_CACHE_CHECK(
151           [that the C compiler understands -Werror-implicit-function-declaration],
152           samba_cv_HAVE_Werror_implicit_function_declaration, [
153           AC_TRY_RUN_STRICT([
154             int main(void)
155             {
156                 return 0;
157             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
158             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
159             samba_cv_HAVE_Werror_implicit_function_declaration=no,
160             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
161        ])
162        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
163             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
164        fi
166         # krb5developer is like developer, except we don't get
167         # -Wstrict-prototypes.
168        if test x"$krb5_developer" != x"$yes" ; then
169             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
170        fi
172        if test x"$picky_developer" = x"yes"; then
173             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
174        fi
177 #################################################
178 # check for a shared memory profiling support
179 AC_MSG_CHECKING(whether to use profiling)
180 AC_ARG_WITH(profiling-data,
181 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
182 [ case "$withval" in
183   yes)
184     AC_MSG_RESULT(yes)
185     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
186     samba_cv_WITH_PROFILE=yes
187     ;;
188   *)
189     AC_MSG_RESULT(no)
190     samba_cv_WITH_PROFILE=no
191     ;;
192   esac ],
193   AC_MSG_RESULT(no)
196 dnl Checks for programs.
197 merged_build_possible=yes
199 AC_PROG_INSTALL
200 AC_PROG_AWK
201 # Check for GNU make
202 m4_include(../m4/check_make.m4)
203 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
205 # Check for perl
206 m4_include(../m4/check_perl.m4)
207 AC_SAMBA_PERL([true], [merged_build_possible=no])
209 AC_CHECK_TOOL(AR, ar)
211 dnl Check if we use GNU ld
212 LD=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=`$LD -v 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 | sed -n 's,^[^0-9]*\([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="pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
389 dnl These are preferably build shared, and static if dlopen() is not available
390 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen vfs_catia"
392 if test "x$developer" = xyes; then
393    default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
394    default_shared_modules="$default_shared_modules charset_weird perfcount_test"
398 # Config CPPFLAG settings for strange OS's that must be set
399 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
400 # case statement; its first reference must be unconditional.
402 case "$host_os" in
403     *hpux*)
405 # Defines needed for HPUX support.
406 # HPUX has bigcrypt but (sometimes?) doesn't use it for
407 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
409       case `uname -r` in
410                 *9*|*10*|*11)
411                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
412                 ;;
413       esac
414       ;;
417 # CRAY Unicos has broken const handling
418        *unicos*)
419           AC_MSG_RESULT([disabling const])
420           CPPFLAGS="$CPPFLAGS -Dconst="
421           ;;
422         
424 # AIX4.x doesn't even admit to having large
425 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
427     *aix4*)
428           AC_MSG_RESULT([enabling large file support])
429       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
430           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
431       ;;
433 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
434 # to the existance of large files..
435 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
436 # recommendations on large file support, however it makes the
437 # compile work using gcc 2.7 and 2.8, whereas using the Sun
438 # recommendation makes the compile fail on gcc2.7. JRA.
440 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
442         *solaris*)
443                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
444                 case `uname -r` in
445                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
446                                 AC_MSG_RESULT([no large file support])
447                                 ;;
448                         5.*)
449                         AC_MSG_RESULT([enabling large file support])
450                         if test "$ac_cv_prog_gcc" = yes; then
451                                 ${CC-cc} -v >conftest.c 2>&1
452                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
453                                 rm -fr conftest.c
454                                 case "$ac_cv_gcc_compiler_version_number" in
455                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
456                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
457                                                 LDFLAGS="$LDFLAGS -lthread"
458                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
459                                                 ;;
460                                         *)
461                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
462                                                 LDFLAGS="$LDFLAGS -lthread"
463                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
464                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
465                                                 ;;
466                                 esac
467                         else
468                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
469                                 LDFLAGS="$LDFLAGS -lthread"
470                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
471                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
472                         fi
473                         ;;
474                 esac
475                 ;;
477 # IRIX uses SYSV printing.  Make sure to set that here
479         *irix*)
480                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
481                 ;;
482         *freebsd*|*dragonfly*)
483                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
484                 ;;
486 # VOS may need to have POSIX support and System V compatibility enabled.
488     *vos*)
489     case "$CPPFLAGS" in
490           *-D_POSIX_C_SOURCE*)
491                 ;;
492           *)
493                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
494                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
495                 ;;
496     esac
497     case "$CPPFLAGS" in
498           *-D_SYSV*|*-D_SVID_SOURCE*)
499                 ;;
500           *)
501                 CPPFLAGS="$CPPFLAGS -D_SYSV"
502                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
503     esac
504     ;;
506 # Tests needed for SINIX large file support.
508     *sysv4*)
509       if test $host = mips-sni-sysv4 ; then
510         AC_MSG_CHECKING([for LFS support])
511         old_CPPFLAGS="$CPPFLAGS"
512         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
513         AC_TRY_RUN([
514 #include <unistd.h>
515 main () {
516 #if _LFS64_LARGEFILE == 1
517 exit(0);
518 #else
519 exit(1);
520 #endif
521 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
522         CPPFLAGS="$old_CPPFLAGS"
523         if test x$SINIX_LFS_SUPPORT = xyes ; then
524           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
525                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
526           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
527           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
528           LIBS="`getconf LFS64_LIBS` $LIBS"
529         fi
530       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
531       fi
532     ;;
534 # Systems with LFS support.
536     gnu* | k*bsd*-gnu | kopensolaris*-gnu)
537         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
538         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
539         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
540         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
541         ;;
543 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
545     *linux*)
546         AC_MSG_CHECKING([for LFS support])
547         old_CPPFLAGS="$CPPFLAGS"
548         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
549        AC_TRY_RUN([
550 #include <unistd.h>
551 #include <sys/utsname.h>
552 #include <string.h>
553 #include <stdlib.h>
554 main() {
555 #if _LFS64_LARGEFILE == 1
556        struct utsname uts;
557        char *release;
558        int major, minor;
560        /* Ensure this is glibc 2.2 or higher */
561 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
562        int libc_major = __GLIBC__;
563        int libc_minor = __GLIBC_MINOR__;
565        if (libc_major < 2)
566               exit(1);
567        if (libc_minor < 2)
568               exit(1);
569 #endif
571        /* Ensure this is kernel 2.4 or higher */
573        uname(&uts);
574        release = strdup(uts.release);
575        major = atoi(strsep(&release, "."));
576        minor = atoi(strsep(&release, "."));
578        if (major > 2 || (major == 2 && minor > 3))
579                exit(0);
580        exit(1);
581 #else
582        exit(1);
583 #endif
585 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
586         CPPFLAGS="$old_CPPFLAGS"
587         if test x$LINUX_LFS_SUPPORT = xyes ; then
588                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
589                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
590                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
591                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
592         fi
593         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
594         ;;
597 # MacOS X is the *only* system that uses compose character in utf8. This
598 # is so horribly broken....
600     *darwin*)
601         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
603 # Add a system specific charset module.
604         default_shared_modules="$default_shared_modules charset_macosxfs"
606         ;;
607     *hurd*)
608         AC_MSG_CHECKING([for LFS support])
609         old_CPPFLAGS="$CPPFLAGS"
610         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
611         AC_TRY_RUN([
612 #include <unistd.h>
613 main () {
614 #if _LFS64_LARGEFILE == 1
615 exit(0);
616 #else
617 exit(1);
618 #endif
619 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
620         CPPFLAGS="$old_CPPFLAGS"
621         if test x$GLIBC_LFS_SUPPORT = xyes ; then
622           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
623                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
624           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
625         fi
626       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
627     ;;
628     *qnx*)
629         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
630         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
631         ;;
633 esac
635 SAVE_CPPFLAGS="${CPPFLAGS}"
636 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
638 AC_LIBREPLACE_BROKEN_CHECKS
639 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
640 AC_LIBREPLACE_NETWORK_CHECKS
642 CPPFLAGS="${SAVE_CPPFLAGS}"
644 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
646 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
647 AC_SUBST(LIBREPLACE_OBJS)
649 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
650 AC_SUBST(LIBREPLACE_LIBS)
653 # add -ldl to the global LIBS
654 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
655 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
658 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
659 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
660 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
661 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
662 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h)
663 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
664 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
665 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
666 AC_CHECK_HEADERS(sys/sysmacros.h)
667 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
668 AC_CHECK_HEADERS(langinfo.h locale.h)
669 AC_CHECK_HEADERS(xfs/libxfs.h)
670 AC_CHECK_HEADERS(netgroup.h)
672 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
673 #if HAVE_RPC_RPC_H
674 #include <rpc/rpc.h>
675 #endif
678 ## These fail to compile on IRIX so just check for their presence
679 AC_CHECK_HEADERS(sys/mode.h,,,)
681 # Look for Darwin headers
682 old_CPPFLAGS="$CPPFLAGS"
683 CPPFLAGS="-Iinclude $CPPFLAGS"
684 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
685 CPPFLAGS="$old_CPPFLAGS"
687 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
688 # subdirectory of headers.
689 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
692 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
693 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
695 case "$host_os" in
696     *hpux*)
697                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
698                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
699                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
700                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
701                 fi
702         ;;
703 esac
704 AC_CHECK_HEADERS(shadow.h)
705 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
706 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
708 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
709 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
711 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
713 # For experimental utmp support (lastlog on some BSD-like systems)
714 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
716 AC_CHECK_SIZEOF(int,cross)
717 AC_CHECK_SIZEOF(long,cross)
718 AC_CHECK_SIZEOF(long long,cross)
719 AC_CHECK_SIZEOF(short,cross)
721 AC_C_CONST
722 AC_C_INLINE
723 AC_C_BIGENDIAN
724 AC_C_CHAR_UNSIGNED
726 AC_TYPE_SIGNAL
727 AC_TYPE_UID_T
728 AC_TYPE_MODE_T
729 AC_TYPE_OFF_T
730 AC_TYPE_SIZE_T
731 AC_TYPE_PID_T
732 AC_STRUCT_ST_RDEV
733 AC_DIRENT_D_OFF
734 AC_CHECK_TYPE(ssize_t, int)
735 AC_CHECK_TYPE(wchar_t, unsigned short)
737 ############################################
738 # for cups support we need libcups, and a handful of header files
740 AC_ARG_ENABLE(cups,
741 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
743 if test x$enable_cups != xno; then
744         AC_PATH_PROG(CUPS_CONFIG, cups-config)
746         if test "x$CUPS_CONFIG" != x; then
748                 ac_save_CFLAGS=$CFLAGS
749                 ac_save_LDFLAGS=$LDFLAGS
750                 ac_save_PRINT_LIBS=$PRINT_LIBS
751                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
752                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
753                 PRINT_LIBS="$PRINT_LIBS -lcups"
754                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
755                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
756                         x"$ac_cv_header_cups_language_h" = xyes; then
757                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
758                         samba_cv_HAVE_CUPS=yes
759                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
760                 else
761                         AC_MSG_WARN([cups-config around but cups-devel not installed])
762                         CFLAGS=$ac_save_CFLAGS
763                         LDFLAGS=$ac_save_LDFLAGS
764                         PRINT_LIBS=$ac_save_PRINT_LIBS
765                 fi
767         elif test x"$enable_cups" = x"yes"; then
768                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
769         fi
772 AC_ARG_ENABLE(iprint,
773 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
775 if test x$enable_iprint != xno; then
776         if test x"$samba_cv_HAVE_CUPS" = xyes; then
777                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
778         elif test x"$enable_iprint" = x"yes"; then
779                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
780         fi
783 ############################################
784 # check if the compiler will optimize out function calls
785 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
786     AC_TRY_LINK([
787 #include <stdio.h>],
789                 if (0) {
790                    this_function_does_not_exist();
791                 } else {
792                   return 1;
793                 }
796         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
797 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
798    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
801 #############################################
802 # check for fd passing struct via msg_control
803 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
804     AC_TRY_COMPILE([
805 #include <sys/types.h>
806 #include <stdlib.h>
807 #include <stddef.h>
808 #include <sys/socket.h>
809 #include <sys/un.h>],
811         struct msghdr msg;
812         union {
813               struct cmsghdr cm;
814               char control[CMSG_SPACE(sizeof(int))];
815         } control_un;
816         msg.msg_control = control_un.control;
817         msg.msg_controllen = sizeof(control_un.control);
819         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
820 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
821    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
822              [If we can use msg_control for passing file descriptors])
825 #############################################
826 # check for fd passing struct via msg_acctrights
827 AC_CACHE_CHECK([for fd passing via msg_acctrights],
828                 samba_cv_msghdr_msg_acctrights, [
829     AC_TRY_COMPILE([
830 #include <sys/types.h>
831 #include <stdlib.h>
832 #include <stddef.h>
833 #include <sys/socket.h>
834 #include <sys/un.h>],
836         struct msghdr msg;
837         int fd;
838         msg.msg_acctrights = (caddr_t) &fd;
839         msg.msg_acctrightslen = sizeof(fd);
841         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
842 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
843    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
844              [If we can use msg_acctrights for passing file descriptors])
847 AC_CHECK_FUNCS(dirfd)
848 if test x"$ac_cv_func_dirfd" = x"yes"; then
849         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
852 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
853     AC_TRY_COMPILE([
854 #include <sys/types.h>
855 #if STDC_HEADERS
856 #include <stdlib.h>
857 #include <stddef.h>
858 #endif
859 #include <signal.h>],[struct sigevent s;],
860         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
861 if test x"$samba_cv_struct_sigevent" = x"yes"; then
862    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
863    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
864         [#include <signal.h>])
867 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
868     AC_TRY_COMPILE([
869 #include <sys/types.h>
870 #if STDC_HEADERS
871 #include <stdlib.h>
872 #include <stddef.h>
873 #endif
874 #if TIME_WITH_SYS_TIME
875 # include <sys/time.h>
876 # include <time.h>
877 #else
878 # if HAVE_SYS_TIME_H
879 #  include <sys/time.h>
880 # else
881 #  include <time.h>
882 # endif
883 #endif
884 ],[struct timespec ts;],
885         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
886 if test x"$samba_cv_struct_timespec" = x"yes"; then
887    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
890 # and glibc has setresuid under linux but the function does
891 # nothing until kernel 2.1.44! very dumb.
892 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
893     AC_TRY_RUN([#include <errno.h>
894 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
895         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
896 if test x"$samba_cv_have_setresuid" = x"yes"; then
897     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
900 # Do the same check for setresguid...
902 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
903     AC_TRY_RUN([#include <unistd.h>
904 #include <errno.h>
905 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
906         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
907 if test x"$samba_cv_have_setresgid" = x"yes"; then
908     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
911 AC_FUNC_MEMCMP
913 ###############################################
914 # Readline included by default unless explicitly asked not to
915 test "${with_readline+set}" != "set" && with_readline=yes
917 # test for where we get readline() from
918 AC_MSG_CHECKING(whether to use readline)
919 AC_ARG_WITH(readline,
920 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
921 [  case "$with_readline" in
922   yes)
923     AC_MSG_RESULT(yes)
925     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
926     AC_CHECK_HEADERS(readline/history.h)
928     AC_CHECK_HEADERS(readline.h readline/readline.h,[
929       for termlib in ncurses curses termcap terminfo termlib tinfo; do
930        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
931       done
932       AC_CHECK_LIB(readline, rl_callback_handler_install,
933        [TERMLIBS="-lreadline $TERMLIBS"
934        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
935        break], [TERMLIBS=], $TERMLIBS)])
936     ;;
937   no)
938     AC_MSG_RESULT(no)
939     ;;
940   *)
941     AC_MSG_RESULT(yes)
943     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
944     # alternate readline path
945     _ldflags=${LDFLAGS}
946     _cppflags=${CPPFLAGS}
948     # Add additional search path
949     LDFLAGS="-L$with_readline/lib $LDFLAGS"
950     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
952     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
953     AC_CHECK_HEADERS(readline/history.h)
955     AC_CHECK_HEADERS(readline.h readline/readline.h,[
956       for termlib in ncurses curses termcap terminfo termlib; do
957        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
958       done
959       AC_CHECK_LIB(readline, rl_callback_handler_install,
960        [TERMLDFLAGS="-L$with_readline/lib"
961        TERMCPPFLAGS="-I$with_readline/include"
962        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
963        TERMLIBS="-lreadline $TERMLIBS"
964        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
965        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
967     LDFLAGS=$_ldflags
968     ;;
969   esac],
970   AC_MSG_RESULT(no)
972 AC_SUBST(TERMLIBS)
973 AC_SUBST(TERMLDFLAGS)
975 # The readline API changed slightly from readline3 to readline4, so
976 # code will generate warnings on one of them unless we have a few
977 # special cases.
978 AC_CHECK_LIB(readline, rl_completion_matches,
979              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
980                         [Do we have rl_completion_matches?])],
981              [],
982              [$TERMLIBS])
984 # not all readline libs have rl_event_hook or history_list
985 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
986 AC_CHECK_LIB(readline, history_list,
987              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
988              [],
989              [$TERMLIBS])
991 ###############################################
992 # test for where we get yp_get_default_domain() from
993 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
994 AC_CHECK_FUNCS(yp_get_default_domain)
996 # Check if we have execl, if not we need to compile smbrun.
997 AC_CHECK_FUNCS(execl)
998 if test x"$ac_cv_func_execl" = x"no"; then
999     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1002 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1003 AC_CHECK_FUNCS(strtol)
1004 AC_CHECK_FUNCS(strchr chflags)
1005 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1006 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1007 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1008 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1009 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1010 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1011 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1012 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1013 AC_CHECK_FUNCS(getpwent_r)
1014 AC_CHECK_FUNCS(getdents64)
1015 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1016 AC_CHECK_FUNCS(syslog vsyslog timegm)
1017 AC_CHECK_FUNCS(setlocale nl_langinfo)
1018 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1019 AC_CHECK_FUNCS(utimensat)
1020 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1021 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1022 AC_CHECK_HEADERS(sys/mman.h)
1023 # setbuffer, shmget, shm_open are needed for smbtorture
1024 AC_CHECK_FUNCS(shmget shm_open)
1025 AC_CHECK_FUNCS(gettext dgettext)
1026 AC_CHECK_FUNCS(bindtextdomain textdomain)
1027 AC_CHECK_FUNCS(strupr)
1029 # Find a method of generating a stack trace
1030 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1031 # libexecinfo provides backtrace_symbols on FreeBSD
1032 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1033 AC_CHECK_FUNCS(backtrace_symbols)
1034 AC_CHECK_LIB(exc, trace_back_stack)
1036 # check for sysctlbyname for BSD systems
1037 AC_CHECK_FUNCS(sysctlbyname)
1039 #############################
1040 # check if building with gpfs
1041 AC_CHECK_HEADERS(gpfs_gpl.h)
1042 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1043     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1044     default_shared_modules="$default_shared_modules vfs_gpfs"
1047 #############################################
1048 # check if building on Isilon OneFS
1049 printf "%s" "checking for Isilon OneFS... "
1050 save_LIBS="$LIBS"
1051 LIBS="$LIBS -lisi_version"
1052 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1053           [get_isilon_copyright()],
1054           samba_cv_HAVE_ONEFS=yes,
1055           samba_cv_HAVE_ONEFS=no)
1056 echo $samba_cv_HAVE_ONEFS
1057 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1058     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1059     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1060     default_static_modules="$default_static_modules"
1061     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1062     # Need to also add general libs for oplocks support
1063     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1065 AC_SUBST(ONEFS_LIBS)
1066 LIBS="$save_LIBS"
1068 # Note that all the libunwind symbols in the API are defined to internal
1069 # platform-specific version, so we must include libunwind.h before checking
1070 # any of them.
1071 AC_MSG_CHECKING([for libunwind])
1072 save_LIBS=$LIBS
1074 UNWIND_ARCH="unknown"
1075 if test x"$UNAME_I" != x"unknown"; then
1076         UNWIND_ARCH="$UNAME_I"
1077 elif test x"$UNAME_M" != x"unknown"; then
1078         UNWIND_ARCH="$UNAME_M"
1079 elif test x"$UNAME_P" != x"unknown"; then
1080         UNWIND_ARCH="$UNAME_P"
1083 case "$UNWIND_ARCH" in
1084         unknown)
1085                 # This probably won't link without
1086                 # the platform-specific libunwind.
1087                 LIBS="$LIBS -lunwind"
1088                 ;;
1089         i386|i586|i686)
1090                 # Add the platform-specific libunwind module.
1091                 LIBS="$LIBS -lunwind -lunwind-x86"
1092                 ;;
1093         *)
1094                 # Add the platform-specific libunwind module.
1095                 # based on uname -i, uname -m or uname -p
1096                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1097                 ;;
1098 esac
1100 AC_TRY_LINK(
1101     [
1102 #ifdef HAVE_LIBUNWIND_H
1103 #include <libunwind.h>
1104 #endif
1105     ],
1106     [
1107         unw_context_t ctx; unw_cursor_t cur;
1108         char buf[256]; unw_word_t off;
1109         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1110         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1111     ],
1112     [
1113         AC_MSG_RESULT(yes)
1114         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1116         # If we have libunwind, test whether we also have libunwind-ptrace
1117         # which would let us unwind arbitrary processes.
1118         save_LIBS=$LIBS
1119         AC_CHECK_HEADERS(libunwind-ptrace.h)
1120         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1121             [
1122                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1123                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1124                     [Whether libunwind-ptrace.a is available.])
1125             ],
1126             [ LIBUNWIND_PTRACE="" ])
1128         LIBS=$save_LIBS
1129     ],
1130     [
1131         AC_MSG_RESULT(no)
1132         LIBS=$save_LIBS
1133     ])
1135 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1136 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1137     AC_CHECK_HEADERS(sys/ptrace.h)
1138     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1139     AC_TRY_LINK(
1140             [
1141 #if HAVE_SYS_TYPES_H
1142 #include <sys/types.h>
1143 #endif
1144 #if HAVE_SYS_PTRACE_H
1145 #include <sys/ptrace.h>
1146 #endif
1147             ],
1148             [
1149                 pid_t me = (pid_t)-1;
1150                 ptrace(PTRACE_ATTACH, me, 0, 0);
1151                 ptrace(PTRACE_DETACH, me, 0, 0);
1152                 return 0;
1153             ],
1154             [
1155                 AC_MSG_RESULT(yes)
1156                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1157                     [Whether the Linux ptrace(2) interface is available.])
1158             ],
1159             [
1160                 AC_MSG_RESULT(no)
1161                 LIBUNWIND_PTRACE=""
1162             ])
1165 AC_SUBST(LIBUNWIND_PTRACE)
1167 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1168 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1169 AC_CHECK_FUNCS(__getcwd _getcwd)
1170 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1171 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1172 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1173 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1174 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1175 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1176 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1177 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1178 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1179 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1180 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1181 AC_CHECK_FUNCS(prctl)
1183 AC_TRY_COMPILE([
1184 #ifdef HAVE_SYS_PRCTL_H
1185 #include <sys/prctl.h>
1186 #endif
1188 [int i; i = prtcl(0); ],
1189 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1194 case "$host_os" in
1195     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1196        # glibc <= 2.3.2 has a broken getgrouplist
1197        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1198 #include <unistd.h>
1199 #include <sys/utsname.h>
1200 main() {
1201        /* glibc up to 2.3 has a broken getgrouplist */
1202 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1203        int libc_major = __GLIBC__;
1204        int libc_minor = __GLIBC_MINOR__;
1206        if (libc_major < 2)
1207               exit(1);
1208        if ((libc_major == 2) && (libc_minor <= 3))
1209               exit(1);
1210 #endif
1211        exit(0);
1213 ], [samba_cv_linux_getgrouplist_ok=yes], [samba_cv_linux_getgrouplist_ok=no])])
1214        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1215           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1216        fi
1217        ;;
1218     *)
1219        AC_CHECK_FUNCS(getgrouplist)
1220        ;;
1221 esac
1224 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1227 if test x$ac_cv_func_stat64 = xno ; then
1228   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1229   AC_TRY_LINK([
1230 #if defined(HAVE_UNISTD_H)
1231 #include <unistd.h>
1232 #endif
1233 #include <sys/stat.h>
1234 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1235   AC_MSG_RESULT([$ac_cv_func_stat64])
1236   if test x$ac_cv_func_stat64 = xyes ; then
1237     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1238   fi
1241 if test x$ac_cv_func_lstat64 = xno ; then
1242   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1243   AC_TRY_LINK([
1244 #if defined(HAVE_UNISTD_H)
1245 #include <unistd.h>
1246 #endif
1247 #include <sys/stat.h>
1248 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1249   AC_MSG_RESULT([$ac_cv_func_lstat64])
1250   if test x$ac_cv_func_lstat64 = xyes ; then
1251     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1252   fi
1255 if test x$ac_cv_func_fstat64 = xno ; then
1256   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1257   AC_TRY_LINK([
1258 #if defined(HAVE_UNISTD_H)
1259 #include <unistd.h>
1260 #endif
1261 #include <sys/stat.h>
1262 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1263   AC_MSG_RESULT([$ac_cv_func_fstat64])
1264   if test x$ac_cv_func_fstat64 = xyes ; then
1265     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1266   fi
1269 #################################################
1270 # Check whether struct stat has timestamps with sub-second resolution.
1273 samba_cv_stat_hires=no
1274 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1275         [samba_cv_stat_hires=yes])
1276 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1277         [samba_cv_stat_hires=yes])
1278 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1279         [samba_cv_stat_hires=yes])
1280 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1281         [samba_cv_stat_hires=yes])
1282 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1283         [samba_cv_stat_hires=yes])
1285 if test x"$samba_cv_stat_hires" = x"yes" ; then
1286     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1287             [whether struct stat has sub-second timestamps])
1290 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1291 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1292 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1295 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1296     [
1297         AC_TRY_COMPILE(
1298             [#include <sys/stat.h>],
1299             [
1300                 int a = UF_DOS_ARCHIVE;
1301                 int h = UF_DOS_HIDDEN;
1302                 int r = UF_DOS_RO;
1303                 int s = UF_DOS_SYSTEM;
1304                 int i = UF_DOS_NOINDEX;
1305                 int f = UF_DOS_FLAGS;
1306             ],
1307             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1308     ])
1310 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1311     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1314 #####################################
1315 # needed for SRV lookups
1316 AC_CHECK_LIB(resolv, dn_expand)
1317 AC_CHECK_LIB(resolv, _dn_expand)
1318 AC_CHECK_LIB(resolv, __dn_expand)
1321 # Check for the functions putprpwnam, set_auth_parameters,
1322 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1323 # Needed for OSF1 and HPUX.
1326 AC_LIBTESTFUNC(security, putprpwnam)
1327 AC_LIBTESTFUNC(sec, putprpwnam)
1329 AC_LIBTESTFUNC(security, set_auth_parameters)
1330 AC_LIBTESTFUNC(sec, set_auth_parameters)
1332 # UnixWare 7.x has its getspnam in -lgen
1333 AC_LIBTESTFUNC(gen, getspnam)
1335 AC_LIBTESTFUNC(security, getspnam)
1336 AC_LIBTESTFUNC(sec, getspnam)
1338 AC_LIBTESTFUNC(security, bigcrypt)
1339 AC_LIBTESTFUNC(sec, bigcrypt)
1341 AC_LIBTESTFUNC(security, getprpwnam)
1342 AC_LIBTESTFUNC(sec, getprpwnam)
1344 AC_CHECK_FUNCS(strsignal)
1346 ############################################
1347 # Check if we have libattr
1348 case "$host_os" in
1349   *osf*)
1350         AC_SEARCH_LIBS(getproplist, [proplist])
1351         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1352         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1353         AC_CHECK_FUNCS(sizeof_proplist_entry)
1354   ;;
1355   *)
1356         AC_SEARCH_LIBS(getxattr, [attr])
1357         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1358         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1359         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1360         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1361         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1362         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1363         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1364   ;;
1365 esac
1367 ########################################################
1368 # Check if attropen() is present if this is Solaris
1369 case "$host_os" in
1370   *solaris*)
1371         AC_CHECK_FUNCS(attropen)
1372   ;;
1373 esac
1375 ########################################################
1376 # Do xattr functions take additional options like on Darwin?
1377 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1378         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1379                 old_LIBS=$LIBS
1380                 LIBS="$LIBS $ACL_LIBS"
1381                 AC_TRY_COMPILE([
1382                         #include <sys/types.h>
1383                         #if HAVE_ATTR_XATTR_H
1384                         #include <attr/xattr.h>
1385                         #elif HAVE_SYS_XATTR_H
1386                         #include <sys/xattr.h>
1387                         #endif
1388                 ],[
1389                         getxattr(0, 0, 0, 0, 0, 0);
1390                 ],
1391                 [smb_attr_cv_xattr_add_opt=yes],
1392                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1393         ])
1394         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1395                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1396         fi
1399 # Check if we have extattr
1400 case "$host_os" in
1401   *freebsd4* | *dragonfly* )
1402     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1403     ;;
1404   *)
1405     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1406     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1407     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1408     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1409     ;;
1410 esac
1412 AC_DISABLE_STATIC
1413 AC_ENABLE_SHARED
1415 # Set defaults
1416 PIE_CFLAGS=""
1417 PIE_LDFLAGS=""
1418 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1420 if test "x$enable_pie" != xno
1421 then
1422         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1423         [
1424                 cat > conftest.c <<EOF
1425 int foo;
1426 main () { return 0;}
1428                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1429                 then
1430                         samba_cv_fpie=yes
1431                 else
1432                         samba_cv_fpie=no
1433                 fi
1434                 rm -f conftest*
1435         ])
1436         if test x"${samba_cv_fpie}" = x"yes"
1437         then
1438                 PIE_CFLAGS="-fPIE"
1439                 PIE_LDFLAGS="-pie"
1440         fi
1443 # Set defaults
1444 RELRO_LDFLAGS=""
1445 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1447 if test "x$enable_relro" != xno
1448 then
1449         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1450         [
1451                 cat > conftest.c <<EOF
1452 int foo;
1453 main () { return 0;}
1455                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1456                 then
1457                         samba_cv_relro=yes
1458                 else
1459                         samba_cv_relro=no
1460                 fi
1461                 rm -f conftest*
1462         ])
1463         if test x"${samba_cv_relro}" = x"yes"
1464         then
1465                 RELRO_LDFLAGS="-Wl,-z,relro"
1466         fi
1469 # Set defaults
1470 SYMSEXT="syms"
1471 AC_SUBST(SYMSEXT)
1473 # Assume non-shared by default and override below
1474 BLDSHARED="false"
1476 # these are the defaults, good for lots of systems
1477 HOST_OS="$host_os"
1478 LDSHFLAGS="-shared"
1479 MODULE_EXPORTS=""
1480 SONAMEFLAG="#"
1481 SHLD="\${CC} \${CFLAGS}"
1482 PICFLAG="${PIE_CFLAGS}"
1483 SHLIBEXT="so"
1484 DSO_EXPORTS=""
1486 # this bit needs to be modified for each OS that supports share libs
1487 # You need to specify how to create a shared library and
1488   # how to compile C code to produce PIC object files
1490   AC_MSG_CHECKING([ability to build shared libraries])
1492   # and these are for particular systems
1493   case "$host_os" in
1494                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1495                         case "$host_os" in
1496                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1497                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1498                         esac
1499                         BLDSHARED="true"
1500                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1501                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1502                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1503                         fi
1504                         DYNEXP="-Wl,--export-dynamic"
1505                         PICFLAG="-fPIC"
1506                         SONAMEFLAG="-Wl,-soname="
1507                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1508                         ;;
1509                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1510                         BLDSHARED="true"
1511                         LDSHFLAGS="-G"
1512                         SONAMEFLAG="-h "
1513                         if test "${GCC}" = "yes"; then
1514                                 PICFLAG="-fPIC"
1515                                 SONAMEFLAG="-Wl,-soname="
1516                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1517                                         DYNEXP="-Wl,-E"
1518                                 fi
1519                         else
1520                                 PICFLAG="-KPIC"
1521                                 ## ${CFLAGS} added for building 64-bit shared
1522                                 ## libs using Sun's Compiler
1523                                 LDSHFLAGS="-G \${CFLAGS}"
1524                         fi
1525                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1526                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1527                         ;;
1528                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1529                         BLDSHARED="true"
1530                         LDSHFLAGS="-G"
1531                         SONAMEFLAG="-Wl,-h,"
1532                         PICFLAG="-KPIC"   # Is this correct for SunOS
1533                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1534                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1535                         ;;
1536                 *netbsd* | *freebsd* | *dragonfly* )
1537                         BLDSHARED="true"
1538                         LDSHFLAGS="-shared"
1539                         DYNEXP="-Wl,--export-dynamic"
1540                         SONAMEFLAG="-Wl,-soname,"
1541                         PICFLAG="-fPIC -DPIC"
1542                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1543                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1544                         ;;
1545                 *openbsd*)  BLDSHARED="true"
1546                         LDSHFLAGS="-shared"
1547                         DYNEXP="-Wl,-Bdynamic"
1548                         SONAMEFLAG="-Wl,-soname,"
1549                         PICFLAG="-fPIC"
1550                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1551                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1552                         ;;
1553                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1554                         case "$host_os" in
1555                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1556                         ;;
1557                         esac
1558                         BLDSHARED="true"
1559                         LDSHFLAGS="-set_version sgi1.0 -shared"
1560                         SONAMEFLAG="-soname "
1561                         SHLD="\${LD}"
1562                         if test "${GCC}" = "yes"; then
1563                                 PICFLAG="-fPIC"
1564                         else
1565                                 PICFLAG="-KPIC"
1566                         fi
1567                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1568                         ;;
1569                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1570                         BLDSHARED="true"
1571                         # use expfull to export underscored symbols
1572                         # add rtl to remove /lib/crt0.o warning
1573                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1574                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1575                         PICFLAG="-O2"
1576                         # as AIX code is always position independent...
1577                         # .po will just create compile warnings, use po.o:
1578                         if test "${GCC}" != "yes"; then
1579                                 ## for funky AIX compiler using strncpy()
1580                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1581                         fi
1583                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1584                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1585                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1586                         ;;
1587                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1588                         # Use special PIC flags for the native HP-UX compiler.
1589                                 BLDSHARED="true"
1590                                 SHLD="cc"
1591                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1592                                 SONAMEFLAG="-Wl,+h "
1593                                 PICFLAG="+z"
1594                         if test "${GCC}" = "yes"; then
1595                                 PICFLAG="-fPIC"
1596                         else
1597                                 PICFLAG="+z +ESnolit"
1598                         fi
1599                         if test "$host_cpu" = "ia64"; then
1600                                 SHLIBEXT="so"
1601                               PICFLAG="+z"
1602                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1603                         else
1604                                 SHLIBEXT="sl"
1605                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1606                         fi
1607                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1608                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1609                         ;;
1610                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1611                         BLDSHARED="true"
1612                         LDSHFLAGS="-shared"
1613                         SONAMEFLAG="-Wl,-soname,"
1614                         PICFLAG="-fPIC"
1615                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1616                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1617                         ;;
1618                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1619                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1620                         ;;
1621                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1622                         BLDSHARED="true"
1623                         LDSHFLAGS="-shared"
1624                         SONAMEFLAG="-Wl,-soname,"
1625                         PICFLAG="-KPIC"
1626                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1627                         ;;
1628                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1629                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1630                         ;;
1631                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1632                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1633                         ;;
1634                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1635                         case "$host" in
1636                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1637                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1638                                         fi
1639                                         LDSHFLAGS="-G"
1640                                         DYNEXP="-Bexport"
1641                                 ;;
1642                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1643                         esac
1644                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1645                         ;;
1647                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1648                         if [ test "$GCC" != yes ]; then
1649                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1650                         fi
1651                         LDSHFLAGS="-G"
1652                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1653                         ;;
1654                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1655                         BLDSHARED="false"
1656                         LDSHFLAGS=""
1657                         ;;
1659                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1660                         BLDSHARED="true"
1661                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1662                         CFLAGS="$CFLAGS -fno-common"
1663                         SHLD="\${CC}"
1664                         SHLIBEXT="dylib"
1665                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1666                         SHLIBEXT="dylib"
1667                         # Since gcc doesn't fail on unrecognised options, the
1668                         # PIE test incorrectly succeeds. Darwin gcc does not
1669                         # actually support the PIE stuff.
1670                         PIE_LDFLAGS=
1671                         PIE_CFLAGS=
1672                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1673                         ;;
1675                 *)
1676                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1677                         ;;
1678   esac
1680 if test "$enable_shared" != "yes"; then
1681         BLDSHARED=false
1684 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1685         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1688 if test x"$BLDSHARED" = x"true" ; then
1689         LDFLAGS="$LDFLAGS -L./bin"
1692 AC_MSG_RESULT($BLDSHARED)
1694 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1695         saved_ldflags="$LDFLAGS"
1696         AC_MSG_CHECKING([if $flags works])
1697         LDFLAGS="$flags $saved_ldflags"
1698         AC_TRY_LINK([],[],
1699                 [AC_MSG_RESULT([yes])
1700                 LD_AS_NEEDED_FLAG=$flags
1701                 ld_as_needed_flag_found=yes],
1702                 AC_MSG_RESULT([no]))
1703         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1704         test x"$ld_as_needed_flag_found" = xyes && break
1705 done
1707 # for historical reasons almost all linkers don't complain about unresolved
1708 # symbols in shared libs. Except for the internal samba modules we want to get
1709 # errors when we produce a shared lib with unresolved symbols. On some
1710 # platforms unresolved symbols might be intended, so we might have to add
1711 # platform specific exceptions here.
1713 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1714         saved_ldflags="$LDFLAGS"
1715         AC_MSG_CHECKING([if $flags works])
1716         LDFLAGS="$flags $saved_ldflags"
1717         AC_TRY_LINK([],[],
1718         [AC_MSG_RESULT([yes])
1719         LDSHFLAGS_Z_DEFS=$flags
1720         ldshflags_z_defs_found=yes],
1721         AC_MSG_RESULT([no]))
1722         LDFLAGS=$saved_ldflags
1723         test x"$ldshflags_z_defs_found" = xyes && break
1724 done
1726 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1727 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1728 AC_MSG_CHECKING([LDFLAGS])
1729 AC_MSG_RESULT([$LDFLAGS])
1730 AC_MSG_CHECKING([DYNEXP])
1731 AC_MSG_RESULT([$DYNEXP])
1733 #######################################################
1734 # test whether building a shared library actually works
1735 if test $BLDSHARED = true; then
1737 AC_MSG_CHECKING([SHLD])
1738 AC_MSG_RESULT([$SHLD])
1739 AC_MSG_CHECKING([LDSHFLAGS])
1740 AC_MSG_RESULT([$LDSHFLAGS])
1742 AC_MSG_CHECKING([SHLIBEXT])
1743 AC_MSG_RESULT([$SHLIBEXT])
1744 AC_MSG_CHECKING([SONAMEFLAG])
1745 AC_MSG_RESULT([$SONAMEFLAG])
1747 AC_MSG_CHECKING([PICFLAG])
1748 AC_MSG_RESULT([$PICFLAG])
1750 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1751 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1753 AC_CACHE_CHECK([whether building shared libraries actually works],
1754                [ac_cv_shlib_works],[
1755    # try building a trivial shared library
1756    ac_cv_shlib_works=no
1757    # The $SHLD and $LDSHFLAGS variables may contain references to other
1758    # variables so they need to be eval'ed.
1759    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1760         shlib.o ${srcdir-.}/../tests/shlib.c && \
1761    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1762         shlib.o && ac_cv_shlib_works=yes
1763    rm -f "shlib.$SHLIBEXT" shlib.o
1766 if test $ac_cv_shlib_works = no; then
1767    BLDSHARED=false
1771 if test x"$BLDSHARED" != x"true"; then
1772         LDSHFLAGS="shared-libraries-disabled"
1773         SONAMEFLAG="shared-libraries-disabled"
1774         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1775         SHLD="shared-libraries-disabled"
1776         PICFLAG="${PIE_CFLAGS}"
1777         SHLIBEXT="shared_libraries_disabled"
1778         merged_build_possible=no
1781 AC_MSG_CHECKING([used PICFLAG])
1782 AC_MSG_RESULT([$PICFLAG])
1784 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1786 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1789 ###########################################################
1791 # Configuration of subsystem / libraries
1793 ###########################################################
1795 INSTALLLIBCMD_SH=:
1796 INSTALLLIBCMD_A=:
1797 UNINSTALLLIBCMD_SH=:
1798 UNINSTALLLIBCMD_A=:
1800 if test $BLDSHARED = true; then
1801         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1802         UNINSTALLLIBCMD_SH="rm -f"
1804 if test $enable_static = yes; then
1805         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1806         UNINSTALLLIBCMD_A="rm -f"
1809 #################################################
1810 # --disable-shared-libs
1811 # can be used to disable the internal use of shared libs altogether
1812 # (this only has an effect when building shared libs is enabled)
1814 USESHARED=false
1815 AC_SUBST(USESHARED)
1817 AC_MSG_CHECKING(whether to use shared libraries internally)
1818 AC_ARG_ENABLE([shared-libs],
1819         AS_HELP_STRING([--enable-shared-libs],
1820                 [Use shared libraries internally (default=yes)]),
1821         [enable_shared_libs=$enableval],
1822         [enable_shared_libs=yes])
1824 if test x"$enable_shared_libs" != x"no" ; then
1825         USESHARED=$BLDSHARED
1828 AC_MSG_RESULT([$USESHARED])
1830 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1831         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1834 #################################################
1835 # --with-static-libs=LIBS:
1836 #   link (internal) libs dynamically or statically?
1838 # If a subsystem is built as a library then this controls whether they are
1839 # linked into Samba targets statically or dynamically:
1841 # * If we build the shared library at all, we link dynamically by default.
1843 # * We only link statically if we don't build shared or if the library
1844 #   appears in the --with-static-libs configure option.
1846 # Example:
1847 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1848 #   of linking the dynamic variant with -ltalloc.
1850 # NOTE: This option only affects libraries that we do not only build
1851 # but that samba also links against as libraries (as opposed to linking
1852 # the plain object files. - This has to be configured in Makefile.in.
1853 # So in particular it does not harm to give invalid or unknown names here.
1856 AC_ARG_WITH([static-libs],
1857         [AS_HELP_STRING([--with-static-libs=LIBS],
1858                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1859         [AS_IF([test $withval],
1860                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1861                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1862                         eval LINK_$lib=STATIC
1863                 done], [])],
1864         [])
1867 # WORKAROUND:
1868 #   until we have organized other internal subsystems (as util, registry
1869 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1870 #   dynamically to samba programs.
1872 LINK_LIBNETAPI=STATIC
1874 LINK_LIBSMBCLIENT=STATIC
1877 #  The library versions are hardcoded here
1878 #  and filled into the LIBFOO_SOVER variable.
1880 #  TODO: for talloc and tdb (at least), these should
1881 #  be extracted from their respective source directories
1883 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1884 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1886 if test "x$enable_external_libtalloc" != xno
1887 then
1888         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1889                 [ enable_external_libtalloc=yes ],
1890                 [if test x$enable_external_libtalloc = xyes; then
1891                         AC_MSG_ERROR([Unable to find libtalloc])
1892                   else
1893                         enable_external_libtalloc=no
1894                   fi
1895                 ])
1898 if test "x$enable_external_libtalloc" = xno
1899 then
1900         m4_include(../lib/talloc/libtalloc.m4)
1901         LINK_LIBTALLOC=STATIC
1902         SMB_LIBRARY(talloc, 2)
1903         LIBTALLOC_OBJ0=""
1904         for obj in ${TALLOC_OBJ}; do
1905                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1906         done
1907         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1908         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1909         AC_SUBST(LIBTALLOC_OBJ0)
1911         TALLOCTORT="bin/talloctort\$(EXEEXT)"
1912         AC_SUBST(TALLOCTORT)
1916 AC_ARG_ENABLE(external_libtdb,
1917         [AS_HELP_STRING([--enable-external-libtdb],
1918                 [Enable external tdb [default=auto]])],
1919                 [ enable_external_libtalloc=$enableval ],
1920                 [ enable_external_libtalloc=auto ])
1922 if test "x$enable_external_libtdb" != xno
1923 then
1924         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.1.7,
1925                 [ enable_external_libtdb=yes ],
1926                 [
1927                 if test x$enable_external_libtdb = xyes; then
1928                         AC_MSG_ERROR([Unable to find libtdb])
1929                 else
1930                         enable_external_libtdb=no
1931                 fi
1932                 ])
1935 AC_SUBST(LIBTDB_OBJ0)
1936 if test "x$enable_external_libtdb" = xno
1937 then
1938         m4_include(../lib/tdb/libtdb.m4)
1939         LINK_LIBTDB=STATIC
1940         SMB_LIBRARY(tdb, 1)
1941         LIBTDB_OBJ0=""
1942         for obj in ${TDB_OBJ}; do
1943                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
1944         done
1945         AC_SUBST(LIBTDB_OBJ0)
1946         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
1947         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
1949         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
1950         AC_SUBST(TDBBACKUP)
1951         TDBDUMP="bin/tdbdump\$(EXEEXT)"
1952         AC_SUBST(TDBDUMP)
1953         TDBTOOL="bin/tdbtool\$(EXEEXT)"
1954         AC_SUBST(TDBTOOL)
1955         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
1956         AC_SUBST(TDBTORTURE)
1959 SMB_LIBRARY(netapi, 0)
1960 SMB_LIBRARY(smbclient, 0)
1961 SMB_LIBRARY(smbsharemodes, 0)
1962 SMB_LIBRARY(addns, 0, no, [undefined API])
1966 ################
1968 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1969 AC_TRY_RUN([#include <stdio.h>
1970 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1971 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1972 if test x"$samba_cv_have_longlong" = x"yes"; then
1973     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1974     AC_CHECK_TYPE(intptr_t, unsigned long long)
1975 else
1976     AC_CHECK_TYPE(intptr_t, unsigned long)
1980 # Check if the compiler supports the LL prefix on long long integers.
1981 # AIX needs this.
1983 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1984     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1985         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1986 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1987    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1991 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1992 AC_TRY_RUN([#include <time.h>
1993 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1994 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1995 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1996     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1999 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2000 AC_TRY_RUN([#include <stdio.h>
2001 #include <sys/stat.h>
2002 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2003 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2004 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2005     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2008 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2009 AC_TRY_RUN([
2010 #if defined(HAVE_UNISTD_H)
2011 #include <unistd.h>
2012 #endif
2013 #include <stdio.h>
2014 #include <sys/stat.h>
2015 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2016 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2017 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2018     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2021 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2022 AC_TRY_RUN([
2023 #if defined(HAVE_UNISTD_H)
2024 #include <unistd.h>
2025 #endif
2026 #include <stdio.h>
2027 #include <sys/stat.h>
2028 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2029 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2030 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2031     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2034 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2035 AC_TRY_RUN([
2036 #if defined(HAVE_UNISTD_H)
2037 #include <unistd.h>
2038 #endif
2039 #include <stdio.h>
2040 #include <sys/stat.h>
2041 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2042 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2043 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2044     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2047 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2048 AC_TRY_RUN([
2049 #if defined(HAVE_UNISTD_H)
2050 #include <unistd.h>
2051 #endif
2052 #include <stdio.h>
2053 #include <sys/stat.h>
2054 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2055 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2056 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2057     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2060 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2061 AC_TRY_RUN([
2062 #if defined(HAVE_UNISTD_H)
2063 #include <unistd.h>
2064 #endif
2065 #include <stdio.h>
2066 #include <sys/stat.h>
2067 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2068 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2069 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2070     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2073 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2074 AC_TRY_COMPILE([
2075 #if defined(HAVE_UNISTD_H)
2076 #include <unistd.h>
2077 #endif
2078 #include <sys/types.h>
2079 #include <dirent.h>],
2080 [DIR64 de;],
2081 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2082 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2083     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2086 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2087 AC_TRY_COMPILE([
2088 #if defined(HAVE_UNISTD_H)
2089 #include <unistd.h>
2090 #endif
2091 #include <sys/types.h>
2092 #include <dirent.h>],
2093 [struct dirent64 de;],
2094 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2095 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2096     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2099 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2100 AC_TRY_RUN([
2101 #if defined(HAVE_UNISTD_H)
2102 #include <unistd.h>
2103 #endif
2104 #include <sys/types.h>
2105 main() { dev_t dev; int i = major(dev); return 0; }],
2106 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2107 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2108     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2111 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2112 AC_TRY_RUN([
2113 #if defined(HAVE_UNISTD_H)
2114 #include <unistd.h>
2115 #endif
2116 #include <sys/types.h>
2117 main() { dev_t dev; int i = minor(dev); return 0; }],
2118 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2119 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2120     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2123 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2124 AC_TRY_RUN([
2125 #if defined(HAVE_UNISTD_H)
2126 #include <unistd.h>
2127 #endif
2128 #include <sys/types.h>
2129 main() { dev_t dev = makedev(1,2); return 0; }],
2130 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2131 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2132     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2135 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2136 AC_TRY_RUN([#include <stdio.h>
2137 main() { char c; c=250; exit((c > 0)?0:1); }],
2138 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2139 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2140     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2143 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2144 AC_TRY_COMPILE([#include <sys/types.h>
2145 #include <dirent.h>
2146 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2147 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2148 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2149     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2152 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2153 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2154 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2155 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2156     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2159 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2160 AC_TRY_LINK([
2161 #include <sys/time.h>
2162 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2163            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2164            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2165 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2166     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2169 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2171     # On some systems (eg. Linux) librt can pull in libpthread. We
2172     # don't want this to happen because libpthreads changes signal delivery
2173     # semantics in ways we are not prepared for. This breaks Linux oplocks
2174     # which rely on signals.
2176     AC_LIBTESTFUNC(rt, clock_gettime,
2177             [
2178                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2179                                 [Whether clock_gettime is available])
2180                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2181                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2182                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2183                         ])
2187 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2188 AC_TRY_RUN([#include <sys/types.h>
2189 #include <dirent.h>
2190 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2191 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2192 di->d_name[0] == 0) exit(0); exit(1);} ],
2193 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2194 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2195     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2198 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2199 AC_TRY_COMPILE([#include <sys/types.h>
2200 #include <utime.h>],
2201 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2202 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2203 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2204     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2207 ##############
2208 # Check utmp details, but only if our OS offers utmp.h
2209 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2210 dnl  utmp and utmpx come in many flavours
2211 dnl  We need to check for many of them
2212 dnl  But we don't need to do each and every one, because our code uses
2213 dnl  mostly just the utmp (not utmpx) fields.
2215 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2217 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2218 AC_TRY_COMPILE([#include <sys/types.h>
2219 #include <utmp.h>],
2220 [struct utmp ut;  ut.ut_name[0] = 'a';],
2221 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2222 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2223     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2226 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2227 AC_TRY_COMPILE([#include <sys/types.h>
2228 #include <utmp.h>],
2229 [struct utmp ut;  ut.ut_user[0] = 'a';],
2230 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2231 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2232     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2235 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2236 AC_TRY_COMPILE([#include <sys/types.h>
2237 #include <utmp.h>],
2238 [struct utmp ut;  ut.ut_id[0] = 'a';],
2239 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2240 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2241     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2244 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2245 AC_TRY_COMPILE([#include <sys/types.h>
2246 #include <utmp.h>],
2247 [struct utmp ut;  ut.ut_host[0] = 'a';],
2248 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2249 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2250     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2253 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2254 AC_TRY_COMPILE([#include <sys/types.h>
2255 #include <utmp.h>],
2256 [struct utmp ut;  time_t t; ut.ut_time = t;],
2257 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2258 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2259     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2262 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2263 AC_TRY_COMPILE([#include <sys/types.h>
2264 #include <utmp.h>],
2265 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2266 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2267 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2268     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2271 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2272 AC_TRY_COMPILE([#include <sys/types.h>
2273 #include <utmp.h>],
2274 [struct utmp ut;  ut.ut_type = 0;],
2275 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2276 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2277     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2280 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2281 AC_TRY_COMPILE([#include <sys/types.h>
2282 #include <utmp.h>],
2283 [struct utmp ut;  ut.ut_pid = 0;],
2284 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2285 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2286     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2289 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2290 AC_TRY_COMPILE([#include <sys/types.h>
2291 #include <utmp.h>],
2292 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2293 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2294 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2295     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2298 dnl Look for the IPv6 varient by preference. Many systems have both.
2299 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2300 AC_TRY_COMPILE([#include <sys/types.h>
2301 #include <utmp.h>],
2302 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2303 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2304 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2305     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2308 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2309 AC_TRY_COMPILE([#include <sys/types.h>
2310 #include <utmp.h>],
2311 [struct utmp ut;  ut.ut_addr = 0;],
2312 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2313 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2314     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2317 if test x$ac_cv_func_pututline = xyes ; then
2318   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2319   AC_TRY_COMPILE([#include <sys/types.h>
2320 #include <utmp.h>],
2321   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2322   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2323   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2324       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2325   fi
2328 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2329 AC_TRY_COMPILE([#include <sys/types.h>
2330 #include <utmpx.h>],
2331 [struct utmpx ux;  ux.ut_syslen = 0;],
2332 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2333 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2334     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2338 # end utmp details
2341 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2342 AC_ARG_WITH(libiconv,
2343 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2345   if test "$withval" = "no" ; then
2346     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2347   else
2348      if test "$withval" != "yes" ; then
2349         ICONV_PATH_SPEC=yes
2350         ICONV_LOOK_DIRS="$withval"
2351      fi
2352   fi
2355 for i in $ICONV_LOOK_DIRS ; do
2357     save_LIBS="$LIBS"
2358     save_LDFLAGS="$LDFLAGS"
2359     save_CPPFLAGS="$CPPFLAGS"
2361     iconv_current_LIBS=""
2362     iconv_current_LDFLAGS=""
2363     iconv_current_CPPFLAGS=""
2365     ICONV_FOUND="no"
2366     unset libext
2368     #  This is here to handle -withval stuff for --with-libiconv
2369     #  Perhaps we should always add a -L
2370     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2372     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2373     # installation paths. This gets a little tricky since we might have iconv
2374     # in both libiconv and in libc. In this case the jm_ICONV test will always
2375     # succeed when the header is found. To counter this, make sure the
2376     # library directory is there and check the ABI directory first (which
2377     # should be harmless on other systems, but causes tons of linker warnings on
2378     # 64bit Ubuntu systems).
2379     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2380     # installed, I've decided to fix the linker warnings.
2381     # -- Kai
2382     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2383     for l in "lib" "lib32" "lib/hpux32"; do
2384         if test -d "$i/$l" ; then
2385                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2386                 LIBS=
2387                 export LDFLAGS LIBS CPPFLAGS
2388                 # Try to find iconv(3)
2389                 jm_ICONV($i/$l)
2390                 if test x"$ICONV_FOUND" = "xyes" ; then
2391                     libext="$l"
2392                     break
2393                 fi
2394         fi
2395     done
2397     if test x"$ICONV_FOUND" = "xyes" ; then
2398         iconv_current_LDFLAGS="-L$i/$libext"
2399         iconv_current_CPPFLAGS="-I$i/include"
2401         if test x"$jm_cv_lib_iconv" != x; then
2402             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2403         else
2404             # We found iconv in libc.
2405             iconv_current_LIBS=""
2406         fi
2408     fi
2410     if test x"$ICONV_FOUND" = "xyes" ; then
2412         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2413         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2414         LIBS="$save_LIBS $iconv_current_LIBS"
2415         export LDFLAGS LIBS CPPFLAGS
2417         default_dos_charset=no
2418         default_display_charset=no
2419         default_unix_charset=no
2421         # check for default dos charset name
2422         for j in CP850 IBM850 ; do
2423             rjs_CHARSET($j)
2424             default_dos_charset="$ICONV_CHARSET"
2425             if test x"$default_dos_charset" = x"$j"; then
2426                 break
2427             fi
2428         done
2430         # check for default display charset name
2431         for j in ASCII 646 ; do
2432             rjs_CHARSET($j)
2433             default_display_charset="$ICONV_CHARSET"
2434             if test x"$default_display_charset" = x"$j"; then
2435                 break
2436             fi
2437         done
2439         # check for default unix charset name
2440         for j in UTF-8 UTF8 ; do
2441             rjs_CHARSET($j)
2442             default_unix_charset="$ICONV_CHARSET"
2443             if test x"$default_unix_charset" = x"$j"; then
2444                 break
2445             fi
2446         done
2448         if test "$default_dos_charset" != "no" -a \
2449                 "$default_dos_charset" != "cross" -a \
2450                 "$default_display_charset" != "no" -a \
2451                 "$default_display_charset" != "cross" -a \
2452                 "$default_unix_charset" != "no" -a \
2453                 "$default_unix_charset" != "cross"
2454         then
2455                 samba_cv_HAVE_NATIVE_ICONV=yes
2456         else
2457             if test "$default_dos_charset" = "cross" -o \
2458                      "$default_display_charset" = "cross" -o \
2459                      "$default_unix_charset" = "cross"
2460             then
2461                     samba_cv_HAVE_NATIVE_ICONV=cross
2462             else
2463                     samba_cv_HAVE_NATIVE_ICONV=no
2464             fi
2465         fi
2467         # At this point, we have a libiconv candidate. We know that
2468         # we have the right headers and libraries, but we don't know
2469         # whether it does the conversions we want. We can't test this
2470         # because we are cross-compiling. This is not necessarily a big
2471         # deal, since we can't guarantee that the results we get now will
2472         # match the results we get at runtime anyway.
2473         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2474             default_dos_charset="CP850"
2475             default_display_charset="ASCII"
2476             default_unix_charset="UTF-8"
2477             samba_cv_HAVE_NATIVE_ICONV=yes
2478             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2479             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2480         fi
2482         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2484             CPPFLAGS=$save_CPPFLAGS
2485             LDFLAGS=$save_LDFLAGS
2486             LIBS=$save_LIBS
2488             if test x"$iconv_current_LIBS" != x; then
2489                 LIBS="$LIBS $iconv_current_LIBS"
2490             fi
2492             # Add the flags we need to CPPFLAGS and LDFLAGS
2493             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2494             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2496             # Turn the #defines into string literals
2497             default_dos_charset="\"$default_dos_charset\""
2498             default_display_charset="\"$default_display_charset\""
2499             default_unix_charset="\"$default_unix_charset\""
2501             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2502             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2503             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2504             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2506            break
2507         fi
2509     # We didn't find a working iconv, so keep going
2510     fi
2512     #  We only need to clean these up here for the next pass through the loop
2513     CPPFLAGS=$save_CPPFLAGS
2514     LDFLAGS=$save_LDFLAGS
2515     LIBS=$save_LIBS
2516     export LDFLAGS LIBS CPPFLAGS
2517 done
2518 unset libext
2521 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2522     AC_MSG_WARN([Sufficient support for iconv function was not found.
2523     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2524    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2525    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2526    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2530 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2531 AC_TRY_RUN([
2532 #include <sys/types.h>
2533 #include <fcntl.h>
2534 #ifndef F_GETLEASE
2535 #define F_GETLEASE      1025
2536 #endif
2537 main() {
2538        int fd = open("/dev/null", O_RDONLY);
2539        return fcntl(fd, F_GETLEASE, 0) == -1;
2542 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2543 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2544     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2547 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2548 AC_TRY_RUN([
2549 #include <sys/types.h>
2550 #include <fcntl.h>
2551 #include <signal.h>
2552 #ifndef F_NOTIFY
2553 #define F_NOTIFY 1026
2554 #endif
2555 main() {
2556         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2559 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2560 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2561     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2564 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2565 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2566 AC_CHECK_FUNCS(inotify_init)
2567 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2569 samba_cv_HAVE_INOTIFY=yes,
2570 samba_cv_HAVE_INOTIFY=no,
2571 samba_cv_HAVE_INOTIFY=cross)
2573 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2574     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2577 #################################################
2578 # Check if FAM notifications are available. For FAM info, see
2579 #       http://oss.sgi.com/projects/fam/
2580 #       http://savannah.nongnu.org/projects/fam/
2581 AC_ARG_ENABLE(fam,
2582 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2584 if test x$enable_fam != xno; then
2585     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2586     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2587         # On IRIX, libfam requires libC, but other FAM implementations
2588         # might not need it.
2589         AC_CHECK_LIB(fam, FAMOpen2,
2590             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2591             [samba_cv_HAVE_LIBFAM=no])
2593         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2594             samba_fam_xtra=-lC
2595             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2596                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2597                 [samba_cv_HAVE_LIBFAM=no])
2598             unset samba_fam_xtra
2599         fi
2600     fi
2602     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2603         default_shared_modules="$default_shared_modules vfs_notify_fam"
2604         AC_TRY_COMPILE([#include <fam.h>],
2605                     [enum FAMCodes code = FAMChanged;],
2606                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2607                         [Whether fam.h contains a typedef for enum FAMCodes]),
2608                     [])
2609     fi
2611     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2612         AC_MSG_ERROR(FAM support requested but FAM library not available )
2613     fi
2616 AC_SUBST(SMB_FAM_LIBS)
2618 #################################################
2619 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2621 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2623 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2624 # Theoretically it should work with AIX JFS2 too but this needs testing
2625 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2626     default_shared_modules="$default_shared_modules vfs_tsmsm"
2629 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2630 AC_TRY_RUN([
2631 #include <sys/types.h>
2632 #include <fcntl.h>
2633 #include <signal.h>
2634 #include <sys/file.h>
2635 #ifndef LOCK_MAND
2636 #define LOCK_MAND       32
2637 #define LOCK_READ       64
2638 #endif
2639 main() {
2640         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2643 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2644 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2645     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2649 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2650 AC_TRY_COMPILE([#include <sys/types.h>
2651 #include <fcntl.h>],
2652 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2653 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2654 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2655     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2658 #################################################
2659 # Check for POSIX capability support
2661 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2662     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2663     [], [])
2665 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2667     ac_save_LIBS=$LIBS
2668     AC_LIBTESTFUNC(cap, cap_get_proc)
2670     AC_CACHE_CHECK([for POSIX capabilities],
2671             samba_cv_HAVE_POSIX_CAPABILITIES,
2672             [
2673                 AC_TRY_RUN([
2674 #include <sys/types.h>
2675 #include <sys/capability.h>
2676 main() {
2677  cap_t cap;
2678  cap_value_t vals[1];
2679  if (!(cap = cap_get_proc()))
2680    exit(1);
2681  vals[0] = CAP_CHOWN;
2682  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2683  cap_set_proc(cap);
2684  exit(0);
2686                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2687                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2688                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2689             ])
2691 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2692     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2693             [Whether POSIX capabilities are available])
2694 else
2695     LIBS=$ac_save_LIBS
2701 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2702 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2705 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2706 AC_TRY_COMPILE([#include <sys/types.h>
2707 #if defined(HAVE_RPC_RPC_H)
2708 #include <rpc/rpc.h>
2709 #endif],
2710 [int16 testvar;],
2711 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2712 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2713     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2716 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2717 AC_TRY_COMPILE([#include <sys/types.h>
2718 #if defined(HAVE_RPC_RPC_H)
2719 #include <rpc/rpc.h>
2720 #endif],
2721 [uint16 testvar;],
2722 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2723 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2724     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2727 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2728 AC_TRY_COMPILE([#include <sys/types.h>
2729 #if defined(HAVE_RPC_RPC_H)
2730 #include <rpc/rpc.h>
2731 #endif],
2732 [int32 testvar;],
2733 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2734 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2735     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2738 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2739 AC_TRY_COMPILE([#include <sys/types.h>
2740 #if defined(HAVE_RPC_RPC_H)
2741 #include <rpc/rpc.h>
2742 #endif],
2743 [uint32 testvar;],
2744 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2745 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2746     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2750 dnl Some systems (SCO) have a problem including
2751 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2752 dnl as a #define in <prot.h> and as part of an enum
2753 dnl in <rpc/rpc.h>.
2756 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2757 AC_TRY_COMPILE([#include <sys/types.h>
2758 #ifdef HAVE_SYS_SECURITY_H
2759 #include <sys/security.h>
2760 #include <prot.h>
2761 #endif  /* HAVE_SYS_SECURITY_H */
2762 #if defined(HAVE_RPC_RPC_H)
2763 #include <rpc/rpc.h>
2764 #endif],
2765 [int testvar;],
2766 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2767 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2768     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2771 AC_MSG_CHECKING([for test routines])
2772 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2773            AC_MSG_RESULT(yes),
2774            AC_MSG_ERROR([cant find test code. Aborting config]),
2775            AC_MSG_WARN([cannot run when cross-compiling]))
2777 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2778 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2779            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2780 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2781     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2784 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2785 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2786            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2787 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2788     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2791 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2792 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2793 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2794 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2795 AC_CHECK_FUNCS(getpagesize)
2797 ################################################
2798 # look for a method of setting the effective uid
2799 seteuid=no;
2801 if test $seteuid = no; then
2802 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2803 AC_TRY_RUN([
2804 #define AUTOCONF_TEST 1
2805 #define USE_SETREUID 1
2806 #include "confdefs.h"
2807 #include "${srcdir-.}/lib/util_sec.c"],
2808            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2809 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2810     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2814 # we check for setresuid second as it conflicts with AIO on Linux. 
2815 # see http://samba.org/~tridge/junkcode/aio_uid.c
2816 if test $seteuid = no; then
2817 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2818 AC_TRY_RUN([
2819 #define AUTOCONF_TEST 1
2820 #define USE_SETRESUID 1
2821 #include "confdefs.h"
2822 #include "${srcdir-.}/lib/util_sec.c"],
2823            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2824 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2825     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2829 if test $seteuid = no; then
2830 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2831 AC_TRY_RUN([
2832 #define AUTOCONF_TEST 1
2833 #define USE_SETEUID 1
2834 #include "confdefs.h"
2835 #include "${srcdir-.}/lib/util_sec.c"],
2836            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2837 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2838     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2842 if test $seteuid = no; then
2843 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2844 AC_TRY_RUN([
2845 #define AUTOCONF_TEST 1
2846 #define USE_SETUIDX 1
2847 #include "confdefs.h"
2848 #include "${srcdir-.}/lib/util_sec.c"],
2849            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2850 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2851     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2855 AC_CACHE_CHECK([for the Darwin initgroups system call],
2856         samba_cv_DARWIN_INITGROUPS,
2857         AC_TRY_LINK([
2858 #include <sys/syscall.h>
2859 #include <unistd.h>
2860         ],
2861         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2862         samba_cv_DARWIN_INITGROUPS=yes,
2863         samba_cv_DARWIN_INITGROUPS=no)
2866 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2867     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2868         [Whether to use the Darwin-specific initgroups system call])
2871 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2872 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2873            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2874 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2875     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2878 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2879 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2880            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2881 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2882     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2884 else
2887 dnl Don't check for 64 bit fcntl locking if we know that the
2888 dnl glibc2.1 broken check has succeeded.
2891   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2892   AC_TRY_RUN([
2893 #if defined(HAVE_UNISTD_H)
2894 #include <unistd.h>
2895 #endif
2896 #include <stdio.h>
2897 #include <stdlib.h>
2899 #ifdef HAVE_FCNTL_H
2900 #include <fcntl.h>
2901 #endif
2903 #ifdef HAVE_SYS_FCNTL_H
2904 #include <sys/fcntl.h>
2905 #endif
2906 main() { struct flock64 fl64;
2907 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2908 exit(0);
2909 #else
2910 exit(1);
2911 #endif
2913        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2915   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2916       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2917   fi
2920 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
2921 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
2922 AC_TRY_COMPILE([
2923   #define _XOPEN_SOURCE 600
2924   #include <stdlib.h>
2925   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
2926     probably broken posix_fallocate
2927   #endif
2928 ], [
2929 ], 
2930 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
2931 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
2932         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
2936 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2937 AC_TRY_COMPILE([#include <sys/types.h>
2938 #include <sys/stat.h>
2939 #include <unistd.h>],
2940 [struct stat st;  st.st_blocks = 0;],
2941 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2942 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2943     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2946 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
2948 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2949 AC_TRY_COMPILE([#include <sys/types.h>
2950 #include <sys/stat.h>
2951 #include <unistd.h>],
2952 [struct stat st;  st.st_blksize = 0;],
2953 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2954 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2955     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2958 AC_CACHE_CHECK([for st_flags in struct stat],
2959         samba_cv_HAVE_STAT_ST_FLAGS,
2960         [
2961             AC_TRY_COMPILE([#include <sys/types.h>
2962 #include <sys/stat.h>
2963 #include <unistd.h>],
2964             [struct stat st;  st.st_flags = 0;],
2965             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2966             samba_cv_HAVE_STAT_ST_FLAGS=no,
2967             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2968         ])
2970 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2971     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2972                 [Whether the stat struct has a st_flags member])
2975 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2976 AC_TRY_COMPILE([
2977 #include <sys/types.h>
2978 #include <sys/acl.h>
2979 #if defined(HAVE_RPCSVC_NIS_H)
2980 #include <rpcsvc/nis.h>
2981 #endif],
2982 [int i;],
2983 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2984 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2985         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2988 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2989 AC_TRY_RUN([
2990 #include <stdio.h>
2991 #include <limits.h>
2992 #include <signal.h>
2994 void exit_on_core(int ignored) {
2995         exit(1);
2998 main() {
2999         char *newpath;
3000         signal(SIGSEGV, exit_on_core);
3001         newpath = realpath("/tmp", NULL);
3002         exit((newpath != NULL) ? 0 : 1);
3005 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3006 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3007     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3010 #################################################
3011 # check for AFS clear-text auth support
3012 samba_cv_WITH_AFS=no
3013 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3014 AC_ARG_WITH(afs,
3015 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3016 [ case "$withval" in
3017   yes|auto)
3018     AC_MSG_RESULT($withval)
3019     samba_cv_WITH_AFS=$withval
3020     ;;
3021   *)
3022     AC_MSG_RESULT(no)
3023     ;;
3024   esac ],
3025   AC_MSG_RESULT(no)
3028 ####################################################
3029 # check for Linux-specific AFS fake-kaserver support
3030 samba_cv_WITH_FAKE_KASERVER=no
3031 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3032 AC_ARG_WITH(fake-kaserver,
3033 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3034 [ case "$withval" in
3035   yes|auto)
3036     AC_MSG_RESULT($withval)
3037     samba_cv_WITH_FAKE_KASERVER=$withval
3038     ;;
3039   *)
3040     AC_MSG_RESULT(no)
3041     ;;
3042   esac ],
3043   AC_MSG_RESULT(no)
3046 #################################################
3047 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3048 if test x"$samba_cv_WITH_AFS" != x"no" ||
3049    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3051     # see if this box has the OpenSSL DES libraries
3052     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3054     # see if this box has the afs-headers in /usr/include/afs
3055     AC_MSG_CHECKING(for /usr/include/afs)
3056     if test -d /usr/include/afs; then
3057           AC_MSG_RESULT(yes)
3058     else
3059       AC_MSG_RESULT(no)
3060     fi
3062     # check for afs.h
3063     have_afs_headers=no
3064     AC_CHECK_HEADERS(afs.h afs/afs.h)
3065     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3066         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3067            test x"$samba_cv_WITH_AFS" = x"auto"; then
3068                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3069         else
3070                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3071         fi
3072     else
3073         have_afs_headers=yes
3074     fi
3077 FAKE_KASERVER_OBJ=""
3078 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3079     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3080     FAKE_KASERVER_OBJ="utils/net_afs.o"
3082 AC_SUBST(FAKE_KASERVER_OBJ)
3084 #################################################
3085 # check whether to compile AFS/NT ACL mapping module
3086 samba_cv_WITH_VFS_AFSACL=no
3087 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3088 AC_ARG_WITH(vfs-afsacl,
3089 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3090 [ case "$withval" in
3091   yes|auto)
3092     AC_MSG_RESULT($withval)
3093     samba_cv_WITH_VFS_AFSACL=yes
3094     ;;
3095   *)
3096     AC_MSG_RESULT(no)
3097     ;;
3098   esac ],
3099   AC_MSG_RESULT(no)
3102 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3103    default_shared_modules="$default_shared_modules vfs_afsacl"
3105         
3106 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3107     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3110 #################################################
3111 # check for the DFS clear-text auth system
3112 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3113 AC_ARG_WITH(dfs,
3114 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3115 [ case "$withval" in
3116   yes)
3117     AC_MSG_RESULT(yes)
3118     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3119     ;;
3120   *)
3121     AC_MSG_RESULT(no)
3122     ;;
3123   esac ],
3124   AC_MSG_RESULT(no)
3127 ########################################################
3128 # Compile with LDAP support?
3130 with_ldap_support=auto
3131 AC_MSG_CHECKING([for LDAP support])
3133 AC_ARG_WITH(ldap,
3134 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3135 [ case "$withval" in
3136     yes|no)
3137         with_ldap_support=$withval
3138         ;;
3139   esac ])
3141 AC_MSG_RESULT($with_ldap_support)
3143 SMBLDAP=""
3144 AC_SUBST(SMBLDAP)
3145 SMBLDAPUTIL=""
3146 AC_SUBST(SMBLDAPUTIL)
3147 LDBLDAP=""
3148 AC_SUBST(LDBLDAP)
3150 if test x"$with_ldap_support" != x"no"; then
3152   ##################################################################
3153   # first test for ldap.h and lber.h
3154   # (ldap.h is required for this test)
3155   AC_CHECK_HEADERS(ldap.h lber.h)
3157   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3158         if test x"$with_ldap_support" = x"yes"; then
3159          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3160         else
3161          AC_MSG_WARN(ldap.h is needed for LDAP support)
3162         fi
3163         
3164         with_ldap_support=no
3165   fi
3167   ##################################################################
3168   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3169   # unsigned int in include/includes.h
3170   case $host_os in
3171         *hpux*)
3172          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3173          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3174         with_ldap_support=yes
3175         ;;
3176         *)
3177         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3178         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3179                 if test x"$with_ldap_support" = x"yes"; then
3180                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3181                 else
3182                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3183                 fi
3184                 with_ldap_support=no
3185         fi
3186         ;;
3187   esac
3190 if test x"$with_ldap_support" != x"no"; then
3191   ac_save_LIBS=$LIBS
3193   ##################################################################
3194   # we might need the lber lib on some systems. To avoid link errors
3195   # this test must be before the libldap test
3196   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3198   ########################################################
3199   # If ber_sockbuf_add_io() is available we can add
3200   # SASL wrapping hooks
3201   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3203   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3204                  AC_TRY_COMPILE([#include <ldap.h>],
3205                                 [int val = LDAP_OPT_SOCKBUF;],
3206                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3207                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3209   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3210           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3211         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3212   fi
3214   #######################################################
3215   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3216   # ldap logging and print it out in the samba logs
3217   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3218                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3219                  [AC_TRY_COMPILE([#include <lber.h>],
3220                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3221                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3222                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3224   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3225         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3226                   [Support for LDAP/LBER logging interception])
3227   fi
3229   ########################################################
3230   # now see if we can find the ldap libs in standard paths
3231   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3233   ########################################################
3234   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3235   # Check found in pam_ldap 145.
3236   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3238   LIBS="$LIBS $LDAP_LIBS"
3239   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3240     AC_TRY_COMPILE([
3241         #include <lber.h>
3242         #include <ldap.h>],
3243         [ldap_set_rebind_proc(0, 0, 0);],
3244         [smb_ldap_cv_ldap_set_rebind_proc=3],
3245         [smb_ldap_cv_ldap_set_rebind_proc=2]
3246     )
3247   ])
3249   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3251   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3253   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3254     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3255     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3256     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3257     default_shared_modules="$default_shared_modules";
3258     SMBLDAP="lib/smbldap.o"
3259     SMBLDAPUTIL="lib/smbldap_util.o"
3260     with_ldap_support=yes
3261     AC_MSG_CHECKING(whether LDAP support is used)
3262     AC_MSG_RESULT(yes)
3263   else
3264     if test x"$with_ldap_support" = x"yes"; then
3265         AC_MSG_ERROR(libldap is needed for LDAP support)
3266     else
3267         AC_MSG_WARN(libldap is needed for LDAP support)
3268     fi
3270     LDAP_LIBS=""
3271     with_ldap_support=no
3272   fi
3273   LIBS=$ac_save_LIBS
3277 #################################################
3278 # active directory support
3280 with_ads_support=auto
3281 AC_MSG_CHECKING([for Active Directory and krb5 support])
3283 AC_ARG_WITH(ads,
3284 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3285 [ case "$withval" in
3286     yes|no)
3287         with_ads_support="$withval"
3288         ;;
3289   esac ])
3291 AC_MSG_RESULT($with_ads_support)
3293 FOUND_KRB5=no
3294 KRB5_LIBS=""
3296 if test x"$with_ldap_support" != x"yes"; then
3298     if test x"$with_ads_support" = x"yes"; then
3299         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3300     elif test x"$with_ads_support" = x"auto"; then
3301         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3302         with_ads_support=no
3303     fi
3305 else
3307     # Check to see whether there is enough LDAP functionality to be able
3308     # to build AD support.
3310 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3311 case "$host_os" in
3312         *hpux*)
3313     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3315     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3316         if test x"$with_ads_support" = x"yes"; then
3317             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3318         elif test x"$with_ads_support" = x"auto"; then
3319             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3320             with_ads_support=no
3321         fi
3322     fi
3323     ;;
3324         *)
3325     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3327     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3328         if test x"$with_ads_support" = x"yes"; then
3329             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3330         elif test x"$with_ads_support" = x"auto"; then
3331             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3332             with_ads_support=no
3333         fi
3334     fi
3335     ;;
3336 esac
3339     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3341     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3342         if test x"$with_ads_support" = x"yes"; then
3343             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3344         elif test x"$with_ads_support" = x"auto"; then
3345             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3346             with_ads_support=no
3347         fi
3348     fi
3352 if test x"$with_ads_support" != x"no"; then
3354   # Do no harm to the values of CFLAGS and LIBS while testing for
3355   # Kerberos support.
3357   if test x$FOUND_KRB5 = x"no"; then
3358     #################################################
3359     # check for location of Kerberos 5 install
3360     AC_MSG_CHECKING(for kerberos 5 install path)
3361     AC_ARG_WITH(krb5,
3362     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3363     [ case "$withval" in
3364       no)
3365         AC_MSG_RESULT(no krb5-path given)
3366         ;;
3367       yes)
3368         AC_MSG_RESULT(/usr)
3369         FOUND_KRB5=yes
3370         ;;
3371       *)
3372         AC_MSG_RESULT($withval)
3373         KRB5_CFLAGS="-I$withval/include"
3374         KRB5_CPPFLAGS="-I$withval/include"
3375         KRB5_LDFLAGS="-L$withval/lib"
3376         FOUND_KRB5=yes
3377         if test -x "$withval/bin/krb5-config"; then
3378                 KRB5CONFIG=$withval/bin/krb5-config
3379         fi
3380         ;;
3381       esac ],
3382       AC_MSG_RESULT(no krb5-path given)
3383     )
3384   fi
3386   #################################################
3387   # check for krb5-config from recent MIT and Heimdal kerberos 5
3388   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3389   AC_MSG_CHECKING(for working krb5-config)
3390   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3391     ac_save_CFLAGS=$CFLAGS
3392     CFLAGS="";export CFLAGS
3393     ac_save_LDFLAGS=$LDFLAGS
3394     LDFLAGS="";export LDFLAGS
3395     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3396     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3397     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3398     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3399     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3400     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3401     FOUND_KRB5=yes
3402     AC_MSG_RESULT(yes)
3403   else
3404     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3405   fi
3407   if test x$FOUND_KRB5 = x"no"; then
3408     #################################################
3409     # see if this box has the SuSE location for the heimdal krb implementation
3410     AC_MSG_CHECKING(for /usr/include/heimdal)
3411     if test -d /usr/include/heimdal; then
3412       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3413           KRB5_CFLAGS="-I/usr/include/heimdal"
3414           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3415           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3416           FOUND_KRB5=yes
3417           AC_MSG_RESULT(yes)
3418       else
3419           KRB5_CFLAGS="-I/usr/include/heimdal"
3420           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3421           FOUND_KRB5=yes
3422           AC_MSG_RESULT(yes)
3423       fi
3424     else
3425       AC_MSG_RESULT(no)
3426     fi
3427   fi
3429   if test x$FOUND_KRB5 = x"no"; then
3430     #################################################
3431     # see if this box has the RedHat location for kerberos
3432     AC_MSG_CHECKING(for /usr/kerberos)
3433     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3434       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3435       KRB5_CFLAGS="-I/usr/kerberos/include"
3436       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3437       FOUND_KRB5=yes
3438       AC_MSG_RESULT(yes)
3439     else
3440       AC_MSG_RESULT(no)
3441     fi
3442   fi
3444   if test x$FOUND_KRB5 = x"no"; then
3445     #################################################
3446     # see if this box has the OpenBSD location for heimdal krb5
3447     AC_MSG_CHECKING(for /usr/include/kerberosV)
3448     if test -d /usr/include/kerberosV; then
3449       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3450       KRB5_LIBS="-lcrypto"
3451       FOUND_KRB5=yes
3452       AC_MSG_RESULT(yes)
3453     else
3454       AC_MSG_RESULT(no)
3455     fi
3456   fi
3458   ac_save_CFLAGS=$CFLAGS
3459   ac_save_CPPFLAGS=$CPPFLAGS
3460   ac_save_LDFLAGS=$LDFLAGS
3462   # remove needless evil rpath stuff as early as possible:
3463   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3464   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3465   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3466   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3467   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3469   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3471   # now check for krb5.h. Some systems have the libraries without the headers!
3472   # note that this check is done here to allow for different kerberos
3473   # include paths
3474   AC_CHECK_HEADERS(krb5.h)
3476   if test x"$ac_cv_header_krb5_h" = x"no"; then
3478     # Give a warning if AD support was not explicitly requested,
3479     # i.e with_ads_support = auto, otherwise die with an error.
3481     if test x"$with_ads_support" = x"yes"; then
3482       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3483     else
3484       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3485     fi
3487     # Turn off AD support and restore CFLAGS and LIBS variables
3489     with_ads_support="no"
3491     CFLAGS=$ac_save_CFLAGS
3492     CPPFLAGS=$ac_save_CPPFLAGS
3493     LDFLAGS=$ac_save_LDFLAGS
3494   fi
3495   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3496 [[#ifdef HAVE_KRB5_H
3497  #include <krb5.h>
3498  #endif
3501   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3502         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3503         if test x"$BLDSHARED" = x"true" ; then
3504                 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3505         fi
3506   fi
3508   # check for new heimdal KRB5_DEPRECATED handling
3510   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3511                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3512     AC_TRY_COMPILE(
3513       [#define KRB5_DEPRECATED 1
3514       #include <krb5.h>],
3515       [],
3516       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3517       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3519   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3520     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3521                [Whether to use deprecated krb5 interfaces])
3522   fi
3525 # Now we have determined whether we really want ADS support
3526 use_ads=no
3527 if test x"$with_ads_support" != x"no"; then
3528   use_ads=yes
3529   have_gssapi=no
3530   ac_save_LIBS=$LIBS
3532   # now check for gssapi headers.  This is also done here to allow for
3533   # different kerberos include paths
3534   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3536   ##################################################################
3537   # we might need the k5crypto and com_err libraries on some systems
3538   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3539   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3541   # Heimdal checks.
3542   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3543   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3544   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3546   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3547   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3549   ########################################################
3550   # now see if we can find the krb5 libs in standard paths
3551   # or as specified above
3552   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3553   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3555   ########################################################
3556   # now see if we can find the gssapi libs in standard paths
3557   if test x"$have_gssapi" != x"yes"; then
3558      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3559   fi
3561   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3562   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3563   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3564   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3565   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3566   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3567   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3568   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3569   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3570   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3571   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3572   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3573   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3574   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3575   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3576   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3577   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3578   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3579   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3580   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3581   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3582   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3583   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3584   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3585   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3586   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3587   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3588   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3589   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3590   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3591   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3592   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3593   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3594   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3595   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3596   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3597   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3598   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3599   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3600   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3601   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3602   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3603   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3604   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3605   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3606   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3607   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3608   # MIT krb5 1.8 does not expose this call (yet)
3609   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3611   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3612   # but does have the symbol
3613   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3615   LIBS="$KRB5_LIBS $LIBS"
3617   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3618         smb_krb5_cv_ticket_has_keyinfo,
3619         [
3620             AC_TRY_COMPILE(
3621             [
3622                 #include <krb5.h>
3623             ],
3624             [
3625                 krb5_ticket ticket;
3626                 krb5_kvno kvno;
3627                 krb5_enctype enctype;
3629                 enctype = ticket.enc_part.enctype;
3630                 kvno = ticket.enc_part.kvno;
3631             ],
3632             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3633             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3634         ])
3636   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3637         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3638             [Whether the krb5_ticket structure contains the kvno and enctype])
3639   fi
3641   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3642           smb_krb5_cv_creds_opt_free_context,
3643           [
3644                 AC_TRY_COMPILE([
3645                     #include <krb5.h>],
3646                     [
3647                         krb5_context ctx;
3648                         krb5_get_init_creds_opt *opt = NULL;
3649                         krb5_get_init_creds_opt_free(ctx, opt);
3650                     ],
3651                     [smb_krb5_cv_creds_opt_free_context=yes],
3652                     [smb_krb5_cv_creds_opt_free_context=no]
3653                 )
3654           ])
3656   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3657         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3658             [Whether krb5_get_init_creds_opt_free takes a context argument])
3659   fi
3661   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3662     AC_TRY_COMPILE([
3663         #include <krb5.h>],
3664         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3665         [smb_krb5_cv_verify_checksum=7],
3666         [smb_krb5_cv_verify_checksum=6],
3667     )
3668   ])
3669   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3671   AC_CACHE_CHECK([for checksum in krb5_checksum],
3672                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3673     AC_TRY_COMPILE([#include <krb5.h>],
3674       [krb5_checksum cksum; cksum.checksum.length = 0;],
3675       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3676       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3678   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3679     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3680                [Whether the krb5_checksum struct has a checksum property])
3681   fi
3683   AC_CACHE_CHECK([for etype in EncryptedData],
3684                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3685     AC_TRY_COMPILE([#include <krb5.h>],
3686       [EncryptedData edata; edata.etype = 0;],
3687       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3688       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3690   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3691     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3692                [Whether the EncryptedData struct has a etype property])
3693   fi
3695   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3696                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3697     AC_TRY_COMPILE([#include <krb5.h>],
3698       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3699       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3700       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3702   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3703     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3704                [Whether the krb5_ap_req struct has a ticket pointer])
3705   fi
3707   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3708                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3709     AC_TRY_COMPILE([#include <krb5.h>],
3710       [krb5_error err; err.e_data = NULL;],
3711       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3712       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3714   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3715     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3716                [Whether the krb5_error struct has a e_data pointer])
3717   fi
3719   AC_CACHE_CHECK([for krb5_crypto type],
3720                 samba_cv_HAVE_KRB5_CRYPTO,[
3721     AC_TRY_COMPILE([#include <krb5.h>],
3722       [krb5_crypto crypto;],
3723       samba_cv_HAVE_KRB5_CRYPTO=yes,
3724       samba_cv_HAVE_KRB5_CRYPTO=no)])
3726   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3727     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3728                [Whether the type krb5_crypto exists])
3729   fi
3731   AC_CACHE_CHECK([for krb5_encrypt_block type],
3732                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3733     AC_TRY_COMPILE([#include <krb5.h>],
3734       [krb5_encrypt_block block;],
3735       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3736       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3738   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3739     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3740                [Whether the type krb5_encrypt_block exists])
3741   fi
3743   AC_CACHE_CHECK([for addrtype in krb5_address],
3744                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3745     AC_TRY_COMPILE([#include <krb5.h>],
3746       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3747       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3748       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3750   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3751     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3752                [Whether the krb5_address struct has a addrtype property])
3753   fi
3755   AC_CACHE_CHECK([for addr_type in krb5_address],
3756                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3757     AC_TRY_COMPILE([#include <krb5.h>],
3758       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3759       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3760       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3762   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3763     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3764               [Whether the krb5_address struct has a addr_type property])
3765   fi
3767   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3768                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3769                  [AC_TRY_COMPILE([#include <krb5.h>],
3770     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3771     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3773   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3774     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3775               [Whether the krb5_ticket struct has a enc_part2 property])
3776   fi
3778   AC_CACHE_CHECK([for keyblock in krb5_creds],
3779                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3780     AC_TRY_COMPILE([#include <krb5.h>],
3781       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3782       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3783       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3785   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3786     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3787               [Whether the krb5_creds struct has a keyblock property])
3788   fi
3790   AC_CACHE_CHECK([for session in krb5_creds],
3791                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3792     AC_TRY_COMPILE([#include <krb5.h>],
3793       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3794       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3795       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3797   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3798     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3799               [Whether the krb5_creds struct has a session property])
3800   fi
3802   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3803                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3804     AC_TRY_COMPILE([#include <krb5.h>],
3805       [krb5_keyblock key; key.keyvalue.data = NULL;],
3806       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3807       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3809   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3810     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3811               [Whether the krb5_keyblock struct has a keyvalue property])
3812   fi
3814   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3815                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3816     AC_TRY_COMPILE([#include <krb5.h>],
3817       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3818       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3819       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3820   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3821                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3822     AC_TRY_COMPILE([#include <krb5.h>],
3823       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3824       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3825       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3826 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3827 # w.r.t. arcfour and windows, so we must not enable it here
3828   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3829           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3830     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3831               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3832   fi
3834   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3835                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3836     AC_TRY_COMPILE([#include <krb5.h>],
3837       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3838       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3839       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3841   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3842     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3843               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3844   fi
3846   AC_CACHE_CHECK([for KV5M_KEYTAB],
3847                  samba_cv_HAVE_KV5M_KEYTAB,[
3848     AC_TRY_COMPILE([#include <krb5.h>],
3849       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3850       samba_cv_HAVE_KV5M_KEYTAB=yes,
3851       samba_cv_HAVE_KV5M_KEYTAB=no)])
3853   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3854       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3855              [Whether the KV5M_KEYTAB option is available])
3856   fi
3858   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3859                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3860     AC_TRY_COMPILE([#include <krb5.h>],
3861       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3862       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3863       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3865   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3866     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3867               [Whether KRB5_KU_OTHER_CKSUM is available])
3868   fi
3870   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3871                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3872     AC_TRY_COMPILE([#include <krb5.h>],
3873       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3874       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3875       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3877   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3878     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3879               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3880   fi
3882   AC_CACHE_CHECK([for the krb5_princ_component macro],
3883                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3884     AC_TRY_LINK([#include <krb5.h>],
3885       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3886       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3887       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3889   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3890     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3891                [Whether krb5_princ_component is available])
3892   fi
3894   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3895                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3896     AC_TRY_COMPILE([#include <krb5.h>],
3897       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3898       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3899       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3901   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3902     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3903               [Whether krb5_keytab_entry has key member])
3904   fi
3906   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3907                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3908     AC_TRY_COMPILE([#include <krb5.h>],
3909       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3910       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3911       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3913   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3914     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3915               [Whether krb5_keytab_entry has keyblock member])
3916   fi
3918   AC_CACHE_CHECK([for magic in krb5_address],
3919                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3920     AC_TRY_COMPILE([#include <krb5.h>],
3921       [krb5_address addr; addr.magic = 0;],
3922       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3923       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3925   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3926     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3927               [Whether the krb5_address struct has a magic property])
3928   fi
3930   AC_CACHE_CHECK([for WRFILE: keytab support],
3931                 samba_cv_HAVE_WRFILE_KEYTAB,[
3932     AC_TRY_RUN([
3933 #include<krb5.h>
3934   main()
3935   {
3936     krb5_context context;
3937     krb5_keytab keytab;
3939     krb5_init_context(&context);
3940     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3941   }],
3942   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3943   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3945   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3946       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3947                [Whether the WRFILE:-keytab is supported])
3948   fi
3950   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3951                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3952     AC_TRY_COMPILE([#include <krb5.h>],
3953     [
3954     krb5_context context;
3955     krb5_principal principal;
3956     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3957     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3958     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3960   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3961     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3962               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3963   fi
3965   AC_CACHE_CHECK([for krb5_addresses type],
3966                 samba_cv_HAVE_KRB5_ADDRESSES,[
3967     AC_TRY_COMPILE([#include <krb5.h>],
3968       [krb5_addresses addr;],
3969       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3970       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3972   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3973     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3974                [Whether the type krb5_addresses type exists])
3975   fi
3977   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3978                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3979     AC_TRY_COMPILE([#include <krb5.h>],
3980     [
3981     krb5_mk_error(0,0,0);],
3982     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3983     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3985   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3986     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3987               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3988   fi
3990   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3991     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3992         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3993         AC_TRY_RUN_STRICT([
3994                 #include <stdlib.h>
3995                 #include <krb5.h>
3996                 int main(void) {
3997                         krb5_context context = NULL;
3998                         char *str = NULL;
3999                         krb5_enctype_to_string(context, 1, &str);
4000                         if (str) free (str); 
4001                         return 0;
4002                 }
4003                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4004                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4005                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4007     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4008       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4009                 [whether krb5_enctype_to_string takes krb5_context argument])
4010     fi
4012     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4013         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4014         AC_TRY_RUN_STRICT([
4015                 #include <krb5.h>
4016                 int main(void) {
4017                         char buf[256];
4018                         krb5_enctype_to_string(1, buf, 256);
4019                         return 0;
4020                 }
4021                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4022                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4023                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4025     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4026       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4027                 [whether krb5_enctype_to_string takes size_t argument])
4028     fi
4029   fi
4031   AC_CACHE_CHECK([for krb5_principal_get_realm],
4032                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4033     AC_TRY_LINK([#include <krb5.h>],
4034       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4035       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4036       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4038   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4039     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4040                [Whether the function krb5_principal_get_realm is defined])
4041   fi
4043   AC_CACHE_CHECK([for krb5_princ_realm],
4044                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4045     AC_TRY_LINK([#include <krb5.h>],
4046       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4047       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4048       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4050   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4051     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4052                [Whether the macro krb5_princ_realm is defined])
4053   fi
4055   #
4056   #
4057   # Now the decisions whether we can support krb5
4058   #
4059   # NOTE: all tests should be done before this block!
4060   #
4061   #
4062   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4063     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4064     use_ads=no
4065   fi
4067   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4068           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4069   then
4070     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4071     use_ads=no
4072   fi
4074   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4075           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4076   then
4077     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4078     use_ads=no
4079   fi
4081   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4082           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4083   then
4084     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4085     use_ads=no
4086   fi
4088   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4089           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4090   then
4091     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4092     use_ads=no
4093   fi
4095   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4097       # We only need the following functions if we can't get the enctype
4098       # and kvno out of the ticket directly (ie. on Heimdal).
4100       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4101       then
4102         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4103         use_ads=no
4104       fi
4106       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4107       then
4108         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4109         use_ads=no
4110       fi
4112   fi
4114   if test x"$use_ads" = x"yes"; then
4115     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4116     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4117     if test x"$have_gssapi" = x"yes"; then
4118       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4119     fi
4120   else
4121     if test x"$with_ads_support" = x"yes"; then
4122         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4123     else
4124         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4125     fi
4126     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4127     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4128     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4129     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4130     KRB5_LIBS=""
4131     with_ads_support=no
4132   fi
4133   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4134   AC_MSG_RESULT([$use_ads])
4136 LIBS="$ac_save_LIBS"
4139 if test x"$use_ads" != xyes; then
4140         merged_build_possible=no
4143 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4144 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4147 ########################################################
4148 # Compile with DNS Updates support?
4150 with_dnsupdate_support=no
4151 AC_MSG_CHECKING([whether to enable DNS Updates support])
4153 AC_ARG_WITH(dnsupdate,
4154 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4155 [ case "$withval" in
4156     yes|no)
4157         with_dnsupdate_support=$withval
4158         ;;
4159   esac ])
4161 AC_MSG_RESULT($with_dnsupdate_support)
4163 if test x"$with_dnsupdate_support" != x"no"; then
4165   ################################################################
4166   # first test for Active Directory support being enabled
4167   #if test x"$with_ads_support" = x"no"; then
4168   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4169   #             with_dnsupdate_support=no
4170   #fi           
4171   ##################################################################
4172   # then test for uuid.h (necessary to generate unique DNS keynames
4173   # (uuid.h is required for this test)
4174   AC_CHECK_HEADERS(uuid/uuid.h)
4176   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4177         if test x"$with_dnsupdate_support" = x"yes"; then
4178          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4179         else
4180          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4181         fi
4182         with_dnsupdate_support=no
4183   fi
4186 if test x"$with_dnsupdate_support" != x"no"; then
4188   ########################################################
4189   # Now see if we can find the uuid libs in standard paths
4190   # On some systems, the uuid API is in libc, so we have to
4191   # be careful not to insert a spurious -luuid.
4193   UUID_LIBS=""
4194   AC_LIBTESTFUNC(uuid, uuid_generate,
4195           [
4196             case " $LIBS " in
4197                 *\ -luuid\ *)
4198                 UUID_LIBS="-luuid"
4199                 SMB_REMOVE_LIB(uuid)
4200                 ;;
4201             esac
4203             with_dnsupdate_support=yes
4204             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4205         ],
4206         [
4207             if test x"$with_dnsupdate_support" = x"yes"; then
4208                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4209             else
4210                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4211             fi
4212             with_dnsupdate_support=no
4213         ])
4216 #################################################
4217 # check for automount support
4218 AC_MSG_CHECKING(whether to use automount)
4219 AC_ARG_WITH(automount,
4220 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4221 [ case "$withval" in
4222   yes)
4223     AC_MSG_RESULT(yes)
4224     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4225     ;;
4226   *)
4227     AC_MSG_RESULT(no)
4228     ;;
4229   esac ],
4230   AC_MSG_RESULT(no)
4233 #################################################
4234 # check for mount- and umount.cifs support
4235 CIFSMOUNT_PROGS=""
4236 INSTALL_CIFSMOUNT=""
4237 UNINSTALL_CIFSMOUNT=""
4238 AC_MSG_CHECKING(whether to build mount.cifs)
4239 AC_ARG_WITH(cifsmount,
4240 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs (Linux only) support (default=yes)])],
4241 [ case "$withval" in
4242   no)
4243         AC_MSG_RESULT(no)
4244         ;;
4245   *)
4246         case "$host_os" in
4247         *linux*)
4248                 AC_MSG_RESULT(yes)
4249                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4250                 CIFSMOUNT_PROGS="bin/mount.cifs"
4251                 INSTALL_CIFSMOUNT="installcifsmount"
4252                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4253                 ;;
4254         *)
4255                 AC_MSG_ERROR(not on a linux system!)
4256                 ;;
4257         esac
4258     ;;
4259   esac ],
4260 [ case "$host_os" in
4261   *linux*)
4262         AC_MSG_RESULT(yes)
4263         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4264         CIFSMOUNT_PROGS="bin/mount.cifs"
4265         INSTALL_CIFSMOUNT="installcifsmount"
4266         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4267         ;;
4268   *)
4269         AC_MSG_RESULT(no)
4270         ;;
4271   esac ]
4274 CIFSUMOUNT_PROGS=""
4275 INSTALL_CIFSUMOUNT=""
4276 UNINSTALL_CIFSUMOUNT=""
4277 AC_MSG_CHECKING(whether to build umount.cifs)
4278 AC_ARG_WITH(cifsumount,
4279 [AS_HELP_STRING([--with-cifsumount], [Include umount.cifs (Linux only) support (default=no)])],
4280 [ case "$withval" in
4281   yes)
4282         case "$host_os" in
4283         *linux*)
4284                 AC_MSG_RESULT(yes)
4285                 AC_DEFINE(WITH_CIFSUMOUNT,1,[Whether to build umount.cifs])
4286                 CIFSUMOUNT_PROGS="bin/umount.cifs"
4287                 INSTALL_CIFSUMOUNT="installcifsumount"
4288                 UNINSTALL_CIFSUMOUNT="uninstallcifsumount"
4289                 ;;
4290         *)
4291                 AC_MSG_ERROR(not on a linux system!)
4292                 ;;
4293         esac
4294         ;;
4295   *)
4296         AC_MSG_RESULT(no)
4297         ;;
4298   esac ],
4299   AC_MSG_RESULT(no)
4302 #################################################
4303 # check for cifs.upcall support
4304 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4305 CIFSUPCALL_PROGS=""
4306 INSTALL_CIFSUPCALL=""
4307 UNINSTALL_CIFSUPCALL=""
4308 AC_MSG_CHECKING(whether to build cifs.upcall)
4309 AC_ARG_WITH(cifsupcall,
4310 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4311 [ case "$withval" in
4312   no)
4313         AC_MSG_RESULT(no)
4314         ;;
4315   *)
4316         case "$host_os" in
4317         *linux*)
4318                 if test x"$use_ads" != x"yes"; then
4319                         AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4320                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4321                         AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4322                 else
4323                         AC_MSG_RESULT(yes)
4324                         AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4325                         CIFSUPCALL_PROGS="bin/cifs.upcall"
4326                         INSTALL_CIFSUPCALL="installcifsupcall"
4327                         UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4328                 fi
4329                 ;;
4330         *)
4331                 AC_MSG_ERROR(not on a linux system!)
4332                 ;;
4333         esac
4334     ;;
4335   esac ],
4336 [ case "$host_os" in
4337   *linux*)
4338         if test x"$use_ads" != x"yes"; then
4339                 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4340         elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4341                 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4342         else
4343                 AC_MSG_RESULT(yes)
4344                 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4345                 CIFSUPCALL_PROGS="bin/cifs.upcall"
4346                 INSTALL_CIFSUPCALL="installcifsupcall"
4347                 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4348         fi
4349         ;;
4350   *)
4351         AC_MSG_RESULT(no)
4352         ;;
4353   esac ]
4357 #################################################
4358 # Check for a PAM clear-text auth, accounts, password
4359 # and session support. Most PAM implementations keep their
4360 # headers in /usr/include/security. Darwin keeps its in
4361 # /usr/include/pam.
4363 with_pam_for_crypt=no
4364 try_pam=auto
4365 AC_MSG_CHECKING(whether to try PAM support)
4366 AC_ARG_WITH(pam,
4367 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4368 [ case "$withval" in
4369   yes|no|auto)
4370     try_pam=$withval
4371     ;;
4372   esac
4374 AC_MSG_RESULT([$try_pam])
4376 use_pam=no
4377 create_pam_modules=no
4378 if test x"${try_pam}" != x"no";then
4379         use_pam=yes
4380         create_pam_modules=yes
4382         # Most systems have PAM headers in /usr/include/security, but Darwin
4383         # has them in /usr/include/pam.
4384         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4385         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4386                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4387                 if test x"${try_pam}" = x"yes";then
4388                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4389                 fi
4390                 use_pam=no
4391                 create_pam_modules=no
4392         fi
4394         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4395         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4396                 if test x"${try_pam}" = x"yes";then
4397                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4398                 fi
4399                 use_pam=no
4400                 create_pam_modules=no
4401         fi
4403         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4404                 #if HAVE_SECURITY_PAM_APPL_H
4405                 #include <security/pam_appl.h>
4406                 #endif
4407                 #if HAVE_PAM_PAM_APPL_H
4408                 #include <pam/pam_appl.h>
4409                 #endif
4410         ]])
4411         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4412                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4413                 if test x"${try_pam}" = x"yes";then
4414                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4415        fi
4416                 create_pam_modules=no
4417     fi
4419         if test x"$use_pam" = x"yes"; then
4420     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4421                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4422                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4423     with_pam_for_crypt=yes
4425                 if test x"$create_pam_modules" = x"yes"; then
4426                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4427                         # this checks are optional,
4428                         # we don't care about the results here
4429                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4430                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4431                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4432                 else
4433                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4434                 fi
4435         fi
4436         AC_MSG_CHECKING(whether to use PAM support)
4437         AC_MSG_RESULT([$use_pam])
4439         AC_MSG_CHECKING(whether to have PAM MODULES support)
4440         AC_MSG_RESULT([$create_pam_modules])
4441 fi # try_pam != no
4443 #################################################
4444 # check for PAM_RADIO_TYPE
4445 AC_TRY_COMPILE([
4446 #if (!defined(LINUX))
4448 #define PAM_EXTERN extern
4449 #if defined(HAVE_SECURITY_PAM_APPL_H)
4450 #include <security/pam_appl.h>
4451 #elif defined(HAVE_PAM_PAM_APPL_H)
4452 #include <pam/pam_appl.h>
4453 #endif
4455 #endif
4457 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4458 #include <security/pam_modules.h>
4459 #elif defined(HAVE_PAM_PAM_MODULES_H)
4460 #include <pam/pam_modules.h>
4461 #endif
4463 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4464 #include <security/_pam_macros.h>
4465 #elif defined(HAVE_PAM__PAM_MACROS_H)
4466 #include <pam/_pam_macros.h>
4467 #endif
4469 #ifdef HAVE_SECURITY_PAM_EXT_H
4470 #include <security/pam_ext.h>
4471 #endif
4473 [int i; i = PAM_RADIO_TYPE; ],
4474 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4476 #################################################
4477 # check for pam_smbpass support
4478 PAM_MODULES=""
4479 INSTALL_PAM_MODULES=""
4480 UNINSTALL_PAM_MODULES=""
4482 try_pam_smbpass=auto
4483 AC_MSG_CHECKING(whether to use pam_smbpass)
4484 AC_ARG_WITH(pam_smbpass,
4485 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4486 [ case "$withval" in
4487   yes|no|auto)
4488     try_pam_smbpass=$withval
4489   ;;
4490   *)
4491     AC_MSG_ERROR([valid options are yes,no,auto])
4492   ;;
4493   esac
4496 if test x"${try_pam_smbpass}" = xno ; then
4497         use_pam_smbpass=no
4498 else
4499         use_pam_smbpass=yes
4500         # Conditions under which pam_smbpass can't be built.
4501         if test x"$BLDSHARED" != xtrue ; then
4502                 if test x"${try_pam_smbpass}" = xyes ; then
4503                         AC_MSG_ERROR([No support for shared modules])
4504                 fi
4505                 use_pam_smbpass=no
4506         elif test x"$create_pam_modules" != xyes ; then
4507                 if test x"${try_pam_smbpass}" = xyes ; then
4508                         AC_MSG_ERROR([No support for PAM MODULES])
4509                 fi
4510                 use_pam_smbpass=no
4511         fi
4513         if test x"${use_pam_smbpass}" = xyes ; then 
4514                 PAM_MODULES="pam_smbpass"
4515                 INSTALL_PAM_MODULES="installpammodules"
4516                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4517         fi
4519 AC_MSG_RESULT([$use_pam_smbpass])
4523 ## moved after the check for -lcrypt in order to
4524 ## ensure that the necessary libraries are included
4525 ## check checking for truncated salt.  Wrapped by the
4526 ## $with_pam_for_crypt variable as above   --jerry
4528 if test $with_pam_for_crypt = no; then
4529 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4530 crypt_LIBS="$LIBS"
4531 LIBS="$AUTH_LIBS $LIBS"
4532 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4533         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4534 LIBS="$crypt_LIBS"])
4535 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4536         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4540 #################################################
4541 # check for a NISPLUS_HOME support
4542 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4543 AC_ARG_WITH(nisplus-home,
4544 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4545 [ case "$withval" in
4546   yes)
4547     AC_MSG_RESULT(yes)
4548     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4549     ;;
4550   *)
4551     AC_MSG_RESULT(no)
4552     ;;
4553   esac ],
4554   AC_MSG_RESULT(no)
4557 #################################################
4558 # check for syslog logging
4559 AC_MSG_CHECKING(whether to use syslog logging)
4560 AC_ARG_WITH(syslog,
4561 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4562 [ case "$withval" in
4563   yes)
4564     AC_MSG_RESULT(yes)
4565     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4566     ;;
4567   *)
4568     AC_MSG_RESULT(no)
4569     ;;
4570   esac ],
4571   AC_MSG_RESULT(no)
4574 #################################################
4575 # check for custom syslog facility
4576 AC_MSG_CHECKING(whether to use a custom syslog facility)
4577 AC_ARG_WITH(syslog-facility,
4578 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4580   if test "$withval" = "no" ; then
4581     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4582   else
4583      if test "$withval" != "yes" ; then
4584         syslog_facility="$withval"
4585         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4586      fi
4587   fi
4590 #################################################
4591 # check for experimental disk-quotas support
4593 samba_cv_WITH_QUOTAS=auto
4594 samba_cv_TRY_QUOTAS=no
4595 samba_cv_RUN_QUOTA_TESTS=auto
4596 samba_cv_WITH_SYS_QUOTAS=auto
4597 samba_cv_TRY_SYS_QUOTAS=auto
4598 samba_cv_SYSQUOTA_FOUND=no
4600 AC_MSG_CHECKING(whether to try disk-quotas support)
4601 AC_ARG_WITH(quotas,
4602 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4603 [ case "$withval" in
4604   yes)
4605     AC_MSG_RESULT(yes)
4606     samba_cv_WITH_QUOTAS=yes
4607     samba_cv_TRY_QUOTAS=yes
4608     samba_cv_RUN_QUOTA_TESTS=yes
4609     #set sys quotas to auto in this case
4610     samba_cv_TRY_SYS_QUOTAS=auto
4611     ;;
4612   auto)
4613     AC_MSG_RESULT(auto)
4614     samba_cv_WITH_QUOTAS=auto
4615     samba_cv_TRY_QUOTAS=auto
4616     samba_cv_RUN_QUOTA_TESTS=auto
4617     #set sys quotas to auto in this case
4618     samba_cv_TRY_SYS_QUOTAS=auto
4619     ;;
4620   no)
4621     AC_MSG_RESULT(no)
4622     samba_cv_WITH_QUOTAS=no
4623     samba_cv_TRY_QUOTAS=no
4624     samba_cv_RUN_QUOTA_TESTS=no
4625     ;;
4626   *)
4627     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4628     ;;
4629   esac ],
4630   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4633 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4634 AC_ARG_WITH(sys-quotas,
4635 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4636 [ case "$withval" in
4637   yes)
4638     AC_MSG_RESULT(yes)
4639     samba_cv_WITH_SYS_QUOTAS=yes
4640     samba_cv_TRY_SYS_QUOTAS=yes
4641     samba_cv_RUN_QUOTA_TESTS=yes
4642     ;;
4643   auto)
4644     AC_MSG_RESULT(auto)
4645     samba_cv_WITH_SYS_QUOTAS=auto
4646     samba_cv_TRY_SYS_QUOTAS=auto
4647     samba_cv_RUN_QUOTA_TESTS=auto
4648     ;;
4649   no)
4650     AC_MSG_RESULT(no)
4651     samba_cv_WITH_SYS_QUOTAS=no
4652     samba_cv_TRY_SYS_QUOTAS=no
4653     ;;
4654   *)
4655     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4656     ;;
4657   esac ],
4658   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4661 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4662 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4663   case "$host_os" in
4664         *linux*)
4665             AC_MSG_RESULT(yes)
4666             samba_cv_TRY_SYS_QUOTAS=yes
4667             samba_cv_RUN_QUOTA_TESTS=yes
4668             ;;
4669         *)
4670             AC_MSG_RESULT(no)
4671             samba_cv_TRY_SYS_QUOTAS=no
4672             ;;
4673   esac
4676 #############################################
4677 # only check for quota stuff if --with-quotas
4678 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4680 case "$host_os" in
4681         # on linux we didn't need to test we have builtin support
4682         *linux*)
4683             samba_cv_SYSQUOTA_FOUND=yes
4684             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4685             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4686             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4687             AC_MSG_RESULT(yes)
4689             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4690             samba_cv_found_xfs_header=yes
4691             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4692             AC_MSG_RESULT(yes)
4693             ;;
4694         *solaris*)
4695             # need to set this define when using static linking (BUG 1473)
4696             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4697             ;;
4698         *)
4699             ;;
4700 esac
4702 # some broken header files need this
4703 AC_CHECK_HEADER(asm/types.h,[
4704             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4705             AC_ADD_INCLUDE(<asm/types.h>)
4706             ])
4708 # For quotas on Veritas VxFS filesystems
4709 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4711 # For quotas on Linux XFS filesystems
4712 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4714 # For sys/quota.h and linux/quota.h
4715 AC_CHECK_HEADERS(sys/quota.h)
4717 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4718 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4719 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4720 AC_TRY_COMPILE([
4721 #include "confdefs.h"
4722 #ifdef HAVE_SYS_TYPES_H
4723 #include <sys/types.h>
4724 #endif
4725 #ifdef HAVE_ASM_TYPES_H
4726 #include <asm/types.h>
4727 #endif
4728 #include <sys/quota.h>
4729 ],[int i = Q_XGETQUOTA;],
4730 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4731 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4732         samba_cv_found_xfs_header=yes
4736 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4737 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4738 AC_TRY_COMPILE([
4739 #include "confdefs.h"
4740 #ifdef HAVE_SYS_QUOTA_H
4741 #include <sys/quota.h>
4742 #endif
4744 struct dqblk D;
4745 D.dqb_fsoftlimit = 0;],
4746 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4747 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4748         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4751 ##################
4752 # look for a working quota system
4754 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4755 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4756 AC_TRY_RUN_STRICT([
4757 #define HAVE_QUOTACTL_4A 1
4758 #define AUTOCONF_TEST 1
4759 #include "confdefs.h"
4760 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4761            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4762 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4763     samba_cv_SYSQUOTA_FOUND=yes;
4764     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4765     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4769 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4770 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4771 AC_TRY_RUN_STRICT([
4772 #define HAVE_QUOTACTL_4B 1
4773 #define AUTOCONF_TEST 1
4774 #include "confdefs.h"
4775 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4776            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4777 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4778     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4779     samba_cv_SYSQUOTA_FOUND=yes;
4780     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4781     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4785 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4786 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4787 AC_TRY_RUN_STRICT([
4788 #define HAVE_QUOTACTL_3 1
4789 #define AUTOCONF_TEST 1
4790 #include "confdefs.h"
4791 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4792            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4793 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4794     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4795     samba_cv_SYSQUOTA_FOUND=yes;
4796     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4797     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4801 #################################################
4802 # check for mntent.h and struct mntent
4803 AC_CHECK_HEADERS(mntent.h)
4804 #################################################
4805 # check for setmntent,getmntent,endmntent
4806 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4808 #################################################
4809 # check for devnm.h and struct mntent
4810 AC_CHECK_HEADERS(devnm.h)
4811 #################################################
4812 # check for devnm
4813 AC_CHECK_FUNCS(devnm)
4815 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4816     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4817         # if --with-sys-quotas=yes then build it
4818         # you have can use the get/set quota command smb.conf
4819         # options then
4820         samba_cv_SYSQUOTA_FOUND=auto
4821     fi
4822     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4823         # if --with-sys-quotas=yes then build it
4824         # you have can use the get/set quota command smb.conf
4825         # options then
4826         samba_cv_TRY_SYS_QUOTAS=auto
4827     fi
4830 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4831 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4832 SAVE_CPPFLAGS="$CPPFLAGS"
4833 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4834 AC_TRY_COMPILE([
4835 #include "confdefs.h"
4836 #define NO_PROTO_H 1
4837 #define NO_CONFIG_H 1
4838 #define HAVE_SYS_QUOTAS 1
4839 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4840 #include "${srcdir-.}/lib/sysquotas.c"
4841 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4842 CPPFLAGS="$SAVE_CPPFLAGS"
4844 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4845 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4846     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4847         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4848         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4849         samba_cv_WE_USE_SYS_QUOTAS=yes
4850         AC_MSG_RESULT(yes)
4851     else
4852         AC_MSG_RESULT(no)
4853     fi
4857 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4858 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4859 SAVE_CPPFLAGS="$CPPFLAGS"
4860 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4861 AC_TRY_COMPILE([
4862 #include "confdefs.h"
4863 #define NO_PROTO_H 1
4864 #define NO_CONFIG_H 1
4865 #define HAVE_SYS_QUOTAS 1
4866 #define HAVE_XFS_QUOTAS 1
4867 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4868 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4869 CPPFLAGS="$SAVE_CPPFLAGS"
4871 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4872     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4873         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4874     fi
4878 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4879 SAVE_CPPFLAGS="$CPPFLAGS"
4880 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4881 AC_TRY_COMPILE([
4882 #include "confdefs.h"
4883 #define NO_PROTO_H 1
4884 #define NO_CONFIG_H 1
4885 #include "${srcdir-.}/smbd/quotas.c"
4886 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4887 CPPFLAGS="$SAVE_CPPFLAGS"
4889 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4890 AC_MSG_CHECKING(whether to use the old quota support)
4891     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4892       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4893         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4894         AC_MSG_RESULT(yes)
4895       else
4896         AC_MSG_RESULT(no)
4897       fi
4898     else
4899       AC_MSG_RESULT(no)
4900     fi
4903 ####################
4904 # End of quota check samba_cv_RUN_QUOTA_TESTS
4907 #################################################
4908 # check for experimental utmp accounting
4910 AC_MSG_CHECKING(whether to support utmp accounting)
4911 WITH_UTMP=yes
4912 AC_ARG_WITH(utmp,
4913 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4914 [ case "$withval" in
4915   no)
4916                 WITH_UTMP=no
4917                 ;;
4918   *)
4919                 WITH_UTMP=yes
4920                 ;;
4921   esac ],
4924 # utmp requires utmp.h
4925 # Note similar check earlier, when checking utmp details.
4927 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4928         utmp_no_reason=", no utmp.h on $host_os"
4929         WITH_UTMP=no
4932 # Display test results
4934 if test x"$WITH_UTMP" = x"yes"; then
4935         AC_MSG_RESULT(yes)
4936         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4937 else
4938         AC_MSG_RESULT(no$utmp_no_reason)
4942 #################################################
4943 # these tests are taken from the GNU fileutils package
4944 AC_CHECKING(how to get filesystem space usage)
4945 space=no
4947 # Test for statvfs64.
4948 if test $space = no; then
4949   # SVR4
4950   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4951   [AC_TRY_RUN([
4952 #if defined(HAVE_UNISTD_H)
4953 #include <unistd.h>
4954 #endif
4955 #include <sys/types.h>
4956 #include <sys/statvfs.h>
4957   main ()
4958   {
4959     struct statvfs64 fsd;
4960     exit (statvfs64 (".", &fsd));
4961   }],
4962   fu_cv_sys_stat_statvfs64=yes,
4963   fu_cv_sys_stat_statvfs64=no,
4964   fu_cv_sys_stat_statvfs64=cross)])
4965   if test $fu_cv_sys_stat_statvfs64 = yes; then
4966     space=yes
4967     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4968   fi
4971 # Perform only the link test since it seems there are no variants of the
4972 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4973 # because that got a false positive on SCO OSR5.  Adding the declaration
4974 # of a `struct statvfs' causes this test to fail (as it should) on such
4975 # systems.  That system is reported to work fine with STAT_STATFS4 which
4976 # is what it gets when this test fails.
4977 if test $space = no; then
4978   # SVR4
4979   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4980                  [AC_TRY_LINK([#include <sys/types.h>
4981 #include <sys/statvfs.h>],
4982                               [struct statvfs fsd; statvfs (0, &fsd);],
4983                               fu_cv_sys_stat_statvfs=yes,
4984                               fu_cv_sys_stat_statvfs=no)])
4985   if test $fu_cv_sys_stat_statvfs = yes; then
4986     space=yes
4987     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4988   fi
4991 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4992 # This is not the case on ancient Linux systems.
4994 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4995     AC_TRY_COMPILE([#include <sys/types.h>
4996 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4997         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4998 if test x"$samba_cv_fsid_int" = x"yes"; then
4999     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5002 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5003 # systems use f_bsize.
5004 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5005     AC_TRY_COMPILE([#include <sys/types.h>
5006 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5007         samba_cv_frsize=yes,samba_cv_frsize=no)])
5008 if test x"$samba_cv_frsize" = x"yes"; then
5009     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5012 # Some systems use f_flag in struct statvfs while others use f_flags
5013 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5014     AC_TRY_COMPILE([#include <sys/types.h>
5015 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5016         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5017 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5018     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5021 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5022     AC_TRY_COMPILE([#include <sys/types.h>
5023 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5024         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5025 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5026     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5029 if test $space = no; then
5030   # DEC Alpha running OSF/1
5031   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5032   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5033   [AC_TRY_RUN([
5034 #include <sys/param.h>
5035 #include <sys/types.h>
5036 #include <sys/mount.h>
5037   main ()
5038   {
5039     struct statfs fsd;
5040     fsd.f_fsize = 0;
5041     exit (statfs (".", &fsd, sizeof (struct statfs)));
5042   }],
5043   fu_cv_sys_stat_statfs3_osf1=yes,
5044   fu_cv_sys_stat_statfs3_osf1=no,
5045   fu_cv_sys_stat_statfs3_osf1=no)])
5046   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5047   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5048     space=yes
5049     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5050   fi
5053 if test $space = no; then
5054 # AIX
5055   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5056 member (AIX, 4.3BSD)])
5057   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5058   [AC_TRY_RUN([
5059 #ifdef HAVE_SYS_PARAM_H
5060 #include <sys/param.h>
5061 #endif
5062 #ifdef HAVE_SYS_MOUNT_H
5063 #include <sys/mount.h>
5064 #endif
5065 #ifdef HAVE_SYS_VFS_H
5066 #include <sys/vfs.h>
5067 #endif
5068   main ()
5069   {
5070   struct statfs fsd;
5071   fsd.f_bsize = 0;
5072   exit (statfs (".", &fsd));
5073   }],
5074   fu_cv_sys_stat_statfs2_bsize=yes,
5075   fu_cv_sys_stat_statfs2_bsize=no,
5076   fu_cv_sys_stat_statfs2_bsize=no)])
5077   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5078   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5079     space=yes
5080     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5081   fi
5084 if test $space = no; then
5085 # SVR3
5086   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5087   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5088   [AC_TRY_RUN([#include <sys/types.h>
5089 #include <sys/statfs.h>
5090   main ()
5091   {
5092   struct statfs fsd;
5093   exit (statfs (".", &fsd, sizeof fsd, 0));
5094   }],
5095     fu_cv_sys_stat_statfs4=yes,
5096     fu_cv_sys_stat_statfs4=no,
5097     fu_cv_sys_stat_statfs4=no)])
5098   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5099   if test $fu_cv_sys_stat_statfs4 = yes; then
5100     space=yes
5101     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5102   fi
5105 if test $space = no; then
5106 # 4.4BSD and NetBSD
5107   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5108 member (4.4BSD and NetBSD)])
5109   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5110   [AC_TRY_RUN([#include <sys/types.h>
5111 #ifdef HAVE_SYS_PARAM_H
5112 #include <sys/param.h>
5113 #endif
5114 #ifdef HAVE_SYS_MOUNT_H
5115 #include <sys/mount.h>
5116 #endif
5117   main ()
5118   {
5119   struct statfs fsd;
5120   fsd.f_fsize = 0;
5121   exit (statfs (".", &fsd));
5122   }],
5123   fu_cv_sys_stat_statfs2_fsize=yes,
5124   fu_cv_sys_stat_statfs2_fsize=no,
5125   fu_cv_sys_stat_statfs2_fsize=no)])
5126   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5127   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5128     space=yes
5129         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5130   fi
5133 if test $space = no; then
5134   # Ultrix
5135   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5136   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5137   [AC_TRY_RUN([#include <sys/types.h>
5138 #ifdef HAVE_SYS_PARAM_H
5139 #include <sys/param.h>
5140 #endif
5141 #ifdef HAVE_SYS_MOUNT_H
5142 #include <sys/mount.h>
5143 #endif
5144 #ifdef HAVE_SYS_FS_TYPES_H
5145 #include <sys/fs_types.h>
5146 #endif
5147   main ()
5148   {
5149   struct fs_data fsd;
5150   /* Ultrix's statfs returns 1 for success,
5151      0 for not mounted, -1 for failure.  */
5152   exit (statfs (".", &fsd) != 1);
5153   }],
5154   fu_cv_sys_stat_fs_data=yes,
5155   fu_cv_sys_stat_fs_data=no,
5156   fu_cv_sys_stat_fs_data=no)])
5157   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5158   if test $fu_cv_sys_stat_fs_data = yes; then
5159     space=yes
5160     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5161   fi
5165 # As a gating factor for large file support, in order to
5166 # use <4GB files we must have the following minimal support
5167 # available.
5168 # long long, and a 64 bit off_t or off64_t.
5169 # If we don't have all of these then disable large
5170 # file support.
5172 AC_MSG_CHECKING([if large file support can be enabled])
5173 AC_TRY_COMPILE([
5174 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5175 #include <sys/types.h>
5176 #else
5177 __COMPILE_ERROR_
5178 #endif
5180 [int i],
5181 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5182 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5183         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5185 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5187 #################################################
5188 # check for cluster extensions
5190 CTDB_CFLAGS=""
5191 AC_SUBST(CTDB_CFLAGS)
5192 AC_ARG_WITH(ctdb,
5193 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5194 [ case "$withval" in
5195   yes|no)
5196     AC_MSG_WARN([--with-ctdb called without argument])
5197     ;;
5198   *)
5199     CTDB_CPPFLAGS="-I$withval/include"
5200     ;;
5201   esac])
5203 SAVED_CPPFLAGS="$CPPFLAGS"
5204 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5205 ctdb_broken="missing or broken headers"
5207 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5208 #include "confdefs.h"
5209 #define NO_CONFIG_H
5210 #include "replace.h"
5211 #include "system/wait.h"
5212 #include "system/network.h"
5213 #define private #error __USED_RESERVED_WORD_private__
5214 #include <talloc.h>
5215 #include <tdb.h>
5216 #include <ctdb.h>
5219 AC_HAVE_DECL(CTDB_CONTROL_TRANS2_COMMIT_RETRY,[
5220 #include "confdefs.h"
5221 #define NO_CONFIG_H
5222 #include "replace.h"
5223 #include "system/wait.h"
5224 #include "system/network.h"
5225 #include <talloc.h>
5226 #include <tdb.h>
5227 #include <ctdb.h>
5228 #include <ctdb_private.h>
5230 if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then
5231         ctdb_broken=no
5232 else
5233         ctdb_broken="missing transaction support"
5236 AC_HAVE_DECL(CTDB_CONTROL_TRANS2_ACTIVE,[
5237 #include "confdefs.h"
5238 #define NO_CONFIG_H
5239 #include "replace.h"
5240 #include "system/wait.h"
5241 #include "system/network.h"
5242 #include <talloc.h>
5243 #include <tdb.h>
5244 #include <ctdb.h>
5245 #include <ctdb_private.h>
5247 if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_ACTIVE_decl" = x"yes"; then
5248         ctdb_broken=no
5249 else
5250         ctdb_broken="transaction support too old"
5253 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5254 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5255         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5256 ],,[
5257 #include "confdefs.h"
5258 #define NO_CONFIG_H
5259 #include "replace.h"
5260 #include "system/wait.h"
5261 #include "system/network.h"
5262 #include <talloc.h>
5263 #include <tdb.h>
5264 #include <ctdb.h>
5265 #include <ctdb_private.h>
5268 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5269         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5271         ctdb_broken="missing struct ctdb_control_tcp"
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>
5284 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5285         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5286 ],,[
5287 #include "confdefs.h"
5288 #define NO_CONFIG_H
5289 #include "replace.h"
5290 #include "system/wait.h"
5291 #include "system/network.h"
5292 #include <talloc.h>
5293 #include <tdb.h>
5294 #include <ctdb.h>
5295 #include <ctdb_private.h>
5297 CPPFLAGS="$SAVED_CPPFLAGS"
5299 AC_MSG_CHECKING(cluster support)
5300 AC_ARG_WITH(cluster-support,
5301 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5303 if test x"$with_cluster_support" = x ; then
5304         with_cluster_support="auto"
5307 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5308         if test "x$with_cluster_support" = "xyes"; then
5309                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5310         fi
5311         with_cluster_support=no
5314 if test x"$ctdb_broken" != x"no"; then
5315         if test "x$with_cluster_support" = "xyes"; then
5316                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5317         fi
5318         with_cluster_support=no
5321 if test "x$with_cluster_support" != "xno"; then
5322     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5323     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5324     AC_MSG_RESULT(yes)
5325 else
5326     AC_MSG_RESULT(no)
5329 #################################################
5330 # check for ACL support
5332 AC_MSG_CHECKING(whether to support ACLs)
5333 AC_ARG_WITH(acl-support,
5334 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5335 [ case "$withval" in
5336         yes|no)
5337                 with_acl_support="$withval"
5338                 ;;
5339   esac ])
5341 if test x"$with_acl_support" = x ; then
5342         with_acl_support="auto"
5345 AC_MSG_RESULT($with_acl_support)
5347 if test x"$with_acl_support" = x"no"; then
5348         AC_MSG_RESULT(Disabling ACL support)
5349         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5350 else
5351         AC_MSG_NOTICE(checking whether ACL support is available:)
5352         case "$host_os" in
5353         *sysv5*)
5354                 AC_MSG_NOTICE(Using UnixWare ACLs)
5355                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5356                 default_static_modules="$default_static_modules vfs_solarisacl"
5357                 ;;
5358         *solaris*)
5359                 AC_MSG_NOTICE(Using solaris ACLs)
5360                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5361                 ACL_LIBS="$ACL_LIBS -lsec"
5362                 default_static_modules="$default_static_modules vfs_solarisacl"
5363                 ;;
5364         *hpux*)
5365                 AC_MSG_NOTICE(Using HPUX ACLs)
5366                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5367                 default_static_modules="$default_static_modules vfs_hpuxacl"
5368                 ;;
5369         *irix*)
5370                 AC_MSG_NOTICE(Using IRIX ACLs)
5371                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5372                 default_static_modules="$default_static_modules vfs_irixacl"
5373                 ;;
5374         *aix*)
5375                 AC_MSG_NOTICE(Using AIX ACLs)
5376                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5377                 default_static_modules="$default_static_modules vfs_aixacl"
5378                 ;;
5379         *osf*)
5380                 AC_MSG_NOTICE(Using Tru64 ACLs)
5381                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5382                 ACL_LIBS="$ACL_LIBS -lpacl"
5383                 default_static_modules="$default_static_modules vfs_tru64acl"
5384                 ;;
5385         *darwin*)
5386                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5387                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5388                 ;;
5389         *)
5390                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5391                 case "$host_os" in
5392                 *linux*)
5393                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5394                         ;;
5395                 esac
5396                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5397                         acl_LIBS=$LIBS
5398                         LIBS="$LIBS $ACL_LIBS"
5399                         AC_TRY_LINK([
5400                                 #include <sys/types.h>
5401                                 #include <sys/acl.h>
5402                         ],[
5403                                 acl_t acl;
5404                                 int entry_id;
5405                                 acl_entry_t *entry_p;
5406                                 return acl_get_entry(acl, entry_id, entry_p);
5407                         ],
5408                         [samba_cv_HAVE_POSIX_ACLS=yes],
5409                         [samba_cv_HAVE_POSIX_ACLS=no])
5410                         LIBS=$acl_LIBS
5411                 ])
5412                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5413                         AC_MSG_NOTICE(Using posix ACLs)
5414                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5415                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5416                                 acl_LIBS=$LIBS
5417                                 LIBS="$LIBS $ACL_LIBS"
5418                                 AC_TRY_LINK([
5419                                         #include <sys/types.h>
5420                                         #include <sys/acl.h>
5421                                 ],[
5422                                         acl_permset_t permset_d;
5423                                         acl_perm_t perm;
5424                                         return acl_get_perm_np(permset_d, perm);
5425                                 ],
5426                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5427                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5428                                 LIBS=$acl_LIBS
5429                         ])
5430                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5431                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5432                         fi
5433                         default_static_modules="$default_static_modules vfs_posixacl"
5434                 else
5435                         AC_MSG_NOTICE(ACL support is not avaliable)
5436                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5437                 fi
5438                 ;;
5439         esac
5440 fi # with_acl_support
5444 #################################################
5445 # check for AIO support
5447 AC_MSG_CHECKING(whether to support asynchronous io)
5448 AC_ARG_WITH(aio-support,
5449 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5450 [ case "$withval" in
5451   yes)
5453         AC_MSG_RESULT(yes)
5454         case "$host_os" in
5455         *)
5456                 AIO_LIBS=$LIBS
5457                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5458                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5459                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5460                 aio_LIBS=$LIBS
5461                 LIBS=$AIO_LIBS
5462                 AC_TRY_LINK([#include <sys/types.h>
5463 #include <aio.h>],
5464 [ struct aiocb a; return aio_read(&a);],
5465 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5466                 LIBS=$aio_LIBS])
5467                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5468                 aio_LIBS=$LIBS
5469                 LIBS=$AIO_LIBS
5470                 AC_TRY_LINK([#include <sys/types.h>
5471 #include <aio.h>],
5472 [ struct aiocb64 a; return aio_read64(&a);],
5473 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5474                 LIBS=$aio_LIBS])
5475                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5476                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5477                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5478                         LIBS=$AIO_LIBS
5479                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5480                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5481                         LIBS=$AIO_LIBS
5482                 fi
5484                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5485                         AC_MSG_CHECKING(for aio_read)
5486                         AC_LINK_IFELSE([#include <aio.h>
5487 int main() { struct aiocb a; return aio_read(&a); }],
5488 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5489 [AC_MSG_RESULT(no)])
5491                         AC_MSG_CHECKING(for aio_write)
5492                         AC_LINK_IFELSE([#include <aio.h>
5493 int main() { struct aiocb a; return aio_write(&a); }],
5494 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5495 [AC_MSG_RESULT(no)])
5497                         AC_MSG_CHECKING(for aio_fsync)
5498                         AC_LINK_IFELSE([#include <aio.h>
5499 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5500 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5501 [AC_MSG_RESULT(no)])
5503                         AC_MSG_CHECKING(for aio_return)
5504                         AC_LINK_IFELSE([#include <aio.h>
5505 int main() { struct aiocb a; return aio_return(&a); }],
5506 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5507 [AC_MSG_RESULT(no)])
5509                         AC_MSG_CHECKING(for aio_error)
5510                         AC_LINK_IFELSE([#include <aio.h>
5511 int main() { struct aiocb a; return aio_error(&a); }],
5512 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5513 [AC_MSG_RESULT(no)])
5515                         AC_MSG_CHECKING(for aio_cancel)
5516                         AC_LINK_IFELSE([#include <aio.h>
5517 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5518 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5519 [AC_MSG_RESULT(no)])
5521                         AC_MSG_CHECKING(for aio_suspend)
5522                         AC_LINK_IFELSE([#include <aio.h>
5523 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5524 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5525 [AC_MSG_RESULT(no)])
5526                 fi
5528                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5529                         AC_MSG_CHECKING(for aio_read64)
5530                         AC_LINK_IFELSE([#include <aio.h>
5531 int main() { struct aiocb a; return aio_read64(&a); }],
5532 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5533 [AC_MSG_RESULT(no)])
5535                         AC_MSG_CHECKING(for aio_write64)
5536                         AC_LINK_IFELSE([#include <aio.h>
5537 int main() { struct aiocb a; return aio_write64(&a); }],
5538 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5539 [AC_MSG_RESULT(no)])
5541                         AC_MSG_CHECKING(for aio_fsync64)
5542                         AC_LINK_IFELSE([#include <aio.h>
5543 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5544 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5545 [AC_MSG_RESULT(no)])
5547                         AC_MSG_CHECKING(for aio_return64)
5548                         AC_LINK_IFELSE([#include <aio.h>
5549 int main() { struct aiocb a; return aio_return64(&a); }],
5550 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5551 [AC_MSG_RESULT(no)])
5553                         AC_MSG_CHECKING(for aio_error64)
5554                         AC_LINK_IFELSE([#include <aio.h>
5555 int main() { struct aiocb a; return aio_error64(&a); }],
5556 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5557 [AC_MSG_RESULT(no)])
5559                         AC_MSG_CHECKING(for aio_cancel64)
5560                         AC_LINK_IFELSE([#include <aio.h>
5561 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5562 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5563 [AC_MSG_RESULT(no)])
5565                         AC_MSG_CHECKING(for aio_suspend64)
5566                         AC_LINK_IFELSE([#include <aio.h>
5567 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5568 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5569 [AC_MSG_RESULT(no)])
5570                 fi
5571             ;;
5572         esac
5573         ;;
5574   *)
5575     AC_MSG_RESULT(no)
5576     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5577     ;;
5578   esac ],
5579   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5580   AC_MSG_RESULT(no)
5583 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5584         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5585                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5586                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5587         fi
5590 #################################################
5591 # check for sendfile support
5593 with_sendfile_support=yes
5594 AC_MSG_CHECKING(whether to check to support sendfile)
5595 AC_ARG_WITH(sendfile-support,
5596 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5597 [ case "$withval" in
5598   yes)
5600         AC_MSG_RESULT(yes);
5602         case "$host_os" in
5603         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5604                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5605                 AC_TRY_LINK([#include <sys/sendfile.h>],
5607 int tofd, fromfd;
5608 off64_t offset;
5609 size_t total;
5610 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5612 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5614                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5615                 AC_TRY_LINK([#include <sys/sendfile.h>],
5617 int tofd, fromfd;
5618 off_t offset;
5619 size_t total;
5620 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5622 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5624 # Try and cope with broken Linux sendfile....
5625                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5626                 AC_TRY_LINK([\
5627 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5628 #undef _FILE_OFFSET_BITS
5629 #endif
5630 #include <sys/sendfile.h>],
5632 int tofd, fromfd;
5633 off_t offset;
5634 size_t total;
5635 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5637 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5639         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5640                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5641                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5642                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5643         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5644                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5645                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5646                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5647         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5648                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5649                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5650         else
5651                 AC_MSG_RESULT(no);
5652         fi
5654         ;;
5655         *freebsd* | *dragonfly* )
5656                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5657                 AC_TRY_LINK([\
5658 #include <sys/types.h>
5659 #include <unistd.h>
5660 #include <sys/socket.h>
5661 #include <sys/uio.h>],
5663         int fromfd, tofd, ret, total=0;
5664         off_t offset, nwritten;
5665         struct sf_hdtr hdr;
5666         struct iovec hdtrl;
5667         hdr.headers = &hdtrl;
5668         hdr.hdr_cnt = 1;
5669         hdr.trailers = NULL;
5670         hdr.trl_cnt = 0;
5671         hdtrl.iov_base = NULL;
5672         hdtrl.iov_len = 0;
5673         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5675 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5677         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5678                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5679                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5680                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5681         else
5682                 AC_MSG_RESULT(no);
5683         fi
5684         ;;
5686         *hpux*)
5687                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5688                 AC_TRY_LINK([\
5689 #include <sys/socket.h>
5690 #include <sys/uio.h>],
5692         int fromfd, tofd;
5693         size_t total=0;
5694         struct iovec hdtrl[2];
5695         ssize_t nwritten;
5696         off64_t offset;
5698         hdtrl[0].iov_base = 0;
5699         hdtrl[0].iov_len = 0;
5701         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5703 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5704         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5705                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5706                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5707                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5708         else
5709                 AC_MSG_RESULT(no);
5710         fi
5712                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5713                 AC_TRY_LINK([\
5714 #include <sys/socket.h>
5715 #include <sys/uio.h>],
5717         int fromfd, tofd;
5718         size_t total=0;
5719         struct iovec hdtrl[2];
5720         ssize_t nwritten;
5721         off_t offset;
5723         hdtrl[0].iov_base = 0;
5724         hdtrl[0].iov_len = 0;
5726         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5728 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5729         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5730                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5731                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5732                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5733         else
5734                 AC_MSG_RESULT(no);
5735         fi
5736         ;;
5738         *solaris*)
5739                 AC_CHECK_LIB(sendfile,sendfilev)
5740                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5741                 AC_TRY_LINK([\
5742 #include <sys/sendfile.h>],
5744         int sfvcnt;
5745         size_t xferred;
5746         struct sendfilevec vec[2];
5747         ssize_t nwritten;
5748         int tofd;
5750         sfvcnt = 2;
5752         vec[0].sfv_fd = SFV_FD_SELF;
5753         vec[0].sfv_flag = 0;
5754         vec[0].sfv_off = 0;
5755         vec[0].sfv_len = 0;
5757         vec[1].sfv_fd = 0;
5758         vec[1].sfv_flag = 0;
5759         vec[1].sfv_off = 0;
5760         vec[1].sfv_len = 0;
5761         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5763 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5765         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5766                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5767                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5768                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5769         else
5770                 AC_MSG_RESULT(no);
5771         fi
5773                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5774                 AC_TRY_LINK([\
5775 #include <sys/sendfile.h>],
5777         int sfvcnt;
5778         size_t xferred;
5779         struct sendfilevec vec[2];
5780         ssize_t nwritten;
5781         int tofd;
5783         sfvcnt = 2;
5785         vec[0].sfv_fd = SFV_FD_SELF;
5786         vec[0].sfv_flag = 0;
5787         vec[0].sfv_off = 0;
5788         vec[0].sfv_len = 0;
5790         vec[1].sfv_fd = 0;
5791         vec[1].sfv_flag = 0;
5792         vec[1].sfv_off = 0;
5793         vec[1].sfv_len = 0;
5794         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5796 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5798         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5799                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5800                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5801                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5802         else
5803                 AC_MSG_RESULT(no);
5804         fi
5805         ;;
5806         *aix*)
5807                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5808                 AC_TRY_LINK([\
5809 #include <sys/socket.h>],
5811         int fromfd, tofd;
5812         size_t total=0;
5813         struct sf_parms hdtrl;
5814         ssize_t nwritten;
5815         off64_t offset;
5817         hdtrl.header_data = 0;
5818         hdtrl.header_length = 0;
5819         hdtrl.file_descriptor = fromfd;
5820         hdtrl.file_offset = 0;
5821         hdtrl.file_bytes = 0;
5822         hdtrl.trailer_data = 0;
5823         hdtrl.trailer_length = 0;
5825         nwritten = send_file(&tofd, &hdtrl, 0);
5827 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5828         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5829                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5830                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5831                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5832         else
5833                 AC_MSG_RESULT(no);
5834         fi
5835         ;;
5836         *)
5837         ;;
5838         esac
5839         ;;
5840   *)
5841     AC_MSG_RESULT(no)
5842     ;;
5843   esac ],
5844   AC_MSG_RESULT(yes)
5847 ############################################
5848 # See if we have the Linux readahead syscall.
5850 AC_CACHE_CHECK([for Linux readahead],
5851                 samba_cv_HAVE_LINUX_READAHEAD,[
5852     AC_TRY_LINK([
5853 #if defined(HAVE_UNISTD_H)
5854 #include <unistd.h>
5855 #endif
5856 #include <fcntl.h>],
5857     [ssize_t err = readahead(0,0,0x80000);],
5858     samba_cv_HAVE_LINUX_READAHEAD=yes,
5859     samba_cv_HAVE_LINUX_READAHEAD=no)])
5861 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5862   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5863              [Whether Linux readahead is available])
5866 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5868 ############################################
5869 # See if we have the posix_fadvise syscall.
5871 AC_CACHE_CHECK([for posix_fadvise],
5872                 samba_cv_HAVE_POSIX_FADVISE,[
5873     AC_TRY_LINK([
5874 #if defined(HAVE_UNISTD_H)
5875 #include <unistd.h>
5876 #endif
5877 #include <fcntl.h>],
5878     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5879     samba_cv_HAVE_POSIX_FADVISE=yes,
5880     samba_cv_HAVE_POSIX_FADVISE=no)])
5882 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5883   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5884              [Whether posix_fadvise is available])
5887 ############################################
5888 # See if we have the Linux splice syscall.
5890 case "$host_os" in
5891 *linux*)
5892 AC_CACHE_CHECK([for Linux splice],
5893                 samba_cv_HAVE_LINUX_SPLICE,[
5894     AC_TRY_LINK([
5895 #if defined(HAVE_UNISTD_H)
5896 #include <unistd.h>
5897 #endif
5898 #include <fcntl.h>],
5899     [long ret = splice(0,0,1,0,400,0);],
5900     samba_cv_HAVE_LINUX_SPLICE=yes,
5901     samba_cv_HAVE_LINUX_SPLICE=no)])
5904 samba_cv_HAVE_LINUX_SPLICE=no
5906 esac
5908 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5909   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5910              [Whether Linux splice is available])
5913 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5915 ############################################
5916 # See if we have the a broken readlink syscall.
5918 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5919 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5920         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5922 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5923         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5926 #################################################
5927 # Check whether winbind is supported on this platform.  If so we need to
5928 # build and install client programs, sbin programs and shared libraries
5930 AC_MSG_CHECKING(whether to build winbind)
5932 # Initially, the value of $host_os decides whether winbind is supported
5934 HAVE_WINBIND=yes
5935 HAVE_WBCLIENT=no
5937 # Define external wbclient library to link against.  This disables winbind.
5938 # We define this here so --with-winbind can override it.
5939 AC_ARG_WITH(wbclient,
5940 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5942   case "$withval" in
5943         no)
5944                 HAVE_WBCLIENT=no
5945                 ;;
5946         yes)
5947                 HAVE_WBCLIENT=yes
5948                 HAVE_WINBIND=no
5949                 ;;
5950         *)
5951                 HAVE_WBCLIENT=yes
5952                 HAVE_WINBIND=no
5953                 WBCLIENT_INCLUDES="-I$withval/include"
5954                 WBCLIENT_LDFLAGS="-L$withval/lib"
5955                 ;;
5956   esac ],
5959 AC_SUBST(WBCLIENT_INCLUDES)
5960 AC_SUBST(WBCLIENT_LDFLAGS)
5961 AC_SUBST(WBCLIENT_LIBS)
5964 # Define the winbind shared library name and any specific linker flags
5965 # it needs to be built with.
5967 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5968 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5969 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5970 NSSSONAMEVERSIONSUFFIX=""
5971 WINBIND_NSS_PTHREAD=""
5973 case "$host_os" in
5974         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5975                 NSSSONAMEVERSIONSUFFIX=".2"
5976                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5977                 ;;
5978         *freebsd[[5-9]]*)
5979                 # FreeBSD winbind client is implemented as a wrapper around
5980                 # the Linux version.
5981                 NSSSONAMEVERSIONSUFFIX=".1"
5982                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5983                     ../nsswitch/winbind_nss_linux.o"
5984                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5985                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5986                 ;;
5988         *netbsd*[[3-9]]*)
5989                 # NetBSD winbind client is implemented as a wrapper
5990                 # around the Linux version. It needs getpwent_r() to
5991                 # indicate libc's use of the correct nsdispatch API.
5992                 #
5993                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5994                         WINBIND_NSS_EXTRA_OBJS="\
5995                             ../nsswitch/winbind_nss_netbsd.o \
5996                             ../nsswitch/winbind_nss_linux.o"
5997                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5998                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5999                 else
6000                         HAVE_WINBIND=no
6001                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6002                 fi
6003                 ;;
6004         *irix*)
6005                 # IRIX has differently named shared libraries
6006                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6007                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6008                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6009                 ;;
6010         *solaris*)
6011                 # Solaris winbind client is implemented as a wrapper around
6012                 # the Linux version.
6013                 NSSSONAMEVERSIONSUFFIX=".1"
6014                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6015                     ../nsswitch/winbind_nss_linux.o"
6016                 ;;
6017         *hpux11*)
6018                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6019                 ;;
6020         *aix*)
6021                 # AIX has even differently named shared libraries.  No
6022                 # WINS support has been implemented yet.
6023                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6024                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6025                 WINBIND_NSS="../nsswitch/WINBIND"
6026                 WINBIND_WINS_NSS=""
6027                 ;;
6028         *)
6029                 HAVE_WINBIND=no
6030                 winbind_no_reason=", unsupported on $host_os"
6031                 ;;
6032 esac
6034 # Check the setting of --with-winbind
6036 AC_ARG_WITH(winbind,
6037 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6039   case "$withval" in
6040         yes)
6041                 HAVE_WINBIND=yes
6042                 HAVE_WBCLIENT=no
6043                 ;;
6044         no)
6045                 HAVE_WINBIND=no
6046                 winbind_reason=""
6047                 ;;
6048   esac ],
6051 # We need unix domain sockets for winbind
6053 if test x"$HAVE_WINBIND" = x"yes"; then
6054         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6055                 winbind_no_reason=", no unix domain socket support on $host_os"
6056                 HAVE_WINBIND=no
6057         fi
6060 # Display test results
6062 if test x"$HAVE_WINBIND" = x"no"; then
6063         WINBIND_NSS=""
6064         WINBIND_WINS_NSS=""
6066 if test x"$HAVE_WBCLIENT" = x"yes"; then
6067         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6068                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6069         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6070         AC_MSG_RESULT(yes)
6071         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6072         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6073 else
6074         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6075                 BUILD_LIBWBCLIENT_SHARED=no
6076         else
6077                 BUILD_LIBWBCLIENT_SHARED=yes
6078         fi
6080         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6081         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6082         LIBWBCLIENT_SOVER=0
6083         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6084                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6085                 ## Only worry about libwbclient if we have shared
6086                 # library support
6087                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6088                 LIBWBCLIENT=libwbclient
6089                 INSTALL_LIBWBCLIENT=installlibwbclient
6090                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6091                 LIBWBCLIENT_LIBS="-lwbclient"
6092         else
6093                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6094                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6095         fi
6098 if test x"$HAVE_WINBIND" = x"yes"; then
6099         AC_MSG_RESULT(yes)
6100         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6102         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6103         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6104         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6105                 PAM_MODULES="$PAM_MODULES pam_winbind"
6106                 INSTALL_PAM_MODULES="installpammodules"
6107                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6108         fi
6109 else
6110         AC_MSG_RESULT(no$winbind_no_reason)
6113 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6114                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])
6115                         samba_cv_HAVE_PTHREAD=yes],
6116                         samba_cv_HAVE_PTHREAD=no)
6118 AC_SUBST(WINBIND_NSS_PTHREAD)
6119 AC_SUBST(WINBIND_NSS)
6120 AC_SUBST(WINBIND_WINS_NSS)
6121 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6122 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6123 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6125 AC_SUBST(WINBIND_KRB5_LOCATOR)
6127 # Solaris 10 does have new member in nss_XbyY_key
6128 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6129                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6130                 [#include <nss_dbdefs.h>])
6132 # Solaris has some extra fields in struct passwd that need to be
6133 # initialised otherwise nscd crashes.
6135 AC_CHECK_MEMBER(struct passwd.pw_comment,
6136                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6137                 [#include <pwd.h>])
6139 AC_CHECK_MEMBER(struct passwd.pw_age,
6140                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6141                 [#include <pwd.h>])
6143 # AIX 4.3.x and 5.1 do not have as many members in
6144 # struct secmethod_table as AIX 5.2
6145 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6146        [#include <usersec.h>])
6147 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6148        [#include <usersec.h>])
6150 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6151 AC_TRY_COMPILE([#include <sys/types.h>
6152 #include <sys/socket.h>],
6153 [struct ucred cred;
6154  socklen_t cred_len;
6155  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6157 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6158 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6159     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6163 #################################################
6164 # Check to see if we should use the included popt
6166 AC_ARG_WITH(included-popt,
6167 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6169   case "$withval" in
6170         yes)
6171                 INCLUDED_POPT=yes
6172                 ;;
6173         no)
6174                 INCLUDED_POPT=no
6175                 ;;
6176   esac ],
6178 if test x"$INCLUDED_POPT" != x"yes"; then
6179     AC_CHECK_LIB(popt, poptGetContext,
6180                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6183 AC_MSG_CHECKING(whether to use included popt)
6184 if test x"$INCLUDED_POPT" = x"yes"; then
6185     AC_MSG_RESULT(yes)
6186     BUILD_POPT='$(POPT_OBJ)'
6187     POPTLIBS='$(POPT_OBJ)'
6188     FLAGS1="-I\$(srcdir)/../lib/popt"
6189 else
6190     AC_MSG_RESULT(no)
6191         BUILD_POPT=""
6192     POPTLIBS="-lpopt"
6194 AC_SUBST(BUILD_POPT)
6195 AC_SUBST(POPTLIBS)
6196 AC_SUBST(FLAGS1)
6198 #################################################
6199 # Check if user wants DNS service discovery support
6201 AC_ARG_ENABLE(dnssd,
6202 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6204 AC_SUBST(DNSSD_LIBS)
6205 if test x"$enable_dnssd" = x"yes"; then
6206     have_dnssd_support=yes
6208     AC_CHECK_HEADERS(dns_sd.h)
6209     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6210         have_dnssd_support=no
6211     fi
6213     # On Darwin the DNSSD API is in libc, but on other platforms it's
6214     # probably in -ldns_sd
6215     AC_CHECK_FUNCS(DNSServiceRegister)
6216     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6217     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6218             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6219         have_dnssd_support=no
6220     fi
6222     if test x"$have_dnssd_support" = x"yes"; then
6223         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6224                 [Whether to enable DNS service discovery support])
6225     else
6226         if test x"$enable_dnssd" = x"yes"; then
6227             AC_MSG_ERROR(DNS service discovery support not available)
6228         fi
6229     fi
6233 #################################################
6234 # Check if user wants avahi support
6236 AC_ARG_ENABLE(avahi,
6237 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6239 if test x"$enable_avahi" != x"no"; then
6240     have_avahi_support=yes
6242     AC_CHECK_HEADERS(avahi-common/watch.h)
6243     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6244         have_avahi_support=no
6245     fi
6247     AC_CHECK_HEADERS(avahi-client/client.h)
6248     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6249         have_avahi_support=no
6250     fi
6252     save_LIBS="$LIBS"
6253     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6254     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6255     LIBS="$save_LIBS"
6257     if test x"$have_avahi_client_new" != x"yes" -o \
6258        x"$have_avahi_strerror" != x"yes" ; then
6259         have_avahi_support=no
6260     fi
6262     if test x"$have_avahi_support" = x"yes"; then
6263         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6264         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6265                 [Whether to enable avahi support])
6266         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6267     else
6268         if test x"$enable_avahi" = x"yes"; then
6269             AC_MSG_ERROR(avahi support not available)
6270         fi
6271     fi
6274 #################################################
6275 # Check if user wants pthreadpool support
6277 AC_ARG_ENABLE(pthreadpool,
6278 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=auto)])])
6280 if test x"$enable_pthreadpool" != x"no" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6281     AC_TRY_LINK([#include "pthread.h"],
6282     [pthread_create(NULL, NULL, NULL, NULL)],
6283                     ,LIBS="$LIBS -lpthread")
6284     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6285     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6288 #################################################
6289 # Check to see if we should use the included iniparser
6291 AC_ARG_WITH(included-iniparser,
6292 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6294   case "$withval" in
6295         yes)
6296                 INCLUDED_INIPARSER=yes
6297                 ;;
6298         no)
6299                 INCLUDED_INIPARSER=no
6300                 ;;
6301   esac ],
6303 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6304     AC_CHECK_LIB(iniparser, iniparser_load,
6305                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6308 AC_MSG_CHECKING(whether to use included iniparser)
6309 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6310     AC_MSG_RESULT(yes)
6311     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6312         INIPARSERLIBS=""
6313     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6314 else
6315     AC_MSG_RESULT(no)
6316         BUILD_INIPARSER=""
6317     INIPARSERLIBS="-liniparser"
6319 AC_SUBST(BUILD_INIPARSER)
6320 AC_SUBST(INIPARSERLIBS)
6321 AC_SUBST(FLAGS1)
6325 # Checks for the vfs_fileid module
6326 # Start
6327 AC_CHECK_FUNC(getmntent)
6329 AC_CHECK_HEADERS(sys/statfs.h)
6331 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6332 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6333              AC_TRY_RUN([
6334                 #include <sys/types.h>
6335                 #include <sys/statfs.h>
6336                 int main(void)
6337                 {
6338                         struct statfs fsd;
6339                         fsid_t fsid = fsd.f_fsid;
6340                         return statfs (".", &fsd);
6341                 }],
6342                 vfsfileid_cv_statfs=yes,
6343                 vfsfileid_cv_statfs=no,
6344                 vfsfileid_cv_statfs=cross)
6346 AC_MSG_RESULT($vfsfileid_cv_statfs)
6348 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6349         x"$vfsfileid_cv_statfs" = x"yes"; then
6350         default_shared_modules="$default_shared_modules vfs_fileid"
6352 # End
6353 # Checks for the vfs_fileid module
6356 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6358         eval MODULE_DEFAULT_$i=STATIC
6359 done
6361 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6363         dnl Fall back to static if we cannot build shared libraries
6364         eval MODULE_DEFAULT_$i=STATIC
6366         if test $BLDSHARED = true; then
6367                 eval MODULE_DEFAULT_$i=SHARED
6368         fi
6369 done
6371 dnl Always build these modules static
6372 MODULE_rpc_spoolss=STATIC
6373 MODULE_rpc_srvsvc=STATIC
6374 MODULE_idmap_tdb=STATIC
6375 MODULE_idmap_passdb=STATIC
6376 MODULE_idmap_nss=STATIC
6378 MODULE_nss_info_template=STATIC
6380 AC_ARG_WITH(static-modules,
6381 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6382 [ if test $withval; then
6383         for i in `echo $withval | sed -e 's/,/ /g'`
6384         do
6385                 eval MODULE_$i=STATIC
6386         done
6387 fi ])
6389 AC_ARG_WITH(shared-modules,
6390 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6391 [ if test $withval; then
6392         for i in `echo $withval | sed -e 's/,/ /g'`
6393         do
6394                         eval MODULE_$i=SHARED
6395         done
6396 fi ])
6398 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6399                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6400         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6401         AC_SUBST(SMBD_FAM_LIBS)
6404 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6405                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6406 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6407 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6408 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6409 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6410 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6413 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6414 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6415 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6416 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6417 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6418 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6419 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6420 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6421 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6422 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6423 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6424 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6425 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6426 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6427 SMB_SUBSYSTEM(RPC,smbd/server.o)
6429 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6430 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6431 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6432 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6433 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6434 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6435 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6436 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6437 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6438 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6440 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6441 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6443 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6444 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6445 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6446 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6447 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6449 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6450 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6451 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6452 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6453 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6454 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6455 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6456 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6457 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6458 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6460 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6461 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6462 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6463 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6464 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6465 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6466 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6467 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6468 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6469 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6470 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6471 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6472 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6473 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6474 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6475 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6476 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6477 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6478 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6479 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6480 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6481 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6482 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6483 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6484 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6504 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6506 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6507 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6508 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6510 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6511 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6512 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6513 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6515 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6517 #################################################
6518 # do extra things if we are running insure
6520 if test "${ac_cv_prog_CC}" = "insure"; then
6521         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6524 #################################################
6525 # If run from the build farm, enable NASTY hacks
6526 #################################################
6527 AC_MSG_CHECKING(whether to enable build farm hacks)
6528 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6529         AC_MSG_RESULT(yes)
6530         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6531 else
6532         AC_MSG_RESULT(no)
6535 #################################################
6536 # check for bad librt/libpthread interactions
6538 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6539     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6540     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6541     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6543 SMB_IF_RTSIGNAL_BUG(
6544         [
6545             # Have RT_SIGNAL bug, need to check whether the problem will
6546             # affect anything we have configured.
6548             rt_do_error=no
6549             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6550                 if test x"$rt_signal_lease_ok" = x"no" ; then
6551                     rt_do_error=yes
6552                 fi
6553             fi
6555             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6556                 if test x"$rt_signal_notify_ok" = x"no" ; then
6557                     rt_do_error=yes
6558                 fi
6559             fi
6561             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6562                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6563                 if test x"$rt_signal_aio_ok" = x"no" ; then
6564                     rt_do_error=yes
6565                 fi
6566             fi
6568             if test x"$rt_do_error" = x"yes" ; then
6569                 SMB_IS_LIBPTHREAD_LINKED(
6570                     [
6571                         cat<<MSG
6573 *** On this platforms, linking Samba against pthreads causes problems
6574 *** with the oplock and change notification mechanisms. You may be
6575 *** using pthreads as a side-effect of using the --with-aio-support
6576 *** or --with-profiling-data options. Please remove these and try again.
6579                     ],
6580                     [
6581                         cat<<MSG
6583 *** On this platform, the oplock and change notification mechanisms do not
6584 *** appear to work. Please report this problem to samba-technical@samba.org
6585 *** and attach the config.log file from this directory.
6588                     ])
6589                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6590             fi
6591         ],
6592         [
6593             # no RT_SIGNAL bug, we are golden
6594             SMB_IS_LIBPTHREAD_LINKED(
6595                 [
6596                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6597                 ])
6599         ],
6600         [
6601             # cross compiling, I hope you know what you are doing
6602             true
6603         ])
6607 AC_ARG_ENABLE(merged-build, 
6608 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6609 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6611 if test x"$enable_merged_build" = x"yes" -a \
6612         x"$merged_build_possible" = x"no" ; then
6613         AC_MSG_ERROR(Merged build required but not possible)
6616 m4_include(../lib/zlib/zlib.m4)
6618 if test x$enable_merged_build = xauto; then
6619         # Check for python
6620         m4_include(../m4/check_python.m4)
6621         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6623         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6624         AC_MSG_RESULT([$merged_build_possible])
6626         # Enable merged build automatically if possible, when in developer mode
6627         # Don't enable  merged build automatically in 3.4.0.
6628         #if test "x$developer" = xyes; then
6629         #       enable_merged_build=$merged_build_possible
6630         #fi
6633 if test x$enable_merged_build = xyes; then
6634         MERGED_BUILD=1
6635         saved_USESHARED="$USESHARED"
6636         USESHARED="false"
6637         m4_include(samba4.m4)
6638         USESHARED="$saved_USESHARED"
6641 AC_SUBST(ZLIB_LIBS)
6642 AC_SUBST(ZLIB_OBJS)
6643 AC_ZLIB([ZLIB_OBJS=""], [
6644         ZLIB_LIBS=""
6645         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6646                      deflate.o trees.o zutil.o inflate.o infback.o \
6647                          inftrees.o inffast.o
6648         do
6649                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6650         done
6651         CFLAGS="-I../lib/zlib $CFLAGS"
6654 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6656 if test "x$enable_dmalloc" = xyes
6657 then
6658         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6659         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6660                   [Define to check invariants around some common functions])
6661         LIBS="$LIBS -ldmalloc"
6664 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6665 LIB_REMOVE_USR_LIB(LDFLAGS)
6666 LIB_REMOVE_USR_LIB(LIBS)
6668 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6669 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6670 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6672 #################################################
6673 # Display summary of libraries detected
6675 AC_MSG_RESULT([Using libraries:])
6676 AC_MSG_RESULT([    LIBS = $LIBS])
6677 if test x"$with_ads_support" != x"no"; then
6678     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6680 if test x"$with_ldap_support" != x"no"; then
6681     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6683 if test x"$with_dnsupdate_support" != x"no"; then
6684     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6686 if test x"$have_dnssd_support" != x"no"; then
6687     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6689 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6691 #################################################
6692 # final configure stuff
6694 AC_MSG_CHECKING([configure summary])
6695 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6696            AC_MSG_RESULT(yes),
6697            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6698            AC_MSG_WARN([cannot run when cross-compiling]))
6700 dnl Merge in developer cflags from now on
6701 AC_SUBST(DEVELOPER_CFLAGS)
6702 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6703     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6706 # Stuff the smbd-only libraries at the end of the smbd link
6707 # path (if we have them).
6708 SMBD_LIBS="$samba_dmapi_libs"
6709 AC_SUBST(SMBD_LIBS)
6711 CFLAGS="${CFLAGS} \$(FLAGS)"
6713 if test x$MERGED_BUILD != x1; then
6714         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6715 else
6716         if test x"$BLDSHARED" = x"true" ; then
6717                 LDFLAGS="$LDFLAGS -L./bin"
6718         fi
6721 AC_SUBST(MAKEFILE)
6722 if test x$samba_cv_gnu_make = xyes; then
6723         MAKEFILE=Makefile
6724 else
6725         # When we don't have GNU Make, generate a copy of Makefile.in 
6726         # that doesn't have the "include " statements but just includes 
6727         # the files verbatim.
6728         MAKEFILE=Makefile-noincludes
6729         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6731 AC_OUTPUT($MAKEFILE
6732           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6733           lib/netapi/examples/Makefile
6734           lib/netapi/tests/Makefile
6735           pkgconfig/smbclient.pc
6736           pkgconfig/wbclient.pc
6737           pkgconfig/netapi.pc
6738           pkgconfig/smbsharemodes.pc
6739           ../examples/libsmbclient/Makefile.internal
6740           )
6741 dnl If we had to expand the includes, make tsure the output file is moved back
6742 AC_OUTPUT_COMMANDS([
6743 if test x$MAKEFILE != Makefile; then
6744         mv $MAKEFILE Makefile
6748 #################################################
6749 # Print very concise instructions on building/use
6750 if test "x$enable_dmalloc" = xyes
6751 then
6752         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6753         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])